The Gaudi Framework  master (1304469f)
Loading...
Searching...
No Matches
ITHistSvc.h
Go to the documentation of this file.
1/***********************************************************************************\
2* (c) Copyright 1998-2025 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#pragma once
12
15#include <memory>
16#include <string>
17#include <vector>
18
19class TObject;
20class TH1;
21class TH2;
22class TH3;
23class TTree;
24class TList;
25class TDirectory;
26class TGraph;
27class TEfficiency;
28
29class GAUDI_API ITHistSvc : virtual public IService {
30public:
33
36
38 virtual StatusCode regHist( const std::string& name ) = 0;
42 virtual StatusCode regHist( const std::string& name, std::unique_ptr<TH1> hist ) = 0;
45 virtual StatusCode regHist( const std::string& name, TH1* ) = 0;
47 virtual StatusCode getHist( const std::string& name, TH1*&, size_t index = 0 ) const = 0;
49 virtual StatusCode getHist( const std::string& name, TH2*&, size_t index = 0 ) const = 0;
51 virtual StatusCode getHist( const std::string& name, TH3*&, size_t index = 0 ) const = 0;
52
54
57
59 virtual StatusCode regTree( const std::string& name ) = 0;
61 virtual StatusCode regTree( const std::string& name, std::unique_ptr<TTree> ) = 0;
64 virtual StatusCode regTree( const std::string& name, TTree* ) = 0;
66 virtual StatusCode getTree( const std::string& name, TTree*& ) const = 0;
67
69
72
74 virtual StatusCode regGraph( const std::string& name ) = 0;
76 virtual StatusCode regGraph( const std::string& name, std::unique_ptr<TGraph> ) = 0;
79 virtual StatusCode regGraph( const std::string& name, TGraph* ) = 0;
81 virtual StatusCode getGraph( const std::string& name, TGraph*& ) const = 0;
82
84
87
89 virtual StatusCode regEfficiency( const std::string& name ) = 0;
91 virtual StatusCode regEfficiency( const std::string& name, std::unique_ptr<TEfficiency> ) = 0;
94 virtual StatusCode regEfficiency( const std::string& name, TEfficiency* ) = 0;
96 virtual StatusCode getEfficiency( const std::string& name, TEfficiency*& ) const = 0;
97
99
102
104 virtual StatusCode regShared( const std::string& name, std::unique_ptr<TH1>, LockedHandle<TH1>& ) = 0;
106 virtual StatusCode regShared( const std::string& name, std::unique_ptr<TH2>, LockedHandle<TH2>& ) = 0;
108 virtual StatusCode regShared( const std::string& name, std::unique_ptr<TH3>, LockedHandle<TH3>& ) = 0;
110 virtual StatusCode regShared( const std::string& name, std::unique_ptr<TGraph>, LockedHandle<TGraph>& ) = 0;
112 virtual StatusCode regShared( const std::string& name, std::unique_ptr<TEfficiency>, LockedHandle<TEfficiency>& ) = 0;
114 virtual StatusCode getShared( const std::string& name, LockedHandle<TH1>& ) const = 0;
116 virtual StatusCode getShared( const std::string& name, LockedHandle<TH2>& ) const = 0;
118 virtual StatusCode getShared( const std::string& name, LockedHandle<TH3>& ) const = 0;
120 virtual StatusCode getShared( const std::string& name, LockedHandle<TGraph>& ) const = 0;
122 virtual StatusCode getShared( const std::string& name, LockedHandle<TEfficiency>& ) const = 0;
123
125
128
130 virtual StatusCode deReg( const std::string& name ) = 0;
132 virtual StatusCode deReg( TObject* obj ) = 0;
133
135 virtual StatusCode merge( const std::string& id ) = 0;
137 virtual StatusCode merge( TObject* ) = 0;
138
141 virtual bool exists( const std::string& name ) const = 0;
143 virtual bool existsHist( const std::string& name ) const = 0;
145 virtual bool existsTree( const std::string& name ) const = 0;
147 virtual bool existsGraph( const std::string& name ) const = 0;
149 virtual bool existsEfficiency( const std::string& name ) const = 0;
150
152
155
156 virtual std::vector<std::string> getHists() const = 0;
157 virtual std::vector<std::string> getTrees() const = 0;
158 virtual std::vector<std::string> getGraphs() const = 0;
159 virtual std::vector<std::string> getEfficiencies() const = 0;
160
161 virtual StatusCode getTHists( TDirectory* td, TList&, bool recurse = false ) const = 0;
162 virtual StatusCode getTHists( const std::string& name, TList&, bool recurse = false ) const = 0;
163 virtual StatusCode getTHists( TDirectory* td, TList&, bool recurse = false, bool reg = false ) = 0;
164 virtual StatusCode getTHists( const std::string& name, TList&, bool recurse = false, bool reg = false ) = 0;
165
166 virtual StatusCode getTTrees( TDirectory* td, TList&, bool recurse = false ) const = 0;
167 virtual StatusCode getTTrees( const std::string& name, TList&, bool recurse = false ) const = 0;
168 virtual StatusCode getTTrees( TDirectory* td, TList&, bool recurse = false, bool reg = false ) = 0;
169 virtual StatusCode getTTrees( const std::string& name, TList&, bool recurse = false, bool reg = false ) = 0;
170
171 virtual StatusCode getTEfficiencies( TDirectory* td, TList&, bool recurse = false ) const = 0;
172 virtual StatusCode getTEfficiencies( const std::string& name, TList&, bool recurse = false ) const = 0;
173 virtual StatusCode getTEfficiencies( TDirectory* td, TList&, bool recurse = false, bool reg = false ) = 0;
174 virtual StatusCode getTEfficiencies( const std::string& name, TList&, bool recurse = false, bool reg = false ) = 0;
176
178 virtual ~ITHistSvc() = default;
179};
#define GAUDI_API
Definition Kernel.h:49
General service interface definition.
Definition IService.h:26
virtual StatusCode getShared(const std::string &name, LockedHandle< TH1 > &) const =0
Retrieve shared object with given name as TH1 through LockedHandle.
virtual StatusCode regGraph(const std::string &name, TGraph *)=0
virtual StatusCode deReg(const std::string &name)=0
Deregister object with given name and give up ownership (without deletion!)
virtual StatusCode getShared(const std::string &name, LockedHandle< TEfficiency > &) const =0
Retrieve shared object with given name as TEfficiency through LockedHandle.
virtual StatusCode regShared(const std::string &name, std::unique_ptr< TH2 >, LockedHandle< TH2 > &)=0
Register shared object of type TH2 and return LockedHandle for that object.
virtual std::vector< std::string > getEfficiencies() const =0
virtual StatusCode regTree(const std::string &name)=0
Register a new TTree with a given name.
virtual StatusCode getShared(const std::string &name, LockedHandle< TH3 > &) const =0
Retrieve shared object with given name as TH3 through LockedHandle.
virtual StatusCode regShared(const std::string &name, std::unique_ptr< TH1 >, LockedHandle< TH1 > &)=0
Register shared object of type TH1 and return LockedHandle for that object.
virtual StatusCode merge(const std::string &id)=0
Merge all clones for object with a given id.
virtual StatusCode getTTrees(const std::string &name, TList &, bool recurse=false) const =0
virtual StatusCode regHist(const std::string &name, TH1 *)=0
virtual bool existsEfficiency(const std::string &name) const =0
Check if TEfficiency with given name is managed by THistSvcMT.
virtual StatusCode regEfficiency(const std::string &name, std::unique_ptr< TEfficiency >)=0
Register an existing TEfficiency with a given name and moved unique_ptr.
virtual StatusCode getTHists(TDirectory *td, TList &, bool recurse=false, bool reg=false)=0
virtual StatusCode regTree(const std::string &name, TTree *)=0
virtual std::vector< std::string > getGraphs() const =0
virtual bool existsGraph(const std::string &name) const =0
Check if graph with given name is managed by THistSvcMT.
virtual StatusCode getTree(const std::string &name, TTree *&) const =0
Return TTree with given name.
virtual StatusCode getShared(const std::string &name, LockedHandle< TH2 > &) const =0
Retrieve shared object with given name as TH2 through LockedHandle.
virtual StatusCode regGraph(const std::string &name, std::unique_ptr< TGraph >)=0
Register an existing TGraph with a given name and moved unique_ptr.
virtual StatusCode getGraph(const std::string &name, TGraph *&) const =0
Return TGraph with given name.
virtual StatusCode getTEfficiencies(TDirectory *td, TList &, bool recurse=false, bool reg=false)=0
virtual StatusCode regGraph(const std::string &name)=0
Register a new TGraph with a given name.
virtual StatusCode getTTrees(const std::string &name, TList &, bool recurse=false, bool reg=false)=0
virtual StatusCode regShared(const std::string &name, std::unique_ptr< TH3 >, LockedHandle< TH3 > &)=0
Register shared object of type TH3 and return LockedHandle for that object.
virtual StatusCode regEfficiency(const std::string &name)=0
Register a new TEfficiency with a given name.
virtual StatusCode regTree(const std::string &name, std::unique_ptr< TTree >)=0
Register an existing TTree with a given name and moved unique_ptr.
virtual StatusCode getTHists(const std::string &name, TList &, bool recurse=false, bool reg=false)=0
virtual StatusCode regEfficiency(const std::string &name, TEfficiency *)=0
virtual bool exists(const std::string &name) const =0
Check if histogram with given name is managed by THistSvcMT exists calls existsHist and only works fo...
virtual StatusCode deReg(TObject *obj)=0
Deregister obejct identified by TObject* and give up ownership (without deletion!)
virtual StatusCode getHist(const std::string &name, TH2 *&, size_t index=0) const =0
Return histogram with given name as TH2*, THistSvcMT still owns object.
virtual StatusCode getTEfficiencies(const std::string &name, TList &, bool recurse=false) const =0
virtual bool existsHist(const std::string &name) const =0
Check if histogram with given name is managed by THistSvcMT.
virtual std::vector< std::string > getTrees() const =0
virtual std::vector< std::string > getHists() const =0
virtual StatusCode merge(TObject *)=0
Merge all clones for given TObject*.
virtual StatusCode getShared(const std::string &name, LockedHandle< TGraph > &) const =0
Retrieve shared object with given name as TGraph through LockedHandle.
virtual StatusCode regHist(const std::string &name)=0
Register a new ROOT histogram TH*X with a name.
virtual StatusCode getTHists(TDirectory *td, TList &, bool recurse=false) const =0
virtual ~ITHistSvc()=default
virtual destructor
virtual StatusCode getTTrees(TDirectory *td, TList &, bool recurse=false, bool reg=false)=0
DeclareInterfaceID(ITHistSvc, 3, 0)
InterfaceID.
virtual StatusCode getEfficiency(const std::string &name, TEfficiency *&) const =0
Return TGraph with given name.
virtual StatusCode regShared(const std::string &name, std::unique_ptr< TGraph >, LockedHandle< TGraph > &)=0
Register shared object of type TGraph and return LockedHandle for that object.
virtual StatusCode regHist(const std::string &name, std::unique_ptr< TH1 > hist)=0
Register an existing ROOT histogram TH*X with name and moved unique_ptr.
virtual StatusCode regShared(const std::string &name, std::unique_ptr< TEfficiency >, LockedHandle< TEfficiency > &)=0
Register shared object of type TEfficiency and return LockedHandle for that object.
virtual StatusCode getTEfficiencies(TDirectory *td, TList &, bool recurse=false) const =0
virtual StatusCode getHist(const std::string &name, TH3 *&, size_t index=0) const =0
Return histogram with given name as TH3*, THistSvcMT still owns object.
virtual StatusCode getTEfficiencies(const std::string &name, TList &, bool recurse=false, bool reg=false)=0
virtual StatusCode getTHists(const std::string &name, TList &, bool recurse=false) const =0
virtual StatusCode getHist(const std::string &name, TH1 *&, size_t index=0) const =0
Return histogram with given name as TH1*, THistSvcMT still owns object.
virtual bool existsTree(const std::string &name) const =0
Check if tree with given name is managed by THistSvcMT.
virtual StatusCode getTTrees(TDirectory *td, TList &, bool recurse=false) const =0
Provides automatic lock/unlock access to a class upon deref of ptr.
This class is used for returning status codes from appropriate routines.
Definition StatusCode.h:64