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_H 00019 #define ATLFAST_DEFAULTSMEARER_H 00020 00021 //Atlfast includes 00022 #include "AtlfastCode/ISmearer.h" 00023 00024 class RandGauss; 00025 class HepRandomEngine; 00026 00027 namespace Atlfast { 00033 class DefaultSmearer : public ISmearer { 00034 00035 public: 00036 //---------------------------------------- 00037 // Constructors and Destructors 00038 //---------------------------------------- 00040 DefaultSmearer (const int aseed ); 00041 00042 virtual ~DefaultSmearer(); 00043 00044 //---------------------------------------- 00045 // The Smear Method 00046 //---------------------------------------- 00048 virtual HepLorentzVector smear( const HepLorentzVector& ); 00049 00050 //------------------------------------------------ 00055 inline RandGauss* randGauss( ) { return m_randGauss;} 00056 00057 private: 00058 //---------------------------------------- 00059 // Private Methods 00060 //---------------------------------------- 00061 00062 //---------------------------------------- 00063 // Data Members 00064 //--------------------------------------- 00065 00066 // For now, we manage the random number engine 00067 // ourselves. In the future we can use the framework 00068 // random number service (Gaudi 4 has one for example) 00069 // WE SHOULD USE THIS SERVICE ASAP!! 00070 00072 HepRandomEngine* m_randomEngine; 00077 RandGauss* m_randGauss; 00078 00079 // And the random number seed which I put here as a member 00080 // variable because I hope to allow it to be written with 00081 // jobOptions eventually... 00082 // Although right now it is not used anywhere other than the 00083 // constructor. 00085 int m_randSeed; 00086 00087 }; 00088 00089 00090 } // end of namespace bracket 00091 00092 #endif