34 #include "RunAction.hh"
35 #include "DetectorConstruction.hh"
36 #include "PrimaryGeneratorAction.hh"
37 #include "HistoManager.hh"
51 :fDetector(det), fPrimary(kin), fHistoManager(0)
73 CLHEP::HepRandom::showEngineStatus();
78 if ( analysisManager->IsActive() ) {
79 analysisManager->OpenFile();
88 if (TotNbofEvents == 0)
return;
101 G4cout <<
"\n ======================== run summary ======================\n";
105 G4cout <<
"\n The run was " << TotNbofEvents <<
" " << partName <<
" of "
108 << material->
GetName() <<
" (density: "
117 analysisManager->ScaleH1(1,fac);
118 analysisManager->ScaleH1(2,fac);
119 analysisManager->ScaleH1(3,fac);
120 analysisManager->ScaleH1(5,fac);
121 analysisManager->ScaleH1(6,fac);
127 if ( analysisManager->IsActive() ) {
128 analysisManager->Write();
129 analysisManager->CloseFile();
133 CLHEP::HepRandom::showEngineStatus();
144 analysisManager->SetH1(ih, 120, 0*
mm, 240*
mm,
"mm");
148 fNbBins = analysisManager->GetH1Nbins(ih);
149 fDr = analysisManager->GetH1Width(ih);
178 ds = twopi*rmean*
fDr;
185 if(variance > 0.) rms = std::sqrt(variance);
191 G4double rnorm(4*
mm), radius(0.), fnorm(0.), fnorm2(0.);
195 }
while (radius < rnorm);
201 G4double err0 = fnorm2/fnorm, err1 = 0.;
210 error = ratio*std::sqrt(err1*err1 + err0*err0);
216 analysisManager->FillH1(4,rmean,ratio);
228 G4String fileName = name +
".ascii";
229 std::ofstream File(fileName, std::ios::out);
231 std::ios::fmtflags mode = File.flags();
232 File.setf( std::ios::scientific, std::ios::floatfield );
233 G4int prec = File.precision(3);
235 File <<
" Fluence density distribution \n "
236 <<
"\n ibin \t radius (mm) \t Nb \t fluence\t norma fl\t rms/nfl (%) \n"
244 File <<
" " << bin <<
"\t " << rmean/
mm <<
"\t " <<
fNbEntries[bin]
251 File.setf(mode,std::ios::floatfield);
252 File.precision(prec);
std::vector< G4int > fNbEntries
G4Material * GetMaterialScatter()
void BeginOfRunAction(const G4Run *)
static const G4double fac
void ComputeFluenceError()
const G4String & GetName() const
G4double GetDensity() const
std::vector< G4double > fluence1
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
void SetRandomNumberStore(G4bool flag)
DetectorConstruction * fDetector
const G4String & GetParticleName() const
HistoManager * fHistoManager
G4GLOB_DLL std::ostream G4cout
G4int GetNumberOfEvent() const
G4double GetThicknessScatter()
void EndOfRunAction(const G4Run *)
ExG4HbookAnalysisManager G4AnalysisManager
std::vector< G4double > fluence
static G4RunManager * GetRunManager()
G4ParticleGun * GetParticleGun()
G4double energy(const ThreeVector &p, const G4double m)
G4ParticleDefinition * GetParticleDefinition() const
std::vector< G4double > fluence2
Detector construction class to demonstrate various ways of placement.
static PROLOG_HANDLER error
void SumFluence(G4double, G4double)
G4double GetParticleEnergy() const
PrimaryGeneratorAction * fPrimary