Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4PersistencyManager.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// File: G4PersistencyManager.hh
27//
28// History:
29// 01.07.17 Youhei Morita Initial creation (with "fadsclass")
30
31#ifndef PERSISTENCY_MANAGER_HH
32#define PERSISTENCY_MANAGER_HH 1
33
34#include "G4Event.hh"
35
36#include "G4VMCTruthIO.hh"
37#include "G4HCIOcatalog.hh"
38#include "G4DCIOcatalog.hh"
39#include "G4VPEventIO.hh"
40#include "G4VPHitIO.hh"
41#include "G4VPDigitIO.hh"
43#include <string>
44
46
47// Class inherited:
49
50// Class Description:
51// Manager base class to handle event store and retrieve operation.
52// Actual persistency implementation should be handled with
53// derived classes.
54//
55// Each persistency package should implement derived classes of
56// G4VHepMCIO, G4VMCTruthIO, G4VPHitIO, G4VPDigitIO, G4VPEventIO.
57// Concreate G4PersistencyManager should implement the methods
58// HepMCIO(), MCTruthIO(), HitIO(), DigitIO() and EventIO() to
59// return the pointers of the above classes.
60// G4PersistencyManager handles the sequence of the storing and
61// retrieving of the persistent object of each type, along with
62// the transaction handling.
63//
64// Retrieving a HepMC event:
65//
66// G4PersistencyManager::Retrieve( HepMC::GenEvent*& )
67// |
68// | ... StartRead() ...
69// |
70// | ... Commit() ...
71// V
72//
73// Storing a Geant4 event:
74//
75// G4PersistencyManager::Store( G4Pevent* )
76// |
77// | ... StartUpdate() ...
78// |
79// | ... MCTruthIO()->Store( MCTruth event ) ...
80// |
81// | ... HitIO()->Store( hit_collection_of_event ) ...
82// |
83// | ... DigitIO()->Store( digit_collection_of_event ) ...
84// |
85// | ... EventIO()->Store( event with hits and digits ) ...
86// |
87// | ... Commit() ...
88// V
89//
90// Retrieving a Geant event:
91//
92// G4PersistencyManager::Retrieve( event )
93// |
94// | ... StartRead() ...
95// |
96// | ... EventIO()->Retrieve( event ) ...
97// |
98// | ... Commit() ...
99// V
100//
101// Hit collection and digit collection of each detector component
102// should be handled by detector specific I/O manager, which
103// should be registered to the G4PersistencyCenter with
104// AddHCIOmanager() and AddDCIOmanager(). Usually this is done
105// through a command
106//
107// /Persistency/Store/Using/HitIO <detector_io_manager_name>
108//
109// which is handled by G4PersistencyCenterMessenger.
110//
111// A static template declaration of G4HCIOentryT<class> must be
112// implementated for each I/O manager.
113
115 : public G4VPersistencyManager
116{
118
119 public: // With description
120 G4PersistencyManager(G4PersistencyCenter* pc, std::string n);
121 // Constructor
122
123 virtual ~G4PersistencyManager();
124 // Destructor
125
126 public: // With description
127 virtual G4PersistencyManager* Create() {return 0;};
128 // Create a new persistency manager. To be used by G4PersistencyManagerT<>.
129
130 std::string GetName() {return nameMgr;};
131 // Get the name of persistency manager
132
133 virtual G4VPEventIO* EventIO() { return 0; };
134 // Returns the current event I/O handling manager
135 // Each derived class should return the pointer of actual manager.
136
137 virtual G4VPHitIO* HitIO() { return 0; };
138 // Returns the current hit I/O handling manager
139 // Each derived class should return the pointer of actual manager.
140
141 virtual G4VPDigitIO* DigitIO() { return 0; };
142 // Returns the current digit I/O handling manager
143 // Each derived class should return the pointer of actual manager.
144
145 virtual G4VMCTruthIO* MCTruthIO() { return 0; };
146 // Returns the current MCTruth I/O handling manager
147 // Each derived class should return the pointer of actual manager.
148
150 // Returns the current transaction manager
151 // Each derived class should return the pointer of actual manager.
152
153 virtual void Initialize() {};
154 // Initialize the persistency package.
155 // Each derived class should implement the acutal initialization sequence.
156
157 void SetVerboseLevel(int v);
158 // Set verbose level.
159
160 G4bool Store(const G4Event* evt);
161 // Store the G4Event and its associated objects
162
163 G4bool Retrieve(G4Event*& evt);
164 // Retrieve the G4Event and its associated objects
165
166 G4bool Store(const G4Run*) {return false;};
167 // not used
168
169 G4bool Retrieve(G4Run*&) {return false;};
170 // not used
171
172 G4bool Store(const G4VPhysicalVolume*) {return false;};
173 // not used
174
176 // not used
177
178 protected:
180 // Get the instance of persistency manager
181
182 protected:
185
186 private:
187 std::string nameMgr;
188 G4bool f_is_initialized;
189
190}; // End of class G4PersistencyManager
191
192#endif
193
bool G4bool
Definition: G4Types.hh:67
G4PersistencyCenter * f_pc
virtual G4VPEventIO * EventIO()
G4bool Store(const G4VPhysicalVolume *)
virtual G4PersistencyManager * Create()
G4bool Retrieve(G4Event *&evt)
G4bool Store(const G4Run *)
virtual G4VMCTruthIO * MCTruthIO()
static G4PersistencyManager * GetPersistencyManager()
virtual G4VPHitIO * HitIO()
G4bool Retrieve(G4VPhysicalVolume *&)
virtual G4VPDigitIO * DigitIO()
G4bool Store(const G4Event *evt)
virtual G4VTransactionManager * TransactionManager()
Definition: G4Run.hh:47