The Gaudi Framework  v33r1 (b1225454)
ITHistSvc.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #ifndef GAUDIKERNEL_ITHISTSVC_H
12 #define GAUDIKERNEL_ITHISTSVC_H
13 
14 #include <memory>
15 #include <string>
16 #include <vector>
17 
18 #ifndef GAUDIKERNEL_ISERVICE_H
19 # include "GaudiKernel/IService.h"
20 #endif
21 
23 
24 class TObject;
25 class TH1;
26 class TH2;
27 class TH3;
28 class TTree;
29 class TList;
30 class TDirectory;
31 class TGraph;
32 class TEfficiency;
33 
34 class GAUDI_API ITHistSvc : virtual public IService {
35 public:
38 
41 
43  virtual StatusCode regHist( const std::string& name ) = 0;
47  virtual StatusCode regHist( const std::string& name, std::unique_ptr<TH1> hist ) = 0;
52  virtual StatusCode regHist( const std::string& name, std::unique_ptr<TH1> hist, TH1* hist_ptr ) = 0;
55  virtual StatusCode regHist( const std::string& name, TH1* ) = 0;
57  virtual StatusCode getHist( const std::string& name, TH1*&, size_t index = 0 ) const = 0;
59  virtual StatusCode getHist( const std::string& name, TH2*&, size_t index = 0 ) const = 0;
61  virtual StatusCode getHist( const std::string& name, TH3*&, size_t index = 0 ) const = 0;
62 
64 
67 
69  virtual StatusCode regTree( const std::string& name ) = 0;
71  virtual StatusCode regTree( const std::string& name, std::unique_ptr<TTree> ) = 0;
74  virtual StatusCode regTree( const std::string& name, TTree* ) = 0;
76  virtual StatusCode getTree( const std::string& name, TTree*& ) const = 0;
77 
79 
82 
84  virtual StatusCode regGraph( const std::string& name ) = 0;
86  virtual StatusCode regGraph( const std::string& name, std::unique_ptr<TGraph> ) = 0;
89  virtual StatusCode regGraph( const std::string& name, TGraph* ) = 0;
91  virtual StatusCode getGraph( const std::string& name, TGraph*& ) const = 0;
92 
94 
97 
99  virtual StatusCode regEfficiency( const std::string& name ) = 0;
101  virtual StatusCode regEfficiency( const std::string& name, std::unique_ptr<TEfficiency> ) = 0;
104  virtual StatusCode regEfficiency( const std::string& name, TEfficiency* ) = 0;
106  virtual StatusCode getEfficiency( const std::string& name, TEfficiency*& ) const = 0;
107 
109 
112 
114  virtual StatusCode regShared( const std::string& name, std::unique_ptr<TH1>, LockedHandle<TH1>& ) = 0;
116  virtual StatusCode regShared( const std::string& name, std::unique_ptr<TH2>, LockedHandle<TH2>& ) = 0;
118  virtual StatusCode regShared( const std::string& name, std::unique_ptr<TH3>, LockedHandle<TH3>& ) = 0;
120  virtual StatusCode regShared( const std::string& name, std::unique_ptr<TGraph>, LockedHandle<TGraph>& ) = 0;
124  virtual StatusCode getShared( const std::string& name, LockedHandle<TH1>& ) const = 0;
126  virtual StatusCode getShared( const std::string& name, LockedHandle<TH2>& ) const = 0;
128  virtual StatusCode getShared( const std::string& name, LockedHandle<TH3>& ) const = 0;
130  virtual StatusCode getShared( const std::string& name, LockedHandle<TGraph>& ) const = 0;
132  virtual StatusCode getShared( const std::string& name, LockedHandle<TEfficiency>& ) const = 0;
133 
135 
138 
140  virtual StatusCode deReg( const std::string& name ) = 0;
142  virtual StatusCode deReg( TObject* obj ) = 0;
143 
145  virtual StatusCode merge( const std::string& id ) = 0;
147  virtual StatusCode merge( TObject* ) = 0;
148 
151  virtual bool exists( const std::string& name ) const = 0;
153  virtual bool existsHist( const std::string& name ) const = 0;
155  virtual bool existsTree( const std::string& name ) const = 0;
157  virtual bool existsGraph( const std::string& name ) const = 0;
159  virtual bool existsEfficiency( const std::string& name ) const = 0;
160 
162 
165 
166  virtual std::vector<std::string> getHists() const = 0;
167  virtual std::vector<std::string> getTrees() const = 0;
168  virtual std::vector<std::string> getGraphs() const = 0;
169  virtual std::vector<std::string> getEfficiencies() const = 0;
170 
171  virtual StatusCode getTHists( TDirectory* td, TList&, bool recurse = false ) const = 0;
172  virtual StatusCode getTHists( const std::string& name, TList&, bool recurse = false ) const = 0;
173  virtual StatusCode getTHists( TDirectory* td, TList&, bool recurse = false, bool reg = false ) = 0;
174  virtual StatusCode getTHists( const std::string& name, TList&, bool recurse = false, bool reg = false ) = 0;
175 
176  virtual StatusCode getTTrees( TDirectory* td, TList&, bool recurse = false ) const = 0;
177  virtual StatusCode getTTrees( const std::string& name, TList&, bool recurse = false ) const = 0;
178  virtual StatusCode getTTrees( TDirectory* td, TList&, bool recurse = false, bool reg = false ) = 0;
179  virtual StatusCode getTTrees( const std::string& name, TList&, bool recurse = false, bool reg = false ) = 0;
180 
181  virtual StatusCode getTEfficiencies( TDirectory* td, TList&, bool recurse = false ) const = 0;
182  virtual StatusCode getTEfficiencies( const std::string& name, TList&, bool recurse = false ) const = 0;
183  virtual StatusCode getTEfficiencies( TDirectory* td, TList&, bool recurse = false, bool reg = false ) = 0;
184  virtual StatusCode getTEfficiencies( const std::string& name, TList&, bool recurse = false, bool reg = false ) = 0;
186 
188  virtual ~ITHistSvc() = default;
189 };
190 
191 #endif // GAUDIKERNEL_ITHISTSVC_H
int merge(const char *target, const char *source, bool fixup=false, bool dbg=true)
Definition: merge.C:430
STL class.
General service interface definition.
Definition: IService.h:28
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
Provides automatic lock/unlock access to a class upon deref of ptr.
Definition: LockedHandle.h:38
STL class.
DeclareInterfaceID(IService, 4, 0)
InterfaceID.
#define GAUDI_API
Definition: Kernel.h:81