00001 // PhotonSmearer class 00002 // 00003 // Implements smearing for photons a la 00004 // 00005 // Namespace Atlfast:: 00006 // 00007 //-------------------------------------------------------------- 00008 // 00009 // PhotonSmearer replicates the smearing code of ATLFAST++'s 00010 // PhotonMaker. 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_PHOTONSMEARER_H 00019 #define ATLFAST_PHOTONSMEARER_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 { 00037 class PhotonSmearer : virtual public ISmearer, 00038 virtual private DefaultSmearer 00039 { 00040 public: 00041 //-------------------------------------------------------------------------- 00042 // constructors and destructors- we can leave everything to DefaultSmearer 00043 //-------------------------------------------------------------------------- 00044 PhotonSmearer(const int aseed, const int lumi, MsgStream& log) : 00045 ISmearer(), DefaultSmearer(aseed), m_lumi(lumi), m_log(log){} 00046 virtual ~PhotonSmearer() { } 00047 00048 //-------------------------------------------------------------------------- 00049 // the only thing we actually need to provide is the smear() method 00050 //-------------------------------------------------------------------------- 00052 virtual HepLorentzVector smear(const HepMC::GenParticle&); 00053 virtual HepLorentzVector smear(const HepLorentzVector& avec); 00054 00057 virtual int setSmearParameters( const std::vector<double>& smearValues ); 00058 virtual int setSmearParamSchema( const int smearSchema ); 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 //cw - defines the smear parameters and the schema 00067 std::vector<double> m_smearParams; 00068 int m_smearParamSchema; 00069 MsgStream& m_log; 00070 00071 }; 00072 00073 } // end of namespace bracket 00074 00075 #endif