source: trunk/source/persistency/mctruth/include/G4PersistencyManager.hh @ 1202

Last change on this file since 1202 was 818, checked in by garnier, 16 years ago

import all except CVS

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// 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#ifndef WIN32
37#ifdef G4LIB_USE_HEPMC
38  #include "CLHEP/HepMC/GenEvent.h"
39  #include "G4VHepMCIO.hh"
40  #include "G4VMCTruthIO.hh"
41#endif
42#endif
43
44#include "G4HCIOcatalog.hh"
45#include "G4DCIOcatalog.hh"
46#include "G4VPEventIO.hh"
47#include "G4VPHitIO.hh"
48#include "G4VPDigitIO.hh"
49#include "G4VTransactionManager.hh"
50#include <string>
51
52class G4PersistencyCenter;
53
54// Class inherited:
55#include "G4VPersistencyManager.hh"
56
57// Class Description:
58//   Manager base class to handle event store and retrieve operation.
59//   Actual persistency implementation should be handled with
60//   derived classes.
61//
62//   Each persistency package should implement derived classes of
63//   G4VHepMCIO, G4VMCTruthIO, G4VPHitIO, G4VPDigitIO, G4VPEventIO.
64//   Concreate G4PersistencyManager should implement the methods
65//   HepMCIO(), MCTruthIO(), HitIO(), DigitIO() and EventIO() to
66//   return the pointers of the above classes.
67//   G4PersistencyManager handles the sequence of the storing and
68//   retrieving of the persistent object of each type, along with
69//   the transaction handling.
70//
71//   Retrieving a HepMC event:
72//
73//        G4PersistencyManager::Retrieve( HepMC::GenEvent*& )
74//         |
75//         |  ... StartRead() ...
76//         |
77//         |  ... HepMCIO()->Retrieve() ...
78//         |
79//         |  ... Commit() ...
80//         V
81//
82//   Storing a Geant4 event:
83//
84//        G4PersistencyManager::Store( G4Pevent* )
85//         |
86//         |  ... StartUpdate() ...
87//         |
88//         |  ... HepMCIO()->Store( HepMC event ) ...
89//         |
90//         |  ... MCTruthIO()->Store( MCTruth event ) ...
91//         |
92//         |  ... HitIO()->Store( hit_collection_of_event ) ...
93//         |
94//         |  ... DigitIO()->Store( digit_collection_of_event ) ...
95//         |
96//         |  ... EventIO()->Store( event with hits and digits ) ...
97//         |
98//         |  ... Commit() ...
99//         V
100//
101//   Retrieving a Geant event:
102//
103//        G4PersistencyManager::Retrieve( event )
104//         |
105//         |  ... StartRead() ...
106//         |
107//         |  ... EventIO()->Retrieve( event ) ...
108//         |
109//         |  ... Commit() ...
110//         V
111//
112//   Hit collection and digit collection of each detector component
113//   should be handled by detector specific I/O manager, which
114//   should be registered to the G4PersistencyCenter with
115//   AddHCIOmanager() and AddDCIOmanager().  Usually this is done
116//   through a command
117//
118//      /Persistency/Store/Using/HitIO <detector_io_manager_name>
119//
120//   which is handled by G4PersistencyCenterMessenger.
121//
122//   A static template declaration of G4HCIOentryT<class> must be
123//   implementated for each I/O manager.
124
125class G4PersistencyManager
126 : public G4VPersistencyManager
127{
128    friend class G4PersistencyCenter;
129
130    public: // With description
131      G4PersistencyManager(G4PersistencyCenter* pc, std::string n);
132      // Constructor
133
134      virtual ~G4PersistencyManager();
135      // Destructor
136
137    public: // With description
138      virtual G4PersistencyManager* Create() {return 0;};
139      // Create a new persistency manager.  To be used by G4PersistencyManagerT<>.
140
141      std::string GetName() {return nameMgr;};
142      // Get the name of persistency manager
143
144      virtual G4VPEventIO* EventIO() { return 0; };
145      // Returns the current event I/O handling manager
146      // Each derived class should return the pointer of actual manager.
147
148      virtual G4VPHitIO* HitIO() { return 0; };
149      // Returns the current hit I/O handling manager
150      // Each derived class should return the pointer of actual manager.
151
152      virtual G4VPDigitIO* DigitIO() { return 0; };
153      // Returns the current digit I/O handling manager
154      // Each derived class should return the pointer of actual manager.
155#ifndef WIN32
156#ifdef G4LIB_USE_HEPMC
157      virtual G4VHepMCIO* HepMCIO() { return 0; };
158      // Returns the current HepMC I/O handling manager
159      // Each derived class should return the pointer of actual manager.
160
161      virtual G4VMCTruthIO* MCTruthIO() { return 0; };
162      // Returns the current MCTruth I/O handling manager
163      // Each derived class should return the pointer of actual manager.
164#endif
165#endif
166      virtual G4VTransactionManager* TransactionManager() { return 0; };
167      // Returns the current transaction manager
168      // Each derived class should return the pointer of actual manager.
169
170      virtual void Initialize() {};
171      // Initialize the persistency package.
172      // Each derived class should implement the acutal initialization sequence.
173
174      void SetVerboseLevel(int v);
175      // Set verbose level.
176
177      G4bool Store(const G4Event* evt);
178      // Store the G4Event and its associated objects
179
180      G4bool Retrieve(G4Event*& evt);
181      // Retrieve the G4Event and its associated objects
182#ifndef WIN32
183#ifdef G4LIB_USE_HEPMC
184      G4bool Retrieve(HepMC::GenEvent*& evt, int id=-1);
185      // retrieves HepMC GenEvent and its associated object.
186      // To be used by generator/HepMCObjyReader.
187#endif
188#endif
189      G4bool Store(const G4Run*) {return false;};
190      // not used
191
192      G4bool Retrieve(G4Run*&) {return false;};
193      // not used
194
195      G4bool Store(const G4VPhysicalVolume*) {return false;};
196      // not used
197
198      G4bool Retrieve(G4VPhysicalVolume*&) {return false;};
199      // not used
200
201    protected:
202      static G4PersistencyManager* GetPersistencyManager();
203      // Get the instance of persistency manager
204
205    protected:
206      G4PersistencyCenter* f_pc;
207      int m_verbose;
208
209    private:
210      std::string      nameMgr;
211      // GeneratorCenter* f_GenCenter;
212      // G4MCTManager*      f_MCTman;
213      G4bool             f_is_initialized;
214
215}; // End of class G4PersistencyManager
216
217#endif
218
Note: See TracBrowser for help on using the repository browser.