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;
126 const Run* localRun =
static_cast<const Run*
>(run);
157 std::map<G4String,ParticleData>::const_iterator itn;
162 const ParticleData& localData = itn->second;
165 = ParticleData(localData.fCount,
172 data.fCount += localData.fCount;
173 data.fEmean += localData.fEmean;
175 if (emin < data.fEmin) data.fEmin = emin;
177 if (emax > data.fEmax) data.fEmax = emax;
191 G4cout <<
"\n ======================== run summary ======================";
192 G4cout <<
"\n The run was " << nbEvents <<
" " << partName <<
" of "
194 G4cout <<
"\n ===========================================================\n";
196 if (nbEvents == 0) {
return; }
205 std::map<G4String,ParticleData>::iterator it;
208 ParticleData data = it->second;
209 G4int count = data.fCount;
214 G4cout <<
" " << std::setw(13) << name <<
": " << std::setw(7) << count
215 <<
" Emean = " << std::setw(wid) <<
G4BestUnit(eMean,
"Energy")
228 G4cout <<
"\n Ekin Total (Q): mean = "
229 << std::setw(wid) <<
G4BestUnit(Ebmean,
"Energy")
234 G4cout <<
"\n Momentum balance (excluding gamma desexcitation): mean = "
235 << std::setw(wid) <<
G4BestUnit(Pbmean,
"Energy")
245 G4double halfLife = Tmean*std::log(2.);
247 G4cout <<
"\n Total time of life : mean = "
248 << std::setw(wid) <<
G4BestUnit(Tmean,
"Time")
250 << std::setw(wid) <<
G4BestUnit(halfLife,
"Time")
260 G4double nAtoms_perUnitOfMass = Avogadro/molMass;
261 G4double Activity_perUnitOfMass = 0.0;
263 { Activity_perUnitOfMass = nAtoms_perUnitOfMass/pTimeMean; }
265 G4cout <<
"\n Activity of " << partName <<
" = "
266 << std::setw(wid) << Activity_perUnitOfMass*
g/
becquerel
267 <<
" Bq/g (" << Activity_perUnitOfMass*
g/
curie
275 analysisManager->ScaleH1(1,factor);
276 analysisManager->ScaleH1(2,factor);
277 analysisManager->ScaleH1(3,factor);
278 analysisManager->ScaleH1(4,factor);
279 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 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)