ATLAS Offline Software
Loading...
Searching...
No Matches
TilePaterMonTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5// ********************************************************************
6//
7// NAME: TilePaterMonTool.cxx
8// PACKAGE: TileMonitoring
9//
10// AUTHOR: Luca Fiorini (Luca.Fiorini@cern.ch)
11//
12// July 2006
13// ********************************************************************
14
15#include "TilePaterMonTool.h"
16
21
22#include "TH1C.h"
23#include "TH2C.h"
24#include "TH1S.h"
25#include "TH2S.h"
26#include "TH1F.h"
27#include "TH2F.h"
28#include "TH1D.h"
29#include "TH2D.h"
30#include "TTree.h"
31#include "TGraph.h"
32#include "TGraphErrors.h"
33#include "TGraphAsymmErrors.h"
34#include "TMultiGraph.h"
35#include "TProfile.h"
36#include "TProfile2D.h"
37#include "TString.h"
38#include "TDirectory.h"
39
40#include <sstream>
41#include <algorithm>
42
43/*---------------------------------------------------------*/
44// Methods registering historgrams
45// Ownership passed to Gaudi
46template <typename T>
47void TilePaterMonTool::regHist(const std::string& subDir, T* hist, Interval_t interval, MgmtAttr_t attribute, const std::string & trigChain, const std::string & mergeAlgo)
48{
49
50 std::string path(m_path);
51 if (!subDir.empty()) path += ("/" + subDir);
52
53 if(ManagedMonitorToolBase::regHist(hist, path, interval, attribute, trigChain, mergeAlgo).isFailure()) {
54 ATH_MSG_WARNING( "Could not register histogram : " << path + "/" + hist->GetName() );
55 }
56
57}
58
59template <typename T>
60void TilePaterMonTool::regGraph(const std::string& subDir, T* graph, Interval_t interval, MgmtAttr_t attribute, const std::string & trigChain, const std::string & mergeAlgo)
61{
62
63 std::string path(m_path);
64 if (!subDir.empty()) path += ("/" + subDir);
65
66 if(ManagedMonitorToolBase::regGraph(graph, path, interval, attribute, trigChain, mergeAlgo).isFailure()) {
67 ATH_MSG_WARNING( "Could not register Graph : " << path + "/" + graph->GetName() );
68 }
69}
70
71
72/*---------------------------------------------------------*/
73TilePaterMonTool::TilePaterMonTool(const std::string & type, const std::string & name, const IInterface* parent)
74 : ManagedMonitorToolBase(type, name, parent)
75 , m_tileID(0)
76 , m_tileHWID(0)
77 , m_tileTBID(0)
78 , m_cabling(0)
79/*---------------------------------------------------------*/
80{
81 declareInterface<IMonitorToolBase>(this);
82
83 declareProperty("savePng",m_savePng=false);
84 declareProperty("savePs",m_savePs=false);
85 declareProperty("saveSvg",m_saveSvg=false);
86
87 declareProperty("FragIDsToIgnoreDMUErrors", m_fragIDsToIgnoreDMUerrors, "List of Tile frag IDs for which ignore DMU errors");
88 declareProperty("FragIDsDemonstrators", m_fragIDsDemonstrators, "List of Tile frag IDs of demonstrators, which have different CIS circuits than the legacy ones");
89
90 m_path = "/Tile";
91
92}
93
94/*---------------------------------------------------------*/
96/*---------------------------------------------------------*/
97{
98}
99
100/*---------------------------------------------------------*/
102/*---------------------------------------------------------*/
103{
104
105 CHECK( detStore()->retrieve(m_tileID) );
106 CHECK( detStore()->retrieve(m_tileHWID) );
107 CHECK( detStore()->retrieve(m_tileTBID) );
108
110 int runPeriod = m_cabling->runPeriod();
111
112 if (runPeriod==3) {
113 if ( m_fragIDsToIgnoreDMUerrors.size() == 0) {
114 m_fragIDsToIgnoreDMUerrors.push_back (0x10d); // LBA14 is demonstrator in RUN3
115 }
116
117 if ( m_fragIDsDemonstrators.empty()) {
118 m_fragIDsDemonstrators.push_back (0x10d); // LBA14 is demonstrator in RUN3
119 }
120 }
121
122 if ( not m_fragIDsToIgnoreDMUerrors.empty()) {
123
125
126 std::ostringstream os;
127 for (int fragID : m_fragIDsToIgnoreDMUerrors) {
128 os << " 0x" << std::hex << fragID << std::dec;
129 }
130
131 ATH_MSG_INFO("Tile DMU errors will be ignored in drawers (frag IDs):" << os.str());
132 }
133
134 if ( m_fragIDsDemonstrators.size() != 0) {
135
137
138 std::ostringstream os;
139 for (int fragID : m_fragIDsDemonstrators) {
140 os << " 0x" << std::hex << fragID << std::dec;
141 }
142
143 ATH_MSG_INFO("Special settings in histograms for demonstrator modules (frag IDs):" << os.str());
144 }
145
146 //ToolRootHistSvc();
147 //SetBookStatus(false);
149
150
151 return StatusCode::SUCCESS;
152}
153
154/*---------------------------------------------------------*/
155// Method booking 1D Histograms and storing them in THistSvc
156// The method return the pointer to the new histogram
157TH1D * TilePaterMonTool::book1D(const std::string & subdir, const std::string & nam, const std::string & tit,
158 int nx, double xmin, double xmax,
159 Interval_t interval, MgmtAttr_t attribute,
160 const std::string & trigChain, const std::string & mergeAlgo)
161{
162
163 TH1D* hist = new TH1D(TString(nam), TString(tit), nx, xmin, xmax);
164 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
165 return hist;
166}
167
168TH1F * TilePaterMonTool::book1F(const std::string & subdir, const std::string & nam, const std::string & tit,
169 int nx, double xmin, double xmax,
170 Interval_t interval, MgmtAttr_t attribute,
171 const std::string & trigChain, const std::string & mergeAlgo)
172{
173
174 TH1F* hist = new TH1F(TString(nam), TString(tit), nx, xmin, xmax);
175 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
176 return hist;
177}
178
179TH1C* TilePaterMonTool::book1C(const std::string & subdir, const std::string & nam, const std::string & tit,
180 int nx, double xmin, double xmax,
181 Interval_t interval, MgmtAttr_t attribute,
182 const std::string & trigChain, const std::string & mergeAlgo)
183{
184
185 TH1C* hist = new TH1C(TString(nam), TString(tit), nx, xmin, xmax);
186 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
187 return hist;
188}
189
190TH1S * TilePaterMonTool::book1S(const std::string & subdir, const std::string & nam, const std::string & tit,
191 int nx, double xmin, double xmax,
192 Interval_t interval, MgmtAttr_t attribute,
193 const std::string & trigChain, const std::string & mergeAlgo)
194{
195
196 TH1S* hist = new TH1S(TString(nam), TString(tit), nx, xmin, xmax);
197 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
198 return hist;
199}
200
201TH1S * TilePaterMonTool::book1Sx(const std::string & subdir, const std::string & nam, const std::string & tit,
202 int nx, const Double_t *xlgbins,
203 Interval_t interval, MgmtAttr_t attribute,
204 const std::string & trigChain, const std::string & mergeAlgo)
205{
206
207 TH1S* hist = new TH1S(TString(nam), TString(tit), nx, xlgbins);
208 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
209 return hist;
210}
211
212TH1I* TilePaterMonTool::book1I(const std::string & subdir, const std::string & nam, const std::string & tit,
213 int nx, double xmin, double xmax,
214 Interval_t interval, MgmtAttr_t attribute,
215 const std::string & trigChain, const std::string & mergeAlgo)
216{
217
218 TH1I* hist = new TH1I(TString(nam), TString(tit), nx, xmin, xmax);
219 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
220 return hist;
221}
222
223/*---------------------------------------------------------*/
224// Method booking 2D Histograms and storing them in THistSvc
225// The method return the pointer to the new histogram
226TH2D* TilePaterMonTool::book2D(const std::string & subdir, const std::string & nam, const std::string & tit,
227 int nx, double xmin, double xmax,
228 int ny, double ymin, double ymax,
229 Interval_t interval, MgmtAttr_t attribute,
230 const std::string & trigChain, const std::string & mergeAlgo)
231{
232 TH2D* hist = new TH2D(TString(nam), TString(tit), nx, xmin, xmax, ny, ymin, ymax);
233 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
234 return hist;
235}
236
237TH2F* TilePaterMonTool::book2F(const std::string & subdir, const std::string & nam, const std::string & tit,
238 int nx, double xmin, double xmax,
239 int ny, double ymin, double ymax,
240 Interval_t interval, MgmtAttr_t attribute,
241 const std::string & trigChain, const std::string & mergeAlgo)
242{
243 TH2F* hist = new TH2F(TString(nam), TString(tit), nx, xmin, xmax, ny, ymin, ymax);
244 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
245 return hist;
246}
247
248TH2F* TilePaterMonTool::book2F(const std::string & subdir, const std::string & nam, const std::string & tit,
249 int nx, double xmin, double xmax,
250 int ny, const double* ybins,
251 Interval_t interval, MgmtAttr_t attribute,
252 const std::string & trigChain, const std::string & mergeAlgo)
253{
254 TH2F* hist = new TH2F(TString(nam), TString(tit), nx, xmin, xmax, ny, ybins);
255 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
256 return hist;
257}
258
259
260TH2I* TilePaterMonTool::book2I(const std::string & subdir, const std::string & nam, const std::string & tit,
261 int nx, double xmin, double xmax,
262 int ny, double ymin, double ymax,
263 Interval_t interval, MgmtAttr_t attribute,
264 const std::string & trigChain, const std::string & mergeAlgo)
265{
266 TH2I* hist = new TH2I(TString(nam), TString(tit), nx, xmin, xmax, ny, ymin, ymax);
267 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
268 return hist;
269}
270
271
272TH2S * TilePaterMonTool::book2S(const std::string & subdir, const std::string & nam, const std::string & tit,
273 int nx, double xmin, double xmax,
274 int ny, double ymin, double ymax,
275 Interval_t interval, MgmtAttr_t attribute,
276 const std::string & trigChain, const std::string & mergeAlgo)
277{
278 TH2S *hist = new TH2S(TString(nam), TString(tit), nx, xmin, xmax, ny, ymin, ymax);
279 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
280 return hist;
281}
282
283TH2C* TilePaterMonTool::book2C(const std::string & subdir, const std::string & nam, const std::string & tit,
284 int nx, double xmin, double xmax,
285 int ny, double ymin, double ymax,
286 Interval_t interval, MgmtAttr_t attribute,
287 const std::string & trigChain, const std::string & mergeAlgo)
288{
289 TH2C* hist = new TH2C(TString(nam), TString(tit), nx, xmin, xmax, ny, ymin, ymax);
290 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
291 return hist;
292}
293
294TProfile* TilePaterMonTool::bookProfile(const std::string & subdir, const std::string & nam, const std::string & tit,
295 int nx, double xmin, double xmax,
296 Interval_t interval, MgmtAttr_t attribute,
297 const std::string & trigChain, const std::string & mergeAlgo)
298{
299 TProfile* hist = new TProfile(TString(nam), TString(tit), nx, xmin, xmax);
300 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
301 return hist;
302}
303
304TProfile* TilePaterMonTool::bookProfile(const std::string & subdir, const std::string & nam, const std::string & tit,
305 int nx, double xmin, double xmax,
306 double ymin, double ymax,
307 Interval_t interval, MgmtAttr_t attribute,
308 const std::string & trigChain, const std::string & mergeAlgo)
309{
310 TProfile* hist = new TProfile(TString(nam), TString(tit), nx, xmin, xmax, ymin, ymax);
311 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
312 return hist;
313}
314
315TProfile* TilePaterMonTool::bookProfile(const std::string & subdir, const std::string & nam, const std::string & tit,
316 int nx, const float* xbins,
317 Interval_t interval, MgmtAttr_t attribute,
318 const std::string & trigChain, const std::string & mergeAlgo)
319{
320 TProfile* hist = new TProfile(TString(nam), TString(tit), nx, xbins);
321 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
322 return hist;
323}
324
325TProfile2D* TilePaterMonTool::bookProfile2D(const std::string & subdir, const std::string & nam, const std::string & tit,
326 int nx, double xmin, double xmax,
327 int ny, double ymin, double ymax,
328 double zmin, double zmax,
329 Interval_t interval, MgmtAttr_t attribute,
330 const std::string & trigChain, const std::string & mergeAlgo)
331{
332
333 TProfile2D* hist = new TProfile2D(TString(nam), TString(tit), nx, xmin, xmax, ny, ymin, ymax, zmin, zmax);
334 regHist(subdir, hist, interval, attribute, trigChain, mergeAlgo);
335 return hist;
336}
337
338
339/*-----------------------------------------------------------*/
340// Method booking TTree and TGraph and storing them in THistSvc
341// The method return the pointer to the new histogram
342
343/*
344TTree* TilePaterMonTool::bookTree(const std::string & subdir, const std::string & nam, std::string tit) {
345 TTree* hist = new TTree(TString(nam), TString(tit));
346 if (m_THistSvc_streamname.size() > 0) {
347 if (m_THistSvc->regTree(m_stem + subdir + "/" + nam, hist).isFailure()) {
348 ATH_MSG_WARNING( "Could not register object : " << m_stem + subdir + "/" + nam );
349 }
350 }
351 return hist;
352}
353
354*/
355
356
357class TGraph1: public TGraph {
358 public:
359 TGraph1(int N, float * X, float * Y)
360 : TGraph(N, X, Y), fDirectory(0) {
361 }
362
363 TDirectory * GetDirectory() { return fDirectory; }
364
365 void SetDirectory(TDirectory *dir) {
366 if (fDirectory == dir) return;
367 if (fDirectory) fDirectory->GetList()->Remove(this);
368 fDirectory = dir;
369 if (fDirectory) fDirectory->GetList()->Add(this);
370 }
371
372 private:
373 TDirectory* fDirectory;
374};
375
376TGraph* TilePaterMonTool::bookGraph(const std::string& subdir, const std::string& nam, const std::string& tit, int N, float * X, float * Y) {
377
378 TGraph1 *hist = new TGraph1(N, X, Y);
379 hist->SetName(TString(nam));
380 hist->SetTitle(TString(tit));
381
382 regGraph(subdir, hist);
383
384 return hist;
385}
386
387class TGraphErrors1: public TGraphErrors {
388 public:
389 TGraphErrors1(int N, float * X, float * Y, float * X_errors, float * Y_errors)
390 : TGraphErrors(N, X, Y, X_errors, Y_errors), fDirectory(0) {
391 }
392
393 TDirectory * GetDirectory() { return fDirectory; }
394
395 void SetDirectory(TDirectory *dir) {
396 if (fDirectory == dir) return;
397 if (fDirectory) fDirectory->GetList()->Remove(this);
398 fDirectory = dir;
399 if (fDirectory) fDirectory->GetList()->Add(this);
400 }
401
402 private:
403 TDirectory * fDirectory;
404};
405
406TGraphErrors * TilePaterMonTool::bookGraphErrors(const std::string& subdir, const std::string& nam, const std::string& tit, int N, float * X, float * Y, float * X_errors, float * Y_errors) {
407
408 TGraphErrors *hist = new TGraphErrors(N, X, Y, X_errors, Y_errors);
409 hist->SetName(TString(nam));
410 hist->SetTitle(TString(tit));
411
412 regGraph(subdir, hist);
413 return hist;
414}
415
416StatusCode TilePaterMonTool::removeTObj(TObject *obj) {
417 if (obj != 0) {
418 if (obj->IsA()->InheritsFrom("TH1")) {
419 if (deregHist(static_cast<TH1*> (obj)).isFailure()) {
420 ATH_MSG_WARNING( "Could not dereg Histogram : " << obj->GetName() );
421 return StatusCode::FAILURE;
422 } else {
423 delete obj;
424 }
425 } else if (obj->IsA()->InheritsFrom("TGraph")) {
426 if (deregGraph(static_cast<TGraph*> (obj)) != StatusCode::SUCCESS) {
427 ATH_MSG_WARNING( "Could not dereg Graph : " << obj->GetName() );
428 return StatusCode::FAILURE;
429 } else {
430 delete obj;
431 }
432 } else {
433 ATH_MSG_WARNING( "Asked to remove object " << obj->GetName() << "of unsupported type " << obj->IsA() );
434 return StatusCode::FAILURE;
435 }
436 } else {
437 ATH_MSG_WARNING( "Asked to remove NULL pointer" );
438 return StatusCode::FAILURE;
439 }
440 return StatusCode::SUCCESS;
441}
442
443
444class TGraphAsymmErrors1: public TGraphAsymmErrors {
445 public:
446 TGraphAsymmErrors1(int N, float * X, float * Y, float * X_errors1, float * X_errors2, float * Y_errors1, float * Y_errors2)
447 : TGraphAsymmErrors(N, X, Y, X_errors1, X_errors2, Y_errors1, Y_errors2), fDirectory(0) {
448 }
449
450 TDirectory * GetDirectory() { return fDirectory; }
451
452 void SetDirectory(TDirectory *dir) {
453 if (fDirectory == dir) return;
454 if (fDirectory) fDirectory->GetList()->Remove(this);
455 fDirectory = dir;
456 if (fDirectory) fDirectory->GetList()->Add(this);
457 }
458
459 private:
460 TDirectory* fDirectory;
461};
462
463TGraphAsymmErrors* TilePaterMonTool::bookGraphAsymmErrors(const std::string& subdir, const std::string& nam, const std::string& tit, int N,
464 float* X, float* Y, float* X_errors1, float* X_errors2,
465 float* Y_errors1, float* Y_errors2)
466{
467
468 TGraphAsymmErrors *hist = new TGraphAsymmErrors(N, X, Y, X_errors1, X_errors2, Y_errors1, Y_errors2);
469 hist->SetName(TString(nam));
470 hist->SetTitle(TString(tit));
471
472 regGraph(subdir, hist);
473 return hist;
474}
475
476class TMultiGraph1: public TMultiGraph {
477 public:
479 : TMultiGraph(), fDirectory(0) {
480 }
481
482 TDirectory* GetDirectory() { return fDirectory; }
483
484 void SetDirectory(TDirectory *dir) {
485 if (fDirectory == dir) return;
486 if (fDirectory) fDirectory->GetList()->Remove(this);
487 fDirectory = dir;
488 if (fDirectory) fDirectory->GetList()->Add(this);
489 }
490
491 private:
492 TDirectory* fDirectory;
493};
494
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define CHECK(...)
Evaluate an expression and check for errors.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const ServiceHandle< StoreGateSvc > & detStore() const
virtual StatusCode regHist(TH1 *h, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical ...
virtual StatusCode deregHist(TH1 *h)
De-registers a TH1 from the THistSvc, but does NOT delete the object.
virtual StatusCode deregGraph(TGraph *g)
De-registers a TGraph from the THistSvc, but does NOT delete the object.
Interval_t
An enumeration describing how detailed a particular monitoring object is.
ManagedMonitorToolBase(const std::string &type, const std::string &name, const IInterface *parent)
MgmtAttr_t
An enumeration describing how the class handles the histogram.
virtual StatusCode regGraph(TGraph *g, const std::string &system, Interval_t interval, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &chain="", const std::string &merge="")
Registers a TGraph to be included in the output stream using logical parameters that describe the gra...
void SetDirectory(TDirectory *dir)
TDirectory * GetDirectory()
TGraph1(int N, float *X, float *Y)
TDirectory * fDirectory
void SetDirectory(TDirectory *dir)
TGraphAsymmErrors1(int N, float *X, float *Y, float *X_errors1, float *X_errors2, float *Y_errors1, float *Y_errors2)
TDirectory * GetDirectory()
TGraphErrors1(int N, float *X, float *Y, float *X_errors, float *Y_errors)
TDirectory * fDirectory
void SetDirectory(TDirectory *dir)
TDirectory * GetDirectory()
TDirectory * GetDirectory()
void SetDirectory(TDirectory *dir)
TDirectory * fDirectory
static const TileCablingService * getInstance()
get pointer to service instance
TProfile2D * bookProfile2D(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, int ny, double ymin, double ymax, double zmin, double zmax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
const TileTBID * m_tileTBID
TH2F * book2F(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, int ny, double ymin, double ymax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
std::vector< int > m_fragIDsToIgnoreDMUerrors
TGraphAsymmErrors * bookGraphAsymmErrors(const std::string &dir, const std::string &nam, const std::string &tit, int N, float *X, float *Y, float *X_errors1, float *X_errors2, float *Y_errors1, float *Y_errors2)
TGraphErrors * bookGraphErrors(const std::string &dir, const std::string &nam, const std::string &tit, int N, float *X, float *Y, float *X_errors, float *Y_errors)
TProfile * bookProfile(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
const TileID * m_tileID
virtual StatusCode initialize() override
StatusCode removeTObj(TObject *obj)
TH1S * book1S(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
TH1F * book1F(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
const TileHWID * m_tileHWID
const TileCablingService * m_cabling
TH1D * book1D(const std::string &nam, const std::string &tit, int nx, double xmin, double xmax)
Implicit version of book1D.
void regHist(const std::string &subDir, T *hist, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
TH2I * book2I(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, int ny, double ymin, double ymax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
TilePaterMonTool(const std::string &type, const std::string &name, const IInterface *parent)
std::vector< int > m_fragIDsDemonstrators
TH1C * book1C(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
TH2D * book2D(const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, int ny, double ymin, double ymax)
Implicit version of book2D.
TH2S * book2S(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, int ny, double ymin, double ymax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
TH2C * book2C(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, int ny, double ymin, double ymax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
void regGraph(const std::string &subDir, T *graph, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
TH1I * book1I(const std::string &dir, const std::string &nam, const std::string &tit, int nx, double xmin, double xmax, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
TGraph * bookGraph(const std::string &dir, const std::string &nam, const std::string &tit, int N, float *X, float *Y)
TH1S * book1Sx(const std::string &dir, const std::string &nam, const std::string &tit, int nx, const Double_t *xlgbins, Interval_t interval=run, MgmtAttr_t attribute=ATTRIB_MANAGED, const std::string &trigChain="", const std::string &mergeAlgo="")
double xmax
Definition listroot.cxx:61
double ymin
Definition listroot.cxx:63
double xmin
Definition listroot.cxx:60
double ymax
Definition listroot.cxx:64
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.