68 : fVerbose(0), fNEvt1(-1), fNEvt2(-2),
69 fHistEMax (15.0*
MeV), fHistEMin (0.),fHistNBin(100),
84 #ifdef G4ANALYSIS_USE_ROOT
105 "Total energy spectrum (MeV) of the traget and detector",
fHistNBin,
108 "Coincidence spectrum (MeV) between the traget and detector",
fHistNBin,
111 "Anti-coincidence spectrum (MeV) in the traget",
fHistNBin,
114 "Anti-coincidence spectrum (MeV) in the detector",
fHistNBin,
121 "double PID, Energy, Time, Weight" );
122 fHisto->
AddTuple(
"T2",
"RadioIsotopes",
"double PID, Time, Weight" );
123 fHisto->
AddTuple(
"T3",
"Energy Depositions",
"double Energy, Time, Weight" );
125 "double PID, Z, A, Energy, Time, Weight" );
134 <<
"exrdmAnalysisManager: Histograms are booked and the run has been started"
138 pTable->
FindProcess(
"RadioactiveDecay",
"GenericIon");
139 if (rDecay != NULL) {
141 std::vector<G4RadioactivityTable*> theTables =
143 for (
size_t i = 0 ; i < theTables.size(); i++) {
144 theTables[i]->GetTheMap()->clear();
145 G4cout <<
" Clear the radioactivity map: 0, new size = "
146 << theTables[i]->GetTheMap()->size() <<
G4endl;
158 G4cout <<
"exrdmAnalysisManager: Histograms have been saved!" <<
G4endl;
165 pTable->
FindProcess(
"RadioactiveDecay",
"GenericIon");
166 if (rDecay != NULL) {
169 std::ofstream outfile (fileName, std::ios::out );
170 std::vector<G4RadioactivityTable*> theTables =
172 for (
size_t i = 0 ; i < theTables.size(); i++) {
174 outfile <<
"Radioactivities in decay window no. " << i <<
G4endl;
176 <<
"Z \tA \tE \tActivity (decays/window) \tError (decays/window) "
178 map<G4ThreeVector,G4TwoVector> *aMap = theTables[i]->GetTheMap();
179 map<G4ThreeVector,G4TwoVector>::iterator iter;
180 for(iter=aMap->begin(); iter != aMap->end(); iter++) {
181 rate = iter->second.x()/nevent;
182 error = std::sqrt(iter->second.y())/nevent;
183 if ( rate < 0.) rate = 0.;
184 outfile << iter->first.x() <<
"\t"<< iter->first.y() <<
"\t"
185 << iter->first.z() <<
"\t" << rate <<
"\t" << error
219 for (
size_t i = 1; i <
fEdepo.size(); i++) {
221 if (
fEdepo[i].GetEnergy() > 0. ) {
222 TarE +=
fEdepo[i].GetEnergy();
225 DetE -=
fEdepo[i].GetEnergy();
230 if (TarE || DetE) ComW = (TarW+DetW)/(TarE+DetE);
231 if (TarE) TarW /= TarE;
232 if (DetE) DetW /= DetE;
245 TarE =
fEdepo[i].GetEnergy();
246 Time =
fEdepo[i].GetTime();
259 if (TarE || DetE) ComW = (TarW+DetW)/(TarE+DetE);
260 if (TarE) TarW /= TarE;
261 if (DetE) DetW /= DetE;
283 G4cout <<
"exrdmAnalysisManager::AddEnergy: e(keV)= " << edep/
keV
284 <<
" weight = " << weight <<
" time (s) = " << time/
second
302 G4cout <<
"exrdmAnalysisManager::AddParticle: " << pid
319 G4cout <<
"exrdmAnalysisManager::AddIsotope: " << pid
const G4String & GetFileName() const
void AddEnergy(G4double, G4double, G4double)
void FillTuple(G4int, const G4String &, G4double)
Definition of the exrdmHisto class.
void FillHisto(G4int, G4double, G4double)
void AddTuple(const G4String &, const G4String &, const G4String &)
G4bool IsAnalogueMonteCarlo()
static const double microsecond
G4GLOB_DLL std::ostream G4cout
Definition of the exrdmAnalysisManager class.
std::vector< G4RadioactivityTable * > GetTheRadioactivityTables()
void AddDecayProduct(G4double pid, G4int Z, G4int A, G4double energy, G4double time, G4double weight)
static const double second
void AddParticle(G4double, G4double, G4double, G4double)
static const G4double A[nN]
std::vector< exrdmEnergyDeposition > fEdepo
static exrdmAnalysisManager * fManager
G4double energy(const ThreeVector &p, const G4double m)
static exrdmAnalysisManager * GetInstance()
static PROLOG_HANDLER error
static G4ProcessTable * GetProcessTable()
G4VProcess * FindProcess(const G4String &processName, const G4String &particleName) const
void Add1D(const G4String &, const G4String &, G4int nb=100, G4double x1=0., G4double x2=1., G4double u=1.)
void AddIsotope(G4double, G4double, G4double)