| The Gaudi Framework v32r1 (f65d50dc)

THistSvc.h
Go to the documentation of this file.
1 #ifndef GAUDISVC_THISTSVC_H
2 #define GAUDISVC_THISTSVC_H
3
4 // system includes:
5 #include <map>
6 #include <set>
7 #include <string>
8 #include <vector>
9
10 // Gaudi includes:
11 #include "GaudiKernel/IFileMgr.h"
12 #include "GaudiKernel/IIncidentListener.h"
13 #include "GaudiKernel/IIoComponent.h"
14 #include "GaudiKernel/ITHistSvc.h"
15 #include "GaudiKernel/MsgStream.h"
16 #include "GaudiKernel/Service.h"
17
18 // ROOT includes:
19 #include "TGraph.h"
20 #include "TH1.h"
21 #include "TH2.h"
22 #include "TH3.h"
23 #include "TList.h"
24 #include "TObject.h"
25 #include "TTree.h"
26
27 class IIncidentSvc;
28
29 class THistSvc : public extends<Service, ITHistSvc, IIncidentListener, IIoComponent> {
30 public:
31 using extends::extends;
32
33 StatusCode initialize() override;
34 StatusCode reinitialize() override;
35 StatusCode finalize() override;
36
37 public:
38 // Methods from ITHistSvc
41
43 StatusCode regHist( const std::string& name ) override;
47 StatusCode regHist( const std::string& name, std::unique_ptr<TH1> hist ) override;
52 StatusCode regHist( const std::string& name, std::unique_ptr<TH1> hist, TH1* hist_ptr ) override;
55 StatusCode regHist( const std::string& name, TH1* ) override;
56
58 StatusCode getHist( const std::string& name, TH1*&, size_t index = 0 ) const override;
60 StatusCode getHist( const std::string& name, TH2*&, size_t index = 0 ) const override;
62 StatusCode getHist( const std::string& name, TH3*&, size_t index = 0 ) const override;
63
65
68
70 StatusCode regTree( const std::string& name ) override;
72 StatusCode regTree( const std::string& name, std::unique_ptr<TTree> ) override;
75 StatusCode regTree( const std::string& name, TTree* ) override;
77 StatusCode getTree( const std::string& name, TTree*& ) const override;
78
80
83
85 StatusCode regGraph( const std::string& name ) override;
87 StatusCode regGraph( const std::string& name, std::unique_ptr<TGraph> ) override;
90 virtual StatusCode regGraph( const std::string& name, TGraph* ) override;
92 StatusCode getGraph( const std::string& name, TGraph*& ) const override;
93
95
98
100 StatusCode regShared( const std::string& name, std::unique_ptr<TH1>, LockedHandle<TH1>& ) override;
102 StatusCode regShared( const std::string& name, std::unique_ptr<TH2>, LockedHandle<TH2>& ) override;
104 StatusCode regShared( const std::string& name, std::unique_ptr<TH3>, LockedHandle<TH3>& ) override;
106 StatusCode regShared( const std::string& name, std::unique_ptr<TGraph>, LockedHandle<TGraph>& ) override;
108 StatusCode getShared( const std::string& name, LockedHandle<TH1>& ) const override;
110 StatusCode getShared( const std::string& name, LockedHandle<TH2>& ) const override;
112 StatusCode getShared( const std::string& name, LockedHandle<TH3>& ) const override;
114 StatusCode getShared( const std::string& name, LockedHandle<TGraph>& ) const override;
115
117
120
122 StatusCode deReg( const std::string& name ) override;
124 StatusCode deReg( TObject* obj ) override;
125
127 StatusCode merge( const std::string& id ) override;
129 StatusCode merge( TObject* ) override;
130
132 bool exists( const std::string& name ) const override;
133
135
138
139 std::vector<std::string> getHists() const override;
140 std::vector<std::string> getTrees() const override;
141 std::vector<std::string> getGraphs() const override;
142
143 StatusCode getTHists( TDirectory* td, TList&, bool recurse = false ) const override;
144 StatusCode getTHists( const std::string& name, TList&, bool recurse = false ) const override;
145 StatusCode getTHists( TDirectory* td, TList& tl, bool recurse = false, bool reg = false ) override;
146 StatusCode getTHists( const std::string& name, TList& tl, bool recurse = false, bool reg = false ) override;
147
148 StatusCode getTTrees( TDirectory* td, TList&, bool recurse = false ) const override;
149 StatusCode getTTrees( const std::string& name, TList&, bool recurse = false ) const override;
150 StatusCode getTTrees( TDirectory* td, TList& tl, bool recurse = false, bool reg = false ) override;
151 StatusCode getTTrees( const std::string& name, TList& tl, bool recurse = false, bool reg = false ) override;
152
154
155 public:
156 // Methods from other interfaces
157 // From IIncidentListener
158 void handle( const Incident& ) override;
159
160 // From IIoComponent
161 StatusCode io_reinit() override;
162
163 private:
164 typedef std::recursive_mutex THistSvcMutex_t;
165 typedef std::mutex histMut_t;
166
168 class GlobalDirectoryRestore {
169 public:
170 GlobalDirectoryRestore( THistSvcMutex_t& mut );
171 ~GlobalDirectoryRestore();
172
173 private:
174 TDirectory* m_gDirectory;
175 TFile* m_gFile;
176 int m_gErrorIgnoreLevel;
177 std::lock_guard<THistSvcMutex_t> m_lock;
178 };
179
181 enum Mode { READ, WRITE, UPDATE, APPEND, SHARE, INVALID };
182
184 static Mode charToMode( const char typ ) {
185 switch ( typ ) {
186 case 'O':
187 return READ;
188 case 'A':
189 return APPEND;
190 case 'R':
191 return UPDATE;
192 case 'S':
193 return SHARE;
194 default:
195 return INVALID;
196 }
197 }
198
200 struct THistID {
201 std::string id{""};
202 bool temp{true};
203 TObject* obj{nullptr};
204 TFile* file{nullptr};
205 Mode mode{INVALID};
206 histMut_t* mutex{nullptr};
207 bool shared{false};
208
209 THistID() = default;
210 THistID( const THistID& rhs ) = default;
211 THistID( std::string& i, bool& t, TObject* o, TFile* f ) : id( i ), temp( t ), obj( o ), file( f ) {}
212 THistID( std::string& i, bool& t, TObject* o, TFile* f, Mode m )
213 : id( i ), temp( t ), obj( o ), file( f ), mode( m ) {}
214
215 void reset() {
216 id = "";
217 temp = true;
218 obj = nullptr;
219 file = nullptr;
220 mode = INVALID;
221 mutex = nullptr;
222 shared = false;
223 }
224
225 bool operator<( THistID const& rhs ) const { return ( obj < rhs.obj ); }
226
227 friend std::ostream& operator<<( std::ostream& ost, const THistID& hid ) {
228 ost << "id: " << hid.id << " t: " << hid.temp << " s: " << hid.shared << " M: " << hid.mode << " m: " << hid.mutex
229 << " o: " << hid.obj << " " << hid.obj->IsA()->GetName();
230 return ost;
231 }
232 };
233
236
237 std::vector<std::string> m_Rstream, m_Wstream;
238
241 std::set<std::string> m_alreadyConnectedInFiles;
242
245 std::set<std::string> m_alreadyConnectedOutFiles;
246
247 // containers for fast lookups
248 // same uid for all elements in vec
249 typedef std::vector<THistID> vhid_t;
250 // all THistIDs
251 typedef std::list<vhid_t*> hlist_t;
252 // uid: /stream/name -> vhid
253 typedef std::unordered_map<std::string, vhid_t*> uidMap_t;
254 // name -> vhid
255 typedef std::unordered_multimap<std::string, vhid_t*> idMap_t;
256 typedef std::unordered_map<TObject*, std::pair<vhid_t*, size_t>> objMap_t;
257
258 hlist_t m_hlist;
259 uidMap_t m_uids;
260 idMap_t m_ids;
261
262 // Container holding all TObjects and vhid*s
263 objMap_t m_tobjs;
264
265 std::map<std::string, std::pair<TFile*, Mode>> m_files; // stream->file
266 typedef std::multimap<std::string, std::string> streamMap;
267 streamMap m_fileStreams; // fileName->streams
268
269 // stream->filename of shared files
270 std::map<std::string, std::string> m_sharedFiles;
271
273
276
277 template <typename T>
278 StatusCode regHist_i( std::unique_ptr<T> hist, const std::string& name, bool shared );
279 template <typename T>
280 StatusCode regHist_i( std::unique_ptr<T> hist, const std::string& name, bool shared, THistID*& hid );
281 template <typename T>
282 T* getHist_i( const std::string& name, const size_t& ind = 0, bool quiet = false ) const;
283 template <typename T>
284 T* readHist_i( const std::string& name ) const;
285
286 template <typename T>
287 LockedHandle<T> regShared_i( const std::string& id, std::unique_ptr<T> hist );
288 template <typename T>
289 LockedHandle<T> getShared_i( const std::string& name ) const;
290
292
295
296 template <typename T>
297 T* readHist( const std::string& name ) const;
298 TTree* readTree( const std::string& name ) const;
299
301 void updateFiles();
302 StatusCode writeObjectsToFile();
303 StatusCode connect( const std::string& );
304 TDirectory* changeDir( const THistSvc::THistID& hid ) const;
305 std::string stripDirectoryName( std::string& dir ) const;
306 void removeDoubleSlash( std::string& ) const;
307
308 void MergeRootFile( TDirectory*, TDirectory* );
309
310 bool findStream( const std::string& name, std::string& root, std::string& rem, TFile*& file ) const;
311 void parseString( const std::string& id, std::string& root, std::string& rem ) const;
312
314 void setupInputFile();
315
317 void setupOutputFile();
318
320 void copyFileLayout( TDirectory*, TDirectory* );
321
322 size_t findHistID( const std::string& id, const THistID*& hid, const size_t& index = 0 ) const;
323
324 void dump() const;
325
327 StatusCode merge( const THistID& );
329 StatusCode merge( vhid_t* );
330
331 StatusCode rootOpenAction( FILEMGR_CALLBACK_ARGS );
332 StatusCode rootOpenErrAction( FILEMGR_CALLBACK_ARGS );
333
335
338
339 Gaudi::Property<int> m_autoSave{this, "AutoSave", 0};
340 Gaudi::Property<int> m_autoFlush{this, "AutoFlush", 0};
341 Gaudi::Property<bool> m_print{this, "PrintAll", false};
342 Gaudi::Property<int> m_maxFileSize{this, "MaxFileSize", 10240,
343 "maximum file size in MB. if exceeded,"
344 " will cause an abort. -1 to never check."};
345 Gaudi::Property<int> m_compressionLevel{this, "CompressionLevel", 1, [this]( auto& ) {
346 this->warning()
347 << "\"CompressionLevel\" Property has been deprecated. "
348 << "Set it via the \"CL=\" parameter in the \"Output\" Property"
349 << endmsg;
350 }};
351 Gaudi::Property<std::vector<std::string>> m_outputfile{this, "Output", {}, &THistSvc::setupOutputFile};
352 Gaudi::Property<std::vector<std::string>> m_inputfile{this, "Input", {}, &THistSvc::setupInputFile};
353
355
356 IIncidentSvc* p_incSvc = nullptr;
357 IFileMgr* p_fileMgr = nullptr;
358
359 bool m_signaledStop = false;
360 bool m_delayConnect = false;
361 bool m_okToConnect = false;
362
363 mutable std::string m_curstream;
364
365 mutable THistSvcMutex_t m_svcMut;
366 };
367
368 // Include template implementation
369 #include "THistSvc.icc"
370
371 #endif // GAUDISVC_THISTSVC_H
THistSvc::dump
void dump() const
Definition: THistSvc.cpp:1711
THistSvc::GlobalDirectoryRestore::GlobalDirectoryRestore
GlobalDirectoryRestore(THistSvcMutex_t &mut)
Definition: THistSvc.cpp:1153
THistSvc::THistID
Helper struct that bundles the histogram ID with a mutex, TFile and TObject*.
Definition: THistSvc.h:200
THistSvc::m_delayConnect
bool m_delayConnect
Definition: THistSvc.h:360
THistSvc::MergeRootFile
void MergeRootFile(TDirectory *, TDirectory *)
Definition: THistSvc.cpp:1495
THistSvc::getTrees
std::vector< std::string > getTrees() const override
Definition: THistSvc.cpp:614
THistSvc::initialize
StatusCode initialize() override
Definition: THistSvc.cpp:55
THistSvc::deReg
StatusCode deReg(const std::string &name) override
Deregister object with given name and give up ownership (without deletion!)
Definition: THistSvc.cpp:501
THistSvc::THistID::THistID
THistID(std::string &i, bool &t, TObject *o, TFile *f, Mode m)
Definition: THistSvc.h:212
THistSvc::INVALID
Definition: THistSvc.h:181
THistSvc::regShared_i
LockedHandle< T > regShared_i(const std::string &id, std::unique_ptr< T > hist)
Definition: THistSvc.icc:258
IFileMgr
Definition: IFileMgr.h:284
THistSvc::m_curstream
std::string m_curstream
Definition: THistSvc.h:363
Gaudi::Property
Implementation of property with value of concrete type.
Definition: Property.h:352
MsgStream.h
THistSvc::m_signaledStop
bool m_signaledStop
Definition: THistSvc.h:359
THistSvc::THistID::file
TFile * file
Definition: THistSvc.h:204
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:101
THistSvc::regShared
StatusCode regShared(const std::string &name, std::unique_ptr< TH1 >, LockedHandle< TH1 > &) override
Register shared object of type TH1 and return LockedHandle for that object.
Definition: THistSvc.cpp:429
THistSvc::histMut_t
std::mutex histMut_t
Definition: THistSvc.h:165
THistSvc::getShared
StatusCode getShared(const std::string &name, LockedHandle< TH1 > &) const override
Retrieve shared object with given name as TH1 through LockedHandle.
Definition: THistSvc.cpp:465
THistSvc::p_incSvc
IIncidentSvc * p_incSvc
Definition: THistSvc.h:356
THistSvc::readHist_i
T * readHist_i(const std::string &name) const
Definition: THistSvc.icc:204
THistSvc::THistID::mutex
histMut_t * mutex
Definition: THistSvc.h:206
THistSvc::readHist
T * readHist(const std::string &name) const
Definition: THistSvc.cpp:1168
THistSvc::GlobalDirectoryRestore::m_lock
std::lock_guard< THistSvcMutex_t > m_lock
Definition: THistSvc.h:177
THistSvc::APPEND
Definition: THistSvc.h:181
THistSvc::getTTrees
StatusCode getTTrees(TDirectory *td, TList &, bool recurse=false) const override
Definition: THistSvc.cpp:829
THistSvc::writeObjectsToFile
StatusCode writeObjectsToFile()
Definition: THistSvc.cpp:1251
THistSvc::merge
StatusCode merge(const std::string &id) override
Merge all clones for object with a given id.
Definition: THistSvc.cpp:584
THistSvc::getGraph
StatusCode getGraph(const std::string &name, TGraph *&) const override
Return TGraph with given name.
Definition: THistSvc.cpp:420
THistSvc::rootOpenAction
StatusCode rootOpenAction(FILEMGR_CALLBACK_ARGS)
Definition: THistSvc.cpp:1791
THistSvc::copyFileLayout
void copyFileLayout(TDirectory *, TDirectory *)
helper function to recursively copy the layout of a TFile into a new TFile
Definition: THistSvc.cpp:1636
std::unordered_multimap< std::string, vhid_t * >
THistSvc::stripDirectoryName
std::string stripDirectoryName(std::string &dir) const
Definition: THistSvc.cpp:1475
THistSvc::GlobalDirectoryRestore::m_gFile
TFile * m_gFile
Definition: THistSvc.h:175
THistSvc::UPDATE
Definition: THistSvc.h:181
std::map
STL class.
THistSvc::findStream
bool findStream(const std::string &name, std::string &root, std::string &rem, TFile *&file) const
Definition: THistSvc.cpp:1542
THistSvc::m_outputfile
Gaudi::Property< std::vector< std::string > > m_outputfile
Definition: THistSvc.h:351
THistSvc::m_tobjs
objMap_t m_tobjs
Definition: THistSvc.h:263
std::mutex
THistSvc::getTHists
StatusCode getTHists(TDirectory *td, TList &, bool recurse=false) const override
Definition: THistSvc.cpp:630
THistSvc::THistID::shared
bool shared
Definition: THistSvc.h:207
THistSvc::getShared_i
LockedHandle< T > getShared_i(const std::string &name) const
Definition: THistSvc.icc:292
THistSvc::SHARE
Definition: THistSvc.h:181
THistSvc::m_Wstream
std::vector< std::string > m_Wstream
Definition: THistSvc.h:237
std::string
STL class.
FILEMGR_CALLBACK_ARGS
#define FILEMGR_CALLBACK_ARGS
Definition: IFileMgr.h:277
THistSvc::setupOutputFile
void setupOutputFile()
call-back method to handle output stream property
Definition: THistSvc.cpp:1616
THistSvc::parseString
void parseString(const std::string &id, std::string &root, std::string &rem) const
Definition: THistSvc.cpp:1578
Service.h
THistSvc::m_hlist
hlist_t m_hlist
Definition: THistSvc.h:258
THistSvc::m_ids
idMap_t m_ids
Definition: THistSvc.h:260
THistSvc::setupInputFile
void setupInputFile()
call-back method to handle input stream property
Definition: THistSvc.cpp:1592
THistSvc.icc
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
THistSvc::m_autoSave
Gaudi::Property< int > m_autoSave
Definition: THistSvc.h:339
THistSvc::THistID::id
std::string id
Definition: THistSvc.h:201
THistSvc::THistID::reset
void reset()
Definition: THistSvc.h:215
THistSvc::m_inputfile
Gaudi::Property< std::vector< std::string > > m_inputfile
Definition: THistSvc.h:352
THistSvc::getTree
StatusCode getTree(const std::string &name, TTree *&) const override
Return TTree with given name.
Definition: THistSvc.cpp:379
THistSvc::m_Rstream
std::vector< std::string > m_Rstream
Definition: THistSvc.h:237
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
Gaudi::Units::m
constexpr double m
Definition: SystemOfUnits.h:92
THistSvc::m_okToConnect
bool m_okToConnect
Definition: THistSvc.h:361
LockedHandle
Provides automatic lock/unlock access to a class upon deref of ptr.
Definition: LockedHandle.h:28
THistSvc::m_print
Gaudi::Property< bool > m_print
Definition: THistSvc.h:341
THistSvc::objMap_t
std::unordered_map< TObject *, std::pair< vhid_t *, size_t > > objMap_t
Definition: THistSvc.h:256
THistSvc::handle
void handle(const Incident &) override
Definition: THistSvc.cpp:1012
THistSvc::m_maxFileSize
Gaudi::Property< int > m_maxFileSize
Definition: THistSvc.h:342
THistSvc::getHists
std::vector< std::string > getHists() const override
Definition: THistSvc.cpp:606
THistSvc::vhid_t
std::vector< THistID > vhid_t
Definition: THistSvc.h:249
THistSvc::streamMap
std::multimap< std::string, std::string > streamMap
Definition: THistSvc.h:266
std::recursive_mutex
IIoComponent.h
THistSvc::charToMode
static Mode charToMode(const char typ)
Convert a char to a Mode enum.
Definition: THistSvc.h:184
THistSvc::GlobalDirectoryRestore::~GlobalDirectoryRestore
~GlobalDirectoryRestore()
Definition: THistSvc.cpp:1159
THistSvc::changeDir
TDirectory * changeDir(const THistSvc::THistID &hid) const
Definition: THistSvc.cpp:1453
THistSvc::rootOpenErrAction
StatusCode rootOpenErrAction(FILEMGR_CALLBACK_ARGS)
Definition: THistSvc.cpp:1813
THistSvc::m_compressionLevel
Gaudi::Property< int > m_compressionLevel
Definition: THistSvc.h:345
THistSvc::idMap_t
std::unordered_multimap< std::string, vhid_t * > idMap_t
Definition: THistSvc.h:255
std::list< vhid_t * >
THistSvc::THistID::THistID
THistID(std::string &i, bool &t, TObject *o, TFile *f)
Definition: THistSvc.h:211
THistSvc::finalize
StatusCode finalize() override
Definition: THistSvc.cpp:166
THistSvc::hlist_t
std::list< vhid_t * > hlist_t
Definition: THistSvc.h:251
THistSvc::GlobalDirectoryRestore::m_gErrorIgnoreLevel
int m_gErrorIgnoreLevel
Definition: THistSvc.h:176
THistSvc::regHist_i
StatusCode regHist_i(std::unique_ptr< T > hist, const std::string &name, bool shared)
Definition: THistSvc.icc:17
THistSvc::regHist
StatusCode regHist(const std::string &name) override
Register a new ROOT histogram TH*X with a name.
Definition: THistSvc.cpp:306
THistSvc::THistSvcMutex_t
std::recursive_mutex THistSvcMutex_t
Definition: THistSvc.h:164
THistSvc::Mode
Mode
Enumerating all possible file access modes.
Definition: THistSvc.h:181
std::multimap< std::string, std::string >
THistSvc::getHist
StatusCode getHist(const std::string &name, TH1 *&, size_t index=0) const override
Return histogram with given name as TH1*, THistSvcMT still owns object.
Definition: THistSvc.cpp:326
THistSvc::THistID::THistID
THistID()=default
std::set< std::string >
THistSvc::THistID::obj
TObject * obj
Definition: THistSvc.h:203
THistSvc::THistID::operator<<
friend std::ostream & operator<<(std::ostream &ost, const THistID &hid)
Definition: THistSvc.h:227
std::vector< std::string >
std::unique_ptr
STL class.
THistSvc::reinitialize
StatusCode reinitialize() override
Definition: THistSvc.cpp:160
std::lock_guard
extends
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
THistSvc::removeDoubleSlash
void removeDoubleSlash(std::string &) const
Definition: THistSvc.cpp:1491
Incident
Base class for all Incidents (computing events).
Definition: Incident.h:17
THistSvc::m_uids
uidMap_t m_uids
Definition: THistSvc.h:259
THistSvc::m_files
std::map< std::string, std::pair< TFile *, Mode > > m_files
Definition: THistSvc.h:265
THistSvc::READ
Definition: THistSvc.h:181
THistSvc::connect
StatusCode connect(const std::string &)
Definition: THistSvc.cpp:1276
THistSvc::getHist_i
T * getHist_i(const std::string &name, const size_t &ind=0, bool quiet=false) const
Definition: THistSvc.icc:164
THistSvc::p_fileMgr
IFileMgr * p_fileMgr
Definition: THistSvc.h:357
THistSvc::m_alreadyConnectedOutFiles
std::set< std::string > m_alreadyConnectedOutFiles
list of already connected files.
Definition: THistSvc.h:245
THistSvc::THistID::operator<
bool operator<(THistID const &rhs) const
Definition: THistSvc.h:225
gaudiComponentHelp.root
root
Definition: gaudiComponentHelp.py:27
IFileMgr.h
IIncidentListener.h
THistSvc::regTree
StatusCode regTree(const std::string &name) override
Register a new TTree with a given name.
Definition: THistSvc.cpp:353
THistSvc::m_sharedFiles
std::map< std::string, std::string > m_sharedFiles
Definition: THistSvc.h:270
THistSvc::exists
bool exists(const std::string &name) const override
Check if object with given name is managed by THistSvcMT.
Definition: THistSvc.cpp:604
THistSvc::THistID::temp
bool temp
Definition: THistSvc.h:202
THistSvc::WRITE
Definition: THistSvc.h:181
THistSvc::THistID::mode
Mode mode
Definition: THistSvc.h:205
THistSvc::m_alreadyConnectedInFiles
std::set< std::string > m_alreadyConnectedInFiles
list of already connected files.
Definition: THistSvc.h:241
THistSvc::regGraph
StatusCode regGraph(const std::string &name) override
Register a new TGraph with a given name.
Definition: THistSvc.cpp:388
THistSvc::m_autoFlush
Gaudi::Property< int > m_autoFlush
Definition: THistSvc.h:340
std::ostream
STL class.
THistSvc::uidMap_t
std::unordered_map< std::string, vhid_t * > uidMap_t
Definition: THistSvc.h:253
THistSvc::io_reinit
StatusCode io_reinit() override
callback method to reinitialize the internal state of the component for I/O purposes (e....
Definition: THistSvc.cpp:1057
THistSvc::m_svcMut
THistSvcMutex_t m_svcMut
Definition: THistSvc.h:365
THistSvc::findHistID
size_t findHistID(const std::string &id, const THistID *&hid, const size_t &index=0) const
Definition: THistSvc.cpp:1666
THistSvc::readTree
TTree * readTree(const std::string &name) const
Definition: THistSvc.cpp:1172
THistSvc::GlobalDirectoryRestore
Helper class that manages ROOts global directory and file.
Definition: THistSvc.h:168
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
THistSvc::GlobalDirectoryRestore::m_gDirectory
TDirectory * m_gDirectory
Definition: THistSvc.h:174
IIncidentSvc
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:23
THistSvc::m_fileStreams
streamMap m_fileStreams
Definition: THistSvc.h:267
ITHistSvc.h
THistSvc
Definition: THistSvc.h:29
THistSvc::updateFiles
void updateFiles()
Handle case where TTree grows beyond TTree::fgMaxTreeSize.
Definition: THistSvc.cpp:1174
std::unordered_map< std::string, vhid_t * >
THistSvc::getGraphs
std::vector< std::string > getGraphs() const override
Definition: THistSvc.cpp:622