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__ 00019 #define __Atlfast_Jetsmearer__ 00020 00021 00022 #include "AtlfastCode/ISmearer.h" 00023 #include "AtlfastCode/DefaultSmearer.h" 00024 00025 class HepLorentzVector; //forward declaration 00026 00027 namespace Atlfast { 00034 class JetSmearer : virtual public ISmearer, 00035 virtual private DefaultSmearer 00036 { 00037 public: 00038 //-------------------------------------------------------------------------- 00039 // constructors and destructors- we can leave everything to DefaultSmearer 00040 //-------------------------------------------------------------------------- 00041 JetSmearer(const int aseed, 00042 const int lumi, 00043 const double rconeb, 00044 const double rconef, 00045 const double barrelForwardEta) : 00046 ISmearer(), 00047 DefaultSmearer(aseed), 00048 m_lumi(lumi), 00049 m_rconeb(rconeb), 00050 m_rconef(rconef), 00051 m_BarrelForwardEta(barrelForwardEta) 00052 { } 00053 virtual ~JetSmearer() { } 00054 00055 //-------------------------------------------------------------------------- 00056 // the only thing we actually need to provide is the smear() method 00057 //-------------------------------------------------------------------------- 00058 virtual HepLorentzVector smear(const HepLorentzVector& avec); 00059 00060 private: 00061 //-------------------------------------------------------------------------- 00062 // luminosity option. Currently using an int with 1= low lumi 00063 // 2 = high lumi. This is not very pleasant, but leave for now 00064 //-------------------------------------------------------------------------- 00065 int m_lumi; 00066 double m_rconeb; 00067 double m_rconef; 00068 double m_BarrelForwardEta; 00069 }; 00070 00071 } // end of namespace bracket 00072 00073 #endif 00074 00075