Geant4  10.02
IORTAnalysisManager.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // This is the *BASIC* version of IORT, a Geant4-based application
27 //
28 // Main Authors: G.Russo(a,b), C.Casarino*(c), G.C. Candiano(c),
29 // G.A.P. Cirrone(d), F.Romano(d)
30 // Contributor Authors: S.Guatelli(e)
31 // Past Authors: G.Arnetta(c), S.E.Mazzaglia(d)
32 //
33 // (a) Fondazione Istituto San Raffaele G.Giglio, Cefalù, Italy
34 // (b) IBFM-CNR , Segrate (Milano), Italy
35 // (c) LATO (Laboratorio di Tecnologie Oncologiche), Cefalù, Italy
36 // (d) Laboratori Nazionali del Sud of the INFN, Catania, Italy
37 // (e) University of Wallongong, Australia
38 //
39 // *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
41 
42 #ifndef IORTTHERAPYANALYSISMANAGER_HH
43 #define IORTTHERAPYANALYSISMANAGER_HH 1
44 
45 #include "globals.hh"
46 #include "g4root.hh"
47 
52 
57 {
58 private:
66 
67 public:
69 
74 
78  void book();
83 
87  void FillEnergyDeposit(G4int voxelXId, G4int voxelYId, G4int voxelZId,
88  G4double energyDeposit);
89 
90  void BraggPeak(G4int, G4double);
91 
94 
95  void SecondaryNeutronEnergyDeposit(G4int slice, G4double energy);
97 
98  void SecondaryAlphaEnergyDeposit(G4int slice, G4double energy);
100 
101  void SecondaryGammaEnergyDeposit(G4int slice, G4double energy);
103 
104  void SecondaryElectronEnergyDeposit(G4int slice, G4double energy);
106 
107  void SecondaryTritonEnergyDeposit(G4int slice, G4double energy);
109 
110  void SecondaryDeuteronEnergyDeposit(G4int slice, G4double energy);
112 
113  void SecondaryPionEnergyDeposit(G4int slice, G4double energy);
115 
116  void electronEnergyDistribution(G4double secondaryParticleKineticEnergy);
118 
119  void gammaEnergyDistribution(G4double secondaryParticleKineticEnergy);
121 
122  void deuteronEnergyDistribution(G4double secondaryParticleKineticEnergy);
124 
125  void tritonEnergyDistribution(G4double secondaryParticleKineticEnergy);
127 
128  void alphaEnergyDistribution(G4double secondaryParticleKineticEnergy);
130 
131  void heliumEnergy(G4double secondaryParticleKineticEnergy);
133 
134  void hydrogenEnergy(G4double secondaryParticleKineticEnergy);
136 
137  //Kinetic energy by voxel, mass number A and atomic number Z.
138  void FillKineticFragmentTuple(G4int i, G4int j, G4int k, G4int A, G4double Z, G4double kinEnergy);
139 
140  //Kinetic energy by voxel, mass number A and atomic number Z of only primary particles
141  void FillKineticEnergyPrimaryNTuple(G4int i, G4int j, G4int k, G4double kinEnergy);
142 
144  void FillVoxelFragmentTuple(G4int i, G4int j, G4int k, G4int A, G4double Z, G4double energy, G4double fluence);
145 
146  void FillFragmentTuple(G4int A, G4double Z, G4double energy, G4double posX, G4double posY, G4double posZ);
148 
149  void FillLetFragmentTuple(G4int i, G4int j, G4int k, G4int A, G4double Z, G4double letT, G4double letD);
151 
153 
155 
156  void startNewEvent();
158 
161 
164 
165  void flush();
167 private:
168 
171 
173 
174  G4long eventCounter; // Simulation metadata
180 
181 };
182 #endif
183 
184 
185 
void SecondaryDeuteronEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary deuterons.
void ThintargetBeamDisp(G4double, G4double)
void FillEnergyDeposit(G4int voxelXId, G4int voxelYId, G4int voxelZId, G4double energyDeposit)
Fill the ntuple with the energy deposit in the phantom.
void genericIonInformation(G4int, G4double, G4int, G4double)
void tritonEnergyDistribution(G4double secondaryParticleKineticEnergy)
Energy distribution of secondary tritons originated in the phantom.
A messenger object of this class is created by the AnalysisManager.
void FillVoxelFragmentTuple(G4int i, G4int j, G4int k, G4int A, G4double Z, G4double energy, G4double fluence)
long G4long
Definition: G4Types.hh:80
void FillKineticFragmentTuple(G4int i, G4int j, G4int k, G4int A, G4double Z, G4double kinEnergy)
void hydrogenEnergy(G4double secondaryParticleKineticEnergy)
Energy distribution of the hydrogen (proton, d, t) particles after the phantom.
A class for connecting the simulation to an analysis package.
int G4int
Definition: G4Types.hh:78
void SecondaryElectronEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary electrons.
void FillFragmentTuple(G4int A, G4double Z, G4double energy, G4double posX, G4double posY, G4double posZ)
Energy ntuple.
void SecondaryProtonEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary protons.
void SecondaryPionEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary pions.
double A(double temperature)
void FillKineticEnergyPrimaryNTuple(G4int i, G4int j, G4int k, G4double kinEnergy)
Energy by voxel, mass number A and atomic number Z.
void BraggPeak(G4int, G4double)
Fill 1D histogram with the Bragg peak in the phantom.
void FillLetFragmentTuple(G4int i, G4int j, G4int k, G4int A, G4double Z, G4double letT, G4double letD)
let ntuple
void SecondaryTritonEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary tritons.
void book()
Book the histograms and ntuples.
void SecondaryNeutronEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary neutrons.
static IORTAnalysisManager * GetInstance()
Get the pointer to the analysis manager.
void gammaEnergyDistribution(G4double secondaryParticleKineticEnergy)
Energy distribution of secondary gamma originated in the phantom.
void alphaEnergyDistribution(G4double secondaryParticleKineticEnergy)
Energy distribution of secondary alpha originated in the phantom.
void SecondaryAlphaEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary alpha particles.
void flush()
Close the .hbk file with the histograms and the ntuples.
G4double energy(const ThreeVector &p, const G4double m)
IORTAnalysisManager()
Analysis manager is a singleton object (there is only one instance).
void startNewEvent()
Tell the analysis manager that a new event is starting.
void SetAnalysisFileName(G4String)
Set name for the analysis file .root (used by macro)
void deuteronEnergyDistribution(G4double secondaryParticleKineticEnergy)
Energy distribution of secondary deuterons originated in the phantom.
void electronEnergyDistribution(G4double secondaryParticleKineticEnergy)
Energy distribution of secondary electrons originated in the phantom.
void setGeometryMetaData(G4double, G4double, G4double)
from the detector construction information about the geometry can be written as metadata ...
double G4double
Definition: G4Types.hh:76
void SecondaryGammaEnergyDeposit(G4int slice, G4double energy)
Fill 1D histogram with the energy deposit of secondary gamma.
IORTAnalysisFileMessenger * fMess
void setBeamMetaData(G4double, G4double)
metadata about the beam can be written this way
static IORTAnalysisManager * instance
void heliumEnergy(G4double secondaryParticleKineticEnergy)
Energy distribution of the helium (He3 and alpha) particles after the phantom.