| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
Gaudi::Histogram2D Class Reference

AIDA implementation for 2 D histograms using ROOT THD2. More...

`#include <src/HistogramSvc/H2D.h>`

Inheritance diagram for Gaudi::Histogram2D:
[legend]
Collaboration diagram for Gaudi::Histogram2D:
[legend]

## Public Member Functions
| Histogram2D ()
| Standard Constructor. More...
| Histogram2D (TH2D *rep)
| Standard initializing Constructor with TH2D representation to be adopted. More...
virtual | ~Histogram2D ()=default
| Destructor. More...
bool | fill (double x, double y, double weight=1.)
| Fill the Histogram2D with a value and the. More...
virtual bool | setBinContents (int binIndexX, int binIndexY, int entries, double height, double error, double centreX, double centreY)
| Fast filling method for a given bin. It can be also the over/underflow bin. More...
bool | setRms (double rmsX, double rmsY)
| Sets the rms of the histogram. More...
bool | reset ()
void | copyFromAida (const IHistogram2D &h)
| Create new histogram from any AIDA based histogram. More...
virtual const CLID & | clID () const
| Retrieve reference to class defininition identifier. More...
Public Member Functions inherited from DataObject
| DataObject ()
| Standard Constructor. More...
| DataObject (const DataObject &rhs)
| Copy Constructor. More...
DataObject & | operator= (const DataObject &rhs)
| Assignment Operator. More...
| DataObject (DataObject &&rhs)
| Move Constructor. More...
DataObject & | operator= (DataObject &&rhs)
| Move Assignment Operator. More...
virtual | ~DataObject ()
| Standard Destructor. More...
virtual unsigned long | addRef ()
| Add reference to object. More...
virtual unsigned long | release ()
| release reference to object More...
const std::string & | name () const
| Retreive DataObject name. It is the name when registered in the store. More...
virtual StatusCode | update ()
| Provide empty placeholder for internal object reconfiguration callback. More...
void | setRegistry (IRegistry *pRegistry)
| Set pointer to Registry. More...
IRegistry * | registry () const
| Get pointer to Registry. More...
LinkManager * | linkMgr () const
| Retrieve Link manager. More...
unsigned char | version () const
| Retrieve version number of this object representation. More...
void | setVersion (unsigned char vsn)
| Set version number of this object representation. More...
unsigned long | refCount () const
| Return the refcount. More...
virtual std::ostream & | fillStream (std::ostream &s) const
| Fill the output stream (ASCII) More...
Public Member Functions inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
| Generic2D ()=default
| ~Generic2D () override=default
| Destructor. More...
TObject * | representation () const override
| ROOT object implementation. More...
void | adoptRepresentation (TObject *rep) override
| Adopt ROOT histogram representation. More...
std::string | title () const override
| Get the title of the object. More...
bool | setTitle (const std::string &title) override
| Set the title of the object. More...
std::string | name () const
| object name More...
bool | setName (const std::string &newName)
| Set the name of the object. More...
AIDA::IAnnotation & | annotation () override
| Access annotation object. More...
const AIDA::IAnnotation & | annotation () const override
| Access annotation object (cons) More...
const AIDA::IAxis & | xAxis () const override
| Return the X axis. More...
const AIDA::IAxis & | yAxis () const override
| Return the Y axis. More...
virtual int | rIndexX (int index) const
| operator methods More...
virtual int | rIndexY (int index) const
| operator methods More...
int | entries () const override
| Get the number or all the entries. More...
int | allEntries () const override
| Get the number or all the entries, both in range and underflow/overflow bins of the IProfile. More...
int | extraEntries () const override
| Get the number of entries in the underflow and overflow bins. More...
double | sumBinHeights () const override
| Get the sum of in range bin heights in the IProfile. More...
double | sumAllBinHeights () const override
| Get the sum of all the bins heights (including underflow and overflow bin). More...
double | sumExtraBinHeights () const override
| Get the sum of the underflow and overflow bin height. More...
double | minBinHeight () const override
| Get the minimum height of the in-range bins. More...
double | maxBinHeight () const override
| Get the maximum height of the in-range bins. More...
double | binMeanX (int indexX, int indexY) const override
| The weighted mean along x of a given bin. More...
double | binMeanY (int indexX, int indexY) const override
| The weighted mean along y of a given bin. More...
int | binEntries (int indexX, int indexY) const override
| The number of entries (ie the number of times fill was called for this bin). More...
int | binEntriesX (int indexX) const override
| Equivalent to `projectionX().binEntries(indexX)`. More...
int | binEntriesY (int indexY) const override
| Equivalent to `projectionY().binEntries(indexY)`. More...
double | binHeight (int indexX, int indexY) const override
| Total height of the corresponding bin (ie the sum of the weights in this bin). More...
double | binHeightX (int indexX) const override
| Equivalent to `projectionX().binHeight(indexX)`. More...
double | binHeightY (int indexY) const override
| Equivalent to `projectionY().binHeight(indexY)`. More...
double | binError (int indexX, int indexY) const override
| The error on this bin. More...
virtual double | binRms (int indexX, int indexY) const
| The spread (RMS) of this bin. More...
double | meanX () const override
| Returns the mean of the profile, as calculated on filling-time projected on the X axis. More...
double | meanY () const override
| Returns the mean of the profile, as calculated on filling-time projected on the Y axis. More...
double | rmsX () const override
| Returns the rms of the profile as calculated on filling-time projected on the X axis. More...
double | rmsY () const override
| Returns the rms of the profile as calculated on filling-time projected on the Y axis. More...
int | coordToIndexX (double coordX) const override
| Convenience method, equivalent to `xAxis().coordToIndex(coord)`. More...
int | coordToIndexY (double coordY) const override
| Convenience method, equivalent to `yAxis().coordToIndex(coord)`. More...
virtual double | equivalentBinEntries () const
| Number of equivalent entries, i.e. `SUM[ weight ] ^ 2 / SUM[ weight^2 ]` More...
virtual bool | scale (double scaleFactor)
| Scale the weights and the errors of all the IHistogram's bins (in-range and out-of-range ones) by a given scale factor. More...
bool | add (const INTERFACE &h) override
| Modifies this profile by adding the contents of profile to it. More...
bool | reset () override
void * | cast (const std::string &className) const
| Introspection method. More...
const std::string & | userLevelClassType () const
| The AIDA user-level unterface leaf class type. More...
int | dimension () const override
| Get the Histogram's dimension. More...
std::ostream & | print (std::ostream &s) const override
| Print (ASCII) the histogram into the output stream. More...
std::ostream & | write (std::ostream &s) const override
| Write (ASCII) the histogram table into the output stream. More...
int | write (const char *file_name) const override
| Write (ASCII) the histogram table into a file. More...
template<>
void * | cast (const std::string &className) const
template<>
int | binEntries (int indexX, int indexY) const
template<>
void | adoptRepresentation (TObject *rep)
| Adopt ROOT histogram representation. More...
template<>
void * | cast (const std::string &className) const
template<>
int | binEntries (int idX, int idY) const
template<>
void | adoptRepresentation (TObject *rep)
| Adopt ROOT histogram representation. More...
Public Member Functions inherited from Gaudi::HistogramBase
virtual | ~HistogramBase ()=default

## Static Public Member Functions
static const CLID & | classID ()
Static Public Member Functions inherited from DataObject
static const CLID & | classID ()
| Retrieve reference to class definition structure (static access) More...

## Protected Attributes
double | m_sumwx = 0
double | m_sumwy = 0
Protected Attributes inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
Axis | m_xAxis
| X axis member. More...
Axis | m_yAxis
| Y axis member. More...
AIDA::Annotation | m_annotation
| Object annotations. More...
std::unique_ptr< IMPLEMENTATION > | m_rep
| Reference to underlying implementation. More...
std::string | m_classType
| class type More...
int | m_sumEntries = 0
| cache sumEntries (allEntries) when setting contents since Root can't compute by himself More...

## Additional Inherited Members
Public Types inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
typedef Generic2D< INTERFACE, IMPLEMENTATION > | Base
Protected Member Functions inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
| Generic2D (IMPLEMENTATION *p)
| constructor More...

## Detailed Description

AIDA implementation for 2 D histograms using ROOT THD2.

Author
  M.Frank

Definition at line 20 of file H2D.h.

## Constructor & Destructor Documentation

Gaudi::Histogram2D::Histogram2D | ( |  | ) |

Standard Constructor.

Definition at line 116 of file H2D.cpp.

117 : Base( new TH2D() )
118 {
119 m_rep->Sumw2();
120 m_sumwx = m_sumwy = 0;
121 setTitle("");
122 m_rep->SetDirectory(nullptr);
123 }
Gaudi::Generic2D::Base
Generic2D< INTERFACE, IMPLEMENTATION > Base
Definition: Generic2D.h:37
Gaudi::Generic2D::setTitle
bool setTitle(const std::string &title) override
Set the title of the object.
Definition: Generic2D.h:158
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:46
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:45

Gaudi::Histogram2D::Histogram2D | ( | TH2D * | rep | ) |

Standard initializing Constructor with TH2D representation to be adopted.

Definition at line 125 of file H2D.cpp.

126 {
127 adoptRepresentation(rep);
128 m_sumwx = m_sumwy = 0;
129 m_rep->SetDirectory(nullptr);
130 }
Gaudi::Generic2D::adoptRepresentation
void adoptRepresentation(TObject *rep) override
Adopt ROOT histogram representation.
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:46
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:45

virtual Gaudi::Histogram2D::~Histogram2D | ( |  | ) |
| virtual default

Destructor.

## Member Function Documentation

static const CLID& Gaudi::Histogram2D::classID | ( |  | ) |
| inline static

Definition at line 42 of file H2D.h.

42 { return CLID_H2D; }

virtual const CLID& Gaudi::Histogram2D::clID | ( |  | ) | const
| inline virtual

Retrieve reference to class defininition identifier.

Reimplemented from DataObject.

Definition at line 41 of file H2D.h.

41 { return classID(); }
Gaudi::Histogram2D::classID
static const CLID & classID()
Definition: H2D.h:42

void Gaudi::Histogram2D::copyFromAida | ( | const IHistogram2D & | h | ) |

Create new histogram from any AIDA based histogram.

Definition at line 181 of file H2D.cpp.

181 {
182 // implement here the copy
183 const char* tit = h.title().c_str();
184 if (h.xAxis().isFixedBinning() && h.yAxis().isFixedBinning() )
185 m_rep.reset( new TH2D(tit,tit,
186 h.xAxis().bins(),h.xAxis().lowerEdge(),h.xAxis().upperEdge(),
187 h.yAxis().bins(),h.yAxis().lowerEdge(),h.yAxis().upperEdge() ) );
188 else {
189 Edges eX, eY;
190 for (int i =0; i < h.xAxis().bins(); ++i)
191 eX.push_back(h.xAxis().binLowerEdge(i));
192 // add also upperedges at the end
193 eX.push_back(h.xAxis().upperEdge() );
194 for (int i =0; i < h.yAxis().bins(); ++i)
195 eY.push_back(h.yAxis().binLowerEdge(i));
196 // add also upperedges at the end
197 eY.push_back(h.yAxis().upperEdge() );
198 m_rep.reset( new TH2D(tit,tit,eX.size()-1,&eX.front(),eY.size()-1,&eY.front()) );
199 }
200 m_xAxis.initialize(m_rep->GetXaxis(),true);
201 m_yAxis.initialize(m_rep->GetYaxis(),true);
202 m_rep->Sumw2();
203 m_sumEntries = 0;
204 m_sumwx = 0;
205 m_sumwy = 0;
206 // statistics
207 double sumw = h.sumBinHeights();
208 double sumw2 = 0;
209 if (h.equivalentBinEntries() != 0)
210 sumw2 = ( sumw * sumw ) /h.equivalentBinEntries();
211 double sumwx = h.meanX()*h.sumBinHeights();
212 double sumwx2 = (h.meanX()*h.meanX() + h.rmsX()*h.rmsX() )*h.sumBinHeights();
213 double sumwy = h.meanY()*h.sumBinHeights();
214 double sumwy2 = (h.meanY()*h.meanY() + h.rmsY()*h.rmsY() )*h.sumBinHeights();
215 double sumwxy = 0;
216
217 // copy the contents in (AIDA underflow/overflow are -2,-1)
218 for (int i=-2; i < xAxis().bins(); ++i) {
219 for (int j=-2; j < yAxis().bins(); ++j) {
220 // root binning starts from one !
221 m_rep->SetBinContent(rIndexX(i), rIndexY(j), h.binHeight(i,j) );
222 m_rep->SetBinError(rIndexX(i), rIndexY(j), h.binError(i,j) );
223 // calculate statistics
224 if ( i >= 0 && j >= 0) {
225 sumwxy += h.binHeight(i,j)*h.binMeanX(i,j)*h.binMeanY(i,j);
226 }
227 }
228 }
229 // need to do set entries after setting contents otherwise root will recalculate them
230 // taking into account how many time SetBinContents() has been called
231 m_rep->SetEntries(h.allEntries());
232 // fill stat vector
233 std::array<double,11> stat = {{ sumw, sumw2,
234 sumwx, sumwx2,
235 sumwy, sumwy2,
236 sumwxy }};
237 m_rep->PutStats(stat.data());
238 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself ...
Definition: Generic2D.h:154
Gaudi::Edges
std::vector< double > Edges
Definition: GaudiPI.h:19
Gaudi::Generic2D::rIndexX
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:68
Gaudi::Generic2D::yAxis
const AIDA::IAxis & yAxis() const override
Return the Y axis.
Definition: Generic2D.h:66
std::vector::push_back
T push_back(T...args)
std::array::data
T data(T...args)
Gaudi::Generic2D::m_xAxis
Axis m_xAxis
X axis member.
Definition: Generic2D.h:144
HiveAlgSequencer.h
tuple h
Definition: HiveAlgSequencer.py:24
Gaudi::Generic2D::xAxis
const AIDA::IAxis & xAxis() const override
Return the X axis.
Definition: Generic2D.h:64
std::unique_ptr::reset
T reset(T...args)
Gaudi::Axis::initialize
void initialize(TAxis *itaxi, bool)
Definition: Axis.h:71
Gaudi::Generic2D::m_yAxis
Axis m_yAxis
Y axis member.
Definition: Generic2D.h:146
std::array
STL class.
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
Gaudi::Generic2D::rIndexY
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:70
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:46
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:45
ana.i
list i
Definition: ana.py:128

bool Gaudi::Histogram2D::fill | ( | double | x,
|  | double | y,
|  | double | weight = `1.`
| ) |  |

Fill the Histogram2D with a value and the.

Definition at line 156 of file H2D.cpp.

156 {
157 (weight==1.) ? m_rep->Fill(x,y) : m_rep->Fill(x,y,weight );
158 return true;
159 }
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150

bool Gaudi::Histogram2D::reset | ( |  | ) |

Definition at line 144 of file H2D.cpp.

144 {
145 m_sumwx = 0;
146 m_sumwy = 0;
147 return Base::reset();
148 }
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:46
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:45

bool Gaudi::Histogram2D::setBinContents | ( | int | binIndexX,
|  | int | binIndexY,
|  | int | entries,
|  | double | height,
|  | double | error,
|  | double | centreX,
|  | double | centreY
| ) |  |
| virtual

Fast filling method for a given bin. It can be also the over/underflow bin.

Definition at line 132 of file H2D.cpp.

132 {
133 m_rep->SetBinContent(rIndexX(i), rIndexY(j), height);
134 m_rep->SetBinError(rIndexX(i), rIndexY(j), error);
135 // accumulate sumwx for in range bins
136 if (i >=0 && j >= 0) {
137 m_sumwx += centreX*height;
138 m_sumwy += centreY*height;
139 }
140 m_sumEntries += entries;
141 return true;
142 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself ...
Definition: Generic2D.h:154
Gaudi::Generic2D::entries
int entries() const override
Get the number or all the entries.
Definition: Generic2D.h:175
Gaudi::Generic2D::rIndexX
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:68
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
Gaudi::Generic2D::rIndexY
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:70
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:46
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:45
ana.i
list i
Definition: ana.py:128

bool Gaudi::Histogram2D::setRms | ( | double | rmsX,
|  | double | rmsY
| ) |  |

Sets the rms of the histogram.

Definition at line 161 of file H2D.cpp.

161 {
162 m_rep->SetEntries(m_sumEntries);
163 std::vector<double> stat(11);
164 stat[0] = sumBinHeights();
165 stat[1] = 0;
166 if(equivalentBinEntries() != 0)
167 stat[1] = (sumBinHeights() * sumBinHeights()) / equivalentBinEntries();
168 stat[2] = m_sumwx;
169 double meanX = 0;
170 if(sumBinHeights() != 0) meanX = m_sumwx/ sumBinHeights();
171 stat[3] = (meanX*meanX + rmsX*rmsX) * sumBinHeights();
172 stat[4] = m_sumwy;
173 double meanY = 0;
174 if(sumBinHeights() != 0) meanY = m_sumwy/ sumBinHeights();
175 stat[5] = (meanY*meanY + rmsY*rmsY) * sumBinHeights();
176 stat[6] = 0;
177 m_rep->PutStats(&stat.front());
178 return true;
179 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself ...
Definition: Generic2D.h:154
Gaudi::Generic2D::equivalentBinEntries
virtual double equivalentBinEntries() const
Number of equivalent entries, i.e. SUM[ weight ] ^ 2 / SUM[ weight^2 ]
Definition: Generic2D.h:310
Gaudi::Generic2D::meanX
double meanX() const override
Returns the mean of the profile, as calculated on filling-time projected on the X axis...
Definition: Generic2D.h:263
Gaudi::Generic2D::sumBinHeights
double sumBinHeights() const override
Get the sum of in range bin heights in the IProfile.
Definition: Generic2D.h:195
std::vector< double >
Gaudi::Generic2D::rmsY
double rmsY() const override
Returns the rms of the profile as calculated on filling-time projected on the Y axis.
Definition: Generic2D.h:278
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:46
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:45
Gaudi::Generic2D::meanY
double meanY() const override
Returns the mean of the profile, as calculated on filling-time projected on the Y axis...
Definition: Generic2D.h:268
Gaudi::Generic2D::rmsX
double rmsX() const override
Returns the rms of the profile as calculated on filling-time projected on the X axis.
Definition: Generic2D.h:273

## Member Data Documentation

double Gaudi::Histogram2D::m_sumwx = 0
| protected

Definition at line 45 of file H2D.h.

double Gaudi::Histogram2D::m_sumwy = 0
| protected

Definition at line 46 of file H2D.h.

The documentation for this class was generated from the following files:

- GaudiCommonSvc/src/HistogramSvc/H2D.h
- GaudiCommonSvc/src/HistogramSvc/H2D.cpp