Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:17

0001 //
0002 //
0003 // File   : interface/METTranslatorBase.h
0004 // Author : Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch>
0005 // Purpose: Template class of function object to translate missing transverse
0006 //          energy physics object to HitFit's Fourvec object.
0007 //
0008 
0009 /**
0010     @file METTranslatorBase.h
0011 
0012     @brief Template class of function object to translate missing transverse
0013     energy object to HitFit's Fourvec object.
0014 
0015     @author Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch>
0016 
0017     @par Creation date:
0018     Nov-2009
0019 
0020     @par Terms of Usage:
0021     With consent from the original author (Haryo Sumowidagdo).
0022  */
0023 
0024 #ifndef HitFit_METTranslatorBase_h
0025 #define HitFit_METTranslatorBase_h
0026 
0027 #include "TopQuarkAnalysis/TopHitFit/interface/EtaDepResolution.h"
0028 #include "TopQuarkAnalysis/TopHitFit/interface/fourvec.h"
0029 
0030 namespace hitfit {
0031 
0032   /**
0033        @class METTranslatorBase.
0034 
0035        @brief Template class of function object to translate missing
0036        transverse energy physics object to HitFit's Fourvec object.  Users
0037        need to write an implementation of a template specialization of this
0038        class for their missing transverse energy physics object class,
0039        Then users combine this header file and their implementation for their
0040        analysis code.  With this approach, it is possible to use HitFit for
0041        different missing transverse energy physics object class
0042        indifferent experiments.
0043 
0044        @param AMet The typename of the missing transverse energy physics
0045        object class be translated into HitFit's Fourvec.
0046 
0047      */
0048   template <class AMet>
0049   class METTranslatorBase {
0050   public:
0051     /**
0052            @brief Default constructor.
0053          */
0054     METTranslatorBase();
0055 
0056     /**
0057            @brief Constructor, instantiate a METTranslatorBase object
0058            using the name of and input file in std::string format.
0059 
0060            @param ifile The path of the input file.
0061          */
0062     METTranslatorBase(const std::string& ifile);
0063 
0064     /**
0065            @brief Destructor.
0066          */
0067     ~METTranslatorBase();
0068 
0069     /**
0070            @brief Convert a missing transverse energy object of type AMet
0071            into HitFit four-momentum object of type Fourvec.
0072 
0073            @param met The missing transverse energy object to be translated.
0074 
0075            @param useObjEmbRes Boolean parameter to indicate if the
0076            user would like to use the resolution embedded in the object,
0077            and not the resolution read when instantiating the class.
0078          */
0079     Fourvec operator()(const AMet& met, bool useObjEmbRes = false);
0080 
0081     /**
0082            @brief Return the  \f$ k_{T} \f$  resolution corresponding to
0083            an instance of missing transverse energy object.
0084 
0085            @param met The missing transverse energy object whose
0086            resolution is wished to be known.
0087 
0088            @param useObjEmbRes Boolean parameter to indicate if the
0089            user would like to use the resolution embedded in the object,
0090            and not the resolution read when instantiating the class.
0091          */
0092     Resolution KtResolution(const AMet& met, bool useObjEmbRes = false) const;
0093 
0094     /**
0095            @brief Alias for KtResolution(AMet& met)
0096 
0097            @param met The missing transverse energy object whose
0098            resolution is wished to be known.
0099 
0100            @param useObjEmbRes Boolean parameter to indicate if the
0101            user would like to use the resolution embedded in the object,
0102            and not the resolution read when instantiating the class.
0103          */
0104     Resolution METResolution(const AMet& met, bool useObjEmbRes = false) const;
0105 
0106   private:
0107     /**
0108            @brief The resolution.
0109          */
0110     Resolution resolution_;
0111   };
0112 
0113 }  // namespace hitfit
0114 
0115 #endif  // #ifndef HitFit_METTranslatorBase_h