File indexing completed on 2025-01-31 09:22:04
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 #include "eRositaActionInitialization.hh"
0028 #include "eRositaDetectorConstruction.hh"
0029 #include "eRositaPrimaryGeneratorAction.hh"
0030
0031 #include "globals.hh"
0032 #include "G4SystemOfUnits.hh"
0033 #include "G4Event.hh"
0034 #include "G4ParticleGun.hh"
0035 #include "G4ParticleTable.hh"
0036 #include "G4ParticleDefinition.hh"
0037
0038
0039
0040 eRositaPrimaryGeneratorAction::eRositaPrimaryGeneratorAction()
0041 {
0042 constexpr auto NUMBER_OF_PARTICLES{1};
0043 particleGun = new G4ParticleGun(NUMBER_OF_PARTICLES);
0044
0045
0046 auto *particleTable = G4ParticleTable::GetParticleTable();
0047 auto *particle = particleTable->FindParticle("proton");
0048
0049 constexpr auto PARTICLE_ENERGY{100.0 * MeV};
0050 particleGun->SetParticleDefinition(particle);
0051 particleGun->SetParticleMomentumDirection(G4ThreeVector(momentumDirectionX, momentumDirectionY, momentumDirectionZ));
0052 particleGun->SetParticleEnergy(PARTICLE_ENERGY);
0053 }
0054
0055
0056
0057 eRositaPrimaryGeneratorAction::~eRositaPrimaryGeneratorAction()
0058 {
0059 delete particleGun;
0060 }
0061
0062
0063
0064 void eRositaPrimaryGeneratorAction::GeneratePrimaries(G4Event* event)
0065 {
0066 constexpr auto INITIAL_POSITION_X{0.0 * cm};
0067 constexpr auto INITIAL_POSITION_Y{2.25 * cm};
0068 constexpr auto INITIAL_POSITION_Z{4.0 * cm};
0069
0070 positionX = INITIAL_POSITION_X;
0071 positionY = INITIAL_POSITION_Y;
0072 positionZ = INITIAL_POSITION_Z;
0073
0074 particleGun->SetParticlePosition(G4ThreeVector(positionX, positionY, positionZ));
0075 particleGun->GeneratePrimaryVertex(event);
0076 }