49 #include "HistoManager.hh" 75 #include "DetectorConstruction.hh" 160 fHisto->Add1D(
"0",
"Energy deposition (MeV/mm/event) in the target",
162 fHisto->Add1D(
"1",
"Log10 Energy (GeV) of gammas",
fNBinsE,-5.,5.,1.0);
163 fHisto->Add1D(
"2",
"Log10 Energy (GeV) of electrons",
fNBinsE,-5.,5.,1.0);
164 fHisto->Add1D(
"3",
"Log10 Energy (GeV) of positrons",
fNBinsE,-5.,5.,1.0);
165 fHisto->Add1D(
"4",
"Log10 Energy (GeV) of protons",
fNBinsE,-5.,5.,1.0);
166 fHisto->Add1D(
"5",
"Log10 Energy (GeV) of neutrons",
fNBinsE,-5.,5.,1.0);
167 fHisto->Add1D(
"6",
"Log10 Energy (GeV) of charged pions",
fNBinsE,-4.,6.,1.0);
168 fHisto->Add1D(
"7",
"Log10 Energy (GeV) of pi0",
fNBinsE,-4.,6.,1.0);
169 fHisto->Add1D(
"8",
"Log10 Energy (GeV) of charged kaons",
fNBinsE,-4.,6.,1.0);
170 fHisto->Add1D(
"9",
"Log10 Energy (GeV) of neutral kaons",
fNBinsE,-4.,6.,1.0);
171 fHisto->Add1D(
"10",
"Log10 Energy (GeV) of deuterons and tritons",
173 fHisto->Add1D(
"11",
"Log10 Energy (GeV) of He3 and alpha",
fNBinsE,-5.,5.,1.0);
174 fHisto->Add1D(
"12",
"Log10 Energy (GeV) of Generic Ions",
fNBinsE,-5.,5.,1.0);
175 fHisto->Add1D(
"13",
"Log10 Energy (GeV) of muons",
fNBinsE,-4.,6.,1.0);
176 fHisto->Add1D(
"14",
"Log10 Energy (GeV) of pi+",
fNBinsE,-4.,6.,1.0);
177 fHisto->Add1D(
"15",
"Log10 Energy (GeV) of pi-",
fNBinsE,-4.,6.,1.0);
178 fHisto->Add1D(
"16",
"X Section (mb) of Secondary Fragments Z with E>1 GeV (mb)" 180 fHisto->Add1D(
"17",
"Secondary Fragment A E>1 GeV",50,0.5,50.5,1.0);
181 fHisto->Add1D(
"18",
"Secondary Fragment Z E<1 GeV",25,0.5,25.5,1.0);
182 fHisto->Add1D(
"19",
"Secondary Fragment A E<1 GeV",50,0.5,50.5,1.0);
183 fHisto->Add1D(
"20",
"X Section (mb) of Secondary Fragments Z (mb) ",
185 fHisto->Add1D(
"21",
"Secondary Fragment A ",50,0.5,50.5,1.0);
197 G4cout <<
"HistoManager: Histograms are booked and run has been started" 207 G4cout <<
"HistoManager: End of run actions are started" <<
G4endl;
210 G4cout<<
"========================================================"<<
G4endl;
213 if(
fNevt > 0) { x = 1.0/
x; }
236 G4cout <<
"Beam particle " 238 G4cout <<
"Beam Energy(GeV) " 240 G4cout <<
"Number of events " 242 G4cout << std::setprecision(4) <<
"Average energy deposit (GeV) " 245 G4cout << std::setprecision(4) <<
"Average number of steps " 247 G4cout << std::setprecision(4) <<
"Average number of gamma " 249 G4cout << std::setprecision(4) <<
"Average number of e- " 251 G4cout << std::setprecision(4) <<
"Average number of e+ " 253 G4cout << std::setprecision(4) <<
"Average number of neutrons " 255 G4cout << std::setprecision(4) <<
"Average number of protons " 257 G4cout << std::setprecision(4) <<
"Average number of antiprotons " 259 G4cout << std::setprecision(4) <<
"Average number of pi+ & pi- " 261 G4cout << std::setprecision(4) <<
"Average number of pi0 " 263 G4cout << std::setprecision(4) <<
"Average number of kaons " 265 G4cout << std::setprecision(4) <<
"Average number of muons " 267 G4cout << std::setprecision(4) <<
"Average number of deuterons+tritons " 269 G4cout << std::setprecision(4) <<
"Average number of He3+alpha " 271 G4cout << std::setprecision(4) <<
"Average number of ions " 273 G4cout<<
"========================================================"<<
G4endl;
316 if(0 == track->GetParentID()) {
322 G4cout <<
"### Primary " << name
323 <<
" kinE(GeV)= " << e/
GeV 325 <<
"; pos(mm)= " << track->GetPosition()/
mm 326 <<
"; dir= " << track->GetMomentumDirection()
332 G4cout <<
"=== Secondary " << name
333 <<
" kinE(GeV)= " << e/
GeV 335 <<
"; pos(mm)= " << track->GetPosition()/
mm 336 <<
"; dir= " << track->GetMomentumDirection()
339 e = std::log10(e/
GeV);
415 (step->GetPreStepPoint()->GetPosition() +
416 step->GetPostStepPoint()->GetPosition())*0.5;
425 const G4Track* track = step->GetTrack();
426 G4cout <<
"HistoManager::AddEnergy: e(keV)= " << edep/
keV 427 <<
"; z(mm)= " << z/
mm 428 <<
"; step(mm)= " << step->GetStepLength()/
mm 429 <<
" by " << track->GetDefinition()->GetParticleName()
430 <<
" E(GeV)= " << track->GetKineticEnergy()/
GeV 456 G4cout <<
"### HistoManager WARNING: Ion Physics is already defined: <" 457 << nam <<
"> is ignored!" <<
G4endl;
458 }
else if(nam ==
"HIJING") {
463 G4cout <<
"### SetIonPhysics: Ion Physics FTFP/Binary is added" 466 G4cout <<
"Error: Ion Physics HIJING is requested but is not available" 469 }
else if(nam ==
"UrQMD") {
474 G4cout <<
"### SetIonPhysics: Ion Physics UrQMD is added" 477 G4cout <<
"Error: Ion Physics UrQMD is requested but is not available" 481 G4cout <<
"### HistoManager WARNING: Ion Physics <" 482 << nam <<
"> is unknown!" <<
G4endl;
void AddTargetStep(const G4Step *)
static G4MuonPlus * MuonPlus()
Definition of the IonHIJINGPhysics class.
G4int GetBaryonNumber() const
Definition of the IonUrQMDPhysics class.
G4double GetTotNbOfAtomsPerVolume() const
static G4KaonZeroLong * KaonZeroLong()
const G4String & GetParticleType() const
G4VModularPhysicsList * fPhysList
G4double fPrimaryKineticEnergy
static G4KaonMinus * KaonMinus()
G4VPhysicsConstructor * fIonPhysics
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
const G4ParticleDefinition * fPrimaryDef
void PhysicsHasBeenModified()
static G4KaonZeroShort * KaonZeroShort()
static G4AntiProton * AntiProton()
static G4Triton * Triton()
static G4Proton * Proton()
static G4PionPlus * PionPlus()
static G4Neutron * Neutron()
void Fill(G4int id, G4double x, G4double w)
static G4PionZero * PionZero()
static G4Deuteron * Deuteron()
static G4RunManager * GetRunManager()
static G4Positron * Positron()
void ReplacePhysics(G4VPhysicsConstructor *)
G4double GetPDGMass() const
static G4PionMinus * PionMinus()
static HistoManager * fManager
const G4Material * fMaterial
void ScoreNewTrack(const G4Track *aTrack)
const G4ParticleDefinition * fNeutron
void SetVerbose(G4int val)
static G4MuonMinus * MuonMinus()
static G4Electron * Electron()
void SetIonPhysics(const G4String &)
static HistoManager * GetPointer()
static G4KaonPlus * KaonPlus()
static const double eplus
G4double GetPDGCharge() const
static const G4double pos