Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/persistency/mctruth/src/G4PersistencyManager.cc

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 ]

Diff markup

Differences between /persistency/mctruth/src/G4PersistencyManager.cc (Version 11.3.0) and /persistency/mctruth/src/G4PersistencyManager.cc (Version 5.2.p1)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4PersistencyManager implementation            
 27 //                                                
 28 // Author: Youhei Morita, 17.07.2001              
 29 // -------------------------------------------    
 30                                                   
 31 #include "G4PersistencyManager.hh"                
 32                                                   
 33 #include <iomanip>                                
 34 #include "G4PersistencyCenter.hh"                 
 35                                                   
 36 // -------------------------------------------    
 37 G4PersistencyManager::G4PersistencyManager(G4P    
 38                                            con    
 39   : f_pc(ptc)                                     
 40   , nameMgr(n)                                    
 41 {                                                 
 42   m_verbose = f_pc->VerboseLevel();               
 43 }                                                 
 44                                                   
 45 // -------------------------------------------    
 46 G4PersistencyManager::~G4PersistencyManager()     
 47 {                                                 
 48 }                                                 
 49                                                   
 50 // -------------------------------------------    
 51 G4PersistencyManager* G4PersistencyManager::Ge    
 52 {                                                 
 53   return G4PersistencyCenter::GetPersistencyCe    
 54     ->CurrentPersistencyManager();                
 55 }                                                 
 56                                                   
 57 // -------------------------------------------    
 58 void G4PersistencyManager::SetVerboseLevel(G4i    
 59 {                                                 
 60   m_verbose = v;                                  
 61   if(m_verbose > 2)                               
 62   {                                               
 63     G4cout << "G4PersistencyManager[\"" << nam    
 64            << "]: verbose level is set to " <<    
 65   }                                               
 66   if(EventIO() != nullptr)                        
 67     EventIO()->SetVerboseLevel(m_verbose);        
 68   if(MCTruthIO() != nullptr)                      
 69     MCTruthIO()->SetVerboseLevel(m_verbose);      
 70   if(HitIO() != nullptr)                          
 71     HitIO()->SetVerboseLevel(m_verbose);          
 72   if(DigitIO() != nullptr)                        
 73     DigitIO()->SetVerboseLevel(m_verbose);        
 74   if(TransactionManager() != nullptr)             
 75     TransactionManager()->SetVerboseLevel(m_ve    
 76                                                   
 77   G4int i;                                        
 78                                                   
 79   G4HCIOcatalog* hcio = G4HCIOcatalog::GetHCIO    
 80   if(hcio != nullptr)                             
 81   {                                               
 82     hcio->SetVerboseLevel(m_verbose);             
 83     for(i = 0; i < (G4int)hcio->NumberOfHCIOma    
 84     {                                             
 85       hcio->GetHCIOmanager(i)->SetVerboseLevel    
 86     }                                             
 87   }                                               
 88   G4DCIOcatalog* dcio = G4DCIOcatalog::GetDCIO    
 89   if(dcio != nullptr)                             
 90   {                                               
 91     dcio->SetVerboseLevel(m_verbose);             
 92     for(i = 0; i < (G4int)dcio->NumberOfDCIOma    
 93     {                                             
 94       dcio->GetDCIOmanager(i)->SetVerboseLevel    
 95     }                                             
 96   }                                               
 97 }                                                 
 98                                                   
 99 // -------------------------------------------    
100 G4bool G4PersistencyManager::Store(const G4Eve    
101 {                                                 
102   if(m_verbose > 2)                               
103   {                                               
104     G4cout << "G4PersistencyManager::Store() i    
105            << evt->GetEventID() << "." << G4en    
106   }                                               
107                                                   
108   if(TransactionManager() == nullptr)             
109     return true;                                  
110                                                   
111   G4bool is_store = f_pc->CurrentStoreMode("MC    
112                     f_pc->CurrentStoreMode("Hi    
113                     f_pc->CurrentStoreMode("Di    
114                                                   
115   if(!is_store)                                   
116     return true;                                  
117                                                   
118   // Call package dependent Initialize()          
119   //                                              
120   if(!f_is_initialized)                           
121   {                                               
122     f_is_initialized = true;                      
123     if(m_verbose > 1)                             
124     {                                             
125       G4cout << "G4PersistencyManager:: Initia    
126              << G4endl;                           
127     }                                             
128     Initialize();                                 
129   }                                               
130                                                   
131   G4bool st1 = true, st2 = true;                  
132                                                   
133   // Start event IO transaction                   
134   //                                              
135   if(TransactionManager()->StartUpdate())         
136   {                                               
137     if(m_verbose > 2)                             
138     {                                             
139       G4cout << "G4PersistencyManager: Update     
140              << evt->GetEventID() << "." << G4    
141     }                                             
142   }                                               
143   else                                            
144   {                                               
145     G4cerr << "TransactionManager::Store(G4Eve    
146            << G4endl;                             
147     return false;                                 
148   }                                               
149                                                   
150   G4String file;                                  
151   G4String obj;                                   
152                                                   
153   G4bool stmct = true, st3 = true;                
154                                                   
155   // Store MCTruth event                          
156   //                                              
157   obj                = "MCTruth";                 
158   G4MCTEvent* mctevt = nullptr;                   
159   if(f_pc->CurrentStoreMode(obj) == kOn)          
160   {                                               
161     //  Note: This part of code will not be ac    
162     //  to obtain the current pointer of G4MCT    
163                                                   
164     // if ( (mctevt = f_MCTman->GetCurrentEven    
165     if(mctevt != nullptr)                         
166     {                                             
167       file = f_pc->CurrentWriteFile(obj);         
168       if(TransactionManager()->SelectWriteFile    
169       {                                           
170         stmct = MCTruthIO()->Store(mctevt);       
171         if(stmct && m_verbose > 1)                
172         {                                         
173           G4cout << " -- File : " << file << "    
174                  << " -- G4MCTEvent Stored." <    
175         }                                         
176       }                                           
177       else                                        
178       {                                           
179         stmct = false;                            
180       }                                           
181     }  // end of if ( mctevt != nullptr )         
182   }                                               
183                                                   
184   // Store hits collection                        
185   //                                              
186   obj = "Hits";                                   
187   if(f_pc->CurrentStoreMode(obj) == kOn)          
188   {                                               
189     if(G4HCofThisEvent* hc = evt->GetHCofThisE    
190     {                                             
191       file = f_pc->CurrentWriteFile(obj);         
192       if(TransactionManager()->SelectWriteFile    
193       {                                           
194         st1 = HitIO()->Store(hc);                 
195         if(st1 && m_verbose > 1)                  
196         {                                         
197           G4cout << " -- File : " << file << "    
198                  << " -- Hit Collections Store    
199         }                                         
200       }                                           
201       else                                        
202       {                                           
203         st1 = false;                              
204       }                                           
205     }                                             
206   }                                               
207                                                   
208   // Store digits collection                      
209   //                                              
210   obj = "Digits";                                 
211   if(f_pc->CurrentStoreMode(obj) == kOn)          
212   {                                               
213     if(G4DCofThisEvent* dc = evt->GetDCofThisE    
214     {                                             
215       file = f_pc->CurrentWriteFile(obj);         
216       if(TransactionManager()->SelectWriteFile    
217       {                                           
218         st2 = DigitIO()->Store(dc);               
219         if(st2 && m_verbose > 1)                  
220         {                                         
221           G4cout << " -- File : " << file << "    
222                  << " -- Digit Collections Sto    
223         }                                         
224       }                                           
225       else                                        
226       {                                           
227         st2 = false;                              
228       }                                           
229     }                                             
230   }                                               
231                                                   
232   // Store this G4EVENT                           
233   //                                              
234   if(mctevt != 0 || evt != 0)                     
235   {                                               
236     obj  = "Hits";                                
237     file = f_pc->CurrentWriteFile(obj);           
238     if(TransactionManager()->SelectWriteFile(o    
239     {                                             
240       st3 = EventIO()->Store(evt);                
241       if(st3 && m_verbose > 1)                    
242       {                                           
243         G4cout << " -- File name: " << f_pc->C    
244                << " -- Event# " << evt->GetEve    
245                << " -- G4Pevent is Stored." <<    
246       }                                           
247     }                                             
248     else                                          
249     {                                             
250       st3 = false;                                
251     }                                             
252   }                                               
253                                                   
254   G4bool st = stmct && st1 && st2 && st3;         
255                                                   
256   if(st)                                          
257   {                                               
258     TransactionManager()->Commit();               
259     if(m_verbose > 0)                             
260       G4cout << "G4PersistencyManager: event#     
261              << " is stored." << G4endl;          
262   }                                               
263   else                                            
264   {                                               
265     G4cerr << "G4PersistencyManager::Store(G4E    
266            << G4endl;                             
267     TransactionManager()->Abort();                
268   }                                               
269                                                   
270   return st;                                      
271 }                                                 
272                                                   
273 // -------------------------------------------    
274 G4bool G4PersistencyManager::Retrieve(G4Event*    
275 {                                                 
276   if(m_verbose > 2)                               
277   {                                               
278     G4cout << "G4PersistencyManager::Retrieve(    
279   }                                               
280                                                   
281   if(TransactionManager() == nullptr)             
282     return true;                                  
283                                                   
284   if(f_pc->CurrentRetrieveMode("MCTruth") == f    
285      f_pc->CurrentRetrieveMode("Hits") == fals    
286      f_pc->CurrentRetrieveMode("Digits") == fa    
287   {                                               
288     return true;                                  
289   }                                               
290                                                   
291   // Call package dependent Initialize()          
292   //                                              
293   if(!f_is_initialized)                           
294   {                                               
295     f_is_initialized = true;                      
296     if(m_verbose > 1)                             
297     {                                             
298       G4cout << "G4PersistencyManager:: Initia    
299              << G4endl;                           
300     }                                             
301     Initialize();                                 
302   }                                               
303                                                   
304   // Start event IO transaction                   
305   //                                              
306   if(TransactionManager()->StartRead())           
307   {                                               
308     if(m_verbose > 2)                             
309     {                                             
310       G4cout << "G4PersistencyManager: Read tr    
311     }                                             
312   }                                               
313   else                                            
314   {                                               
315     G4cerr << "TransactionManager::Retrieve(G4    
316            << G4endl;                             
317     return false;                                 
318   }                                               
319                                                   
320   G4bool st = false;                              
321   G4String file;                                  
322                                                   
323   // Retrieve a G4EVENT                           
324   //                                              
325   G4String obj = "Hits";                          
326   if(f_pc->CurrentRetrieveMode(obj) == true)      
327   {                                               
328     file = f_pc->CurrentReadFile(obj);            
329     if(TransactionManager()->SelectReadFile(ob    
330     {                                             
331       st = EventIO()->Retrieve(evt);              
332       if(st && m_verbose > 1)                     
333       {                                           
334         G4cout << " -- File : " << file << " -    
335                << " -- G4Event is Retrieved."     
336       }                                           
337     }                                             
338     else                                          
339     {                                             
340       st = false;                                 
341     }                                             
342   }                                               
343                                                   
344   if(st)                                          
345   {                                               
346     TransactionManager()->Commit();               
347   }                                               
348   else                                            
349   {                                               
350     G4cerr << "G4PersistencyManager::Retrieve(    
351            << G4endl;                             
352     TransactionManager()->Abort();                
353   }                                               
354                                                   
355   return st;                                      
356 }                                                 
357