File indexing completed on 2024-09-27 07:02:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef eASTHepMC3Interface_h
0012 #define eASTHepMC3Interface_h 1
0013
0014 #include "G4VPrimaryGenerator.hh"
0015 #include "G4PrimaryVertex.hh"
0016 #include "globals.hh"
0017
0018 #include <HepMC3/Reader.h>
0019 #include <set>
0020 #include <map>
0021
0022
0023 class G4Event;
0024 class G4GenericMessenger;
0025
0026 class eASTHepMC3Interface : public G4VPrimaryGenerator
0027 {
0028 private:
0029 static eASTHepMC3Interface* instance;
0030 static G4bool instantiated;
0031
0032 public:
0033
0034
0035 static eASTHepMC3Interface* GetInstance();
0036
0037 private:
0038 eASTHepMC3Interface();
0039
0040 public:
0041 virtual ~eASTHepMC3Interface();
0042
0043 public:
0044
0045
0046 virtual void GeneratePrimaryVertex(G4Event*);
0047
0048 public:
0049
0050
0051 G4bool OpenFile(G4String);
0052
0053
0054 void SetVertexPosition(G4ThreeVector vPos)
0055 { vPosition = vPos; }
0056 G4ThreeVector GetVertexPosition() const
0057 { return vPosition; }
0058
0059
0060 void SetVertexTime(G4double t0)
0061 { vTime = t0; }
0062 G4double GetVertexTime() const
0063 { return vTime; }
0064
0065
0066 void SetVerbose(G4int vl)
0067 { verboseLevel = vl; }
0068
0069 private:
0070 G4String fileName;
0071 G4GenericMessenger* messenger;
0072
0073 G4ThreeVector vPosition = G4ThreeVector(0.,0.,0.);
0074 G4double vTime = 0.;
0075 G4int verboseLevel = 1;
0076
0077 std::shared_ptr<HepMC3::Reader> HepMC3Reader;
0078 G4PrimaryParticle* MakeParticle ( const HepMC3::ConstGenParticlePtr hep_p,
0079 const bool safetycheck, std::set<int>& used);
0080
0081 std::map<int,G4PrimaryParticle*> created_daughters;
0082
0083 };
0084
0085 #endif