Gaudi::Histogram2D Class Reference

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

#include <src/HistogramSvc/H2D.h>

Inheritance diagram for Gaudi::Histogram2D:
Collaboration diagram for Gaudi::Histogram2D:

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 CLIDclID () 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...
 
DataObjectoperator= (const DataObject &rhs)
 Assignment Operator. More...
 
 DataObject (DataObject &&rhs)
 Move Constructor. More...
 
DataObjectoperator= (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...
 
 DataObject ()
 Standard Constructor. More...
 
 DataObject (const DataObject &rhs)
 Copy Constructor. More...
 
DataObjectoperator= (const DataObject &rhs)
 Assignment Operator. More...
 
 DataObject (DataObject &&rhs)
 Move Constructor. More...
 
DataObjectoperator= (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...
 
IRegistryregistry () const
 Get pointer to Registry. More...
 
LinkManagerlinkMgr () 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...
 
void setRegistry (IRegistry *pRegistry)
 Set pointer to Registry. More...
 
IRegistryregistry () const
 Get pointer to Registry. More...
 
LinkManagerlinkMgr () 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
 
virtual ~HistogramBase ()=default
 

Static Public Member Functions

static const CLIDclassID ()
 
- Static Public Member Functions inherited from DataObject
static const CLIDclassID ()
 Retrieve reference to class definition structure (static access) More...
 
static const CLIDclassID ()
 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 }
Generic2D< INTERFACE, IMPLEMENTATION > Base
Definition: Generic2D.h:37
bool setTitle(const std::string &title) override
Set the title of the object.
Definition: Generic2D.h:158
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
double m_sumwy
Definition: H2D.h:46
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 }
void adoptRepresentation(TObject *rep) override
Adopt ROOT histogram representation.
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
double m_sumwy
Definition: H2D.h:46
double m_sumwx
Definition: H2D.h:45
virtual Gaudi::Histogram2D::~Histogram2D ( )
virtualdefault

Destructor.

Member Function Documentation

static const CLID& Gaudi::Histogram2D::classID ( )
inlinestatic

Definition at line 42 of file H2D.h.

42 { return CLID_H2D; }
virtual const CLID& Gaudi::Histogram2D::clID ( ) const
inlinevirtual

Retrieve reference to class defininition identifier.

Reimplemented from DataObject.

Definition at line 41 of file H2D.h.

41 { return 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 }
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself ...
Definition: Generic2D.h:154
std::vector< double > Edges
Definition: GaudiPI.h:19
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:68
const AIDA::IAxis & yAxis() const override
Return the Y axis.
Definition: Generic2D.h:66
Axis m_xAxis
X axis member.
Definition: Generic2D.h:144
const AIDA::IAxis & xAxis() const override
Return the X axis.
Definition: Generic2D.h:64
void initialize(TAxis *itaxi, bool)
Definition: Axis.h:71
Axis m_yAxis
Y axis member.
Definition: Generic2D.h:146
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:70
double m_sumwy
Definition: H2D.h:46
double m_sumwx
Definition: H2D.h:45
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 }
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 }
double m_sumwy
Definition: H2D.h:46
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  }
141  return true;
142 }
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself ...
Definition: Generic2D.h:154
int entries() const override
Get the number or all the entries.
Definition: Generic2D.h:175
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:68
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:70
double m_sumwy
Definition: H2D.h:46
double m_sumwx
Definition: H2D.h:45
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 }
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself ...
Definition: Generic2D.h:154
virtual double equivalentBinEntries() const
Number of equivalent entries, i.e. SUM[ weight ] ^ 2 / SUM[ weight^2 ]
Definition: Generic2D.h:310
double meanX() const override
Returns the mean of the profile, as calculated on filling-time projected on the X axis...
Definition: Generic2D.h:263
double sumBinHeights() const override
Get the sum of in range bin heights in the IProfile.
Definition: Generic2D.h:195
double rmsY() const override
Returns the rms of the profile as calculated on filling-time projected on the Y axis.
Definition: Generic2D.h:278
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:150
double m_sumwy
Definition: H2D.h:46
double m_sumwx
Definition: H2D.h:45
double meanY() const override
Returns the mean of the profile, as calculated on filling-time projected on the Y axis...
Definition: Generic2D.h:268
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: