34 #include "RunAction.hh"
36 #include "DetectorConstruction.hh"
37 #include "PrimaryGeneratorAction.hh"
38 #include "HistoManager.hh"
71 CLHEP::HepRandom::showEngineStatus();
84 if ( analysisManager->IsActive() ) {
85 analysisManager->OpenFile();
96 while ((i<nbProc)&&((*
fProcCounter)[i]->GetName()!=procName)) i++;
99 (*fProcCounter)[i]->Count();
107 if (NbOfEvents == 0)
return;
118 G4cout <<
"\n The run consists of " << NbOfEvents <<
" "<< Particle <<
" of "
121 << material->
GetName() <<
" (density: "
125 G4cout <<
"\n Process calls frequency --->";
127 G4String procName = (*fProcCounter)[i]->GetName();
128 G4int count = (*fProcCounter)[i]->GetCounter();
129 G4cout <<
"\t" << procName <<
" = " << count;
138 G4double rmsTPL = std::sqrt(std::fabs(MeanTPL2 - MeanTPL*MeanTPL));
142 G4double rmsGPL = std::sqrt(std::fabs(MeanGPL2 - MeanGPL*MeanGPL));
146 G4double rmsLaD = std::sqrt(std::fabs(MeanLaD2 - MeanLaD*MeanLaD));
150 G4double rmsPsi = std::sqrt(std::fabs(MeanPsi2 - MeanPsi*MeanPsi));
154 G4double rmsTeta = std::sqrt(std::fabs(MeanTeta2 - MeanTeta*MeanTeta));
158 G4double rmsCorrel = std::sqrt(std::fabs(MeanCorrel2-MeanCorrel*MeanCorrel));
162 <<
"\n geomPathLength :\t" <<
G4BestUnit(MeanGPL,
"Length")
164 <<
"\n lateralDisplac :\t" <<
G4BestUnit(MeanLaD,
"Length")
166 <<
"\n Psi :\t" << MeanPsi/
mrad <<
" mrad"
167 <<
" +- " << rmsPsi /
mrad <<
" mrad"
168 <<
" (" << MeanPsi/
deg <<
" deg"
169 <<
" +- " << rmsPsi /
deg <<
" deg)"
172 G4cout <<
"\n Theta_plane :\t" << rmsTeta/
mrad <<
" mrad"
173 <<
" (" << rmsTeta/
deg <<
" deg)"
174 <<
"\n phi correlation:\t" << MeanCorrel
175 <<
" +- " << rmsCorrel
176 <<
" (std::cos(phi_pos - phi_dir))"
182 G4cout <<
"\n Verification from G4EmCalculator. \n";
194 if (MeanTPL/range >= 0.99) efFacrange = 1.;
197 <<
"\n range from restrict dE/dx:\t" <<
G4BestUnit(range,
"Length")
198 <<
"\n ---> effective facRange :\t" << efFacrange
201 G4cout <<
"\n compute theta0 from Highland :\t"
219 if ( analysisManager->IsActive() ) {
220 analysisManager->Write();
221 analysisManager->CloseFile();
225 CLHEP::HepRandom::showEngineStatus();
245 G4double teta0 = 13.6*
MeV*z*std::sqrt(t)*(1.+0.038*std::log(t))/bpc;
std::vector< OneProcessCount * > ProcessesCount
PrimaryGeneratorAction class.
void BeginOfRunAction(const G4Run *)
G4double ComputeMscHighland(G4double pathLength)
const G4String & GetName() const
G4double GetDensity() const
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
G4double GetMeanFreePath(G4double kinEnergy, const G4ParticleDefinition *, const G4String &processName, const G4Material *, const G4Region *r=0)
DetectorConstruction * fDetector
const G4String & GetParticleName() const
HistoManager * fHistoManager
G4GLOB_DLL std::ostream G4cout
G4int GetNumberOfEvent() const
G4Material * GetMaterial()
void EndOfRunAction(const G4Run *)
G4double GetRangeFromRestricteDEDX(G4double kinEnergy, const G4ParticleDefinition *, const G4Material *, const G4Region *r=0)
ExG4HbookAnalysisManager G4AnalysisManager
void CountProcesses(G4String)
G4double GetRadlen() const
ProcessesCount * fProcCounter
G4double GetPDGMass() const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4ParticleGun * GetParticleGun()
G4double energy(const ThreeVector &p, const G4double m)
G4ParticleDefinition * GetParticleDefinition() const
Detector construction class to demonstrate various ways of placement.
static const double eplus
G4double GetPDGCharge() const
G4double GetParticleEnergy() const
PrimaryGeneratorAction * fPrimary