00001 // DefaultSmearer class 00002 // 00003 // Namespace Atlfast:: 00004 // 00005 //----------------------------------------------------------------- 00006 // 00007 // This class provides a default implementation of the ISmearer 00008 // interface. It manages the generation of random numbers and 00009 // implements the smear() function required by ISmear 00010 // 00011 // Prototype- needs tidying up! 00012 // 00013 // Authors: H.T.Phillips, P. Clarke, E. Richter-Was, P. Sherwood, R. Steward 00014 // 00015 // 00016 // 00017 00018 #ifndef __Atlfast_defaultsmearer__ 00019 #define __Atlfast_defaultsmearer__ 00020 00021 //CLHEP includes 00022 #include "CLHEP/Random/RandGauss.h" 00023 #include "CLHEP/Random/JamesRandom.h" 00024 00025 //Atlfast includes 00026 #include "AtlfastCode/ISmearer.h" 00027 00028 namespace Atlfast { 00034 class DefaultSmearer : public ISmearer { 00035 00036 public: 00037 //---------------------------------------- 00038 // Constructors and Destructors 00039 //---------------------------------------- 00041 DefaultSmearer (const int aseed ); 00042 00043 virtual ~DefaultSmearer(); 00044 00045 //---------------------------------------- 00046 // The Smear Method 00047 //---------------------------------------- 00049 virtual HepLorentzVector smear( const HepLorentzVector& ); 00050 00051 //------------------------------------------------ 00056 inline RandGauss* randGauss( ) { return m_randGauss;} 00057 00058 private: 00059 //---------------------------------------- 00060 // Private Methods 00061 //---------------------------------------- 00062 00063 //---------------------------------------- 00064 // Data Members 00065 //--------------------------------------- 00066 00067 // For now, we manage the random number engine 00068 // ourselves. In the future we can use the framework 00069 // random number service (Gaudi 4 has one for example) 00070 // WE SHOULD USE THIS SERVICE ASAP!! 00071 00073 HepRandomEngine* m_randomEngine; 00078 RandGauss* m_randGauss; 00079 00080 // And the random number seed which I put here as a member 00081 // variable because I hope to allow it to be written with 00082 // jobOptions eventually... 00083 // Although right now it is not used anywhere other than the 00084 // constructor. 00086 int m_randSeed; 00087 00088 }; 00089 00090 00091 } // end of namespace bracket 00092 00093 #endif