00001 00008 #ifndef GTINVERSEBETA_H 00009 #define GTINVERSEBETA_H 00010 00011 00012 #include "GenTools/IHepMCEventMutator.h" 00013 #include "GaudiAlg/GaudiTool.h" 00014 #include "HepMC/GenParticle.h" 00015 #include <CLHEP/Vector/ThreeVector.h> 00016 #include "TF2.h" 00017 00018 #include <string> 00019 using namespace CLHEP; 00020 00021 class GtInverseBeta : public GaudiTool, 00022 virtual public IHepMCEventMutator 00023 { 00024 public: 00025 00026 GtInverseBeta(const std::string& type, 00027 const std::string& name, 00028 const IInterface* parent); 00029 virtual ~GtInverseBeta(); 00030 00031 virtual StatusCode initialize(); 00032 virtual StatusCode finalize(); 00033 00034 // HepMCEventMutator interface 00035 virtual StatusCode mutate(HepMC::GenEvent& event); 00036 00037 void GenerateInverseBetaPrimaries(TF2*, const double, 00038 Hep3Vector&, Hep3Vector&, Hep3Vector&); 00039 00040 private: 00041 TF2 *funcInvBetaProb; 00042 00043 double m_neutrino_angle_in_deg; 00044 bool m_positron_only; 00045 bool m_neutron_only; 00046 00047 HepMC::GenParticle* make_particle(Hep3Vector&, double, int); 00048 00049 }; 00050 00051 00052 #endif // GTINVERSEBETA_H