34 #include "RunAction.hh"
35 #include "DetectorConstruction.hh"
36 #include "PhysicsList.hh"
38 #include "PrimaryGeneratorAction.hh"
39 #include "HistoManager.hh"
54 :fDetector(det),fPhysics(phys),fKinematic(kin),fHistoManager(histo)
74 fEdeposit = fEdeposit2 = 0.;
78 fTrackLen = fTrackLen2 = 0.;
82 fProjRange = fProjRange2 = 0.;
86 fNbOfSteps = fNbOfSteps2 = 0; fStepSize = fStepSize2 = 0.;
97 fCsdaRange = emCalculator.
GetCSDARange(energy,particle,material);
101 fHistoManager->
book();
113 std::ios::fmtflags mode =
G4cout.flags();
114 G4cout.setf(std::ios::fixed,std::ios::floatfield);
117 if (NbofEvents == 0)
return;
118 G4double fNbofEvents = double(NbofEvents);
130 G4cout <<
"\n ======================== run summary ======================\n";
134 G4cout <<
"\n The run consists of " << NbofEvents <<
" "<< partName <<
" of "
137 << material->
GetName() <<
" (density: "
140 G4cout <<
"\n ============================================================\n";
144 fEdeposit /= NbofEvents; fEdeposit2 /= NbofEvents;
145 G4double rms = fEdeposit2 - fEdeposit*fEdeposit;
146 if (rms>0.) rms = std::sqrt(rms);
else rms = 0.;
150 <<
"\n Total Energy deposited = " <<
G4BestUnit(fEdeposit,
"Energy")
156 fTrackLen /= NbofEvents; fTrackLen2 /= NbofEvents;
157 rms = fTrackLen2 - fTrackLen*fTrackLen;
158 if (rms>0.) rms = std::sqrt(rms);
else rms = 0.;
162 <<
"\n Track length of primary track = " <<
G4BestUnit(fTrackLen,
"Length")
172 <<
"\n Range from EmCalculator = " <<
G4BestUnit(fCsdaRange,
"Length")
173 <<
" (from full dE/dx)" <<
G4endl;
177 fProjRange /= NbofEvents; fProjRange2 /= NbofEvents;
178 rms = fProjRange2 - fProjRange*fProjRange;
179 if (rms>0.) rms = std::sqrt(rms);
else rms = 0.;
182 <<
"\n Projected range = " <<
G4BestUnit(fProjRange,
"Length")
188 G4double fNbSteps = fNbOfSteps/fNbofEvents, fNbSteps2 = fNbOfSteps2/fNbofEvents;
189 rms = fNbSteps2 - fNbSteps*fNbSteps;
190 if (rms>0.) rms = std::sqrt(rms);
else rms = 0.;
193 G4cout <<
"\n Nb of steps of primary track = " << fNbSteps <<
" +- " << rms;
195 fStepSize /= NbofEvents; fStepSize2 /= NbofEvents;
196 rms = fStepSize2 - fStepSize*fStepSize;
197 if (rms>0.) rms = std::sqrt(rms);
else rms = 0.;
201 <<
"\t Step size= " <<
G4BestUnit(fStepSize,
"Length")
216 fac = 1./(NbofEvents*binWidth*
energy);
220 G4cout.setf(mode,std::ios::floatfield);
224 fHistoManager->
save();