ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
Monitored::HistogramFactory Class Reference

Bridge between ROOT framework and monitoring code. More...

#include <HistogramFactory.h>

Collaboration diagram for Monitored::HistogramFactory:

Public Member Functions

 HistogramFactory (const ServiceHandle< ITHistSvc > &histSvc, const std::string &groupName)
 Default constructor. More...
 
virtual ~HistogramFactory ()
 Virtual destructor. More...
 
virtual TNamed * create (const HistogramDef &def)
 Book and register ROOT object for given definition. More...
 
std::string getFullName (const HistogramDef &def) const
 Invent path name. More...
 
virtual void remove (const HistogramDef &def)
 Removes histogram (used to get rid of old LB tagged histograms) More...
 

Static Public Member Functions

static std::mutex & globalROOTMutex ()
 

Private Member Functions

template<class H , class HBASE , typename... Types>
HBASE * create (const HistogramDef &def, Types &&... hargs)
 Create and register histogram. More...
 
template<class H >
TH1 * create1D (const HistogramDef &def)
 Helper for generic 'create' method for 1D histograms. More...
 
template<class H >
TH1 * create1DProfile (const HistogramDef &def)
 Helper for generic 'create' method for 1DProfile histograms. More...
 
template<class H >
TH2 * create2D (const HistogramDef &def)
 Helper for generic 'create' method for 2D histograms. More...
 
template<class H >
TH2 * create2DProfile (const HistogramDef &def)
 Helper for generic 'create' method for 2DProfile histograms. More...
 
TEfficiency * createEfficiency (const HistogramDef &def)
 Create and register efficiency graph. More...
 
TTree * createTree (const HistogramDef &def)
 Create and register tree. More...
 

Static Private Member Functions

static void setOpts (TH1 *hist, const HistogramDef &def)
 Setup various histogram options. More...
 
static void setLabels (TH1 *hist, const HistogramDef &def)
 Set labels for all axes. More...
 
static void setLabels (TAxis *axis, const std::vector< std::string > &labels)
 Setup labels for histogram axes. More...
 

Private Attributes

ServiceHandle< ITHistSvc > m_histSvc
 
std::string m_streamName
 defines the stream for THistSvc More...
 
std::string m_groupName
 defines location of group of histograms More...
 
bool m_deleteOnRemove {true}
 delete histogram during remove More...
 
std::mutex m_createLock
 

Static Private Attributes

static std::mutex s_histDirMutex
 

Detailed Description

Bridge between ROOT framework and monitoring code.

Main purpose of this class is to properly register and retrieve histograms for specific definitions.

Definition at line 26 of file HistogramFactory.h.

Constructor & Destructor Documentation

◆ HistogramFactory()

HistogramFactory::HistogramFactory ( const ServiceHandle< ITHistSvc > &  histSvc,
const std::string &  groupName 
)

Default constructor.

Parameters
histSvcROOT framework histogramming service
groupNameName of the group to which produced histograms will belong

Definition at line 19 of file HistogramFactory.cxx.

22 {
23  // The Gaudi/offline THistSvc does not delete objects on de-registration,
24  // but the online TrigMonTHistSvc does. We detect the latter case by checking
25  // the existence of one of its properties.
26  SmartIF<IProperty> hs{histSvc.get()};
27  if (hs && hs->hasProperty("IncludeName")) {
28  m_deleteOnRemove = false;
29  }
30 
31  size_t whereToStart = 0;
32  // do we have a leading slash? This distinguishes temporary streams in THistSvc
33  if (! histoPath.empty() && histoPath[0] == '/') {
34  whereToStart = 1;
35  }
36  size_t split = histoPath.find('/', whereToStart);
37  m_streamName = (whereToStart == 1 ? "/" : "") + histoPath.substr(0,split);
38  m_groupName = split!=std::string::npos ? histoPath.substr(split+1) : "";
39  // Infrequently, loading a ROOT class in a MT context can fail.
40  // So try to load the classes we'll need early.
41  TClass::GetClass("TH1F");
42  TClass::GetClass("TH1D");
43  TClass::GetClass("TH1C");
44  TClass::GetClass("TH1S");
45  TClass::GetClass("TH1I");
46  TClass::GetClass("TH2F");
47  TClass::GetClass("TH2D");
48  TClass::GetClass("TH2C");
49  TClass::GetClass("TH2S");
50  TClass::GetClass("TH2I");
51  TClass::GetClass("TProfile");
52  TClass::GetClass("TProfile2D");
53  TClass::GetClass("TEfficiency");
54  TClass::GetClass("TTree");
55 }

◆ ~HistogramFactory()

virtual Monitored::HistogramFactory::~HistogramFactory ( )
inlinevirtual

Virtual destructor.

Definition at line 38 of file HistogramFactory.h.

38 {}

Member Function Documentation

◆ create() [1/2]

TNamed * HistogramFactory::create ( const HistogramDef def)
virtual

Book and register ROOT object for given definition.

Based on the histogram type, method will return proper kind of the ROOT object

Parameters
defHistogram definition
Returns
ROOT object handler

Definition at line 58 of file HistogramFactory.cxx.

58  {
59  std::scoped_lock lock(m_createLock);
60  TNamed* rootObj(0);
61 
62  if (def.type == "TH1F") {
63  rootObj = create1D<TH1F>(def);
64  } else if (def.type == "TH1D") {
65  rootObj = create1D<TH1D>(def);
66  } else if (def.type == "TH1C") {
67  rootObj = create1D<TH1C>(def);
68  } else if (def.type == "TH1S") {
69  rootObj = create1D<TH1S>(def);
70  } else if (def.type == "TH1I") {
71  rootObj = create1D<TH1I>(def);
72  } else if (def.type == "TH2F") {
73  rootObj = create2D<TH2F>(def);
74  } else if (def.type == "TH2D") {
75  rootObj = create2D<TH2D>(def);
76  } else if (def.type == "TH2C") {
77  rootObj = create2D<TH2C>(def);
78  } else if (def.type == "TH2S") {
79  rootObj = create2D<TH2S>(def);
80  } else if (def.type == "TH2I") {
81  rootObj = create2D<TH2I>(def);
82  } else if (def.type == "TProfile") {
83  rootObj = create1DProfile<TProfile>(def);
84  } else if (def.type == "TProfile2D") {
85  rootObj = create2DProfile<TProfile2D>(def);
86  } else if (def.type == "TEfficiency") {
88  } else if (def.type == "TTree") {
89  rootObj = createTree(def);
90  }
91 
92  if (rootObj == 0) {
93  throw HistogramException("Can not create yet histogram of type: >" + def.type + "<\n" +
94  "Try one of: TH1[F,D,C,S,I], TH2[F,D,C,S,I], TProfile, TProfile2D, " +
95  "TEfficiency, TTree.");
96  }
97 
98  return rootObj;
99 }

◆ create() [2/2]

template<class H , class HBASE , typename... Types>
HBASE * HistogramFactory::create ( const HistogramDef def,
Types &&...  hargs 
)
private

Create and register histogram.

If histogram already exists under that name, re-use it

Template Parameters
HActual type of histogram to be created
HBASEHistogram base class (TH[1,2,3])
TypesTypes of the remaining arguments for TH constructor (except name, title)
Parameters
defHistogram definition
hargsArguments that defines specific type of the histogram
Returns
Histogram handler

Definition at line 208 of file HistogramFactory.cxx.

208  {
209  std::string fullName = getFullName(def);
210 
211  // Check if histogram exists already
212  HBASE* histo = nullptr;
213  if ( m_histSvc->exists( fullName ) ) {
214  if ( !m_histSvc->getHist( fullName, histo ) ) {
215  throw HistogramException("Histogram >"+ fullName + "< seems to exist but can not be obtained from THistSvc");
216  }
217  return histo;
218  }
219 
220  // Create the histogram and register it
221  // Hold global lock until we have detached object from gDirectory
222  H* h = nullptr;
223  {
224  std::scoped_lock<std::mutex> dirLock(globalROOTMutex());
225  h = new H(def.alias.c_str(), def.title.c_str(), std::forward<Types>(hargs)...);
226  // cppcheck-suppress nullPointer; false positive
227  h->SetDirectory(0);
228  }
229  if ( !m_histSvc->regHist( fullName, std::unique_ptr<TH1>(h) ) ) {
230  throw HistogramException("Histogram >"+ fullName + "< can not be registered in THistSvc");
231  }
232 
233  h->GetYaxis()->SetTitleOffset(1.25); // magic shift to make histograms readable even if no post-procesing is done
234  setLabels(h, def);
235  setOpts(h, def);
236 
237  return h;
238 }

◆ create1D()

template<class H >
TH1 * HistogramFactory::create1D ( const HistogramDef def)
private

Helper for generic 'create' method for 1D histograms.

Template Parameters
HActual type of histogram to be created
Parameters
defHistogram definition
Returns
Histogram handler

Definition at line 102 of file HistogramFactory.cxx.

102  {
103  if ( def.xarray.size()!=0 ) {
104  return create<H,TH1>(def, def.xbins, &(def.xarray)[0]);
105  } else {
106  return create<H,TH1>(def, def.xbins, def.xmin, def.xmax);
107  }
108 }

◆ create1DProfile()

template<class H >
TH1 * HistogramFactory::create1DProfile ( const HistogramDef def)
private

Helper for generic 'create' method for 1DProfile histograms.

Template Parameters
HActual type of histogram to be created
Parameters
defHistogram definition
Returns
Histogram handler

Definition at line 111 of file HistogramFactory.cxx.

111  {
112  if (def.xarray.size()!=0) {
113  return create<H,TH1>(def, def.xbins, &(def.xarray)[0],
114  def.ymin, def.ymax);
115  } else {
116  return create<H,TH1>(def, def.xbins, def.xmin, def.xmax,
117  def.ymin, def.ymax);
118  }
119 }

◆ create2D()

template<class H >
TH2 * HistogramFactory::create2D ( const HistogramDef def)
private

Helper for generic 'create' method for 2D histograms.

Template Parameters
HActual type of histogram to be created
Parameters
defHistogram definition
Returns
Histogram handler

Definition at line 122 of file HistogramFactory.cxx.

122  {
123  if (def.xarray.size()!=0 && def.yarray.size()!=0) {
124  return create<H,TH2>(def, def.xbins, &(def.xarray)[0],
125  def.ybins, &(def.yarray)[0]);
126  } else if (def.yarray.size()!=0) {
127  return create<H,TH2>(def, def.xbins, def.xmin, def.xmax,
128  def.ybins, &(def.yarray)[0]);
129  } else if (def.xarray.size()!=0) {
130  return create<H,TH2>(def, def.xbins, &(def.xarray)[0],
131  def.ybins, def.ymin, def.ymax);
132  } else {
133  return create<H,TH2>(def, def.xbins, def.xmin, def.xmax,
134  def.ybins, def.ymin, def.ymax);
135  }
136 }

◆ create2DProfile()

template<class H >
TH2 * HistogramFactory::create2DProfile ( const HistogramDef def)
private

Helper for generic 'create' method for 2DProfile histograms.

Template Parameters
HActual type of histogram to be created
Parameters
defHistogram definition
Returns
Histogram handler

Definition at line 139 of file HistogramFactory.cxx.

139  {
140  if (def.xarray.size()!=0 && def.yarray.size()!=0) {
141  return create<H,TH2>(def, def.xbins, &(def.xarray)[0],
142  def.ybins, &(def.yarray)[0]);
143  } else if (def.yarray.size()!=0) {
144  return create<H,TH2>(def, def.xbins, def.xmin, def.xmax,
145  def.ybins, &(def.yarray)[0]);
146  } else if (def.xarray.size()!=0) {
147  return create<H,TH2>(def, def.xbins, &(def.xarray)[0],
148  def.ybins, def.ymin, def.ymax);
149  } else {
150  return create<H,TH2>(def, def.xbins, def.xmin, def.xmax,
151  def.ybins, def.ymin, def.ymax,
152  def.zmin, def.zmax);
153  }
154 }

◆ createEfficiency()

TEfficiency * HistogramFactory::createEfficiency ( const HistogramDef def)
private

Create and register efficiency graph.

If graph already exists under that name, re-use it

Parameters
defHistogram definition
Returns
Efficiency graph handler

Definition at line 156 of file HistogramFactory.cxx.

156  {
157  std::string fullName = getFullName(def);
158 
159  // Check if efficiency exists already
160  TEfficiency* e = nullptr;
161  if ( m_histSvc->existsEfficiency(fullName) ) {
162  if ( !m_histSvc->getEfficiency(fullName,e) ) {
163  throw HistogramException("Histogram >"+ fullName + "< seems to exist but can not be obtained from THistSvc");
164  }
165  return e;
166  }
167 
168  // Otherwise, create the efficiency and register it
169  // Hold global lock until we have detached object from gDirectory
170  {
171  std::scoped_lock<std::mutex> dirLock(globalROOTMutex());
172  if (def.ybins==0 && def.zbins==0) { // 1D TEfficiency
173  if (def.xarray.size()!=0) {
174  e = new TEfficiency(def.alias.c_str(), def.title.c_str(),
175  def.xbins, &(def.xarray)[0]);
176  } else {
177  e = new TEfficiency(def.alias.c_str(), def.title.c_str(),
178  def.xbins, def.xmin, def.xmax);
179  }
180  } else if (def.ybins>0 && def.zbins==0) { // 2D TEfficiency
181  if (def.xarray.size()!=0 && def.yarray.size()!=0) {
182  e = new TEfficiency(def.alias.c_str(), def.title.c_str(),
183  def.xbins, &(def.xarray)[0], def.ybins, &(def.yarray)[0]);
184  } else {
185  e = new TEfficiency(def.alias.c_str(), def.title.c_str(),
186  def.xbins, def.xmin, def.xmax, def.ybins, def.ymin, def.ymax);
187  }
188  } else if (def.ybins>0 && def.zbins>0) { // 3D TEfficiency
189  e = new TEfficiency(def.alias.c_str(), def.title.c_str(),
190  def.xbins, def.xmin, def.xmax, def.ybins, def.ymin, def.ymax, def.zbins, def.zmin, def.zmax);
191  } else {
192  throw HistogramException("Histogram >"+ fullName + "< could not be defined. Check xbins, ybins, and zbins.");
193  }
194  e->SetDirectory(0);
195  }
196  if ( !m_histSvc->regEfficiency(fullName, std::unique_ptr<TEfficiency>(e)) ) {
197  throw HistogramException("Histogram >"+ fullName + "< can not be registered in THistSvc");
198  }
199  TH1* total ATLAS_THREAD_SAFE = const_cast<TH1*>(e->GetTotalHistogram());
200  setLabels(total, def);
201  TH1* passed ATLAS_THREAD_SAFE = const_cast<TH1*>(e->GetPassedHistogram());
202  setLabels(passed, def);
203 
204  return e;
205 }

◆ createTree()

TTree * HistogramFactory::createTree ( const HistogramDef def)
private

Create and register tree.

If tree already exists under that name, re-use it

Parameters
defHistogram definition
Returns
Pointer to tree

Definition at line 240 of file HistogramFactory.cxx.

240  {
241  std::string fullName = getFullName(def);
242 
243  // Check if tree exists already
244  TTree* t = nullptr;
245  if ( m_histSvc->existsTree(fullName) ) {
246  if ( !m_histSvc->getTree(fullName,t) ) {
247  throw HistogramException("Tree >"+ fullName + "< seems to exist but can not be obtained from THistSvc");
248  }
249  return t;
250  }
251 
252  // Otherwise, create the tree and register it
253  // branches will be created by HistogramFillerTree
254  {
255  std::scoped_lock<std::mutex> dirLock(globalROOTMutex());
256  t = new TTree(def.alias.c_str(),def.title.c_str());
257  t->SetDirectory(0);
258  }
259  if ( !m_histSvc->regTree(fullName, std::unique_ptr<TTree>(t) ) ) {
260  throw HistogramException("Tree >"+ fullName + "< can not be registered in THistSvc");
261  }
262 
263  return t;
264 }

◆ getFullName()

std::string HistogramFactory::getFullName ( const HistogramDef def) const

Invent path name.

If def path contains any of: EXPERT, SHIFT, DEBUG, RUNSTAT, EXPRESS this is online convention this becomes the first element of the path followed by the group name. Else if the def.path is DEFAULT then only the group name is used if the path yet different is concatenated with the group name.

Parameters
defHistogram definition
Returns
Full path to histogram

Definition at line 293 of file HistogramFactory.cxx.

293  {
294 
295  // for online paths, always prepend a slash. Otherwise take it from provided stream name
296  std::string path;
297  if ( onlinePaths.count( def.path)!=0 ) {
298  path = "/" + def.path + "/" + m_streamName + "/" + m_groupName;
299  } else if ( def.path=="DEFAULT" ) {
300  path = "/" + m_streamName + "/" + m_groupName;
301  } else {
302  path = m_streamName + "/" + def.tld + "/" + m_groupName + "/" + def.path;
303  }
304 
305  // remove duplicate slashes
306  std::string fullName = path + "/" + def.alias;
307  fullName.erase( std::unique( fullName.begin(), fullName.end(),
308  [](const char a, const char b) {
309  return a == b and a == '/';
310  } ), fullName.end() );
311 
312  return fullName;
313 }

◆ globalROOTMutex()

static std::mutex& Monitored::HistogramFactory::globalROOTMutex ( )
inlinestatic

Definition at line 68 of file HistogramFactory.h.

68 { return s_histDirMutex; }

◆ remove()

void HistogramFactory::remove ( const HistogramDef def)
virtual

Removes histogram (used to get rid of old LB tagged histograms)

Definition at line 315 of file HistogramFactory.cxx.

315  {
316  const std::string path = getFullName( def );
317 
318  TObject* obj = nullptr;
319  if (def.type=="TEfficiency") {
320  TEfficiency* e;
321  m_histSvc->getEfficiency(path, e).ignore();
322  obj = e;
323  } else if (def.type=="TGraph") {
324  TGraph* g;
325  m_histSvc->getGraph(path, g).ignore();
326  obj = g;
327  } else if (def.type=="TTree") {
328  TTree* t;
329  m_histSvc->getTree(path, t).ignore();
330  obj = t;
331  } else {
332  TH1* h;
333  m_histSvc->getHist(path, h).ignore();
334  obj = h;
335  }
336 
337  if (obj) {
338  m_histSvc->deReg(path).ignore();
339  if (m_deleteOnRemove) {
340  delete obj;
341  }
342  }
343 }

◆ setLabels() [1/2]

void HistogramFactory::setLabels ( TAxis *  axis,
const std::vector< std::string > &  labels 
)
staticprivate

Setup labels for histogram axes.

Parameters
histHistogram handler
labelsHistogram labels (from histogram definition)

Definition at line 281 of file HistogramFactory.cxx.

281  {
282  if ( !labels.empty() ) {
283  const int nBin = axis->GetNbins();
284  for ( int bin=0; bin<nBin; bin++ ) {
285  axis->SetBinLabel(bin+1, labels[bin].c_str());
286  }
287  }
288 }

◆ setLabels() [2/2]

void HistogramFactory::setLabels ( TH1 *  hist,
const HistogramDef def 
)
staticprivate

Set labels for all axes.

Parameters
histHistogram pointer
defHistogram definition

Definition at line 275 of file HistogramFactory.cxx.

275  {
276  setLabels(hist->GetXaxis(), def.xlabels);
277  setLabels(hist->GetYaxis(), def.ylabels);
278  setLabels(hist->GetZaxis(), def.zlabels);
279 }

◆ setOpts()

void HistogramFactory::setOpts ( TH1 *  hist,
const HistogramDef def 
)
staticprivate

Setup various histogram options.

Available options: kCanRebin, Sumw2

Parameters
histHistogram handler
optHistogram options (from histogram definition)

Definition at line 266 of file HistogramFactory.cxx.

266  {
267  // apply extension policy
268  const unsigned canExtendPolicy = def.kCanRebin ? TH1::kAllAxes : TH1::kNoAxis;
269  hist->SetCanExtend(canExtendPolicy);
270 
271  // apply Sumw2 option
272  hist->Sumw2(def.Sumw2);
273 }

Member Data Documentation

◆ m_createLock

std::mutex Monitored::HistogramFactory::m_createLock
mutableprivate

Definition at line 171 of file HistogramFactory.h.

◆ m_deleteOnRemove

bool Monitored::HistogramFactory::m_deleteOnRemove {true}
private

delete histogram during remove

Definition at line 170 of file HistogramFactory.h.

◆ m_groupName

std::string Monitored::HistogramFactory::m_groupName
private

defines location of group of histograms

Definition at line 168 of file HistogramFactory.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> Monitored::HistogramFactory::m_histSvc
private

Definition at line 166 of file HistogramFactory.h.

◆ m_streamName

std::string Monitored::HistogramFactory::m_streamName
private

defines the stream for THistSvc

Definition at line 167 of file HistogramFactory.h.

◆ s_histDirMutex

std::mutex Monitored::HistogramFactory::s_histDirMutex
inlinestaticprivate

Definition at line 172 of file HistogramFactory.h.


The documentation for this class was generated from the following files:
Monitored::HistogramFactory::m_createLock
std::mutex m_createLock
Definition: HistogramFactory.h:171
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
Monitored::HistogramDef::kCanRebin
bool kCanRebin
allow all axes to be rebinned
Definition: HistogramDef.h:47
Monitored::HistogramFactory::m_streamName
std::string m_streamName
defines the stream for THistSvc
Definition: HistogramFactory.h:167
Monitored::HistogramFactory::m_groupName
std::string m_groupName
defines location of group of histograms
Definition: HistogramFactory.h:168
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
plotmaker.hist
hist
Definition: plotmaker.py:148
WriteCellNoiseToCool.fullName
fullName
Definition: WriteCellNoiseToCool.py:461
yodamerge_tmp.axis
list axis
Definition: yodamerge_tmp.py:241
Monitored::HistogramDef::zmax
float zmax
z axis maximum
Definition: HistogramDef.h:71
bin
Definition: BinsDiffFromStripMedian.h:43
Monitored::HistogramException
Represents error occurred during accessing histograms objects.
Definition: HistogramException.h:14
Monitored::HistogramDef::xbins
int xbins
number of y bins
Definition: HistogramDef.h:55
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Monitored::HistogramDef::ylabels
std::vector< std::string > ylabels
labels for y axis
Definition: HistogramDef.h:65
Monitored::HistogramDef::yarray
std::vector< double > yarray
array of y bin edges
Definition: HistogramDef.h:66
Monitored::HistogramFactory::s_histDirMutex
static std::mutex s_histDirMutex
Definition: HistogramFactory.h:172
Monitored::HistogramDef::tld
std::string tld
top level directory (below THistSvc stream)
Definition: HistogramDef.h:22
Monitored::HistogramFactory::setOpts
static void setOpts(TH1 *hist, const HistogramDef &def)
Setup various histogram options.
Definition: HistogramFactory.cxx:266
Monitored::HistogramFactory::m_histSvc
ServiceHandle< ITHistSvc > m_histSvc
Definition: HistogramFactory.h:166
Monitored::HistogramDef::xarray
std::vector< double > xarray
array of x bin edges
Definition: HistogramDef.h:59
Monitored::HistogramDef::xmax
float xmax
x axis maximum
Definition: HistogramDef.h:57
beamspotnt.labels
list labels
Definition: bin/beamspotnt.py:1447
H
#define H(x, y, z)
Definition: MD5.cxx:114
Monitored::HistogramDef::zbins
int zbins
number of z bins
Definition: HistogramDef.h:69
Monitored::HistogramDef::path
std::string path
booking path
Definition: HistogramDef.h:19
Monitored::HistogramDef::ymax
float ymax
y axis maximum
Definition: HistogramDef.h:64
Monitored::HistogramFactory::setLabels
static void setLabels(TH1 *hist, const HistogramDef &def)
Set labels for all axes.
Definition: HistogramFactory.cxx:275
CreatePhysValWebPage.hs
hs
Definition: CreatePhysValWebPage.py:107
h
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
extractSporadic.h
list h
Definition: extractSporadic.py:97
PyPoolBrowser.rootObj
rootObj
Definition: PyPoolBrowser.py:111
Monitored::HistogramDef::xlabels
std::vector< std::string > xlabels
labels for x axis
Definition: HistogramDef.h:58
Monitored::HistogramFactory::getFullName
std::string getFullName(const HistogramDef &def) const
Invent path name.
Definition: HistogramFactory.cxx:293
Monitored::HistogramDef::xmin
float xmin
x axis minimum
Definition: HistogramDef.h:56
MuonSegmentReaderConfig.histSvc
histSvc
Definition: MuonSegmentReaderConfig.py:96
Monitored::HistogramDef::Sumw2
bool Sumw2
store sum of squares of weights
Definition: HistogramDef.h:43
Monitored::HistogramDef::alias
std::string alias
unique alias for THistSvc
Definition: HistogramDef.h:17
Monitored::HistogramDef::ymin
float ymin
y axis minimum
Definition: HistogramDef.h:63
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
Monitored::HistogramFactory::m_deleteOnRemove
bool m_deleteOnRemove
delete histogram during remove
Definition: HistogramFactory.h:170
Monitored::HistogramFactory::createTree
TTree * createTree(const HistogramDef &def)
Create and register tree.
Definition: HistogramFactory.cxx:240
Monitored::HistogramDef::type
std::string type
class name
Definition: HistogramDef.h:18
Monitored::HistogramFactory::globalROOTMutex
static std::mutex & globalROOTMutex()
Definition: HistogramFactory.h:68
a
TList * a
Definition: liststreamerinfos.cxx:10
sim_check_batch.hargs
list hargs
Definition: sim_check_batch.py:226
Monitored::HistogramDef::zmin
float zmin
z axis minimum
Definition: HistogramDef.h:70
ATLAS_THREAD_SAFE
#define ATLAS_THREAD_SAFE
Definition: checker_macros.h:211
Monitored::HistogramDef::ybins
int ybins
number of y bins
Definition: HistogramDef.h:62
plotBeamSpotCompare.histo
histo
Definition: plotBeamSpotCompare.py:415
python.PyAthena.obj
obj
Definition: PyAthena.py:132
Monitored::HistogramDef::title
std::string title
title of the histogram
Definition: HistogramDef.h:20
Monitored::HistogramDef::zlabels
std::vector< std::string > zlabels
labels for z axis
Definition: HistogramDef.h:72
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
Monitored::HistogramFactory::createEfficiency
TEfficiency * createEfficiency(const HistogramDef &def)
Create and register efficiency graph.
Definition: HistogramFactory.cxx:156