//////////////////////////////////////////////////////////////////// /// \class RAT::GunPMTGamma /// /// \brief Generates PMT Gamma events in set filled volume(s). /// /// \author Sean Grullon -- contact person /// /// REVISION HISTORY:\n /// 10 Sep 2013 : Sean Grullon - Initial definition /// 16 Aug 2020 : Juan Pablo Yanez - Added the missing beta /// /// \details /// An extra GLG4Vertex generator class for primary events, /// based on Bill Heintzelman's weighted PMT gamma // distribution (See docdb 1712) for details about // the weighting) This generator takes the generated R position, ///and samples from Bill's weighting function to get the // appropriate angular distribution for PMT gammas. // Note, this generator is only physically meaningful for // PMT 2.6 MeV gammas, and not for other backgrounds or particles // It now also has the accompanying beta to go with the gamma //////////////////////////////////////////////////////////////////// #ifndef __GunPMTGamma_h__ #define __GunPMTGamma_h__ #include class GLG4VertexGen_GunPMTGamma : public GLG4VertexGen { public: // only generate primary vertex is overloaded... GLG4VertexGen_GunPMTGamma(const char *arg_dbname="gunpmtgamma"); virtual ~GLG4VertexGen_GunPMTGamma(); virtual void GeneratePrimaryVertex( G4Event *argEvent, G4ThreeVector &dx, G4double dt); virtual void SetState( G4String newValues ); // format: gamma_kinetic_energy beta_radius beta_energy_scale // particle is hardcoded to be a gamma. virtual G4String GetState(); // returns current state formatted as above // the following useful static const data should be universally accessible // (I copied it from the G4IonTable source code, where it is privatized // with no accessor functions.) protected: G4ParticleDefinition *fPDef; G4ParticleDefinition *fPDefBeta; G4double fKe; G4double fBetaRadius; G4double fBetaEscale; }; #endif