File indexing completed on 2026-09-11 08:29:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef EXN04_PRIMARY_GENERATOR_ACTION_H
0030 #define EXN04_PRIMARY_GENERATOR_ACTION_H
0031
0032 #include "G4VUserPrimaryGeneratorAction.hh"
0033 #include "globals.hh"
0034
0035 #include <map>
0036
0037 class G4Event;
0038 class G4VPrimaryGenerator;
0039 class ExN04PrimaryGeneratorMessenger;
0040
0041 class ExN04PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
0042 {
0043 public:
0044 ExN04PrimaryGeneratorAction();
0045 ~ExN04PrimaryGeneratorAction();
0046
0047 virtual void GeneratePrimaries(G4Event* anEvent);
0048
0049 void SetGenerator(G4VPrimaryGenerator* gen);
0050 void SetGenerator(G4String genname);
0051
0052 G4VPrimaryGenerator* GetGenerator() const;
0053 G4String GetGeneratorName() const;
0054
0055 private:
0056 G4VPrimaryGenerator* fParticleGun;
0057 G4VPrimaryGenerator* fHepmcAscii;
0058 G4VPrimaryGenerator* fPythiaGen;
0059
0060 G4VPrimaryGenerator* fCurrentGenerator;
0061 G4String fCurrentGeneratorName;
0062 std::map<G4String, G4VPrimaryGenerator*> fGentypeMap;
0063
0064 ExN04PrimaryGeneratorMessenger* fMessenger;
0065 };
0066
0067
0068 inline void ExN04PrimaryGeneratorAction::SetGenerator(G4VPrimaryGenerator* gen)
0069 {
0070 fCurrentGenerator = gen;
0071 }
0072
0073 inline void ExN04PrimaryGeneratorAction::SetGenerator(G4String genname)
0074 {
0075 std::map<G4String, G4VPrimaryGenerator*>::iterator pos = fGentypeMap.find(genname);
0076 if (pos != fGentypeMap.end()) {
0077 fCurrentGenerator = pos->second;
0078 fCurrentGeneratorName = genname;
0079 }
0080 }
0081
0082 inline G4VPrimaryGenerator* ExN04PrimaryGeneratorAction::GetGenerator() const
0083 {
0084 return fCurrentGenerator;
0085 }
0086
0087 inline G4String ExN04PrimaryGeneratorAction::GetGeneratorName() const
0088 {
0089 return fCurrentGeneratorName;
0090 }
0091
0092 #endif