The Gaudi Framework  v39r0 (5b8b5eda)
Gaudi::Accumulators::Axis< Arithmetic > Class Template Reference

Definition of a default type of Histogram Axis It contains number of bins, min and max value plus a title and defines the basic type of Axis (non log) It may also contain labels for the bins. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Accumulators/StaticHistogram.h>

Collaboration diagram for Gaudi::Accumulators::Axis< Arithmetic >:

Public Types

using ArithmeticType = Arithmetic
 

Public Member Functions

 Axis (unsigned int nBins=0, Arithmetic minValue=Arithmetic{}, Arithmetic maxValue=Arithmetic{}, std::string title={}, std::vector< std::string > labels={})
 
 Axis (Gaudi::Histo1DDef const &def)
 
unsigned int index (Arithmetic value) const
 returns the bin number for a given value, ranging from 0 (underflow) to nBins+1 (overflow) More...
 
bool inAcceptance (Arithmetic value) const
 says whether the given value is within the range of the axis More...
 
unsigned int numBins () const
 
void setNumBins (unsigned int n)
 
Arithmetic minValue () const
 
void setMinValue (Arithmetic v)
 
Arithmetic maxValue () const
 
void setMaxValue (Arithmetic v)
 
std::string const & title () const
 
void setTitle (std::string const &t)
 
std::vector< std::string > const labels () const
 

Public Attributes

unsigned int nBins
 number of bins for this Axis FIXME : should be private and called m_nBins but will break backward compatibility with previous implementation. More...
 

Private Member Functions

void recomputeRatio ()
 

Private Attributes

std::string m_title
 title of this axis More...
 
Arithmetic m_minValue
 min and max values on this axis More...
 
Arithmetic m_maxValue
 
Arithmetic m_ratio
 precomputed ratio to convert a value into bin number equal to nBins/(maxValue-minValue). More...
 
std::vector< std::stringm_labels
 labels for the bins More...
 

Friends

std::ostreamoperator<< (std::ostream &o, Axis const &axis)
 

Detailed Description

template<typename Arithmetic>
class Gaudi::Accumulators::Axis< Arithmetic >

Definition of a default type of Histogram Axis It contains number of bins, min and max value plus a title and defines the basic type of Axis (non log) It may also contain labels for the bins.

Definition at line 218 of file StaticHistogram.h.

Member Typedef Documentation

◆ ArithmeticType

template<typename Arithmetic >
using Gaudi::Accumulators::Axis< Arithmetic >::ArithmeticType = Arithmetic

Definition at line 220 of file StaticHistogram.h.

Constructor & Destructor Documentation

◆ Axis() [1/2]

template<typename Arithmetic >
Gaudi::Accumulators::Axis< Arithmetic >::Axis ( unsigned int  nBins = 0,
Arithmetic  minValue = Arithmetic{},
Arithmetic  maxValue = Arithmetic{},
std::string  title = {},
std::vector< std::string labels = {} 
)
inline

Definition at line 221 of file StaticHistogram.h.

221  {}, Arithmetic maxValue = Arithmetic{},
223  : m_title( std::move( title ) )
224  , nBins( nBins )
225  , m_minValue( minValue )
226  , m_maxValue( maxValue )
227  , m_labels( std::move( labels ) ) {
229  recomputeRatio();
230  for ( const auto& s : m_labels ) details::requireValidTitle( s );
231  };

◆ Axis() [2/2]

template<typename Arithmetic >
Gaudi::Accumulators::Axis< Arithmetic >::Axis ( Gaudi::Histo1DDef const &  def)
inlineexplicit

Definition at line 232 of file StaticHistogram.h.

233  : Axis( (unsigned int)def.bins(), def.lowEdge(), def.highEdge(), def.title() ){};

Member Function Documentation

◆ inAcceptance()

template<typename Arithmetic >
bool Gaudi::Accumulators::Axis< Arithmetic >::inAcceptance ( Arithmetic  value) const
inline

says whether the given value is within the range of the axis

Definition at line 258 of file StaticHistogram.h.

258 { return value >= m_minValue && value <= m_maxValue; }

◆ index()

template<typename Arithmetic >
unsigned int Gaudi::Accumulators::Axis< Arithmetic >::index ( Arithmetic  value) const
inline

returns the bin number for a given value, ranging from 0 (underflow) to nBins+1 (overflow)

Definition at line 236 of file StaticHistogram.h.

236  {
237  // In case we use integer as Arithmetic type, we cannot use ratio for computing indices,
238  // as ratios < 1.0 will simply be 0, so we have to pay the division in such a case
239  int idx;
240  if constexpr ( std::is_integral_v<Arithmetic> ) {
241  idx = ( ( value - m_minValue ) * nBins / ( m_maxValue - m_minValue ) ) + 1;
242  } else {
243  idx = std::floor( ( value - m_minValue ) * m_ratio ) + 1;
244  }
245  return idx < 0 ? 0 : ( (unsigned int)idx > numBins() ? numBins() + 1 : (unsigned int)idx );
246  }

◆ labels()

template<typename Arithmetic >
std::vector<std::string> const Gaudi::Accumulators::Axis< Arithmetic >::labels ( ) const
inline

Definition at line 278 of file StaticHistogram.h.

278 { return m_labels; }

◆ maxValue()

template<typename Arithmetic >
Arithmetic Gaudi::Accumulators::Axis< Arithmetic >::maxValue ( ) const
inline

Definition at line 271 of file StaticHistogram.h.

271 { return m_maxValue; };

◆ minValue()

template<typename Arithmetic >
Arithmetic Gaudi::Accumulators::Axis< Arithmetic >::minValue ( ) const
inline

Definition at line 266 of file StaticHistogram.h.

266 { return m_minValue; };

◆ numBins()

template<typename Arithmetic >
unsigned int Gaudi::Accumulators::Axis< Arithmetic >::numBins ( ) const
inline

Definition at line 261 of file StaticHistogram.h.

261 { return nBins; };

◆ recomputeRatio()

template<typename Arithmetic >
void Gaudi::Accumulators::Axis< Arithmetic >::recomputeRatio ( )
inlineprivate

Definition at line 300 of file StaticHistogram.h.

300  {
301  m_ratio = ( m_maxValue == m_minValue ) ? Arithmetic{} : nBins / ( m_maxValue - m_minValue );
302  }

◆ setMaxValue()

template<typename Arithmetic >
void Gaudi::Accumulators::Axis< Arithmetic >::setMaxValue ( Arithmetic  v)
inline

Definition at line 272 of file StaticHistogram.h.

272  {
273  m_maxValue = v;
274  recomputeRatio();
275  }

◆ setMinValue()

template<typename Arithmetic >
void Gaudi::Accumulators::Axis< Arithmetic >::setMinValue ( Arithmetic  v)
inline

Definition at line 267 of file StaticHistogram.h.

267  {
268  m_minValue = v;
269  recomputeRatio();
270  }

◆ setNumBins()

template<typename Arithmetic >
void Gaudi::Accumulators::Axis< Arithmetic >::setNumBins ( unsigned int  n)
inline

Definition at line 262 of file StaticHistogram.h.

262  {
263  nBins = n;
264  recomputeRatio();
265  }

◆ setTitle()

template<typename Arithmetic >
void Gaudi::Accumulators::Axis< Arithmetic >::setTitle ( std::string const &  t)
inline

Definition at line 277 of file StaticHistogram.h.

277 { m_title = t; };

◆ title()

template<typename Arithmetic >
std::string const& Gaudi::Accumulators::Axis< Arithmetic >::title ( ) const
inline

Definition at line 276 of file StaticHistogram.h.

276 { return m_title; }

Friends And Related Function Documentation

◆ operator<<

template<typename Arithmetic >
std::ostream& operator<< ( std::ostream o,
Axis< Arithmetic > const &  axis 
)
friend

Definition at line 248 of file StaticHistogram.h.

248  {
249  // Note that we print python code here, as the generic toStream implementation uses this
250  // operator to generate python code.
251  o << "(" << axis.numBins() << ", " << axis.minValue() << ", " << axis.maxValue() << ", "
252  << "\"" << axis.m_title << "\", (";
253  for ( auto const& label : axis.m_labels ) { o << "\"" << label << "\", "; }
254  return o << "))";
255  }

Member Data Documentation

◆ m_labels

template<typename Arithmetic >
std::vector<std::string> Gaudi::Accumulators::Axis< Arithmetic >::m_labels
private

labels for the bins

Definition at line 298 of file StaticHistogram.h.

◆ m_maxValue

template<typename Arithmetic >
Arithmetic Gaudi::Accumulators::Axis< Arithmetic >::m_maxValue
private

Definition at line 291 of file StaticHistogram.h.

◆ m_minValue

template<typename Arithmetic >
Arithmetic Gaudi::Accumulators::Axis< Arithmetic >::m_minValue
private

min and max values on this axis

Definition at line 291 of file StaticHistogram.h.

◆ m_ratio

template<typename Arithmetic >
Arithmetic Gaudi::Accumulators::Axis< Arithmetic >::m_ratio
private

precomputed ratio to convert a value into bin number equal to nBins/(maxValue-minValue).

Only used for floating Arithmetic

Definition at line 296 of file StaticHistogram.h.

◆ m_title

template<typename Arithmetic >
std::string Gaudi::Accumulators::Axis< Arithmetic >::m_title
private

title of this axis

Definition at line 282 of file StaticHistogram.h.

◆ nBins

template<typename Arithmetic >
unsigned int Gaudi::Accumulators::Axis< Arithmetic >::nBins

number of bins for this Axis FIXME : should be private and called m_nBins but will break backward compatibility with previous implementation.

Definition at line 287 of file StaticHistogram.h.


The documentation for this class was generated from the following file:
std::floor
T floor(T... args)
Gaudi::Accumulators::Axis::m_minValue
Arithmetic m_minValue
min and max values on this axis
Definition: StaticHistogram.h:291
std::string
STL class.
Gaudi::Accumulators::details::requireValidTitle
void requireValidTitle(std::string_view sv)
Definition: StaticHistogram.h:67
std::move
T move(T... args)
Gaudi::Accumulators::Axis::Axis
Axis(unsigned int nBins=0, Arithmetic minValue=Arithmetic{}, Arithmetic maxValue=Arithmetic{}, std::string title={}, std::vector< std::string > labels={})
Definition: StaticHistogram.h:221
gaudirun.s
string s
Definition: gaudirun.py:346
std::vector< std::string >
Gaudi::Accumulators::Axis::title
std::string const & title() const
Definition: StaticHistogram.h:276
Gaudi::Accumulators::Axis::numBins
unsigned int numBins() const
Definition: StaticHistogram.h:261
Gaudi::Accumulators::Axis::m_labels
std::vector< std::string > m_labels
labels for the bins
Definition: StaticHistogram.h:298
bug_34121.t
t
Definition: bug_34121.py:31
Gaudi::Accumulators::Axis::labels
std::vector< std::string > const labels() const
Definition: StaticHistogram.h:278
Gaudi::Accumulators::Axis::nBins
unsigned int nBins
number of bins for this Axis FIXME : should be private and called m_nBins but will break backward com...
Definition: StaticHistogram.h:287
cpluginsvc.n
n
Definition: cpluginsvc.py:234
Gaudi::Accumulators::Axis::maxValue
Arithmetic maxValue() const
Definition: StaticHistogram.h:271
Gaudi::Accumulators::Axis::m_maxValue
Arithmetic m_maxValue
Definition: StaticHistogram.h:291
Gaudi::Accumulators::Axis::m_title
std::string m_title
title of this axis
Definition: StaticHistogram.h:282
Gaudi::Accumulators::Axis::recomputeRatio
void recomputeRatio()
Definition: StaticHistogram.h:300
Gaudi::Accumulators::Axis::minValue
Arithmetic minValue() const
Definition: StaticHistogram.h:266
Properties.v
v
Definition: Properties.py:122
Gaudi::Accumulators::Axis::m_ratio
Arithmetic m_ratio
precomputed ratio to convert a value into bin number equal to nBins/(maxValue-minValue).
Definition: StaticHistogram.h:296