Geant4-11
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
G4PersistencyCenter Class Reference

#include <G4PersistencyCenter.hh>

Public Member Functions

void AddDCIOmanager (const G4String &detName)
 
void AddHCIOmanager (const G4String &detName, const G4String &colName)
 
G4String CurrentDCIOmanager ()
 
G4String CurrentHCIOmanager ()
 
G4String CurrentHepMCObjyReaderFile ()
 
G4String CurrentObject (const G4String &file)
 
G4PersistencyManagerCurrentPersistencyManager ()
 
G4String CurrentReadFile (const G4String &objName)
 
G4bool CurrentRetrieveMode (const G4String &objName)
 
StoreMode CurrentStoreMode (const G4String &objName)
 
const G4StringCurrentSystem ()
 
G4String CurrentWriteFile (const G4String &objName)
 
void DeletePersistencyManager ()
 
G4PersistencyManagerGetPersistencyManager (const G4String &nam)
 
void PrintAll ()
 
void RegisterPersistencyManager (G4PersistencyManager *pm)
 
void SelectSystem (const G4String &systemName)
 
void SetHepMCObjyReaderFile (const G4String &file)
 
void SetPersistencyManager (G4PersistencyManager *pm, const G4String &name)
 
G4bool SetReadFile (const G4String &objName, const G4String &readFileName)
 
void SetRetrieveMode (const G4String &objName, G4bool mode)
 
void SetStoreMode (const G4String &objName, StoreMode mode)
 
void SetVerboseLevel (G4int v)
 
G4bool SetWriteFile (const G4String &objName, const G4String &writeFileName)
 
G4int VerboseLevel ()
 

Static Public Member Functions

static G4PersistencyCenterGetPersistencyCenter ()
 

Private Member Functions

 G4PersistencyCenter ()
 
G4String PadString (const G4String &name, unsigned int width)
 
 ~G4PersistencyCenter ()
 

Private Attributes

G4PersistencyManagerf_currentManager = nullptr
 
G4String f_currentSystemName
 
ObjMap f_rdObj
 
BoolMap f_readFileMode
 
FileMap f_readFileName
 
PMap f_theCatalog
 
G4PersistencyCenterMessengerf_theMessenger = nullptr
 
G4FileUtilities f_ut
 
StoreMap f_writeFileMode
 
FileMap f_writeFileName
 
ObjMap f_wrObj
 
G4int m_verbose = 0
 

Static Private Attributes

static G4ThreadLocal G4PersistencyCenterf_thePointer = nullptr
 

Detailed Description

Definition at line 66 of file G4PersistencyCenter.hh.

Constructor & Destructor Documentation

◆ G4PersistencyCenter()

G4PersistencyCenter::G4PersistencyCenter ( )
private

Definition at line 42 of file G4PersistencyCenter.cc.

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_wrObj.cend(); ++itr)
53 {
54 f_writeFileName[(*itr).second] = "G4defaultOutput";
55 }
56
57 for(auto itr = f_rdObj.cbegin(); itr != f_rdObj.cend(); ++itr)
58 {
59 f_readFileName[(*itr).second] = "G4defaultInput";
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
71 f_currentManager = new G4PersistencyManager(this, "Default");
72}
@ kRecycle
G4PersistencyCenterMessenger * f_theMessenger
G4PersistencyManager * f_currentManager

References f_currentManager, f_rdObj, f_readFileMode, f_readFileName, f_theMessenger, f_writeFileMode, f_writeFileName, f_wrObj, kOff, kOn, and kRecycle.

Referenced by GetPersistencyCenter().

◆ ~G4PersistencyCenter()

G4PersistencyCenter::~G4PersistencyCenter ( )
private

Definition at line 75 of file G4PersistencyCenter.cc.

76{
77 delete f_theMessenger;
78 delete f_currentManager;
79}

References f_currentManager, and f_theMessenger.

Member Function Documentation

◆ AddDCIOmanager()

void G4PersistencyCenter::AddDCIOmanager ( const G4String detName)

Definition at line 313 of file G4PersistencyCenter.cc.

314{
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 failed for detector " << detName
326 << ", collection " << colName << G4endl;
327 }
328}
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition: G4ios.hh:57
G4VDCIOentry * GetEntry(const G4String &name)
static G4DCIOcatalog * GetDCIOcatalog()
virtual void CreateDCIOmanager(const G4String &, const G4String &)
Definition: G4VDCIOentry.hh:56

References G4VDCIOentry::CreateDCIOmanager(), G4cerr, G4endl, G4DCIOcatalog::GetDCIOcatalog(), and G4DCIOcatalog::GetEntry().

◆ AddHCIOmanager()

void G4PersistencyCenter::AddHCIOmanager ( const G4String detName,
const G4String colName 
)

Definition at line 288 of file G4PersistencyCenter.cc.

290{
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 failed for detector " << detName
301 << ", collection " << colName << G4endl;
302 }
303}
G4VHCIOentry * GetEntry(const G4String &name)
static G4HCIOcatalog * GetHCIOcatalog()
virtual void CreateHCIOmanager(const G4String &, const G4String &)
Definition: G4VHCIOentry.hh:56

References G4VHCIOentry::CreateHCIOmanager(), G4cerr, G4endl, G4HCIOcatalog::GetEntry(), and G4HCIOcatalog::GetHCIOcatalog().

Referenced by G4PersistencyCenterMessenger::SetNewValue().

◆ CurrentDCIOmanager()

G4String G4PersistencyCenter::CurrentDCIOmanager ( )

Definition at line 331 of file G4PersistencyCenter.cc.

332{
334 return ioc->CurrentDCIOmanager();
335}
G4String CurrentDCIOmanager()

References G4DCIOcatalog::CurrentDCIOmanager(), and G4DCIOcatalog::GetDCIOcatalog().

◆ CurrentHCIOmanager()

G4String G4PersistencyCenter::CurrentHCIOmanager ( )

◆ CurrentHepMCObjyReaderFile()

G4String G4PersistencyCenter::CurrentHepMCObjyReaderFile ( )

Definition at line 147 of file G4PersistencyCenter.cc.

148{
149 if(CurrentRetrieveMode("HepMC"))
150 {
151 return CurrentReadFile("HepMC");
152 }
153 else
154 {
155 return "";
156 }
157}
G4bool CurrentRetrieveMode(const G4String &objName)
G4String CurrentReadFile(const G4String &objName)

References CurrentReadFile(), and CurrentRetrieveMode().

◆ CurrentObject()

G4String G4PersistencyCenter::CurrentObject ( const G4String file)

Definition at line 272 of file G4PersistencyCenter.cc.

273{
274 for(auto itr = f_readFileName.cbegin(); itr != f_readFileName.cend(); ++itr)
275 {
276 if(file == (*itr).second)
277 return (*itr).first;
278 }
279 for(auto itr = f_writeFileName.cbegin(); itr != f_writeFileName.cend(); ++itr)
280 {
281 if(file == (*itr).second)
282 return (*itr).first;
283 }
284 return "?????";
285}

References f_readFileName, f_writeFileName, and geant4_check_module_cycles::file.

◆ CurrentPersistencyManager()

G4PersistencyManager * G4PersistencyCenter::CurrentPersistencyManager ( )
inline

Definition at line 127 of file G4PersistencyCenter.hh.

128 {
129 return f_currentManager;
130 }

References f_currentManager.

Referenced by G4PersistencyManager::GetPersistencyManager().

◆ CurrentReadFile()

G4String G4PersistencyCenter::CurrentReadFile ( const G4String objName)

Definition at line 259 of file G4PersistencyCenter.cc.

260{
261 if((*(f_readFileName.find(objName))).second != "")
262 {
263 return f_readFileName[objName];
264 }
265 else
266 {
267 return "?????";
268 }
269}

References f_readFileName.

Referenced by CurrentHepMCObjyReaderFile(), G4PersistencyCenterMessenger::GetCurrentValue(), PrintAll(), and G4PersistencyManager::Retrieve().

◆ CurrentRetrieveMode()

G4bool G4PersistencyCenter::CurrentRetrieveMode ( const G4String objName)

Definition at line 199 of file G4PersistencyCenter.cc.

200{
201 if((*(f_readFileName.find(objName))).second != "")
202 {
203 return f_readFileMode[objName];
204 }
205 else
206 {
207 return false;
208 }
209}

References f_readFileMode, and f_readFileName.

Referenced by CurrentHepMCObjyReaderFile(), PrintAll(), and G4PersistencyManager::Retrieve().

◆ CurrentStoreMode()

StoreMode G4PersistencyCenter::CurrentStoreMode ( const G4String objName)

Definition at line 186 of file G4PersistencyCenter.cc.

187{
188 if((*(f_writeFileName.find(objName))).second != "")
189 {
190 return f_writeFileMode[objName];
191 }
192 else
193 {
194 return kOff;
195 }
196}

References f_writeFileMode, f_writeFileName, and kOff.

Referenced by G4PersistencyCenterMessenger::GetCurrentValue(), PrintAll(), and G4PersistencyManager::Store().

◆ CurrentSystem()

const G4String & G4PersistencyCenter::CurrentSystem ( )
inline

◆ CurrentWriteFile()

G4String G4PersistencyCenter::CurrentWriteFile ( const G4String objName)

Definition at line 246 of file G4PersistencyCenter.cc.

247{
248 if((*(f_writeFileName.find(objName))).second != "")
249 {
250 return f_writeFileName[objName];
251 }
252 else
253 {
254 return "?????";
255 }
256}

References f_writeFileName.

Referenced by G4PersistencyCenterMessenger::GetCurrentValue(), PrintAll(), and G4PersistencyManager::Store().

◆ DeletePersistencyManager()

void G4PersistencyCenter::DeletePersistencyManager ( )

Definition at line 450 of file G4PersistencyCenter.cc.

451{
452 if(f_currentManager != nullptr)
453 delete f_currentManager;
454 f_currentManager = nullptr;
455}

References f_currentManager.

◆ GetPersistencyCenter()

G4PersistencyCenter * G4PersistencyCenter::GetPersistencyCenter ( )
static

◆ GetPersistencyManager()

G4PersistencyManager * G4PersistencyCenter::GetPersistencyManager ( const G4String nam)

Definition at line 436 of file G4PersistencyCenter.cc.

437{
438 if(f_theCatalog.find(nam) != f_theCatalog.cend())
439 return f_theCatalog[nam];
440 return nullptr;
441}

References f_theCatalog.

Referenced by SelectSystem().

◆ PadString()

G4String G4PersistencyCenter::PadString ( const G4String name,
unsigned int  width 
)
private

Definition at line 466 of file G4PersistencyCenter.cc.

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.length(); ++i)
477 wname = wname + " ";
478 return wname;
479 }
480}
const char * name(G4int ptype)

References G4InuclParticleNames::name().

Referenced by PrintAll().

◆ PrintAll()

void G4PersistencyCenter::PrintAll ( )

Definition at line 338 of file G4PersistencyCenter.cc.

339{
340 G4cout << "Persistency Package: " << CurrentSystem() << G4endl;
341 G4cout << G4endl;
342
344 StoreMode mode;
345
346 G4cout << "Output object types and file names:" << G4endl;
347 for(auto itr = f_wrObj.cbegin(); itr != f_wrObj.cend(); ++itr)
348 {
349 name = (*itr).second;
350 // disabled HepMC and MCTruth for now
351 if(name != "HepMC" && name != "MCTruth")
352 {
353 G4cout << " Object: " << PadString(name, 9);
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 }
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:" << G4endl;
376 for(auto itr = f_rdObj.cbegin(); itr != f_rdObj.cend(); ++itr)
377 {
378 name = (*itr).second;
379 // disabled HepMC and MCTruth for now
380 if(name != "HepMC" && name != "MCTruth")
381 {
382 G4cout << " Object: " << PadString(name, 9);
384 {
385 G4cout << " <on> ";
386 }
387 else
388 {
389 G4cout << " <off> ";
390 }
392 if(file == "")
393 file = " <N/A>";
394 G4cout << " File: " << CurrentReadFile(name) << G4endl;
395 }
396 }
397 G4cout << G4endl;
398
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 registered." << G4endl;
410 }
411
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 registered." << G4endl;
423 }
424}
G4GLOB_DLL std::ostream G4cout
void PrintDCIOmanager()
void PrintHCIOmanager()
StoreMode CurrentStoreMode(const G4String &objName)
G4String PadString(const G4String &name, unsigned int width)
const G4String & CurrentSystem()
G4String CurrentWriteFile(const G4String &objName)

References CurrentReadFile(), CurrentRetrieveMode(), CurrentStoreMode(), CurrentSystem(), CurrentWriteFile(), f_rdObj, f_wrObj, geant4_check_module_cycles::file, G4cout, G4endl, G4DCIOcatalog::GetDCIOcatalog(), G4HCIOcatalog::GetHCIOcatalog(), kOff, kOn, kRecycle, G4InuclParticleNames::name(), PadString(), G4DCIOcatalog::PrintDCIOmanager(), G4DCIOcatalog::PrintEntries(), G4HCIOcatalog::PrintEntries(), and G4HCIOcatalog::PrintHCIOmanager().

Referenced by G4PersistencyCenterMessenger::SetNewValue().

◆ RegisterPersistencyManager()

void G4PersistencyCenter::RegisterPersistencyManager ( G4PersistencyManager pm)

Definition at line 444 of file G4PersistencyCenter.cc.

445{
446 f_theCatalog[pm->GetName()] = pm;
447}
const G4String & GetName()

References f_theCatalog, and G4PersistencyManager::GetName().

Referenced by G4PersistencyManagerT< T >::G4PersistencyManagerT().

◆ SelectSystem()

void G4PersistencyCenter::SelectSystem ( const G4String systemName)

Definition at line 90 of file G4PersistencyCenter.cc.

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\" Persistency Package is selected."
102 << G4endl;
103 // G4UImanager *man=G4UImanager::GetUIpointer();
104 // std::string libs="Cint:Core:Tree:Rint:Matrix:Physics:fadsROOT";
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\" package is selected." << G4endl;
114 // G4UImanager *man=G4UImanager::GetUIpointer();
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 is selected." << G4endl;
125 pm = new G4PersistencyManager(this, "Default");
126 }
127
128 if(st == 0)
129 {
130 f_currentManager = pm->Create();
131 if(f_currentManager != nullptr)
133 f_currentSystemName = systemName;
134 }
135}
int G4int
Definition: G4Types.hh:85
G4PersistencyManager * GetPersistencyManager(const G4String &nam)
virtual G4PersistencyManager * Create()

References G4PersistencyManager::Create(), f_currentManager, f_currentSystemName, G4cout, G4endl, GetPersistencyManager(), m_verbose, and G4PersistencyManager::SetVerboseLevel().

Referenced by G4PersistencyCenterMessenger::SetNewValue().

◆ SetHepMCObjyReaderFile()

void G4PersistencyCenter::SetHepMCObjyReaderFile ( const G4String file)

Definition at line 138 of file G4PersistencyCenter.cc.

139{
140 if(SetReadFile("HepMC", file))
141 {
142 SetRetrieveMode("HepMC", true);
143 }
144}
void SetRetrieveMode(const G4String &objName, G4bool mode)
G4bool SetReadFile(const G4String &objName, const G4String &readFileName)

References geant4_check_module_cycles::file, SetReadFile(), and SetRetrieveMode().

◆ SetPersistencyManager()

void G4PersistencyCenter::SetPersistencyManager ( G4PersistencyManager pm,
const G4String name 
)

◆ SetReadFile()

G4bool G4PersistencyCenter::SetReadFile ( const G4String objName,
const G4String readFileName 
)

Definition at line 228 of file G4PersistencyCenter.cc.

230{
231#ifndef WIN32
232 if(f_ut.FileExists(readFileName))
233 {
234 f_readFileName[objName] = readFileName;
235 }
236 else
237 {
238 G4cerr << "!! File \"" << objName << "\" does not exist." << G4endl;
239 return false;
240 }
241#endif
242 return true;
243}
G4bool FileExists(const G4String &file)

References f_readFileName, f_ut, G4FileUtilities::FileExists(), G4cerr, and G4endl.

Referenced by SetHepMCObjyReaderFile(), and G4PersistencyCenterMessenger::SetNewValue().

◆ SetRetrieveMode()

void G4PersistencyCenter::SetRetrieveMode ( const G4String objName,
G4bool  mode 
)

Definition at line 173 of file G4PersistencyCenter.cc.

174{
175 if((*(f_readFileName.find(objName))).second != "")
176 {
177 f_readFileMode[objName] = mode;
178 }
179 else
180 {
181 G4cerr << "!! unknown object type " << objName << " for input." << G4endl;
182 }
183}

References f_readFileMode, f_readFileName, G4cerr, and G4endl.

Referenced by SetHepMCObjyReaderFile().

◆ SetStoreMode()

void G4PersistencyCenter::SetStoreMode ( const G4String objName,
StoreMode  mode 
)

Definition at line 160 of file G4PersistencyCenter.cc.

161{
162 if((*(f_writeFileName.find(objName))).second != "")
163 {
164 f_writeFileMode[objName] = mode;
165 }
166 else
167 {
168 G4cerr << "!! unknown object type " << objName << " for output." << G4endl;
169 }
170}

References f_writeFileMode, f_writeFileName, G4cerr, and G4endl.

Referenced by G4PersistencyCenterMessenger::SetNewValue().

◆ SetVerboseLevel()

void G4PersistencyCenter::SetVerboseLevel ( G4int  v)

◆ SetWriteFile()

G4bool G4PersistencyCenter::SetWriteFile ( const G4String objName,
const G4String writeFileName 
)

Definition at line 212 of file G4PersistencyCenter.cc.

214{
215 if((*(f_writeFileName.find(objName))).second != "")
216 {
217 f_writeFileName[objName] = writeFileName;
218 }
219 else
220 {
221 G4cerr << "!! unknown object type " << objName << " for output." << G4endl;
222 return false;
223 }
224 return true;
225}

References f_writeFileName, G4cerr, and G4endl.

Referenced by G4PersistencyCenterMessenger::SetNewValue().

◆ VerboseLevel()

G4int G4PersistencyCenter::VerboseLevel ( )
inline

Field Documentation

◆ f_currentManager

G4PersistencyManager* G4PersistencyCenter::f_currentManager = nullptr
private

◆ f_currentSystemName

G4String G4PersistencyCenter::f_currentSystemName
private

Definition at line 167 of file G4PersistencyCenter.hh.

Referenced by CurrentSystem(), SelectSystem(), and SetPersistencyManager().

◆ f_rdObj

ObjMap G4PersistencyCenter::f_rdObj
private

Definition at line 170 of file G4PersistencyCenter.hh.

Referenced by G4PersistencyCenter(), and PrintAll().

◆ f_readFileMode

BoolMap G4PersistencyCenter::f_readFileMode
private

◆ f_readFileName

FileMap G4PersistencyCenter::f_readFileName
private

◆ f_theCatalog

PMap G4PersistencyCenter::f_theCatalog
private

Definition at line 168 of file G4PersistencyCenter.hh.

Referenced by GetPersistencyManager(), and RegisterPersistencyManager().

◆ f_theMessenger

G4PersistencyCenterMessenger* G4PersistencyCenter::f_theMessenger = nullptr
private

Definition at line 164 of file G4PersistencyCenter.hh.

Referenced by G4PersistencyCenter(), and ~G4PersistencyCenter().

◆ f_thePointer

G4ThreadLocal G4PersistencyCenter * G4PersistencyCenter::f_thePointer = nullptr
staticprivate

Definition at line 165 of file G4PersistencyCenter.hh.

Referenced by GetPersistencyCenter().

◆ f_ut

G4FileUtilities G4PersistencyCenter::f_ut
private

Definition at line 177 of file G4PersistencyCenter.hh.

Referenced by SetReadFile().

◆ f_writeFileMode

StoreMap G4PersistencyCenter::f_writeFileMode
private

Definition at line 173 of file G4PersistencyCenter.hh.

Referenced by CurrentStoreMode(), G4PersistencyCenter(), and SetStoreMode().

◆ f_writeFileName

FileMap G4PersistencyCenter::f_writeFileName
private

◆ f_wrObj

ObjMap G4PersistencyCenter::f_wrObj
private

Definition at line 169 of file G4PersistencyCenter.hh.

Referenced by G4PersistencyCenter(), and PrintAll().

◆ m_verbose

G4int G4PersistencyCenter::m_verbose = 0
private

Definition at line 175 of file G4PersistencyCenter.hh.

Referenced by SelectSystem(), SetVerboseLevel(), and VerboseLevel().


The documentation for this class was generated from the following files: