91 #ifdef G4ANALYSIS_USE_ROOT
96 if(particleType ==
"nucleus") {
102 G4double energy = secondaryParticleKineticEnergy / A / CLHEP::MeV;
105 analysisMgr->FillFragmentTuple(A, Z, energy, posX, posY, posZ);
106 }
else if(particleName ==
"proton") {
114 G4String secondaryParticleName = def -> GetParticleName();
119 if(secondaryParticleName ==
"proton") {
120 analysis->hydrogenEnergy(secondaryParticleKineticEnergy / CLHEP::MeV);
122 if(secondaryParticleName ==
"deuteron") {
123 analysis->hydrogenEnergy((secondaryParticleKineticEnergy/2) / CLHEP::MeV);
125 if(secondaryParticleName ==
"triton") {
126 analysis->hydrogenEnergy((secondaryParticleKineticEnergy/3) / CLHEP::MeV);
128 if(secondaryParticleName ==
"alpha") {
129 analysis->heliumEnergy((secondaryParticleKineticEnergy/4) / CLHEP::MeV);
131 if(secondaryParticleName ==
"He3"){
132 analysis->heliumEnergy((secondaryParticleKineticEnergy/3) / CLHEP::MeV);
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 #ifdef G4ANALYSIS_USE_ROOT
182 G4String secondaryParticleName = (*fSecondary)[lp1]->GetDefinition() -> GetParticleName();
183 G4double secondaryParticleKineticEnergy = (*fSecondary)[lp1] -> GetKineticEnergy();
187 if (secondaryParticleName ==
"e-")
188 analysis -> electronEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
190 if (secondaryParticleName ==
"gamma")
191 analysis -> gammaEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
193 if (secondaryParticleName ==
"deuteron")
194 analysis -> deuteronEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
196 if (secondaryParticleName ==
"triton")
197 analysis -> tritonEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
199 if (secondaryParticleName ==
"alpha")
200 analysis -> alphaEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
202 G4double z = (*fSecondary)[lp1]-> GetDynamicParticle() -> GetDefinition() -> GetPDGCharge();
205 G4int a = (*fSecondary)[lp1]-> GetDynamicParticle() -> GetDefinition() -> GetBaryonNumber();
206 G4int electronOccupancy = (*fSecondary)[lp1] -> GetDynamicParticle() -> GetTotalOccupancy();
210 analysis -> genericIonInformation(a, z, electronOccupancy, secondaryParticleKineticEnergy/CLHEP::MeV);
void SetTrackStatus(const G4TrackStatus aTrackStatus)
G4ParticleDefinition * GetDefinition() const
const G4ThreeVector & GetPosition() const
const G4String & GetParticleName() const
void UserSteppingAction(const G4Step *)
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
const G4String & GetName() const
G4SteppingManager * fpSteppingManager
const G4String & GetParticleType() const
static IORTAnalysisManager * GetInstance()
std::vector< G4Track * > G4TrackVector
IORTSteppingAction(IORTRunAction *)
G4VPhysicalVolume * GetVolume() const
G4Track * GetTrack() const
G4double GetPDGCharge() const
G4int GetBaryonNumber() const