00001 // JetSmearer class 00002 // 00003 // Implements smearing for Jets 00004 // 00005 // Namespace Atlfast:: 00006 // 00007 //-------------------------------------------------------------- 00008 // 00009 // JetSmearer replicates the smearing code of ATLFAST++'s 00010 // JetMaker. 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_JETSMEARER_H 00019 #define ATLFAST_JETSMEARER_H 00020 00021 #ifndef ATLFAST_ISMEARER_H 00022 #include "AtlfastAlgs/ISmearer.h" 00023 #endif 00024 00025 #ifndef ATLFAST_DEFAULTSMEARER_H 00026 #include "AtlfastAlgs/DefaultSmearer.h" 00027 #endif 00028 00029 class HepLorentzVector; //forward declaration 00030 00031 namespace Atlfast { 00038 class JetSmearer : virtual public ISmearer, 00039 virtual private DefaultSmearer 00040 { 00041 public: 00042 //-------------------------------------------------------------------------- 00043 // constructors and destructors- we can leave everything to DefaultSmearer 00044 //-------------------------------------------------------------------------- 00045 JetSmearer(const int aseed, 00046 const int lumi, 00047 const double rconeb, 00048 const double rconef, 00049 const double barrelForwardEta) : 00050 ISmearer(), 00051 DefaultSmearer(aseed), 00052 m_lumi(lumi), 00053 m_rconeb(rconeb), 00054 m_rconef(rconef), 00055 m_BarrelForwardEta(barrelForwardEta) 00056 { } 00057 virtual ~JetSmearer() { } 00058 00059 //-------------------------------------------------------------------------- 00060 // the only thing we actually need to provide is the smear() method 00061 //-------------------------------------------------------------------------- 00062 virtual HepLorentzVector smear(const HepLorentzVector& avec); 00063 00064 private: 00065 //-------------------------------------------------------------------------- 00066 // luminosity option. Currently using an int with 1= low lumi 00067 // 2 = high lumi. This is not very pleasant, but leave for now 00068 //-------------------------------------------------------------------------- 00069 int m_lumi; 00070 double m_rconeb; 00071 double m_rconef; 00072 double m_BarrelForwardEta; 00073 }; 00074 00075 } // end of namespace bracket 00076 00077 #endif 00078 00079