00001 // ElectronSmearer class 00002 // 00003 // Implements smearing for electrons 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 class HepLorentzVector; //forward declaration 00026 00027 namespace Atlfast { 00028 00039 class ElectronSmearer : virtual public ISmearer, 00040 virtual private DefaultSmearer 00041 { 00042 public: 00043 //-------------------------------------------------------------------------- 00044 // constructors and destructors- we can leave everything to DefaultSmearer 00045 //-------------------------------------------------------------------------- 00047 ElectronSmearer(const int aseed, const int lumi) : ISmearer(), DefaultSmearer(aseed), m_lumi(lumi) { } 00049 virtual ~ElectronSmearer() { } 00050 00051 //-------------------------------------------------------------------------- 00052 // the only thing we actually need to provide is the smear() method 00053 //-------------------------------------------------------------------------- 00055 virtual HepLorentzVector smear(const HepLorentzVector& avec); 00056 00057 private: 00058 //-------------------------------------------------------------------------- 00059 // luminosity option. Currently using an int with 1= low lumi 00060 // 2 = high lumi. This is not very pleasant, but leave for now 00061 //-------------------------------------------------------------------------- 00063 int m_lumi; 00064 00065 }; 00066 00067 } // end of namespace bracket 00068 00069 #endif