00001 // Dear emacs, this is -*- c++ -*- 00002 // $Id: CorrectionTool.h 600738 2014-06-07 14:34:05Z krasznaa $ 00003 #ifndef PATINTERFACES_CORRECTIONTOOL_H 00004 #define PATINTERFACES_CORRECTIONTOOL_H 00005 00006 // Copyright Iowa State University 2014. 00007 // Author: Nils Krumnack 00008 // Distributed under the Boost Software License, Version 1.0. 00009 // (See accompanying file LICENSE_1_0.txt or copy at 00010 // http://www.boost.org/LICENSE_1_0.txt) 00011 00012 // Please feel free to contact me (nils.erik.krumnack@cern.ch) for bug 00013 // reports, feature suggestions, praise and complaints. 00014 00015 // Local include(s): 00016 #include "PATInterfaces/CorrectionCode.h" 00017 00018 namespace CP { 00019 00046 template< class T > 00047 class CorrectionTool { 00048 00049 public: 00051 typedef T xAODContainerType; 00053 typedef typename xAODContainerType::base_value_type xAODObjectType; 00054 00057 virtual ~CorrectionTool() {} 00058 00061 virtual CorrectionCode 00062 applyCorrection( xAODObjectType& inputObject ) = 0; 00063 00070 CorrectionCode 00071 correctedCopy( const xAODObjectType& inputObject, 00072 xAODObjectType*& outputObject ); 00073 00082 CorrectionCode 00083 applyContainerCorrection( xAODContainerType& inputContainer ); 00084 00085 }; // class CorrectionTool 00086 00087 } // namespace CP 00088 00089 // Include the implementation: 00090 #include "PATInterfaces/CorrectionTool.icc" 00091 00092 #endif // PATINTERFACES_CORRECTIONTOOL_H