35 #include "PrimaryGeneratorAction.hh"
36 #include "HistoManager.hh"
46 fParticle(0), fEkin(0.),
47 fDecayCount(0), fTimeCount(0), fPrimaryTime(0.)
75 ParticleData& data = it->second;
80 if (Ekin < emin) data.fEmin = Ekin;
82 if (Ekin > emax) data.fEmax = Ekin;
136 const Run* localRun =
static_cast<const Run*
>(run);
172 std::map<G4String,ParticleData>::const_iterator itn;
177 const ParticleData& localData = itn->second;
180 = ParticleData(localData.fCount,
187 data.fCount += localData.fCount;
188 data.fEmean += localData.fEmean;
190 if (emin < data.fEmin) data.fEmin = emin;
192 if (emax > data.fEmax) data.fEmax =
emax;
206 G4cout <<
"\n ======================== run summary ======================";
207 G4cout <<
"\n The run was " << nbEvents <<
" " << partName <<
" of "
209 G4cout <<
"\n ===========================================================\n";
211 if (nbEvents == 0) {
return; }
220 std::map<G4String,ParticleData>::iterator it;
223 ParticleData data = it->second;
224 G4int count = data.fCount;
229 G4cout <<
" " << std::setw(13) << name <<
": " << std::setw(7) << count
230 <<
" Emean = " << std::setw(wid) <<
G4BestUnit(eMean,
"Energy")
243 G4cout <<
"\n Ekin Total (Q single decay): mean = "
244 << std::setw(wid) <<
G4BestUnit(Ebmean,
"Energy")
249 G4cout <<
"\n Momentum balance (excluding gamma desexcitation): mean = "
250 << std::setw(wid) <<
G4BestUnit(Pbmean,
"Energy")
260 G4double halfLife = Tmean*std::log(2.);
262 G4cout <<
"\n Total time of life (full chain): mean = "
263 << std::setw(wid) <<
G4BestUnit(Tmean,
"Time")
265 << std::setw(wid) <<
G4BestUnit(halfLife,
"Time")
276 G4cout <<
"\n Total visible energy (full chain) : mean = "
277 << std::setw(wid) <<
G4BestUnit(Evmean,
"Energy")
287 G4double nAtoms_perUnitOfMass = Avogadro/molMass;
288 G4double Activity_perUnitOfMass = 0.0;
290 { Activity_perUnitOfMass = nAtoms_perUnitOfMass/pTimeMean; }
292 G4cout <<
"\n Activity of " << partName <<
" = "
293 << std::setw(wid) << Activity_perUnitOfMass*
g/
becquerel
294 <<
" Bq/g (" << Activity_perUnitOfMass*
g/
curie
302 analysisManager->ScaleH1(1,factor);
303 analysisManager->ScaleH1(2,factor);
304 analysisManager->ScaleH1(3,factor);
305 analysisManager->ScaleH1(4,factor);
306 analysisManager->ScaleH1(5,factor);
std::map< G4String, ParticleData > fParticleDataMap
virtual void Merge(const G4Run *)
void PrimaryTiming(G4double)
void EventTiming(G4double)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
static const double becquerel
ExG4HbookAnalysisManager G4AnalysisManager
G4int GetAtomicMass() const
static const double curie
static const G4double emax
static const G4double factor
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double energy(const ThreeVector &p, const G4double m)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4ParticleDefinition * fParticle
void SetPrimary(G4ParticleDefinition *particle, G4double energy)
virtual void Merge(const G4Run *)
void ParticleCount(G4String, G4double)