source: trunk/examples/advanced/cosmicray_charging/src/LISAAnalysisManager.cc @ 1346

Last change on this file since 1346 was 807, checked in by garnier, 16 years ago

update

File size: 6.0 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// * cosmicray_charging advanced example for Geant4                   *
29// * (adapted simulation of test-mass charging in the LISA mission)   *
30// *                                                                  *
31// * Henrique Araujo (h.araujo@imperial.ac.uk) & Peter Wass           *
32// * Imperial College London                                          *
33// *                                                                  *
34// * LISAAnalysisManager class                                        *
35// *                                                                  *
36// ********************************************************************
37//
38// HISTORY
39// 22/02/2004: migrated from LISA-V04
40//
41// ********************************************************************
42
43
44#ifdef G4ANALYSIS_USE
45
46#include "LISAAnalysisManager.hh"
47#include "globals.hh"
48
49LISAAnalysisManager* LISAAnalysisManager::instance = 0;
50
51
52//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
53
54LISAAnalysisManager::LISAAnalysisManager() :
55  af(0),
56  tf(0), 
57  run_tree(0),
58  run_tpf(0),
59  run_tuple(0)
60{;}
61
62
63//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
64
65LISAAnalysisManager::~LISAAnalysisManager() {
66
67  if(af) {
68    delete tf;
69    G4cout << " LISAAnalysis -- deleted tree factory" << G4endl;
70    delete af;
71    G4cout << " LISAAnalysis -- deleted analysis factory" << G4endl;
72  }
73
74}
75
76//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
77LISAAnalysisManager* LISAAnalysisManager::getInstance() {
78
79  if (!instance) instance = new LISAAnalysisManager();
80  return instance;
81 
82}
83
84
85//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
86void LISAAnalysisManager::Dispose() {
87
88  if(instance) {
89    delete instance;
90    instance = 0;
91  }
92}
93
94
95//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
96void LISAAnalysisManager::Init() {
97
98  G4cout << G4endl << "******* Analysis with AIDA 3.0 *********" << G4endl;
99
100  // create analysis factory
101  if( (af = AIDA_createAnalysisFactory()) )
102    G4cout << " LISAAnalysis -- created analysis factory" << G4endl;
103 
104  // create tree factory
105  if( (tf = af->createTreeFactory()) )
106    G4cout << " LISAAnalysis -- created tree factory" << G4endl;
107
108}
109
110
111
112
113//
114// RUN ANALYSIS **************************************************************
115//
116
117//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
118void LISAAnalysisManager::bookRun(G4String hbookfile) {
119
120
121  // create RunTree
122  G4bool fileExists = false;
123  G4bool readOnly   = false;
124  run_tree = tf->create(hbookfile, "hbook", readOnly, fileExists);
125  G4cout << " LISAAnalysis -- tree store: " << run_tree->storeName()<<G4endl;
126
127  // create TupleFactory
128  run_tpf = af->createTupleFactory(*run_tree );
129  G4cout << " LISAAnalysis -- created NTuple factory" << G4endl;
130
131  // Run Information
132  run_tuple = run_tpf->create( "1", "Run Tuple", 
133              "float evt,tm,energy,charge,in,out,seed1,seed2");
134  assert(run_tuple);
135  G4cout << " LISAAnalysis -- created Run NTuple" << G4endl;
136 
137
138}
139
140
141//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
142void LISAAnalysisManager::FinishRun() {
143
144  // Committing transaction with the tree
145  G4cout << "  LISAAnalysis -- committing run_tree..." << G4endl;
146  run_tree->commit();
147  run_tree->close();
148
149  delete run_tpf;
150  delete run_tree;
151}
152
153
154//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
155void LISAAnalysisManager::analyseRun(G4int evt, G4int tm, G4double energy, 
156 G4int charge, G4int in, G4int out, long seed1, long seed2) {
157
158  AIDA::ITuple* ntuple = dynamic_cast<AIDA::ITuple *> ( run_tree->find("1") );
159
160  // Fill the ntuple
161  ntuple->fill( ntuple->findColumn( "evt"    ), (float) evt    );
162  ntuple->fill( ntuple->findColumn( "tm"     ), (float) tm     );
163  ntuple->fill( ntuple->findColumn( "energy" ), (float) energy );
164  ntuple->fill( ntuple->findColumn( "charge" ), (float) charge );
165  ntuple->fill( ntuple->findColumn( "in"     ), (float) in     );
166  ntuple->fill( ntuple->findColumn( "out"    ), (float) out    );
167  ntuple->fill( ntuple->findColumn( "seed1"  ), (float) seed1  );
168  ntuple->fill( ntuple->findColumn( "seed2"  ), (float) seed2  );
169
170  // Values of attributes are prepared; store them to the nTuple:
171  ntuple->addRow();
172
173}
174
175
176#endif
Note: See TracBrowser for help on using the repository browser.