Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/persistency/mctruth/include/G4PersistencyManager.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

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