File indexing completed on 2025-02-23 09:21:09
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
0030
0031
0032
0033
0034 #include "PrimaryGeneratorAction.hh"
0035
0036 #include "PrimaryGeneratorAction0.hh"
0037 #include "PrimaryGeneratorAction1.hh"
0038 #include "PrimaryGeneratorAction2.hh"
0039 #include "PrimaryGeneratorAction3.hh"
0040 #include "PrimaryGeneratorAction4.hh"
0041 #include "PrimaryGeneratorMessenger.hh"
0042
0043 #include "G4Event.hh"
0044 #include "G4ParticleDefinition.hh"
0045 #include "G4ParticleGun.hh"
0046 #include "G4ParticleTable.hh"
0047 #include "Randomize.hh"
0048
0049
0050
0051 PrimaryGeneratorAction::PrimaryGeneratorAction()
0052 {
0053
0054
0055 G4int n_particle = 1;
0056 fParticleGun = new G4ParticleGun(n_particle);
0057
0058 G4ParticleDefinition* particle = G4ParticleTable::GetParticleTable()->FindParticle("geantino");
0059 fParticleGun->SetParticleDefinition(particle);
0060
0061 fParticleGun->SetParticlePosition(G4ThreeVector(0., 0., 0.));
0062
0063 fAction0 = new PrimaryGeneratorAction0(fParticleGun);
0064 fAction1 = new PrimaryGeneratorAction1(fParticleGun);
0065 fAction2 = new PrimaryGeneratorAction2(fParticleGun);
0066 fAction3 = new PrimaryGeneratorAction3(fParticleGun);
0067 fAction4 = new PrimaryGeneratorAction4(fParticleGun);
0068
0069
0070 fGunMessenger = new PrimaryGeneratorMessenger(this);
0071 }
0072
0073
0074
0075 PrimaryGeneratorAction::~PrimaryGeneratorAction()
0076 {
0077 delete fAction0;
0078 delete fAction1;
0079 delete fAction2;
0080 delete fAction3;
0081 delete fAction4;
0082 delete fParticleGun;
0083 delete fGunMessenger;
0084 }
0085
0086
0087
0088 void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
0089 {
0090 switch (fSelectedAction) {
0091 case 0:
0092 fAction0->GeneratePrimaries(anEvent);
0093 break;
0094 case 1:
0095 fAction1->GeneratePrimaries(anEvent);
0096 break;
0097 case 2:
0098 fAction2->GeneratePrimaries(anEvent);
0099 break;
0100 case 3:
0101 fAction3->GeneratePrimaries(anEvent);
0102 break;
0103 case 4:
0104 fAction4->GeneratePrimaries(anEvent);
0105 break;
0106 default:
0107 G4cerr << "Invalid generator fAction" << G4endl;
0108 }
0109 }
0110
0111