ATLAS Offline Software
TH2F_LW.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // //
7 // Implementation of class TH2F_LW //
8 // //
9 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
10 // Initial version: March 2009 //
11 // //
13 
14 #include "LWHists/TH2F_LW.h"
15 #include "LWHists/LWHistControls.h"
16 #include "Flex2DHisto.h"
17 #include "LWHistRootUtils.h"
18 #include "TH2F.h"
19 #include <iostream>
20 #include <utility>
21 
22 #define FLEXHIST() ((reinterpret_cast<Flex2DHisto<float>*>(m_flexHisto)))
23 #define CALL(x,y) m_rootHisto ? m_rootHisto-> x : reinterpret_cast<Flex2DHisto<float>*>(m_flexHisto)-> y
24 #ifdef LW_DEBUG_HEAVY_USERS
25 #define LWCOUNTCALL {if (m_flexHisto) FLEXHIST()->countCall(LWHistTraceUtils::getAdresses());};
26 #define LWREPORT {if (m_flexHisto) FLEXHIST()->produceReport(GetName());};
27 #else
28 #define LWCOUNTCALL {};
29 #define LWREPORT {};
30 #endif
31 
32 //____________________________________________________________________
33 TH2F_LW * TH2F_LW::create( const char* name, const char* title,
34  unsigned nbinsx, const double& xmin, const double& xmax,
35  unsigned nbinsy, const double& ymin, const double& ymax )
36 {
37  bool rootbackend(LWHistControls::hasROOTBackend());
38  TH2F_LW * h;
39  if (rootbackend) {
40  h = new TH2F_LW(name,title,nbinsx,xmin,xmax,nbinsy,ymin,ymax,rootbackend);
41  } else {
42  h = MP_NEW(TH2F_LW)(name,title,nbinsx,xmin,xmax,nbinsy,ymin,ymax,rootbackend);
43  h->m_nBytesFromPool = sizeof(TH2F_LW);
44  }
45  return h;
46 }
47 
48 //____________________________________________________________________
49 TH2F_LW * TH2F_LW::create( const char* name, const char* title,
50  unsigned nbinsx, const double* xbins,
51  unsigned nbinsy, const double& ymin, const double& ymax )
52 {
53  bool rootbackend(LWHistControls::hasROOTBackend());
54  TH2F_LW * h;
55  if (rootbackend) {
56  h = new TH2F_LW(name,title,nbinsx,xbins,nbinsy,ymin,ymax,rootbackend);
57  } else {
58  h = MP_NEW(TH2F_LW)(name,title,nbinsx,xbins,nbinsy,ymin,ymax,rootbackend);
59  h->m_nBytesFromPool = sizeof(TH2F_LW);
60  }
61  return h;
62 }
63 
64 //____________________________________________________________________
65 TH2F_LW * TH2F_LW::create( const char* name, const char* title,
66  unsigned nbinsx, const double& xmin, const double& xmax,
67  unsigned nbinsy, const double* ybins )
68 {
69  bool rootbackend(LWHistControls::hasROOTBackend());
70  TH2F_LW * h;
71  if (rootbackend) {
72  h = new TH2F_LW(name,title,nbinsx,xmin,xmax,nbinsy,ybins,rootbackend);
73  } else {
74  h = MP_NEW(TH2F_LW)(name,title,nbinsx,xmin,xmax,nbinsy,ybins,rootbackend);
75  h->m_nBytesFromPool = sizeof(TH2F_LW);
76  }
77  return h;
78 }
79 
80 //____________________________________________________________________
81 TH2F_LW * TH2F_LW::create( const char* name, const char* title,
82  unsigned nbinsx, const double* xbins,
83  unsigned nbinsy, const double* ybins )
84 {
85  bool rootbackend(LWHistControls::hasROOTBackend());
86  TH2F_LW * h;
87  if (rootbackend) {
88  h = new TH2F_LW(name,title,nbinsx,xbins,nbinsy,ybins,rootbackend);
89  } else {
90  h = MP_NEW(TH2F_LW)(name,title,nbinsx,xbins,nbinsy,ybins,rootbackend);
91  h->m_nBytesFromPool = sizeof(TH2F_LW);
92  }
93  return h;
94 }
95 
96 //____________________________________________________________________
97 TH2F_LW * TH2F_LW::create( const char* name, const char* title,
98  unsigned nbinsx, const float* xbins,
99  unsigned nbinsy, const float* ybins )
100 {
101  bool rootbackend(LWHistControls::hasROOTBackend());
102  TH2F_LW * h;
103  if (rootbackend) {
104  h = new TH2F_LW(name,title,nbinsx,xbins,nbinsy,ybins,rootbackend);
105  } else {
106  h = MP_NEW(TH2F_LW)(name,title,nbinsx,xbins,nbinsy,ybins,rootbackend);
107  h->m_nBytesFromPool = sizeof(TH2F_LW);
108  }
109  return h;
110 }
111 
112 //____________________________________________________________________
113 TH2F_LW::TH2F_LW( const char* name, const char* title,
114  unsigned nbinsx, const double& xmin, const double& xmax,
115  unsigned nbinsy, const double& ymin, const double& ymax, bool rootbackend )
116  : LWHist2D(name,title,rootbackend),
117  m_flexHisto(0),
118  m_rootHisto(0),
119  m_rootbackend_fastloopbin(0),
120  m_ownsRootSumw2(false)
121 {
122  if (rootbackend) {
123  m_rootHisto = new TH2F(name,title,nbinsx,xmin,xmax,nbinsy,ymin,ymax);
124  } else {
126  }
127 }
128 
129 //____________________________________________________________________
130 TH2F_LW::TH2F_LW( const char* name, const char* title,
131  unsigned nbinsx, const double* xbins,
132  unsigned nbinsy, const double& ymin, const double& ymax, bool rootbackend )
133  : LWHist2D(name,title,rootbackend),
134  m_flexHisto(0),
135  m_rootHisto(0),
136  m_rootbackend_fastloopbin(0),
137  m_ownsRootSumw2(false)
138 {
139  if (rootbackend) {
140  m_rootHisto = new TH2F(name,title,nbinsx,xbins,nbinsy,ymin,ymax);
141  } else {
143  }
144 }
145 
146 //____________________________________________________________________
147 TH2F_LW::TH2F_LW( const char* name, const char* title,
148  unsigned nbinsx, const double& xmin, const double& xmax,
149  unsigned nbinsy, const double* ybins, bool rootbackend )
150  : LWHist2D(name,title,rootbackend),
151  m_flexHisto(0),
152  m_rootHisto(0),
153  m_rootbackend_fastloopbin(0),
154  m_ownsRootSumw2(false)
155 {
156  if (rootbackend) {
157  m_rootHisto = new TH2F(name,title,nbinsx,xmin,xmax,nbinsy,ybins);
158  } else {
160  }
161 }
162 
163 //____________________________________________________________________
164 TH2F_LW::TH2F_LW( const char* name, const char* title,
165  unsigned nbinsx, const double* xbins,
166  unsigned nbinsy, const double* ybins, bool rootbackend )
167  : LWHist2D(name,title,rootbackend),
168  m_flexHisto(0),
169  m_rootHisto(0),
170  m_rootbackend_fastloopbin(0),
171  m_ownsRootSumw2(false)
172 {
173  if (rootbackend) {
174  m_rootHisto = new TH2F(name,title,nbinsx,xbins,nbinsy,ybins);
175  } else {
177  }
178 }
179 
180 //____________________________________________________________________
181 TH2F_LW::TH2F_LW( const char* name, const char* title,
182  unsigned nbinsx, const float* xbins,
183  unsigned nbinsy, const float* ybins, bool rootbackend )
184  : LWHist2D(name,title,rootbackend),
185  m_flexHisto(0),
186  m_rootHisto(0),
187  m_rootbackend_fastloopbin(0),
188  m_ownsRootSumw2(false)
189 {
190  if (rootbackend) {
191  m_rootHisto = new TH2F(name,title,nbinsx,xbins,nbinsy,ybins);
192  } else {
194  }
195 }
196 
197 //____________________________________________________________________
199 {
201  clear();
202  if (ownsROOTHisto())
203  delete m_rootHisto;//for root backend
204 }
205 
206 //____________________________________________________________________
208 {
209  return m_rootHisto;
210 }
212 {
213  return m_rootHisto;
214 }
217 {
218  if (!m_rootHisto) {
219  TH2F * h = LWHistRootUtils::createRootHisto<float,TH2F_LW,TH2F,Flex2DHisto<float> >(this,FLEXHIST(),m_ownsRootSumw2);
220  if (!apply(h))
221  assert(false);
223  clear();
224  m_rootHisto = h;
225  }
226  return m_rootHisto;
227 }
228 
229 //____________________________________________________________________
231 {
232  LWREPORT
233  LWHist::clear();
235  m_flexHisto = 0;
236 }
237 
238 //____________________________________________________________________
240 {
242  return;
243  if (m_rootHisto) {
245  m_rootHisto = 0;
246  }
247 }
248 
249 //____________________________________________________________________
251 {
252  if (m_rootHisto) {
253  m_rootHisto->Reset();
254  return;
255  }
256  if (m_flexHisto) {
257  LWREPORT
258  const float * xbins = FLEXHIST()->getVarBinsX();
259  const float * ybins = FLEXHIST()->getVarBinsY();
260  double xmin(FLEXHIST()->getXMin()),xmax(FLEXHIST()->getXMax());
261  double ymin(FLEXHIST()->getYMin()),ymax(FLEXHIST()->getYMax());
262  unsigned nbinsx(FLEXHIST()->getNBinsX()), nbinsy(FLEXHIST()->getNBinsY());
264  if (xbins)
266  : Flex2DHisto<float>::create(nbinsx,xbins,nbinsy,ymin,ymax);
267  else
269  : Flex2DHisto<float>::create(nbinsx,xmin,xmax,nbinsy,ymin,ymax);
270  }
271 }
272 
273 //____________________________________________________________________
274 void TH2F_LW::SetBins(unsigned nbinsx,double xmin,double xmax,
275  unsigned nbinsy,double ymin,double ymax)
276 {
277  if (GetEntries())
278  std::cout<<"TH2F_LW Warning: SetBins(..) called on non-empty histogram."
279  <<" Bin contents lost/reshuffled! (histogram name: \""<<GetName()<<"\")"<<std::endl;
280  if (m_rootHisto) {
281  m_rootHisto->SetBins(nbinsx,xmin,xmax,nbinsy,ymin,ymax);
282  } else {
285  }
286 }
287 
288 const float * TH2F_LW::getVarBinsX() const
289 {
290  assert (!m_rootHisto);
291  return FLEXHIST()->getVarBinsX();
292 }
293 
294 const float * TH2F_LW::getVarBinsY() const
295 {
296  assert (!m_rootHisto);
297  return FLEXHIST()->getVarBinsY();
298 }
299 
300 double TH2F_LW::getXMin() const
301 {
302  if (m_rootHisto)
303  return std::as_const(*m_rootHisto).GetXaxis()->GetXmin();
304  return FLEXHIST()->getXMin();
305 }
306 
307 double TH2F_LW::getXMax() const
308 {
309  if (m_rootHisto)
310  return std::as_const(*m_rootHisto).GetXaxis()->GetXmax();
311  return FLEXHIST()->getXMax();
312 }
313 
314 double TH2F_LW::getYMin() const
315 {
316  if (m_rootHisto)
317  return std::as_const(*m_rootHisto).GetYaxis()->GetXmin();
318  return FLEXHIST()->getYMin();
319 }
320 
321 double TH2F_LW::getYMax() const
322 {
323  if (m_rootHisto)
324  return std::as_const(*m_rootHisto).GetYaxis()->GetXmax();
325  return FLEXHIST()->getYMax();
326 }
327 
328 
329 void TH2F_LW::Fill(const double& x,const double& y)
330 {
332  if (m_rootHisto)
333  m_rootHisto->Fill(x,y);
334  else
335  FLEXHIST()->fill(x,y);
336 }
337 
338 void TH2F_LW::Fill(const double& x,const double& y, const double& w)
339 {
341  if (m_rootHisto)
342  m_rootHisto->Fill(x,y,w);
343  else
344  FLEXHIST()->fill(x,y,w);
345 }
346 
347 unsigned TH2F_LW::GetNbinsX() const
348 {
349  return CALL(GetNbinsX(),getNBinsX());
350 }
351 
352 unsigned TH2F_LW::GetNbinsY() const
353 {
354  return CALL(GetNbinsY(),getNBinsY());
355 }
356 
357 unsigned TH2F_LW::actualFindBinX(const double&x) const
358 {
359  assert(!m_rootHisto);//Should have called the TAxis::FindBin() directly
360  return FLEXHIST()->valueToXBin(x);
361 }
362 
363 unsigned TH2F_LW::actualFindBinY(const double&y) const
364 {
365  assert(!m_rootHisto);//Should have called the TAxis::FindBin() directly
366  return FLEXHIST()->valueToYBin(y);
367 }
368 
369 double TH2F_LW::GetBinContent(unsigned binx, unsigned biny) const
370 {
371  LWCOUNTCALL;return CALL(GetBinContent(binx,biny),getBinContent(binx,biny));
372 }
373 
374 double TH2F_LW::GetBinError(unsigned binx, unsigned biny) const
375 {
376  LWCOUNTCALL;return CALL(GetBinError(binx,biny),getBinError(binx,biny));
377 }
378 
379 void TH2F_LW::SetBinContent(unsigned binx, unsigned biny, const double& c)
380 {
381  LWCOUNTCALL;return CALL(SetBinContent(binx,biny,c),setBinContent(binx,biny,c));
382 }
383 
384 void TH2F_LW::SetBinError(unsigned binx, unsigned biny, const double& e )
385 {
386  LWCOUNTCALL;return CALL(SetBinError(binx,biny,e),setBinError(binx,biny,e));
387 }
388 
389 unsigned TH2F_LW::GetEntries() const
390 {
391  if (m_rootHisto)
392  return static_cast<unsigned>(m_rootHisto->GetEntries());
393  else
394  return FLEXHIST()->getEntries();
395 }
396 
397 void TH2F_LW::SetEntries(unsigned n) { CALL(SetEntries(n),setEntries(n)); }
398 
399 void TH2F_LW::getSums( double& sumW, double& sumW2,
400  double& sumWX,double& sumWX2,
401  double& sumWY, double& sumWY2,
402  double& sumWXY) const
403 {
404  if (m_rootHisto) {
405  sumW = LWHistRootUtils::getSumW(m_rootHisto);
406  sumW2 = LWHistRootUtils::getSumW2(m_rootHisto);
407  sumWX = LWHistRootUtils::getSumWX(m_rootHisto);
408  sumWX2 = LWHistRootUtils::getSumWX2(m_rootHisto);
409  sumWY = LWHistRootUtils::getSumWY(m_rootHisto);
410  sumWY2 = LWHistRootUtils::getSumWY2(m_rootHisto);
411  sumWXY = LWHistRootUtils::getSumWXY(m_rootHisto);
412  } else {
413  sumW = FLEXHIST()->getSumW(); sumW2 = FLEXHIST()->getSumW2();
414  sumWX = FLEXHIST()->getSumWX(); sumWX2 = FLEXHIST()->getSumWX2();
415  sumWY = FLEXHIST()->getSumWY(); sumWY2 = FLEXHIST()->getSumWY2();
416  sumWXY = FLEXHIST()->getSumWXY();
417  }
418 }
419 void TH2F_LW::setSums( const double& sumW,const double&sumW2,const double& sumWX,const double& sumWX2,
420  const double& sumWY, const double& sumWY2,const double& sumWXY)
421 {
422  if (m_rootHisto) {
423  LWHistRootUtils::setSumW(m_rootHisto,sumW);
424  LWHistRootUtils::setSumW2(m_rootHisto,sumW2);
425  LWHistRootUtils::setSumWX(m_rootHisto,sumWX);
426  LWHistRootUtils::setSumWX2(m_rootHisto,sumWX2);
427  LWHistRootUtils::setSumWY(m_rootHisto,sumWY);
428  LWHistRootUtils::setSumWY2(m_rootHisto,sumWY2);
429  LWHistRootUtils::setSumWXY(m_rootHisto,sumWXY);
430  } else {
431  FLEXHIST()->setSums(sumW,sumW2,sumWX,sumWX2,sumWY,sumWY2,sumWXY);
432  }
433 }
434 
436 {
437  if (m_rootHisto) {
438  assert(false);
439  return 0;
440  }
441  return FLEXHIST()->getBinCenterX(bin);
442 }
443 
445 {
446  if (m_rootHisto) {
447  assert(false);
448  return 0;
449  }
450  return FLEXHIST()->getBinCenterY(bin);
451 }
452 
453 double TH2F_LW::Integral() const
454 {
455  return CALL(Integral(),Integral());
456 }
457 
459 {
460  if (m_rootHisto) {
462  return;
463  }
464  m_rootbackend_fastloopbin=UINT_MAX;
465  FLEXHIST()->resetActiveBinLoop();
466 }
467 
468 bool TH2F_LW::getNextActiveBin(unsigned& binx, unsigned& biny, double& content, double& error)
469 {
470  if (m_rootHisto) {
471  unsigned nxp2(GetNbinsX()+2);
472  unsigned n(nxp2*(GetNbinsY()+2));
473  assert(m_rootbackend_fastloopbin<n+1);
478  if (content!=0.0||error!=0.0) {
479  binx = (m_rootbackend_fastloopbin-1) % nxp2;
480  biny = (m_rootbackend_fastloopbin-1-binx) / nxp2;
481  return true;
482  }
483  }
484  return false;
485  }
486  assert(m_rootbackend_fastloopbin==UINT_MAX);
487  return FLEXHIST()->getNextActiveBin(binx,biny,content,error);
488 }
489 
490 void TH2F_LW::GetBinContentAndError(unsigned binx, unsigned biny,double& content, double&error) const
491 {
493  if (m_rootHisto) {
494  content = m_rootHisto->GetBinContent(binx,biny);
495  error = m_rootHisto->GetBinError(binx,biny);
496  } else {
497  FLEXHIST()->getBinContentAndError(binx,biny,content,error);
498  }
499 }
500 
501 void TH2F_LW::SetBinContentAndError(unsigned binx, unsigned biny,const double& content, const double& error)
502 {
504  if (m_rootHisto) {
505  m_rootHisto->SetBinContent(binx,biny,content);
506  m_rootHisto->SetBinError(binx,biny,error);
507  } else {
508  FLEXHIST()->setBinContentAndError(binx,biny,content,error);
509  }
510 }
511 
512 void TH2F_LW::scaleContentsAndErrors( const double& fact )
513 {
514  //Treated like changing unit on the weights.
515  if (m_rootHisto) {
517  double sumW, sumW2, sumWX,sumWX2,sumWY, sumWY2,sumWXY;
518  getSums(sumW, sumW2, sumWX,sumWX2,sumWY, sumWY2,sumWXY);
519  setSums(sumW*fact, sumW2*fact*fact, sumWX*fact,sumWX2*fact,
520  sumWY*fact, sumWY2*fact,sumWXY*fact);
521  return;
522  }
523  FLEXHIST()->scaleContentsAndErrors(fact);
524 }
TH2F_LW::Fill
virtual void Fill(const double &x, const double &y) override
Definition: TH2F_LW.cxx:329
TH2F_LW::SetBinError
virtual void SetBinError(unsigned binx, unsigned biny, const double &) override
Definition: TH2F_LW.cxx:384
LWHistRootUtils::scaleContentsAndErrors
void scaleContentsAndErrors(THX *, const double &fact)
CALL
#define CALL(x, y)
Definition: TH2F_LW.cxx:23
ymin
double ymin
Definition: listroot.cxx:63
TH2F_LW.h
TH2F_LW::actualGetBinCenterX
virtual double actualGetBinCenterX(int bin) const override
Definition: TH2F_LW.cxx:435
TH2F_LW::setSums
virtual void setSums(const double &sumW, const double &sumW2, const double &sumWX, const double &sumWX2, const double &sumWY, const double &sumWY2, const double &sumWXY) override
Definition: TH2F_LW.cxx:419
TH2F_LW::GetNbinsX
virtual unsigned GetNbinsX() const override
Definition: TH2F_LW.cxx:347
TH2F_LW::getNextActiveBin
virtual bool getNextActiveBin(unsigned &binx, unsigned &biny, double &content, double &error) override
Definition: TH2F_LW.cxx:468
TH2F
Definition: rootspy.cxx:420
TH2F_LW::GetEntries
virtual unsigned GetEntries() const override
Definition: TH2F_LW.cxx:389
TH2F_LW::GetBinContent
virtual double GetBinContent(unsigned binx, unsigned biny) const override
Definition: TH2F_LW.cxx:369
TH2F_LW::getROOTHist
TH2F * getROOTHist()
Definition: TH2F_LW.cxx:216
PixelAthClusterMonAlgCfg.ybins
ybins
Definition: PixelAthClusterMonAlgCfg.py:163
TH2F_LW::m_rootHisto
TH2F * m_rootHisto
Definition: TH2F_LW.h:122
bin
Definition: BinsDiffFromStripMedian.h:43
TH2F_LW::SetBinContent
virtual void SetBinContent(unsigned binx, unsigned biny, const double &) override
Definition: TH2F_LW.cxx:379
LWHist::ownsROOTHisto
bool ownsROOTHisto() const
Definition: LWHist.h:74
TH2F_LW::SetEntries
virtual void SetEntries(unsigned) override
Definition: TH2F_LW.cxx:397
TH2F_LW::clear
virtual void clear() override
Definition: TH2F_LW.cxx:230
LWREPORT
#define LWREPORT
Definition: TH2F_LW.cxx:29
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
x
#define x
TH2F_LW::getYMin
virtual double getYMin() const override
Definition: TH2F_LW.cxx:314
grepfile.content
string content
Definition: grepfile.py:56
LWHist::usingROOTBackend
bool usingROOTBackend() const
Definition: LWHist.h:73
TH2F_LW::SetBinContentAndError
virtual void SetBinContentAndError(unsigned binx, unsigned biny, const double &content, const double &error) override
Definition: TH2F_LW.cxx:501
TH2F_LW::getSums
virtual void getSums(double &sumW, double &sumW2, double &sumWX, double &sumWX2, double &sumWY, double &sumWY2, double &sumWXY) const override
Definition: TH2F_LW.cxx:399
Flex2DHisto.h
MP_NEW
#define MP_NEW(Class)
Definition: LWPools.h:26
Flex2DHisto::create
static Flex2DHisto * create(unsigned nbinsx, const double &xmin, const double &xmax, unsigned nbinsy, const double &ymin, const double &ymax)
xmin
double xmin
Definition: listroot.cxx:60
TH2F_LW::GetBinContentAndError
virtual void GetBinContentAndError(unsigned binx, unsigned biny, double &content, double &error) const override
Definition: TH2F_LW.cxx:490
beamspotman.n
n
Definition: beamspotman.py:731
extractSporadic.h
list h
Definition: extractSporadic.py:97
TH2F_LW::getVarBinsY
const float * getVarBinsY() const
Definition: TH2F_LW.cxx:294
covarianceTool.title
title
Definition: covarianceTool.py:542
Flex2DHisto::destroy
static void destroy(Flex2DHisto *)
TH2F_LW::getVarBinsX
const float * getVarBinsX() const
Definition: TH2F_LW.cxx:288
TH2F_LW::resetActiveBinLoop
virtual void resetActiveBinLoop() override
Definition: TH2F_LW.cxx:458
LWHist::GetName
const char * GetName() const
Definition: LWHist.cxx:366
LWHistControls::hasROOTBackend
static bool hasROOTBackend()
Definition: LWHistControls.cxx:47
TH2F::GetBinContent
double GetBinContent(int) const
Definition: rootspy.cxx:425
LWHist2D
Definition: LWHist2D.h:25
TH2F_LW::getROOTHistBaseNoAlloc
virtual const TH1 * getROOTHistBaseNoAlloc() const override
Definition: TH2F_LW.cxx:207
TH2F::SetBinContent
void SetBinContent(int, double)
Definition: rootspy.cxx:426
LWHistControls::cleanupOnGetROOT
static bool cleanupOnGetROOT()
Definition: LWHistControls.cxx:35
TH2F_LW::GetNbinsY
virtual unsigned GetNbinsY() const override
Definition: TH2F_LW.cxx:352
TH2F_LW::GetBinError
virtual double GetBinError(unsigned binx, unsigned biny) const override
Definition: TH2F_LW.cxx:374
TH2F_LW::Integral
virtual double Integral() const override
Definition: TH2F_LW.cxx:453
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
TH2F_LW::getYMax
virtual double getYMax() const override
Definition: TH2F_LW.cxx:321
LWCOUNTCALL
#define LWCOUNTCALL
Definition: TH2F_LW.cxx:28
TH2F_LW::create
static TH2F_LW * create(const char *name, const char *title, unsigned nbinsx, const double &xmin, const double &xmax, unsigned nbinsy, const double &ymin, const double &ymax)
Definition: TH2F_LW.cxx:33
LWHist::clear
virtual void clear()
Definition: LWHist.cxx:474
TH2F_LW::m_rootbackend_fastloopbin
unsigned m_rootbackend_fastloopbin
Definition: TH2F_LW.h:123
TH2F_LW::TH2F_LW
TH2F_LW(const char *name, const char *title, unsigned nbinsx, const double &xmin, const double &xmax, unsigned nbinsy, const double &ymin, const double &ymax, bool rootbackend)
Definition: TH2F_LW.cxx:113
TH2F_LW::actualFindBinX
virtual unsigned actualFindBinX(const double &) const override
Definition: TH2F_LW.cxx:357
LWHistRootUtils::deleteRootHisto
void deleteRootHisto(THX *rootHist, bool &sumW2IsFromPools)
TH2F_LW::m_ownsRootSumw2
bool m_ownsRootSumw2
Definition: TH2F_LW.h:124
LArCellBinning.xbins
int xbins
Definition: LArCellBinning.py:163
FLEXHIST
#define FLEXHIST()
Definition: TH2F_LW.cxx:22
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
TH2F_LW::actualFindBinY
virtual unsigned actualFindBinY(const double &) const override
Definition: TH2F_LW.cxx:363
y
#define y
h
TH2F_LW::Reset
virtual void Reset() override
Definition: TH2F_LW.cxx:250
TH1
Definition: rootspy.cxx:268
TH2F_LW::SetBins
virtual void SetBins(unsigned nbinsx, double xmin, double xmax, unsigned nbinsy, double ymin, double ymax) override
Definition: TH2F_LW.cxx:274
xmax
double xmax
Definition: listroot.cxx:61
TH2F_LW::scaleContentsAndErrors
virtual void scaleContentsAndErrors(const double &fact) override
Definition: TH2F_LW.cxx:512
LWHistRootUtils.h
TH2F_LW::~TH2F_LW
virtual ~TH2F_LW()
Definition: TH2F_LW.cxx:198
TH2F_LW::getXMax
virtual double getXMax() const override
Definition: TH2F_LW.cxx:307
TH2F_LW
Definition: TH2F_LW.h:23
LWHistControls.h
TH2F_LW::clearKeptROOTHist
virtual void clearKeptROOTHist() override
Definition: TH2F_LW.cxx:239
TH2F_LW::getXMin
virtual double getXMin() const override
Definition: TH2F_LW.cxx:300
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
TH2F_LW::getROOTHistBase
virtual TH1 * getROOTHistBase() override
Definition: TH2F_LW.cxx:215
error
Definition: IImpactPoint3dEstimator.h:70
python.compressB64.c
def c
Definition: compressB64.py:93
TH2F_LW::actualGetBinCenterY
virtual double actualGetBinCenterY(int bin) const override
Definition: TH2F_LW.cxx:444
LWHist2D::apply
virtual bool apply(TH1 *) const
Definition: LWHist2D.cxx:20
ymax
double ymax
Definition: listroot.cxx:64
TH2F_LW::m_flexHisto
void * m_flexHisto
Definition: TH2F_LW.h:121