00001 00023 #ifndef GTBEAMERTOOL_H 00024 #define GTBEAMERTOOL_H 00025 00026 #include "GaudiAlg/GaudiTool.h" 00027 #include "GenTools/IHepMCEventMutator.h" 00028 #include "GaudiKernel/RndmGenerators.h" 00029 #include "CLHEP/Vector/ThreeVector.h" 00030 #include "CLHEP/Vector/LorentzVector.h" 00031 00032 #include <string> 00033 #include <vector> 00034 00035 class GtBeamerTool : public GaudiTool, 00036 virtual public IHepMCEventMutator 00037 { 00038 00039 public: 00040 00041 GtBeamerTool(const std::string& type, 00042 const std::string& name, 00043 const IInterface* parent); 00044 virtual ~GtBeamerTool(); 00045 00046 virtual StatusCode initialize(); 00047 virtual StatusCode finalize(); 00048 00049 virtual StatusCode mutate(HepMC::GenEvent& event); 00050 00051 00052 private: 00053 00055 double m_radius; 00056 00058 int m_particlesPerEvent; 00059 00061 double m_momentum; 00062 00064 std::string m_particleName; 00065 00068 std::string m_targetElement; 00069 00072 std::vector<double> m_targetOffset; 00073 00075 std::vector<double> m_sourceDirection; 00076 00078 double m_distance; 00079 00080 // private cache: 00081 00082 Rndm::Numbers m_uni; 00083 CLHEP::Hep3Vector m_position, m_direction; 00084 int m_pid; 00085 CLHEP::HepLorentzVector m_fourmom; 00086 }; 00087 00088 #endif // GTBEAMERTOOL_H