source: trunk/examples/advanced/radioprotection/include/RemSimAnalysisManager.hh @ 1321

Last change on this file since 1321 was 1230, checked in by garnier, 14 years ago

update to geant4.9.3

File size: 7.4 KB
Line 
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//    **********************************
27//    *                                *
28//    *      RemSimAnalysisManager.hh  *
29//    *                                *
30//    **********************************
31//
32// $Id: RemSimAnalysisManager.hh,v 1.12 2009/04/08 13:25:37 cirrone Exp $
33//
34// Author: Susanna Guatelli (guatelli@ge.infn.it)
35//
36 
37#ifdef G4ANALYSIS_USE
38#ifndef REMSIMANALYSISMANAGER_HH
39#define REMSIMANALYSISMANAGER_HH
40
41#include "globals.hh"
42#include <vector>
43#include "G4ThreeVector.hh"
44# include <AIDA/AIDA.h>
45
46namespace AIDA
47{
48  class ITree;
49  class IHistogramFactory;
50  class IAnalysisFactory;
51  class IDataPoint;
52  class ITupleFactory;
53  class ITuple;
54  class ITreeFactory;
55}
56
57class RemSimAnalysisMessenger;
58class RemSimAnalysisManager { 
59
60public:
61 
62  ~RemSimAnalysisManager();
63  static RemSimAnalysisManager* getInstance();
64  void book(); // booking the hbook file
65
66  void energyDepositStore(G4int, G4double); 
67  // Collect the energy deposit in the phantom
68  // deriving from primary and secondary particles                                         
69
70  void primaryParticleEnergyDistribution(G4double);
71  // Initial energy of primary particles
72
73  void SecondaryEnergyDeposit(G4int, G4double);
74  // Energy deposit given by secondary particles in the phantom
75
76  void PrimaryInitialEnergyIn(G4double);
77  // Initial energy of primary particles impinging on the phantom
78
79  void PrimaryInitialEnergyOut(G4double);
80  // Initial energy of primary particles outgoing the phantom
81
82  void PrimaryEnergyIn(G4double);
83  // Energy of primary particles impinging on the phantom
84
85  void PrimaryEnergyOut(G4double);
86  // Energy of primary particles outgoing the phantom
87
88  void particleShape(G4double, G4double);
89  // Position of the energy deposits in the phantom, projected in the plane perpendicular
90  // to the direction of the primary particles (z axis)
91
92  void energyDepShape(G4double, G4double, G4double);
93  // Energy deposits in the phantom, projected in the plane perpendicular
94  // to the direction of the primary particles (z axis)
95
96  void SetFormat(G4String);
97  // At the moment it is not possible to switch the formta of the file
98  // Number of secondary particles produced in the phantom
99  void SecondaryInPhantom(G4int); 
100
101  // Energy spectrum of secondary particles originated in the phantom
102  void SecondaryProtonInPhantom(G4double);
103  void SecondaryNeutronInPhantom(G4double);
104  void SecondaryPionInPhantom(G4double);
105  void SecondaryAlphaInPhantom(G4double);
106  void SecondaryPositronInPhantom(G4double);
107  void SecondaryElectronInPhantom(G4double);
108  void SecondaryGammaInPhantom(G4double);
109  void SecondaryMuonInPhantom(G4double);
110  void SecondaryOtherInPhantom(G4double);
111  void SecondaryNeutrinoInPhantom(G4double);
112  void SecondaryProtonInPhantomSlice(G4double);
113  void SecondaryNeutronInPhantomSlice(G4double);
114  void SecondaryPionInPhantomSlice(G4double);
115  void SecondaryAlphaInPhantomSlice(G4double);
116  void SecondaryPositronInPhantomSlice(G4double);
117  void SecondaryElectronInPhantomSlice(G4double);
118  void SecondaryGammaInPhantomSlice(G4double);
119  void SecondaryMuonInPhantomSlice(G4double);
120  void SecondaryOtherInPhantomSlice(G4double);
121
122  // Number of secondary particles reaching the phantom
123  void SecondaryReachingThePhantom(G4int);
124
125  // Energy spectrum of secondary particles reaching the phantom
126  void SecondaryProtonReachingThePhantom(G4double);
127  void SecondaryNeutronReachingThePhantom(G4double);
128  void SecondaryPionReachingThePhantom(G4double);
129  void SecondaryAlphaReachingThePhantom(G4double);
130  void SecondaryPositronReachingThePhantom(G4double);
131  void SecondaryElectronReachingThePhantom(G4double);
132  void SecondaryGammaReachingThePhantom(G4double);
133  void SecondaryMuonReachingThePhantom(G4double);
134  void SecondaryOtherReachingThePhantom(G4double);
135 
136 // Number of secondary particles produced in the vehicle
137  void SecondaryInVehicle(G4int);
138
139  void finish();
140
141private:
142  static RemSimAnalysisManager* instance;
143  RemSimAnalysisManager();
144
145  AIDA::IAnalysisFactory*  aFact; 
146  AIDA::ITreeFactory*      treeFact;
147  AIDA::ITree*             theTree;
148
149  AIDA::IDataPointSetFactory * dataPointFactory; 
150  AIDA::IHistogramFactory*     histogramFactory;
151
152  AIDA::IDataPointSet* dataPoint; 
153  AIDA::IHistogram1D* energyDeposit; 
154  AIDA::IHistogram1D* primary; 
155  AIDA::IHistogram1D* secondaryDeposit; 
156  AIDA::IHistogram1D* primaryInitialE;
157  AIDA::IHistogram1D* primaryInitialEout;
158  AIDA::IHistogram1D* initialE;
159  AIDA::IHistogram1D* initialEout;
160  AIDA::IHistogram2D* shape;
161  AIDA::IHistogram2D* energyShape;
162
163  AIDA::IHistogram1D* histo_secondary_phantom;
164  AIDA::IHistogram1D* histo_secondary;
165  AIDA::IHistogram1D* histo_proton;
166  AIDA::IHistogram1D* histo_neutron;
167  AIDA::IHistogram1D* histo_pion;
168  AIDA::IHistogram1D* histo_alpha;
169  AIDA::IHistogram1D* histo_positron;
170  AIDA::IHistogram1D* histo_electron;
171  AIDA::IHistogram1D* histo_gamma;
172  AIDA::IHistogram1D* histo_muon;
173  AIDA::IHistogram1D* histo_other;
174  AIDA::IHistogram1D* histo_neutrino;
175  AIDA::IHistogram1D* histo_proton_reaching;
176  AIDA::IHistogram1D* histo_neutron_reaching;
177  AIDA::IHistogram1D* histo_pion_reaching;
178  AIDA::IHistogram1D* histo_alpha_reaching;
179  AIDA::IHistogram1D* histo_positron_reaching;
180  AIDA::IHistogram1D* histo_electron_reaching;
181  AIDA::IHistogram1D* histo_gamma_reaching;
182  AIDA::IHistogram1D* histo_muon_reaching;
183  AIDA::IHistogram1D* histo_other_reaching;
184
185  AIDA::IHistogram1D* histo_proton_slice;
186  AIDA::IHistogram1D* histo_neutron_slice;
187  AIDA::IHistogram1D* histo_pion_slice;
188  AIDA::IHistogram1D* histo_alpha_slice; 
189  AIDA::IHistogram1D* histo_positron_slice;
190  AIDA::IHistogram1D* histo_electron_slice;
191  AIDA::IHistogram1D* histo_gamma_slice;
192  AIDA::IHistogram1D* histo_muon_slice;
193  AIDA::IHistogram1D* histo_other_slice;
194  AIDA::IHistogram1D* histo_vehicle;
195 
196  G4String fileFormat; 
197};
198#endif
199#endif
200
201
202
203
Note: See TracBrowser for help on using the repository browser.