Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/persistency/mctruth/src/G4PersistencyCenter.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/G4PersistencyCenter.cc (Version 11.3.0) and /persistency/mctruth/src/G4PersistencyCenter.cc (Version 8.2)


  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 // G4PersistencyCenter implementation             
 27 //                                                
 28 // Author: Youhei Morita, 10.08.2001              
 29 // -------------------------------------------    
 30                                                   
 31 #include "G4PersistencyCenter.hh"                 
 32 #include "G4PersistencyCenterMessenger.hh"        
 33                                                   
 34 #include "G4UImanager.hh"                         
 35 #include "G4PersistencyManager.hh"                
 36 #include "G4VHCIOentry.hh"                        
 37 #include "G4VDCIOentry.hh"                        
 38                                                   
 39 G4ThreadLocal G4PersistencyCenter* G4Persisten    
 40                                                   
 41 // -------------------------------------------    
 42 G4PersistencyCenter::G4PersistencyCenter()        
 43 {                                                 
 44   f_wrObj[0] = "HepMC";                           
 45   f_wrObj[1] = "MCTruth";                         
 46   f_wrObj[2] = "Hits";                            
 47   f_wrObj[3] = "Digits";                          
 48                                                   
 49   f_rdObj[0] = "Hits";                            
 50   f_rdObj[1] = "HitsBG";                          
 51                                                   
 52   for(auto itr = f_wrObj.cbegin(); itr != f_wr    
 53   {                                               
 54     f_writeFileName[(*itr).second] = "G4defaul    
 55   }                                               
 56                                                   
 57   for(auto itr = f_rdObj.cbegin(); itr != f_rd    
 58   {                                               
 59     f_readFileName[(*itr).second] = "G4default    
 60   }                                               
 61                                                   
 62   f_writeFileMode["HepMC"]   = kRecycle;          
 63   f_writeFileMode["MCTruth"] = kOn;               
 64   f_writeFileMode["Hits"]    = kOn;               
 65   f_writeFileMode["Digits"]  = kOff;              
 66                                                   
 67   f_readFileMode["Hits"]   = false;               
 68   f_readFileMode["HitsBG"] = false;               
 69                                                   
 70   f_theMessenger   = new G4PersistencyCenterMe    
 71   f_currentManager = new G4PersistencyManager(    
 72 }                                                 
 73                                                   
 74 // -------------------------------------------    
 75 G4PersistencyCenter::~G4PersistencyCenter()       
 76 {                                                 
 77   delete f_theMessenger;                          
 78   delete f_currentManager;                        
 79 }                                                 
 80                                                   
 81 // -------------------------------------------    
 82 G4PersistencyCenter* G4PersistencyCenter::GetP    
 83 {                                                 
 84   if(f_thePointer == nullptr)                     
 85     f_thePointer = new G4PersistencyCenter;       
 86   return f_thePointer;                            
 87 }                                                 
 88                                                   
 89 // -------------------------------------------    
 90 void G4PersistencyCenter::SelectSystem(const G    
 91 {                                                 
 92   G4int st = 0;                                   
 93                                                   
 94   if(f_currentManager != nullptr)                 
 95     delete f_currentManager;                      
 96                                                   
 97   G4PersistencyManager* pm = nullptr;             
 98                                                   
 99   if(systemName == "ROOT")                        
100   {                                               
101     G4cout << " G4PersistencyCenter: \"ROOT\"     
102            << G4endl;                             
103     // G4UImanager *man=G4UImanager::GetUIpoin    
104     // std::string libs="Cint:Core:Tree:Rint:M    
105     // st = man->ApplyCommand("/load "+libs);     
106     if(st == 0)                                   
107     {                                             
108       pm = GetPersistencyManager("ROOT");         
109     }                                             
110   }                                               
111   else if(systemName == "ODBMS")                  
112   {                                               
113     G4cout << " G4PersistencyCenter: \"ODBMS\"    
114     // G4UImanager *man=G4UImanager::GetUIpoin    
115     // std::string libs="fadsODBMS";              
116     // st = man->ApplyCommand("/load "+libs);     
117     if(st == 0)                                   
118     {                                             
119       pm = GetPersistencyManager("ODBMS");        
120     }                                             
121   }                                               
122   else                                            
123   {                                               
124     G4cout << " G4PersistencyCenter: Default i    
125     pm = new G4PersistencyManager(this, "Defau    
126   }                                               
127                                                   
128   if(st == 0)                                     
129   {                                               
130     f_currentManager = pm->Create();              
131     if(f_currentManager != nullptr)               
132       f_currentManager->SetVerboseLevel(m_verb    
133     f_currentSystemName = systemName;             
134   }                                               
135 }                                                 
136                                                   
137 // -------------------------------------------    
138 void G4PersistencyCenter::SetHepMCObjyReaderFi    
139 {                                                 
140   if(SetReadFile("HepMC", file))                  
141   {                                               
142     SetRetrieveMode("HepMC", true);               
143   }                                               
144 }                                                 
145                                                   
146 // -------------------------------------------    
147 G4String G4PersistencyCenter::CurrentHepMCObjy    
148 {                                                 
149   if(CurrentRetrieveMode("HepMC"))                
150   {                                               
151     return CurrentReadFile("HepMC");              
152   }                                               
153   else                                            
154   {                                               
155     return "";                                    
156   }                                               
157 }                                                 
158                                                   
159 // -------------------------------------------    
160 void G4PersistencyCenter::SetStoreMode(const G    
161 {                                                 
162   if((*(f_writeFileName.find(objName))).second    
163   {                                               
164     f_writeFileMode[objName] = mode;              
165   }                                               
166   else                                            
167   {                                               
168     G4cerr << "!! unknown object type " << obj    
169   }                                               
170 }                                                 
171                                                   
172 // -------------------------------------------    
173 void G4PersistencyCenter::SetRetrieveMode(cons    
174 {                                                 
175   if((*(f_readFileName.find(objName))).second     
176   {                                               
177     f_readFileMode[objName] = mode;               
178   }                                               
179   else                                            
180   {                                               
181     G4cerr << "!! unknown object type " << obj    
182   }                                               
183 }                                                 
184                                                   
185 // -------------------------------------------    
186 StoreMode G4PersistencyCenter::CurrentStoreMod    
187 {                                                 
188   if((*(f_writeFileName.find(objName))).second    
189   {                                               
190     return f_writeFileMode[objName];              
191   }                                               
192   else                                            
193   {                                               
194     return kOff;                                  
195   }                                               
196 }                                                 
197                                                   
198 // -------------------------------------------    
199 G4bool G4PersistencyCenter::CurrentRetrieveMod    
200 {                                                 
201   if((*(f_readFileName.find(objName))).second     
202   {                                               
203     return f_readFileMode[objName];               
204   }                                               
205   else                                            
206   {                                               
207     return false;                                 
208   }                                               
209 }                                                 
210                                                   
211 // -------------------------------------------    
212 G4bool G4PersistencyCenter::SetWriteFile(const    
213                                          const    
214 {                                                 
215   if((*(f_writeFileName.find(objName))).second    
216   {                                               
217     f_writeFileName[objName] = writeFileName;     
218   }                                               
219   else                                            
220   {                                               
221     G4cerr << "!! unknown object type " << obj    
222     return false;                                 
223   }                                               
224   return true;                                    
225 }                                                 
226                                                   
227 // -------------------------------------------    
228 G4bool G4PersistencyCenter::SetReadFile(const     
229                                         const     
230 {                                                 
231 #ifndef WIN32                                     
232   if(f_ut.FileExists(readFileName))               
233   {                                               
234     f_readFileName[objName] = readFileName;       
235   }                                               
236   else                                            
237   {                                               
238     G4cerr << "!! File \"" << objName << "\" d    
239     return false;                                 
240   }                                               
241 #endif                                            
242   return true;                                    
243 }                                                 
244                                                   
245 // -------------------------------------------    
246 G4String G4PersistencyCenter::CurrentWriteFile    
247 {                                                 
248   if((*(f_writeFileName.find(objName))).second    
249   {                                               
250     return f_writeFileName[objName];              
251   }                                               
252   else                                            
253   {                                               
254     return "?????";                               
255   }                                               
256 }                                                 
257                                                   
258 // -------------------------------------------    
259 G4String G4PersistencyCenter::CurrentReadFile(    
260 {                                                 
261   if((*(f_readFileName.find(objName))).second     
262   {                                               
263     return f_readFileName[objName];               
264   }                                               
265   else                                            
266   {                                               
267     return "?????";                               
268   }                                               
269 }                                                 
270                                                   
271 // -------------------------------------------    
272 G4String G4PersistencyCenter::CurrentObject(co    
273 {                                                 
274   for(auto itr = f_readFileName.cbegin(); itr     
275   {                                               
276     if(file == (*itr).second)                     
277       return (*itr).first;                        
278   }                                               
279   for(auto itr = f_writeFileName.cbegin(); itr    
280   {                                               
281     if(file == (*itr).second)                     
282       return (*itr).first;                        
283   }                                               
284   return "?????";                                 
285 }                                                 
286                                                   
287 // -------------------------------------------    
288 void G4PersistencyCenter::AddHCIOmanager(const    
289                                          const    
290 {                                                 
291   G4HCIOcatalog* ioc = G4HCIOcatalog::GetHCIOc    
292                                                   
293   G4VHCIOentry* ioe = ioc->GetEntry(detName);     
294   if(ioe != nullptr)                              
295   {                                               
296     ioe->CreateHCIOmanager(detName, colName);     
297   }                                               
298   else                                            
299   {                                               
300     G4cerr << "Error! -- HCIO assignment faile    
301            << ", collection " << colName << G4    
302   }                                               
303 }                                                 
304                                                   
305 // -------------------------------------------    
306 G4String G4PersistencyCenter::CurrentHCIOmanag    
307 {                                                 
308   G4HCIOcatalog* ioc = G4HCIOcatalog::GetHCIOc    
309   return ioc->CurrentHCIOmanager();               
310 }                                                 
311                                                   
312 // -------------------------------------------    
313 void G4PersistencyCenter::AddDCIOmanager(const    
314 {                                                 
315   G4DCIOcatalog* ioc = G4DCIOcatalog::GetDCIOc    
316                                                   
317   G4String colName = "";                          
318   G4VDCIOentry* ioe = ioc->GetEntry(detName);     
319   if(ioe != nullptr)                              
320   {                                               
321     ioe->CreateDCIOmanager(detName, colName);     
322   }                                               
323   else                                            
324   {                                               
325     G4cerr << "Error! -- DCIO assignment faile    
326            << ", collection " << colName << G4    
327   }                                               
328 }                                                 
329                                                   
330 // -------------------------------------------    
331 G4String G4PersistencyCenter::CurrentDCIOmanag    
332 {                                                 
333   G4DCIOcatalog* ioc = G4DCIOcatalog::GetDCIOc    
334   return ioc->CurrentDCIOmanager();               
335 }                                                 
336                                                   
337 // -------------------------------------------    
338 void G4PersistencyCenter::PrintAll()              
339 {                                                 
340   G4cout << "Persistency Package: " << Current    
341   G4cout << G4endl;                               
342                                                   
343   G4String name, file;                            
344   StoreMode mode;                                 
345                                                   
346   G4cout << "Output object types and file name    
347   for(auto itr = f_wrObj.cbegin(); itr != f_wr    
348   {                                               
349     name = (*itr).second;                         
350     // disabled HepMC and MCTruth for now         
351     if(name != "HepMC" && name != "MCTruth")      
352     {                                             
353       G4cout << "  Object: " << PadString(name    
354       mode = CurrentStoreMode(name);              
355       if(mode == kOn)                             
356       {                                           
357         G4cout << " <on>    ";                    
358       }                                           
359       else if(mode == kOff)                       
360       {                                           
361         G4cout << " <off>   ";                    
362       }                                           
363       else if(mode == kRecycle)                   
364       {                                           
365         G4cout << "<recycle>";                    
366       }                                           
367       file = CurrentWriteFile(name);              
368       if(file == "")                              
369         file = "   <N/A>";                        
370       G4cout << " File: " << file << G4endl;      
371     }                                             
372   }                                               
373   G4cout << G4endl;                               
374                                                   
375   G4cout << "Input object types and file names    
376   for(auto itr = f_rdObj.cbegin(); itr != f_rd    
377   {                                               
378     name = (*itr).second;                         
379     // disabled HepMC and MCTruth for now         
380     if(name != "HepMC" && name != "MCTruth")      
381     {                                             
382       G4cout << "  Object: " << PadString(name    
383       if(CurrentRetrieveMode(name))               
384       {                                           
385         G4cout << " <on>    ";                    
386       }                                           
387       else                                        
388       {                                           
389         G4cout << " <off>   ";                    
390       }                                           
391       file = CurrentReadFile(name);               
392       if(file == "")                              
393         file = "   <N/A>";                        
394       G4cout << " File: " << CurrentReadFile(n    
395     }                                             
396   }                                               
397   G4cout << G4endl;                               
398                                                   
399   G4HCIOcatalog* hioc = G4HCIOcatalog::GetHCIO    
400   if(hioc != nullptr)                             
401   {                                               
402     G4cout << "Hit IO Managers:" << G4endl;       
403     hioc->PrintEntries();                         
404     hioc->PrintHCIOmanager();                     
405     G4cout << G4endl;                             
406   }                                               
407   else                                            
408   {                                               
409     G4cout << "Hit IO Manager catalog is not r    
410   }                                               
411                                                   
412   G4DCIOcatalog* dioc = G4DCIOcatalog::GetDCIO    
413   if(dioc != nullptr)                             
414   {                                               
415     G4cout << "Digit IO Managers:" << G4endl;     
416     dioc->PrintEntries();                         
417     dioc->PrintDCIOmanager();                     
418     G4cout << G4endl;                             
419   }                                               
420   else                                            
421   {                                               
422     G4cout << "Digit IO Manager catalog is not    
423   }                                               
424 }                                                 
425                                                   
426 // -------------------------------------------    
427 void G4PersistencyCenter::SetPersistencyManage    
428                                                   
429 {                                                 
430   f_currentManager    = pm;                       
431   f_currentSystemName = name;                     
432 }                                                 
433                                                   
434 // -------------------------------------------    
435 G4PersistencyManager*                             
436 G4PersistencyCenter::GetPersistencyManager(con    
437 {                                                 
438   if(f_theCatalog.find(nam) != f_theCatalog.ce    
439     return f_theCatalog[nam];                     
440   return nullptr;                                 
441 }                                                 
442                                                   
443 // -------------------------------------------    
444 void G4PersistencyCenter::RegisterPersistencyM    
445 {                                                 
446   f_theCatalog[pm->GetName()] = pm;               
447 }                                                 
448                                                   
449 // -------------------------------------------    
450 void G4PersistencyCenter::DeletePersistencyMan    
451 {                                                 
452   if(f_currentManager != nullptr)                 
453     delete f_currentManager;                      
454   f_currentManager = nullptr;                     
455 }                                                 
456                                                   
457 // -------------------------------------------    
458 void G4PersistencyCenter::SetVerboseLevel(G4in    
459 {                                                 
460   m_verbose = v;                                  
461   if(f_currentManager != nullptr)                 
462     f_currentManager->SetVerboseLevel(m_verbos    
463 }                                                 
464                                                   
465 // -------------------------------------------    
466 G4String G4PersistencyCenter::PadString(const     
467                                         unsign    
468 {                                                 
469   if(name.length() > width)                       
470   {                                               
471     return name.substr(0, width - 1) + "#";       
472   }                                               
473   else                                            
474   {                                               
475     G4String wname = name;                        
476     for(unsigned int i = 0; i < width - name.l    
477       wname = wname + " ";                        
478     return wname;                                 
479   }                                               
480 }                                                 
481