Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions
G4XmlAnalysisManager Class Reference

#include <G4XmlAnalysisManager.hh>

Inheritance diagram for G4XmlAnalysisManager:
G4VAnalysisManager

Public Member Functions

 G4XmlAnalysisManager (G4bool isMaster=true)
 
 ~G4XmlAnalysisManager ()
 
tools::histo::h1d * GetH1 (G4int id, G4bool warn=true, G4bool onlyIfActive=true) const
 
tools::histo::h2d * GetH2 (G4int id, G4bool warn=true, G4bool onlyIfActive=true) const
 
tools::waxml::ntuple * GetNtuple () const
 
tools::waxml::ntuple * GetNtuple (G4int ntupleId) const
 
- Public Member Functions inherited from G4VAnalysisManager
 G4VAnalysisManager (const G4String &type, G4bool isMaster)
 
virtual ~G4VAnalysisManager ()
 
G4bool OpenFile ()
 
G4bool OpenFile (const G4String &fileName)
 
G4bool Write ()
 
G4bool CloseFile ()
 
G4bool SetFileName (const G4String &fileName)
 
G4bool SetHistoDirectoryName (const G4String &dirName)
 
G4bool SetNtupleDirectoryName (const G4String &dirName)
 
G4String GetFileName () const
 
G4String GetHistoDirectoryName () const
 
G4String GetNtupleDirectoryName () const
 
G4int CreateH1 (const G4String &name, const G4String &title, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none", const G4String &binSchemeName="linear")
 
G4int CreateH1 (const G4String &name, const G4String &title, const std::vector< G4double > &edges, const G4String &unitName="none", const G4String &fcnName="none")
 
G4int CreateH2 (const G4String &name, const G4String &title, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &xbinScheme="linear", const G4String &ybinScheme="linear")
 
G4int CreateH2 (const G4String &name, const G4String &title, const std::vector< G4double > &xedges, const std::vector< G4double > &yedges, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none")
 
G4bool SetH1 (G4int id, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none", const G4String &binSchemeName="linear")
 
G4bool SetH1 (G4int id, const std::vector< G4double > &edges, const G4String &unitName="none", const G4String &fcnName="none")
 
G4bool SetH2 (G4int id, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear")
 
G4bool SetH2 (G4int id, const std::vector< G4double > &xedges, const std::vector< G4double > &yedges, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none")
 
G4bool ScaleH1 (G4int id, G4double factor)
 
G4bool ScaleH2 (G4int id, G4double factor)
 
G4int CreateNtuple (const G4String &name, const G4String &title)
 
G4int CreateNtupleIColumn (const G4String &name)
 
G4int CreateNtupleFColumn (const G4String &name)
 
G4int CreateNtupleDColumn (const G4String &name)
 
void FinishNtuple ()
 
G4int CreateNtupleIColumn (G4int ntupleId, const G4String &name)
 
G4int CreateNtupleFColumn (G4int ntupleId, const G4String &name)
 
G4int CreateNtupleDColumn (G4int ntupleId, const G4String &name)
 
void FinishNtuple (G4int ntupleId)
 
G4bool SetFirstHistoId (G4int firstId)
 
G4bool SetFirstH1Id (G4int firstId)
 
G4bool SetFirstH2Id (G4int firstId)
 
G4bool SetFirstNtupleId (G4int firstId)
 
G4bool SetFirstNtupleColumnId (G4int firstId)
 
G4bool FillH1 (G4int id, G4double value, G4double weight=1.0)
 
G4bool FillH2 (G4int id, G4double xvalue, G4double yvalue, G4double weight=1.0)
 
G4bool FillNtupleIColumn (G4int id, G4int value)
 
G4bool FillNtupleFColumn (G4int id, G4float value)
 
G4bool FillNtupleDColumn (G4int id, G4double value)
 
G4bool AddNtupleRow ()
 
G4bool FillNtupleIColumn (G4int ntupleId, G4int columnId, G4int value)
 
G4bool FillNtupleFColumn (G4int ntupleId, G4int columnId, G4float value)
 
G4bool FillNtupleDColumn (G4int ntupleId, G4int columnId, G4double value)
 
G4bool AddNtupleRow (G4int ntupleId)
 
void SetActivation (G4bool activation)
 
G4bool GetActivation () const
 
G4bool IsActive () const
 
G4bool IsAscii () const
 
G4int GetNofH1s () const
 
G4int GetNofH2s () const
 
G4int GetNofNtuples () const
 
G4int GetH1Id (const G4String &name, G4bool warn=true) const
 
G4int GetH2Id (const G4String &name, G4bool warn=true) const
 
void SetH1Activation (G4bool activation)
 
void SetH1Activation (G4int id, G4bool activation)
 
void SetH1Ascii (G4int id, G4bool ascii)
 
void SetH2Activation (G4bool activation)
 
void SetH2Activation (G4int id, G4bool activation)
 
void SetH2Ascii (G4int id, G4bool ascii)
 
G4int GetH1Nbins (G4int id) const
 
G4double GetH1Xmin (G4int id) const
 
G4double GetH1Xmax (G4int id) const
 
G4double GetH1Width (G4int id) const
 
G4int GetH2Nxbins (G4int id) const
 
G4double GetH2Xmin (G4int id) const
 
G4double GetH2Xmax (G4int id) const
 
G4double GetH2XWidth (G4int id) const
 
G4int GetH2Nybins (G4int id) const
 
G4double GetH2Ymin (G4int id) const
 
G4double GetH2Ymax (G4int id) const
 
G4double GetH2YWidth (G4int id) const
 
G4String GetH1Name (G4int id) const
 
G4double GetH1Unit (G4int id) const
 
G4bool GetH1Activation (G4int id) const
 
G4bool GetH1Ascii (G4int id) const
 
G4String GetH2Name (G4int id) const
 
G4double GetH2XUnit (G4int id) const
 
G4double GetH2YUnit (G4int id) const
 
G4bool GetH2Activation (G4int id) const
 
G4bool GetH2Ascii (G4int id) const
 
G4bool SetH1Title (G4int id, const G4String &title)
 
G4bool SetH1XAxisTitle (G4int id, const G4String &title)
 
G4bool SetH1YAxisTitle (G4int id, const G4String &title)
 
G4bool SetH2Title (G4int id, const G4String &title)
 
G4bool SetH2XAxisTitle (G4int id, const G4String &title)
 
G4bool SetH2YAxisTitle (G4int id, const G4String &title)
 
G4bool SetH2ZAxisTitle (G4int id, const G4String &title)
 
G4String GetH1Title (G4int id) const
 
G4String GetH1XAxisTitle (G4int id) const
 
G4String GetH1YAxisTitle (G4int id) const
 
G4String GetH2Title (G4int id) const
 
G4String GetH2XAxisTitle (G4int id) const
 
G4String GetH2YAxisTitle (G4int id) const
 
G4String GetH2ZAxisTitle (G4int id) const
 
void SetVerboseLevel (G4int verboseLevel)
 
G4int GetVerboseLevel () const
 
G4String GetType () const
 
G4String GetFileType () const
 

Static Public Member Functions

static G4XmlAnalysisManagerInstance ()
 

Protected Member Functions

virtual G4bool OpenFileImpl (const G4String &fileName)
 
virtual G4bool WriteImpl ()
 
virtual G4bool CloseFileImpl ()
 
- Protected Member Functions inherited from G4VAnalysisManager
void SetH1Manager (G4VH1Manager *h1Manager)
 
void SetH2Manager (G4VH2Manager *h2Manager)
 
void SetNtupleManager (G4VNtupleManager *ntupleManager)
 
void SetFileManager (G4VFileManager *fileManager)
 
G4bool WriteAscii (const G4String &fileName)
 

Additional Inherited Members

- Protected Attributes inherited from G4VAnalysisManager
G4AnalysisManagerState fState
 

Detailed Description

Definition at line 49 of file G4XmlAnalysisManager.hh.

Constructor & Destructor Documentation

G4XmlAnalysisManager::G4XmlAnalysisManager ( G4bool  isMaster = true)

Definition at line 64 of file G4XmlAnalysisManager.cc.

References FatalException, G4VAnalysisManager::fState, G4Exception(), G4XmlNtupleManager::SetFileManager(), G4VAnalysisManager::SetFileManager(), G4VAnalysisManager::SetH1Manager(), G4VAnalysisManager::SetH2Manager(), and G4VAnalysisManager::SetNtupleManager().

Referenced by Instance().

65  : G4VAnalysisManager("Xml", isMaster),
66  fH1Manager(0),
67  fH2Manager(0),
68  fNtupleManager(0),
69  fFileManager(0)
70 {
71  if ( ( isMaster && fgMasterInstance ) || ( fgInstance ) ) {
72  G4ExceptionDescription description;
73  description
74  << " "
75  << "G4XmlAnalysisManager already exists."
76  << "Cannot create another instance.";
77  G4Exception("G4XmlAnalysisManager::G4XmlAnalysisManager",
78  "Analysis_F001", FatalException, description);
79  }
80  if ( isMaster ) fgMasterInstance = this;
81  fgInstance = this;
82 
83  // Create managers
84  fH1Manager = new G4H1ToolsManager(fState);
85  fH2Manager = new G4H2ToolsManager(fState);
86  fNtupleManager = new G4XmlNtupleManager(fState);
87  fFileManager = new G4XmlFileManager(fState);
88  fNtupleManager->SetFileManager(fFileManager);
89  // The managers will be deleted by the base class
90 
91  // Set managers to base class
92  SetH1Manager(fH1Manager);
93  SetH2Manager(fH2Manager);
94  SetNtupleManager(fNtupleManager);
95  SetFileManager(fFileManager);
96 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void SetH1Manager(G4VH1Manager *h1Manager)
G4VAnalysisManager(const G4String &type, G4bool isMaster)
void SetFileManager(G4XmlFileManager *fileManager)
void SetFileManager(G4VFileManager *fileManager)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void SetH2Manager(G4VH2Manager *h2Manager)
G4AnalysisManagerState fState
void SetNtupleManager(G4VNtupleManager *ntupleManager)
G4XmlAnalysisManager::~G4XmlAnalysisManager ( )

Definition at line 99 of file G4XmlAnalysisManager.cc.

References G4VAnalysisManager::fState, and G4AnalysisManagerState::GetIsMaster().

100 {
101  if ( fState.GetIsMaster() ) fgMasterInstance = 0;
102  fgInstance = 0;
103 }
G4AnalysisManagerState fState

Member Function Documentation

G4bool G4XmlAnalysisManager::CloseFileImpl ( )
protectedvirtual

Implements G4VAnalysisManager.

Definition at line 350 of file G4XmlAnalysisManager.cc.

References G4XmlFileManager::CloseFile(), G4XmlFileManager::CloseHnFile(), G4VAnalysisManager::fState, G4Exception(), G4VFileManager::GetFullFileName(), G4XmlFileManager::GetHnFile(), G4AnalysisManagerState::GetIsMaster(), G4AnalysisManagerState::GetVerboseL1(), G4AnalysisManagerState::GetVerboseL4(), G4H2ToolsManager::IsEmpty(), G4H1ToolsManager::IsEmpty(), G4AnalysisManagerState::IsMT(), JustWarning, and G4AnalysisVerbose::Message().

351 {
352  G4bool finalResult = true;
353 
354 #ifdef G4VERBOSE
355  if ( fState.GetVerboseL4() )
356  fState.GetVerboseL4()->Message("close", "files", "");
357 #endif
358 
359  // Unlock file name only
360  G4bool result = fFileManager->CloseFile();
361  finalResult = finalResult && result;
362 
363  // Close Hn file
364  result = fFileManager->CloseHnFile();
365  finalResult = finalResult && result;
366 
367  // Close ntuple files
368  if ( ( ! G4AnalysisManagerState::IsMT() ) || ( ! fState.GetIsMaster() ) ) {
369  // In sequential mode or in MT mode only on workers
370  result = CloseNtupleFiles();
371  finalResult = finalResult && result;
372  }
373 
374  // reset data
375  result = Reset();
376  if ( ! result ) {
377  G4ExceptionDescription description;
378  description << " " << "Resetting data failed";
379  G4Exception("G4XmlAnalysisManager::CloseFile()",
380  "Analysis_W002", JustWarning, description);
381  }
382  finalResult = finalResult && result;
383 
384  // delete files if empty
385  // (ntuple files are created only if an ntuple is created)
386  if ( fFileManager->GetHnFile() &&
387  fH1Manager->IsEmpty() && fH2Manager->IsEmpty() ) {
388  std::remove(fFileManager->GetFullFileName());
389 #ifdef G4VERBOSE
390  if ( fState.GetVerboseL1() )
392  ->Message("delete", "empty file", fFileManager->GetFullFileName());
393 #endif
394  }
395  else {
396 #ifdef G4VERBOSE
397  if ( fState.GetVerboseL1() )
399  ->Message("close", "files", fFileManager->GetFullFileName());
400 #endif
401  }
402 
403  return finalResult;
404 }
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4String GetFullFileName() const
G4bool IsEmpty() const
const G4AnalysisVerbose * GetVerboseL4() const
bool G4bool
Definition: G4Types.hh:79
virtual G4bool CloseFile()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
std::ofstream * GetHnFile() const
G4AnalysisManagerState fState
const G4AnalysisVerbose * GetVerboseL1() const
G4bool IsEmpty() const
tools::histo::h1d* G4XmlAnalysisManager::GetH1 ( G4int  id,
G4bool  warn = true,
G4bool  onlyIfActive = true 
) const
tools::histo::h2d* G4XmlAnalysisManager::GetH2 ( G4int  id,
G4bool  warn = true,
G4bool  onlyIfActive = true 
) const
tools::waxml::ntuple* G4XmlAnalysisManager::GetNtuple ( ) const
tools::waxml::ntuple* G4XmlAnalysisManager::GetNtuple ( G4int  ntupleId) const
G4XmlAnalysisManager * G4XmlAnalysisManager::Instance ( void  )
static

Definition at line 53 of file G4XmlAnalysisManager.cc.

References G4XmlAnalysisManager(), and G4Threading::IsWorkerThread().

54 {
55  if ( fgInstance == 0 ) {
56  G4bool isMaster = ! G4Threading::IsWorkerThread();
57  fgInstance = new G4XmlAnalysisManager(isMaster);
58  }
59 
60  return fgInstance;
61 }
G4XmlAnalysisManager(G4bool isMaster=true)
bool G4bool
Definition: G4Types.hh:79
G4bool IsWorkerThread()
Definition: G4Threading.cc:104
G4bool G4XmlAnalysisManager::OpenFileImpl ( const G4String fileName)
protectedvirtual

Implements G4VAnalysisManager.

Definition at line 261 of file G4XmlAnalysisManager.cc.

References G4XmlFileManager::CreateHnFile(), G4XmlNtupleManager::CreateNtuplesFromBooking(), G4VAnalysisManager::fState, G4VFileManager::GetFullFileName(), G4AnalysisManagerState::GetIsMaster(), G4AnalysisManagerState::GetVerboseL1(), G4AnalysisManagerState::GetVerboseL4(), G4AnalysisVerbose::Message(), G4XmlFileManager::OpenFile(), and G4VFileManager::SetFileName().

262 {
263  G4bool finalResult = true;
264  G4bool result = fFileManager->SetFileName(fileName);
265  finalResult = finalResult && result;
266 
267 #ifdef G4VERBOSE
268  G4String name = fFileManager->GetFullFileName();
269  if ( fState.GetVerboseL4() ) {
270  fState.GetVerboseL4()->Message("open", "analysis file", name);
271  }
272 #endif
273 
274  // Only lock file name in file manager
275  result = fFileManager->OpenFile(fileName);
276  finalResult = finalResult && result;
277 
278  // Create histograms file (on master)
279  if ( fState.GetIsMaster() ) {
280  result = fFileManager->CreateHnFile();
281  finalResult = finalResult && result;
282  }
283 
284  // Create ntuples if they are booked
285  // (The files will be created with creating ntuples)
286  fNtupleManager->CreateNtuplesFromBooking();
287 
288 #ifdef G4VERBOSE
289  if ( fState.GetVerboseL1() )
290  fState.GetVerboseL1()->Message("open", "analysis file", name);
291 #endif
292 
293  return finalResult;
294 }
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
G4String GetFullFileName() const
const XML_Char * name
const G4AnalysisVerbose * GetVerboseL4() const
bool G4bool
Definition: G4Types.hh:79
virtual G4bool OpenFile(const G4String &fileName)
G4bool SetFileName(const G4String &fileName)
G4AnalysisManagerState fState
const G4AnalysisVerbose * GetVerboseL1() const
G4bool G4XmlAnalysisManager::WriteImpl ( )
protectedvirtual

Implements G4VAnalysisManager.

Definition at line 297 of file G4XmlAnalysisManager.cc.

References G4XmlFileManager::CreateHnFile(), G4VAnalysisManager::fState, G4endl, G4Exception(), G4VFileManager::GetFileName(), G4VFileManager::GetFullFileName(), G4AnalysisManagerState::GetVerboseL1(), G4AnalysisManagerState::GetVerboseL4(), G4VAnalysisManager::IsAscii(), G4H2ToolsManager::IsEmpty(), G4H1ToolsManager::IsEmpty(), JustWarning, G4AnalysisVerbose::Message(), and G4VAnalysisManager::WriteAscii().

298 {
299  G4bool finalResult = true;
300 
301 #ifdef G4VERBOSE
302  G4String name = fFileManager->GetFullFileName();
303  if ( fState.GetVerboseL4() )
304  fState.GetVerboseL4()->Message("write", "files", name);
305 #endif
306 
307  // ntuples
308  WriteNtuple();
309 
310  if ( ! fgMasterInstance &&
311  ( ( ! fH1Manager->IsEmpty() ) || ( ! fH2Manager->IsEmpty() ) ) ) {
312 
313  G4ExceptionDescription description;
314  description
315  << " " << "No master G4XmlAnalysisManager instance exists."
316  << G4endl
317  << " " << "Histogram data will not be merged.";
318  G4Exception("G4XmlAnalysisManager::Write()",
319  "Analysis_W014", JustWarning, description);
320 
321  // Create Hn file per thread
322  G4bool result = fFileManager->CreateHnFile();
323  if ( ! result ) return false;
324  }
325 
326  // H1
327  G4bool result = WriteH1();
328  finalResult = finalResult && result;
329 
330  // H2
331  result = WriteH2();
332  finalResult = finalResult && result;
333 
334  // Write ASCII if activated
335  if ( IsAscii() ) {
336  result = WriteAscii(fFileManager->GetFileName());
337  finalResult = finalResult && result;
338  }
339 
340 #ifdef G4VERBOSE
341  if ( fState.GetVerboseL1() )
343  ->Message("write", "files", fFileManager->GetFullFileName(), finalResult);
344 #endif
345 
346  return finalResult;
347 }
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4String GetFullFileName() const
G4bool IsEmpty() const
G4bool IsAscii() const
const XML_Char * name
const G4AnalysisVerbose * GetVerboseL4() const
G4String GetFileName() const
bool G4bool
Definition: G4Types.hh:79
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
G4AnalysisManagerState fState
const G4AnalysisVerbose * GetVerboseL1() const
G4bool IsEmpty() const
G4bool WriteAscii(const G4String &fileName)

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