ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4RootAnalysisManager.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4RootAnalysisManager.hh
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
27
// The main manager for Root analysis.
28
// It delegates most of functions to the object specific managers.
29
30
// Author: Ivana Hrivnacova, 18/06/2013 (ivana@ipno.in2p3.fr)
31
32
#ifndef G4RootAnalysisManager_h
33
#define G4RootAnalysisManager_h 1
34
35
#include "
G4ToolsAnalysisManager.hh
"
36
#include "
globals.hh
"
37
38
#include "tools/wroot/ntuple"
39
#include "tools/histo/hmpi"
40
41
#include <memory>
42
43
class
G4RootFileManager
;
44
class
G4RootNtupleManager
;
45
class
G4RootMainNtupleManager
;
46
class
G4RootPNtupleManager
;
47
48
namespace
tools {
49
namespace
wroot {
50
class
directory;
51
}
52
}
53
54
enum class
G4NtupleMergeMode
{
55
kNone,
56
kMain,
57
kSlave
58
};
59
60
class
G4RootAnalysisManager
:
public
G4ToolsAnalysisManager
61
{
62
friend
class
G4RootMpiAnalysisManager
;
63
64
public
:
65
explicit
G4RootAnalysisManager
(
G4bool
isMaster =
true
);
66
virtual
~G4RootAnalysisManager
();
67
68
// static methods
69
static
G4RootAnalysisManager
*
Instance
();
70
static
G4bool
IsInstance
();
71
72
// Access methods
73
tools::wroot::ntuple
*
GetNtuple
()
const
;
74
tools::wroot::ntuple
*
GetNtuple
(
G4int
ntupleId)
const
;
75
76
// Iterators
77
std::vector<tools::wroot::ntuple*>::iterator
BeginNtuple
();
78
std::vector<tools::wroot::ntuple*>::iterator
EndNtuple
();
79
std::vector<tools::wroot::ntuple*>::const_iterator
BeginConstNtuple
()
const
;
80
std::vector<tools::wroot::ntuple*>::const_iterator
EndConstNtuple
()
const
;
81
82
// MT/MPI
83
virtual
void
SetNtupleMerging
(
G4bool
mergeNtuples,
84
G4int
nofReducedNtupleFiles = 0)
override
;
85
virtual
void
SetNtupleRowWise
(
G4bool
rowWise,
G4bool
rowMode =
true
)
override
;
86
virtual
void
SetBasketSize
(
unsigned
int
basketSize)
override
;
87
virtual
void
SetBasketEntries
(
unsigned
int
basketEntries)
override
;
88
89
protected
:
90
// virtual methods from base class
91
virtual
G4bool
OpenFileImpl
(
const
G4String
& fileName)
override
;
92
virtual
G4bool
WriteImpl
() final;
93
virtual
G4bool
CloseFileImpl
(
G4bool
reset) override;
94
virtual
G4bool
IsOpenFileImpl
() const final;
95
// virtual functions (overriden in MPI implementation)
96
virtual
G4bool
WriteNtuple
();
97
virtual
G4bool
Reset
();
98
99
private:
100
// static data members
101
static
G4RootAnalysisManager
*
fgMasterInstance
;
102
static
G4ThreadLocal
G4RootAnalysisManager
*
fgInstance
;
103
104
// methods
105
void
SetNtupleMergingMode
(
G4bool
mergeNtuples,
106
G4int
nofNtupleFiles);
107
void
ClearNtupleManagers
();
108
void
CreateNtupleManagers
();
109
G4int
GetNtupleFileNumber
();
110
G4bool
ResetNtuple
();
111
112
template <typename
T
>
113
G4bool
WriteT
(const std::vector<
T
*>& htVector,
114
const std::vector<
G4HnInformation
*>& hnVector,
115
tools::wroot::directory* directory,
116
const
G4String
& hnType);
117
G4bool
WriteH1
();
118
G4bool
WriteH2
();
119
G4bool
WriteH3
();
120
G4bool
WriteP1
();
121
G4bool
WriteP2
();
122
123
// data members
124
G4int
fNofNtupleFiles
;
125
G4bool
fNtupleRowWise
;
126
G4bool
fNtupleRowMode
;
127
G4NtupleMergeMode
fNtupleMergeMode
;
128
G4RootNtupleManager
*
fNtupleManager
;
129
G4RootPNtupleManager
*
fSlaveNtupleManager
;
130
std::
shared_ptr
<
G4RootFileManager
>
fFileManager
;
131
};
132
133
#include "G4RootAnalysisManager.icc"
134
135
#endif
geant4
tree
geant4-10.6-release
source
analysis
root
include
G4RootAnalysisManager.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:11
using
1.8.2 with
ECCE GitHub integration