ATLAS Offline Software
LWHistRootUtils.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // //
7 // Header file for class LWHistRootUtils //
8 // //
9 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
10 // Initial version: March 2009 //
11 // //
13 
14 #ifndef LWHISTROOTUTILS_H
15 #define LWHISTROOTUTILS_H
16 
17 #include "TH1.h"
18 #include "TH2.h"
19 #include "TProfile.h"
20 #include "TProfile2D.h"
21 #include "LWHists/TH2F_LW.h"
22 #include "LWHists/TH2D_LW.h"
23 #include "LWHists/TH2I_LW.h"
24 #include "LWHists/LWHist1D.h"
25 #include "LWHists/TProfile_LW.h"
26 #include "LWHists/TProfile2D_LW.h"
27 
28 #include "Flex1DHisto.h"
29 #include "Flex1DProfileHisto.h"
30 #include "Flex2DProfileHisto.h"
31 
32 #if (__GNUC__ >= 6) && !defined(__clang__)
33 # define LWHISTS_NO_SANITIZE_UNDEFINED [[gnu::no_sanitize_undefined]]
34 #else
35 # define LWHISTS_NO_SANITIZE_UNDEFINED
36 #endif
37 
38 class LWHistInt {
39  //Trick to avoid exposing methods we don't really want to support in
40  //the public interface:
41  public:
42  template<class TLW> static const float* getVarBins(const TLW*h) { return h->getVarBins(); }
43  template<class TLW> static float* getVarBins(TLW*h) { return h->getVarBins(); }
44  template<class TLW> static const float* getVarBinsX(TLW*h) { return h->getVarBinsX(); }
45  template<class TLW> static const float* getVarBinsY(TLW*h) { return h->getVarBinsY(); }
46 };
47 
48 namespace LWHistRootUtils {
49  //Tricks to get the weight-sum's (GetStats(..) can be unreliable).
50  class TH1_FieldsAccess : public TH1 {
51  public:
52  double& getSumW() { return fTsumw; }
53  double& getSumW2() { return fTsumw2; }
54  double& getSumWX() { return fTsumwx; }
55  double& getSumWX2() { return fTsumwx2; }
56  TArrayD& getSumw2Array() { return fSumw2; }
57  double getSumW() const { return fTsumw; }
58  double getSumW2() const { return fTsumw2; }
59  double getSumWX() const { return fTsumwx; }
60  double getSumWX2() const { return fTsumwx2; }
61  const TArrayD& getSumw2Array() const { return fSumw2; }
62  };
63  class TH2_FieldsAccess : public TH2 {
64  public:
65  double& getSumWY() { return fTsumwy; }
66  double& getSumWY2() { return fTsumwy2; }
67  double& getSumWXY() { return fTsumwxy; }
68  double getSumWY() const { return fTsumwy; }
69  double getSumWY2() const { return fTsumwy2; }
70  double getSumWXY() const { return fTsumwxy; }
71  };
73  public:
74  double& getSumWY() { return fTsumwy; }
75  double& getSumWY2() { return fTsumwy2; }
76  TArrayD& getBinEntriesArray() { return fBinEntries; }
77  double getSumWY() const { return fTsumwy; }
78  double getSumWY2() const { return fTsumwy2; }
79  const TArrayD& getBinEntriesArray() const { return fBinEntries; }
80  };
82  public:
83  double& getSumWZ() { return fTsumwz; }
84  double& getSumWZ2() { return fTsumwz2; }
85  TArrayD& getBinEntriesArray() { return fBinEntries; }
86  double getSumWZ() const { return fTsumwz; }
87  double getSumWZ2() const { return fTsumwz2; }
88  const TArrayD& getBinEntriesArray() const { return fBinEntries; }
89  };
90 
91  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h) { return static_cast<TH1_FieldsAccess*>(h)->getSumW(); }
92  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h) { return static_cast<TH1_FieldsAccess*>(h)->getSumW2(); }
93  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h) { return static_cast<TH1_FieldsAccess*>(h)->getSumWX(); }
94  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h) { return static_cast<TH1_FieldsAccess*>(h)->getSumWX2(); }
95  inline double getSumWY LWHISTS_NO_SANITIZE_UNDEFINED (TH2*h) { return static_cast<TH2_FieldsAccess*>(h)->getSumWY(); }
96  inline double getSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (TH2*h) { return static_cast<TH2_FieldsAccess*>(h)->getSumWY2(); }
97  inline double getSumWXY LWHISTS_NO_SANITIZE_UNDEFINED (TH2*h) { return static_cast<TH2_FieldsAccess*>(h)->getSumWXY(); }
98  inline TArrayD& getSumw2Array LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h) { return static_cast<TH1_FieldsAccess*>(h)->getSumw2Array(); }
99 
100  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (const TH1*h) { return static_cast<const TH1_FieldsAccess*>(h)->getSumW(); }
101  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (const TH1I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW(); }
102  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (const TH2I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW(); }
103  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (const TH1D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW(); }
104  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (const TH2D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW(); }
105  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (const TH1F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW(); }
106  inline double getSumW LWHISTS_NO_SANITIZE_UNDEFINED (const TH2F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW(); }
107  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1*h) { return static_cast<const TH1_FieldsAccess*>(h)->getSumW2(); }
108  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW2(); }
109  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW2(); }
110  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW2(); }
111  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW2(); }
112  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW2(); }
113  inline double getSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumW2(); }
114  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (const TH1*h) { return static_cast<const TH1_FieldsAccess*>(h)->getSumWX(); }
115  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (const TH1I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX(); }
116  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (const TH2I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX(); }
117  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (const TH1D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX(); }
118  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (const TH2D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX(); }
119  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (const TH1F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX(); }
120  inline double getSumWX LWHISTS_NO_SANITIZE_UNDEFINED (const TH2F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX(); }
121  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1*h) { return static_cast<const TH1_FieldsAccess*>(h)->getSumWX2(); }
122  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX2(); }
123  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2I*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX2(); }
124  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX2(); }
125  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2D*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX2(); }
126  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH1F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX2(); }
127  inline double getSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2F*h) { return static_cast<const TH1_FieldsAccess*>(static_cast<const TH1*>(h))->getSumWX2(); }
128  inline double getSumWY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2*h) { return static_cast<const TH2_FieldsAccess*>(h)->getSumWY(); }
129  inline double getSumWY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2I*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWY(); }
130  inline double getSumWY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2D*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWY(); }
131  inline double getSumWY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2F*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWY(); }
132  inline double getSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2*h) { return static_cast<const TH2_FieldsAccess*>(h)->getSumWY2(); }
133  inline double getSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2I*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWY2(); }
134  inline double getSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2D*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWY2(); }
135  inline double getSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (const TH2F*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWY2(); }
136  inline double getSumWXY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2*h) { return static_cast<const TH2_FieldsAccess*>(h)->getSumWXY(); }
137  inline double getSumWXY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2I*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWXY(); }
138  inline double getSumWXY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2D*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWXY(); }
139  inline double getSumWXY LWHISTS_NO_SANITIZE_UNDEFINED (const TH2F*h) { return static_cast<const TH2_FieldsAccess*>(static_cast<const TH2*>(h))->getSumWXY(); }
140  inline const TArrayD& getSumw2Array LWHISTS_NO_SANITIZE_UNDEFINED (const TH1*h) { return static_cast<const TH1_FieldsAccess*>(h)->getSumw2Array(); }
141 
142  inline void setSumW LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h,const double&s) { static_cast<TH1_FieldsAccess*>(h)->getSumW() = s; }
143  inline void setSumW2 LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h,const double&s) { static_cast<TH1_FieldsAccess*>(h)->getSumW2() = s; }
144  inline void setSumWX LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h,const double&s) { static_cast<TH1_FieldsAccess*>(h)->getSumWX() = s; }
145  inline void setSumWX2 LWHISTS_NO_SANITIZE_UNDEFINED (TH1*h,const double&s) { static_cast<TH1_FieldsAccess*>(h)->getSumWX2() = s; }
146  inline void setSumWY LWHISTS_NO_SANITIZE_UNDEFINED (TH2*h,const double&s) { static_cast<TH2_FieldsAccess*>(h)->getSumWY() = s; }
147  inline void setSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (TH2*h,const double&s) { static_cast<TH2_FieldsAccess*>(h)->getSumWY2() = s; }
148  inline void setSumWXY LWHISTS_NO_SANITIZE_UNDEFINED (TH2*h,const double&s) { static_cast<TH2_FieldsAccess*>(h)->getSumWXY() = s; }
149 
150  inline double getSumWY LWHISTS_NO_SANITIZE_UNDEFINED (const TProfile*h) { return static_cast<const TProfile_FieldsAccess*>(h)->getSumWY(); }
151  inline double getSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (const TProfile*h) { return static_cast<const TProfile_FieldsAccess*>(h)->getSumWY2(); }
152  inline void setSumWY LWHISTS_NO_SANITIZE_UNDEFINED (TProfile*h,const double&s) { static_cast<TProfile_FieldsAccess*>(h)->getSumWY() = s; }
153  inline void setSumWY2 LWHISTS_NO_SANITIZE_UNDEFINED (TProfile*h,const double&s) { static_cast<TProfile_FieldsAccess*>(h)->getSumWY2() = s; }
154  inline TArrayD& getBinEntriesArray LWHISTS_NO_SANITIZE_UNDEFINED (TProfile*h) { return static_cast<TProfile_FieldsAccess*>(h)->getBinEntriesArray(); }
155 
156  inline double getSumWZ LWHISTS_NO_SANITIZE_UNDEFINED (const TProfile2D*h) { return static_cast<const TProfile2D_FieldsAccess*>(h)->getSumWZ(); }
157  inline double getSumWZ2 LWHISTS_NO_SANITIZE_UNDEFINED (const TProfile2D*h) { return static_cast<const TProfile2D_FieldsAccess*>(h)->getSumWZ2(); }
158  inline void setSumWZ LWHISTS_NO_SANITIZE_UNDEFINED (TProfile2D*h,const double&s) { static_cast<TProfile2D_FieldsAccess*>(h)->getSumWZ() = s; }
159  inline void setSumWZ2 LWHISTS_NO_SANITIZE_UNDEFINED (TProfile2D*h,const double&s) { static_cast<TProfile2D_FieldsAccess*>(h)->getSumWZ2() = s; }
160  inline TArrayD& getBinEntriesArray LWHISTS_NO_SANITIZE_UNDEFINED (TProfile2D*h) { return static_cast<TProfile2D_FieldsAccess*>(h)->getBinEntriesArray(); }
161 
162  template <class T, class TH1X_LW, class TH1X, class TFlexHist>
163  TH1X * createRootHisto(TH1X_LW* lwhist, TFlexHist * flexHist, bool& tookSumW2FromPools);
164 
167 
168  template <class THX>
169  inline void deleteRootHisto(THX*rootHist, bool& sumW2IsFromPools);
170  template <class TProfileX>
171  void deleteProfileHisto(TProfileX*rootHist);
172 
173  template <class THX>
174  void scaleContentsAndErrors( THX*, const double& fact );//NB: Triggers sumw2!
175 }
176 
177 #include "LWHistRootUtils.icc"
178 
179 #endif
LWHistRootUtils::scaleContentsAndErrors
void scaleContentsAndErrors(THX *, const double &fact)
LWHistRootUtils::TProfile_FieldsAccess::getSumWY
double & getSumWY()
Definition: LWHistRootUtils.h:74
TH2F_LW.h
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
LWHistRootUtils::TH2_FieldsAccess::getSumWY
double & getSumWY()
Definition: LWHistRootUtils.h:65
Flex1DHisto.h
LWHistRootUtils::TH1_FieldsAccess
Definition: LWHistRootUtils.h:50
LWHistRootUtils::TH2_FieldsAccess
Definition: LWHistRootUtils.h:63
TH1I
Definition: rootspy.cxx:332
TH2F
Definition: rootspy.cxx:420
TH2D_LW.h
LWHistRootUtils
Definition: LWHistRootUtils.h:48
TProfile2D
Definition: rootspy.cxx:531
TH1D
Definition: rootspy.cxx:342
LWHist1D.h
LWHistRootUtils::TH1_FieldsAccess::getSumw2Array
const TArrayD & getSumw2Array() const
Definition: LWHistRootUtils.h:61
TProfile_LW.h
LWHistRootUtils::TH1_FieldsAccess::getSumWX
double & getSumWX()
Definition: LWHistRootUtils.h:54
LWHistRootUtils::createRootHisto
TH1X * createRootHisto(TH1X_LW *lwhist, TFlexHist *flexHist, bool &tookSumW2FromPools)
LWHistRootUtils::TProfile_FieldsAccess::getBinEntriesArray
TArrayD & getBinEntriesArray()
Definition: LWHistRootUtils.h:76
TProfile_LW
Definition: TProfile_LW.h:24
LWHistRootUtils::createRootProfileHisto
TProfile * createRootProfileHisto(TProfile_LW *lwhist, Flex1DProfileHisto *flexHist)
LWHistRootUtils::TH1_FieldsAccess::getSumWX2
double & getSumWX2()
Definition: LWHistRootUtils.h:55
LWHistRootUtils::TH1_FieldsAccess::getSumW
double getSumW() const
Definition: LWHistRootUtils.h:57
LWHistInt::getVarBins
static float * getVarBins(TLW *h)
Definition: LWHistRootUtils.h:43
LWHistRootUtils::TProfile2D_FieldsAccess
Definition: LWHistRootUtils.h:81
LWHistRootUtils::TProfile_FieldsAccess::getSumWY2
double & getSumWY2()
Definition: LWHistRootUtils.h:75
LWHistRootUtils::TH2_FieldsAccess::getSumWY2
double & getSumWY2()
Definition: LWHistRootUtils.h:66
LWHistRootUtils::TH2_FieldsAccess::getSumWXY
double getSumWXY() const
Definition: LWHistRootUtils.h:70
LWHistInt::getVarBinsX
static const float * getVarBinsX(TLW *h)
Definition: LWHistRootUtils.h:44
LWHistRootUtils::TH2_FieldsAccess::getSumWY
double getSumWY() const
Definition: LWHistRootUtils.h:68
LWHistRootUtils::TProfile_FieldsAccess
Definition: LWHistRootUtils.h:72
LWHistInt
Definition: LWHistRootUtils.h:38
LWHistRootUtils::TH2_FieldsAccess::getSumWXY
double & getSumWXY()
Definition: LWHistRootUtils.h:67
Flex2DProfileHisto
Definition: Flex2DProfileHisto.h:30
extractSporadic.h
list h
Definition: extractSporadic.py:97
TH2I
Definition: rootspy.cxx:410
LWHistRootUtils::TProfile_FieldsAccess::getSumWY2
double getSumWY2() const
Definition: LWHistRootUtils.h:78
TH2I_LW.h
LWHistRootUtils::TProfile2D_FieldsAccess::getSumWZ
double getSumWZ() const
Definition: LWHistRootUtils.h:86
TH2D
Definition: rootspy.cxx:430
TH2
Definition: rootspy.cxx:373
LWHistRootUtils::TProfile2D_FieldsAccess::getBinEntriesArray
const TArrayD & getBinEntriesArray() const
Definition: LWHistRootUtils.h:88
Flex1DProfileHisto.h
LWHistRootUtils::TProfile_FieldsAccess::getSumWY
double getSumWY() const
Definition: LWHistRootUtils.h:77
LWHistInt::getVarBins
static const float * getVarBins(const TLW *h)
Definition: LWHistRootUtils.h:42
LWHistRootUtils::TH1_FieldsAccess::getSumW
double & getSumW()
Definition: LWHistRootUtils.h:52
LWHistRootUtils::LWHISTS_NO_SANITIZE_UNDEFINED
double getSumW LWHISTS_NO_SANITIZE_UNDEFINED(TH1 *h)
Definition: LWHistRootUtils.h:91
TProfile2D_LW.h
TProfile
Definition: rootspy.cxx:515
LWHistRootUtils::TProfile_FieldsAccess::getBinEntriesArray
const TArrayD & getBinEntriesArray() const
Definition: LWHistRootUtils.h:79
TProfile2D_LW
Definition: TProfile2D_LW.h:24
LWHistRootUtils::deleteRootHisto
void deleteRootHisto(THX *rootHist, bool &sumW2IsFromPools)
LWHistRootUtils::TProfile2D_FieldsAccess::getSumWZ2
double getSumWZ2() const
Definition: LWHistRootUtils.h:87
LWHistRootUtils::TProfile2D_FieldsAccess::getSumWZ
double & getSumWZ()
Definition: LWHistRootUtils.h:83
LWHistRootUtils::TProfile2D_FieldsAccess::getSumWZ2
double & getSumWZ2()
Definition: LWHistRootUtils.h:84
LWHistRootUtils::TH1_FieldsAccess::getSumw2Array
TArrayD & getSumw2Array()
Definition: LWHistRootUtils.h:56
LWHistRootUtils::TH1_FieldsAccess::getSumWX2
double getSumWX2() const
Definition: LWHistRootUtils.h:60
LWHistRootUtils.icc
h
TH1F
Definition: rootspy.cxx:320
TH1
Definition: rootspy.cxx:268
LWHistRootUtils::TProfile2D_FieldsAccess::getBinEntriesArray
TArrayD & getBinEntriesArray()
Definition: LWHistRootUtils.h:85
Flex1DProfileHisto
Definition: Flex1DProfileHisto.h:30
Flex2DProfileHisto.h
LWHistRootUtils::TH2_FieldsAccess::getSumWY2
double getSumWY2() const
Definition: LWHistRootUtils.h:69
LWHistInt::getVarBinsY
static const float * getVarBinsY(TLW *h)
Definition: LWHistRootUtils.h:45
LWHistRootUtils::deleteProfileHisto
void deleteProfileHisto(TProfileX *rootHist)
LWHistRootUtils::createRoot2DProfileHisto
TProfile2D * createRoot2DProfileHisto(TProfile2D_LW *lwhist, Flex2DProfileHisto *flexHist)
LWHistRootUtils::TH1_FieldsAccess::getSumWX
double getSumWX() const
Definition: LWHistRootUtils.h:59
LWHistRootUtils::TH1_FieldsAccess::getSumW2
double getSumW2() const
Definition: LWHistRootUtils.h:58
LWHistRootUtils::TH1_FieldsAccess::getSumW2
double & getSumW2()
Definition: LWHistRootUtils.h:53