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"))
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);
std::vector< ExP01TrackerHit * > a
static constexpr double MeV
const G4String & GetParticleName() const
const G4String & GetParticleType() const
G4double GetPDGCharge() const
IORTRunAction * runAction
G4ParticleDefinition * GetDefinition() const
void heliumEnergy(G4double secondaryParticleKineticEnergy)
Energy distribution of the helium (He3 and alpha) particles after the phantom.
void hydrogenEnergy(G4double secondaryParticleKineticEnergy)
Energy distribution of the hydrogen (proton, d, t) particles after the phantom.
void UserSteppingAction(const G4Step *)
IORTSteppingAction(IORTRunAction *)
G4int GetBaryonNumber() const
void FillFragmentTuple(G4int A, G4double Z, G4double energy, G4double posX, G4double posY, G4double posZ)
Energy ntuple.
double A(double temperature)
G4Track * GetTrack() const
const G4ThreeVector & GetPosition() const
G4SteppingManager * fpSteppingManager
std::vector< G4Track * > G4TrackVector
static IORTAnalysisManager * GetInstance()
G4GLOB_DLL std::ostream G4cout
static constexpr double cm
void SetTrackStatus(const G4TrackStatus aTrackStatus)
const G4String & GetName() const
G4VPhysicalVolume * GetVolume() const