source: trunk/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysis.hh@ 1354

Last change on this file since 1354 was 807, checked in by garnier, 17 years ago

update

File size: 4.6 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// File name: RadmonAnalysis.hh
28// Creation date: Nov 2005
29// Main author: Riccardo Capra <capra@ge.infn.it>
30//
31// Id: $Id: RadmonAnalysis.hh,v 1.4 2006/06/29 16:06:41 gunter Exp $
32// Tag: $Name: $
33//
34// Description: Analysis main class
35//
36
37#ifndef RADMONANALYSIS_HH
38 #define RADMONANALYSIS_HH
39
40 // Include files
41 #include "globals.hh"
42 #include "RadmonEventActionObserver.hh"
43 #include "RadmonVLayoutObserver.hh"
44 #include "AIDA/IAnalysisFactory.h"
45 #include "AIDA/ITreeFactory.h"
46 #include "AIDA/ITree.h"
47 #include "AIDA/ITupleFactory.h"
48 #include "AIDA/ITuple.h"
49 #include <utility>
50 #include <list>
51
52 // Forward declaration
53 class RadmonVDataAnalysisFactory;
54 class RadmonVDataAnalysis;
55 class RadmonVAnalysisLayout;
56 class RadmonSensitiveDetector;
57
58 class RadmonAnalysis : public RadmonEventActionObserver, public RadmonVLayoutObserver
59 {
60 public:
61 RadmonAnalysis(RadmonVAnalysisLayout * layout, RadmonVDataAnalysisFactory * factory, AIDA::IAnalysisFactory * analysis);
62 virtual ~RadmonAnalysis();
63
64 virtual void OnLayoutChange(void);
65
66 virtual void OnBeginOfEvent(const G4Event * event);
67 virtual void OnEndOfEvent(const G4Event * event);
68
69 private:
70 // Private methods
71 G4bool InitializeSensitiveDetectorsList(std::list<G4String> & tupleLabels, G4String & columns);
72 G4bool OpenFile(void);
73 G4bool InitializeTuple(const std::list<G4String> & tupleLabels, const G4String & columns);
74
75 void Destruct(void);
76
77 // Hidden constructors and operators
78 RadmonAnalysis();
79 RadmonAnalysis(const RadmonAnalysis & copy);
80 RadmonAnalysis & operator=(const RadmonAnalysis & copy);
81
82 // Private data types
83 typedef std::list<RadmonVDataAnalysis *> DataAnalysesList;
84 typedef std::pair<RadmonSensitiveDetector *, DataAnalysesList *> SensitiveDetectorPair;
85 typedef std::list<SensitiveDetectorPair> SensitiveDetectorsList;
86
87 // Private attributes
88 RadmonVAnalysisLayout * analysisLayout;
89 RadmonVDataAnalysisFactory * dataFactory;
90
91 AIDA::IAnalysisFactory * analysisFactory;
92 AIDA::ITreeFactory * treeFactory;
93 AIDA::ITree * tree;
94 AIDA::ITupleFactory * tupleFactory;
95 AIDA::ITuple * tuple;
96
97 G4int indexRunId;
98 G4int indexEventId;
99
100 G4bool changed;
101
102 SensitiveDetectorsList sensitiveDetectorsList;
103 };
104#endif /* RADMONANALYSIS_HH */
Note: See TracBrowser for help on using the repository browser.