97 if(particleType ==
"nucleus") {
107 }
else if(particleName ==
"proton") {
115 G4String secondaryParticleName = def -> GetParticleName();
120 if(secondaryParticleName ==
"proton") {
123 if(secondaryParticleName ==
"deuteron") {
126 if(secondaryParticleName ==
"triton") {
129 if(secondaryParticleName ==
"alpha") {
132 if(secondaryParticleName ==
"He3"){
141 if ((aStep -> GetTrack() -> GetTrackID() == 1) &&
142 (aStep -> GetTrack() -> GetVolume() -> GetName() ==
"PhantomPhys") &&
143 (aStep -> GetPostStepPoint() -> GetProcessDefinedStep() != NULL))
145 G4String process = aStep -> GetPostStepPoint() ->
146 GetProcessDefinedStep() -> GetProcessName();
148 if ((process ==
"Transportation") || (process ==
"StepLimiter")) {;}
151 if ((process ==
"msc") || (process ==
"hLowEIoni") || (process ==
"hIoni"))
153 runAction -> AddEMProcess();
157 runAction -> AddHadronicProcess();
159 if ( (process !=
"LElastic") && (process !=
"ProtonInelastic") && (process !=
"hElastic") )
160 G4cout <<
"Warning! Unknown proton process: "<< process <<
G4endl;
173 G4TrackVector* fSecondary = steppingManager -> GetfSecondary();
175 for(
size_t lp1=0;lp1<(*fSecondary).size(); lp1++)
177 G4String volumeName = (*fSecondary)[lp1] -> GetVolume() -> GetName();
179 if (volumeName ==
"phantomPhys")
181 G4String secondaryParticleName = (*fSecondary)[lp1]->GetDefinition() -> GetParticleName();
182 G4double secondaryParticleKineticEnergy = (*fSecondary)[lp1] -> GetKineticEnergy();
186 if (secondaryParticleName ==
"e-")
187 analysis -> electronEnergyDistribution(secondaryParticleKineticEnergy/
MeV);
189 if (secondaryParticleName ==
"gamma")
190 analysis -> gammaEnergyDistribution(secondaryParticleKineticEnergy/
MeV);
192 if (secondaryParticleName ==
"deuteron")
193 analysis -> deuteronEnergyDistribution(secondaryParticleKineticEnergy/
MeV);
195 if (secondaryParticleName ==
"triton")
196 analysis -> tritonEnergyDistribution(secondaryParticleKineticEnergy/
MeV);
198 if (secondaryParticleName ==
"alpha")
199 analysis -> alphaEnergyDistribution(secondaryParticleKineticEnergy/
MeV);
201 G4double z = (*fSecondary)[lp1]-> GetDynamicParticle() -> GetDefinition() -> GetPDGCharge();
204 G4int a = (*fSecondary)[lp1]-> GetDynamicParticle() -> GetDefinition() -> GetBaryonNumber();
205 G4int electronOccupancy = (*fSecondary)[lp1] -> GetDynamicParticle() -> GetTotalOccupancy();
209 analysis -> genericIonInformation(a, z, electronOccupancy, secondaryParticleKineticEnergy/
MeV);
void SetTrackStatus(const G4TrackStatus aTrackStatus)
G4ParticleDefinition * GetDefinition() const
std::vector< ExP01TrackerHit * > a
const G4ThreeVector & GetPosition() const
void hydrogenEnergy(G4double secondaryParticleKineticEnergy)
Energy distribution of the hydrogen (proton, d, t) particles after the phantom.
const G4String & GetParticleName() const
void FillFragmentTuple(G4int A, G4double Z, G4double energy, G4double posX, G4double posY, G4double posZ)
Energy ntuple.
void UserSteppingAction(const G4Step *)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
const G4String & GetName() const
G4SteppingManager * fpSteppingManager
static constexpr double cm
const G4String & GetParticleType() const
static IORTAnalysisManager * GetInstance()
std::vector< G4Track * > G4TrackVector
G4double energy(const ThreeVector &p, const G4double m)
IORTSteppingAction(IORTRunAction *)
G4VPhysicalVolume * GetVolume() const
static constexpr double MeV
G4Track * GetTrack() const
G4double GetPDGCharge() const
G4int GetBaryonNumber() const
void heliumEnergy(G4double secondaryParticleKineticEnergy)
Energy distribution of the helium (He3 and alpha) particles after the phantom.