ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4PersistencyManager.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4PersistencyManager.hh
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
"
42
#include "
G4VTransactionManager.hh
"
43
#include <string>
44
45
class
G4PersistencyCenter
;
46
47
// Class inherited:
48
#include "
G4VPersistencyManager.hh
"
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
114
class
G4PersistencyManager
115
:
public
G4VPersistencyManager
116
{
117
friend
class
G4PersistencyCenter
;
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
149
virtual
G4VTransactionManager
*
TransactionManager
() {
return
0; };
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
175
G4bool
Retrieve
(
G4VPhysicalVolume
*&) {
return
false
;};
176
// not used
177
178
protected
:
179
static
G4PersistencyManager
*
GetPersistencyManager
();
180
// Get the instance of persistency manager
181
182
protected
:
183
G4PersistencyCenter
*
f_pc
;
184
int
m_verbose
;
185
186
private
:
187
std::string
nameMgr
;
188
G4bool
f_is_initialized
;
189
190
};
// End of class G4PersistencyManager
191
192
#endif
193
geant4
tree
geant4-10.6-release
source
persistency
mctruth
include
G4PersistencyManager.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:26
using
1.8.2 with
ECCE GitHub integration