00001 // ElectronSmearer class 00002 // 00003 // Implements smearing for electrons a la 00004 // 00005 // Namespace Atlfast:: 00006 // 00007 //-------------------------------------------------------------- 00008 // 00009 // ElectronSmearer replicates the smearing code of ATLFAST++'s 00010 // ElectronMaker. It provides the smear() method defined 00011 // in the ISmearer interface. It privately inherits from 00012 // the DefaultSmearer class to use its implementation of 00013 // random number services etc. 00014 // 00015 // Authors: H.T.Phillips, P. Clarke, E. Richter-Was, P. Sherwood, R. Steward 00016 // 00017 00018 #ifndef ATLFAST_ELECTRONSMEARER_H 00019 #define ATLFAST_ELECTRONSMEARER_H 00020 00021 00022 #include "AtlfastAlgs/ISmearer.h" 00023 #include "AtlfastAlgs/DefaultSmearer.h" 00024 00025 #include "GaudiKernel/MsgStream.h" 00026 00027 #include "CLHEP/Vector/LorentzVector.h" 00028 00029 namespace Atlfast { 00030 00040 class ElectronSmearer : virtual public ISmearer, 00041 virtual private DefaultSmearer 00042 { 00043 public: 00044 //-------------------------------------------------------------------------- 00045 // constructors and destructors- we can leave everything to DefaultSmearer 00046 //-------------------------------------------------------------------------- 00048 ElectronSmearer(const int aseed, const int lumi, MsgStream& log) : 00049 ISmearer(), DefaultSmearer(aseed), m_lumi(lumi), m_log(log){} 00050 00052 virtual ~ElectronSmearer() { } 00053 00054 //-------------------------------------------------------------------------- 00055 // the only thing we actually need to provide is the smear() method 00056 //-------------------------------------------------------------------------- 00058 virtual HepLorentzVector smear(const HepMC::GenParticle&); 00060 virtual HepLorentzVector smear(const HepLorentzVector& avec); 00061 00063 virtual int setSmearParameters( const std::vector<double>& smearValues ); 00065 virtual int setSmearParamSchema( const int smearSchema); 00066 00067 private: 00068 //-------------------------------------------------------------------------- 00069 // luminosity option. Currently using an int with 1= low lumi 00070 // 2 = high lumi. This is not very pleasant, but leave for now 00071 //-------------------------------------------------------------------------- 00073 int m_lumi; 00074 //cct: these are the approved values for use in smearing 00075 std::vector<double> m_smearParams; 00076 int m_smearParamSchema; 00077 MsgStream& m_log; 00078 00079 }; 00080 00081 } // end of namespace bracket 00082 00083 #endif