Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v38r0 (2143aa4c)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
RootHistogram.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2022 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 
14 
15 #include <type_traits>
16 
17 namespace Gaudi::Accumulators {
18 
21  constexpr unsigned int NSUMS( unsigned int ND ) { return 1 + ND + ND * ( ND + 1 ) / 2; }
22 
23  template <typename Arithmetic, atomicity Atomicity, unsigned int ND>
25  using InputType = std::conditional_t<ND == 1, Arithmetic, std::array<Arithmetic, ND>>;
26  using OutputType = std::array<Arithmetic, NSUMS( ND )>;
27  struct OutputTypeTS : std::array<std::atomic<Arithmetic>, NSUMS( ND )> {
30  explicit OutputTypeTS( OutputType const& other ) {
31  for ( unsigned int i = 0; i < NSUMS( ND ); i++ ) { ( *this )[i] = other[i]; }
32  }
33  // operator= from non thread safe type
34  OutputTypeTS& operator=( OutputType const& other ) {
35  for ( unsigned int i = 0; i < NSUMS( ND ); i++ ) { ( *this )[i] = other[i]; }
36  return *this;
37  }
38  // automatic conversion to non thread safe type
39  operator OutputType() const {
41  for ( unsigned int i = 0; i < NSUMS( ND ); i++ ) { out[i] = ( *this )[i].load( std::memory_order_relaxed ); }
42  return out;
43  }
44  };
45  using InternalType = std::conditional_t<Atomicity == atomicity::full, OutputTypeTS, OutputType>;
46  static constexpr OutputType getValue( const InternalType& v ) noexcept {
47  // Note automatic conversion will happen
48  return v;
49  };
50  static OutputType exchange( InternalType& v, OutputType newv ) noexcept {
51  if constexpr ( Atomicity == atomicity::full ) {
52  OutputType old;
53  for ( unsigned int i = 0; i < NSUMS( ND ); i++ ) { old[i] = v[i].exchange( newv[i] ); }
54  return old;
55  } else {
56  return std::exchange( v, newv );
57  }
58  }
59  static constexpr OutputType DefaultValue() { return InternalType{}; }
60  static void merge( InternalType& a, OutputType b ) noexcept {
61  if constexpr ( Atomicity == atomicity::full ) {
62  for ( unsigned int i = 0; i < NSUMS( ND ); i++ ) { fetch_add( a[i], b[i] ); }
63  } else {
64  for ( unsigned int i = 0; i < ND * ( ND + 3 ); i++ ) a[i] += b[i];
65  }
66  }
67  static void merge( InternalType& a, InputType b ) noexcept {
68  // prepare values to increment internal values
69  OutputType diff{};
70  diff[0] = 1.;
71  if constexpr ( ND == 1 ) {
72  // no operator[] for b in this case
73  diff[1] = b;
74  diff[2] = b * b;
75  } else {
76  for ( unsigned int i = 0; i < ND; i++ ) diff[i + 1] += b[i];
77  unsigned int n = 1 + ND;
78  for ( unsigned int i = 0; i < ND; i++ ) {
79  for ( unsigned int j = i; j < ND; j++ ) {
80  diff[n] = b[i] * b[j];
81  n++;
82  }
83  }
84  }
85  // Now increase original counter
86  if constexpr ( Atomicity == atomicity::full ) {
87  for ( unsigned int i = 0; i < NSUMS( ND ); i++ ) { fetch_add( a[i], diff[i] ); }
88  } else {
89  for ( unsigned int i = 0; i < NSUMS( ND ); i++ ) a[i] += diff[i];
90  }
91  }
92  };
93 
94  template <typename Arithmetic, atomicity Atomicity, unsigned int ND>
96  : GenericAccumulator<std::array<Arithmetic, ND>, std::array<Arithmetic, NSUMS( ND )>, Atomicity, Identity,
97  Identity, SigmasValueHandler<Arithmetic, Atomicity, ND>> {
98  std::array<Arithmetic, NSUMS( ND )> const sums() const { return this->value(); }
99  };
100 
102  template <typename Arithmetic, atomicity Atomicity>
103  struct SigmaNAccumulator<Arithmetic, Atomicity, 1>
104  : GenericAccumulator<Arithmetic, std::array<Arithmetic, 3>, Atomicity, Identity, Identity,
105  SigmasValueHandler<Arithmetic, Atomicity, 1>> {
106  std::array<Arithmetic, 3> const sums() const { return this->value(); }
107  };
108 
114  template <atomicity Atomicity, typename Arithmetic, unsigned int ND>
116  : public HistogramingAccumulatorInternal<Atomicity, HistoInputType<Arithmetic, ND>, unsigned long,
117  std::integral_constant<int, ND>, IntegralAccumulator> {
118 
122 
123  template <atomicity, typename, unsigned int>
125 
126  static_assert( ND <= 3, "Root on supports histogrmas with dimension <= 3" );
127 
132  struct Proxy {
134  : m_histo( histo ), m_v( v ) {}
135  void operator++() { m_histo.update( m_v ); }
138  };
139 
140  public:
141  using Parent::Parent;
142  friend struct Proxy;
143 
144  [[deprecated( "Use `++h1[x]`, `++h2[{x,y}]`, etc. instead." )]] RootHistogramingAccumulatorInternal&
146  update( v );
147  return *this;
148  }
149  void reset() {
150  m_accumulator.reset();
151  Parent::reset();
152  }
153  template <atomicity ato>
155  m_accumulator.mergeAndReset( other.m_accumulator );
156  Parent::mergeAndReset( other );
157  }
158  [[nodiscard]] auto operator[]( typename InputType::ValueType v ) { return Proxy( *this, v ); }
159 
164  auto sums2() const { return m_accumulator.sums(); }
165 
166  private:
167  void update( typename InputType::ValueType v ) {
168  // Do not accumulate in m_accumulator if we are outside the histo range
169  // We mimic here the behavior of ROOT
170  if ( v.inAcceptance( this->axis() ) ) { m_accumulator += static_cast<typename InputType::InternalType>( v ); }
171  ++Parent::operator[]( v );
172  }
173  // Accumulator for keeping squared sum of value stored in the histogram and correlation values
174  // they get stored in "alphabetical" order, e.g. for ND=3 x^2, xy, xz, y^2, yz, z^2
176  };
177 
178  namespace {
180  template <typename Arithmetic>
181  Arithmetic stddev( Arithmetic n, Arithmetic s, Arithmetic s2 ) {
183  using std::sqrt;
184  auto v = ( n > 0 ) ? ( ( s2 - s * ( s / n ) ) / n ) : Arithmetic{};
185  return ( Arithmetic{ 0 } > v ) ? Arithmetic{} : sqrt( v );
186  }
187  } // namespace
188 
192  template <atomicity Atomicity, typename Arithmetic, typename ND>
194 
195  template <atomicity Atomicity, typename Arithmetic>
196  struct RootHistogramingAccumulator<Atomicity, Arithmetic, std::integral_constant<int, 1>>
197  : RootHistogramingAccumulatorInternal<Atomicity, Arithmetic, 1> {
200  Arithmetic nEntries() const { return this->sums2()[0]; }
201  Arithmetic sum() const { return this->sums2()[1]; }
202  Arithmetic sum2() const { return this->sums2()[2]; }
203  Arithmetic mean() const { return sum() / nEntries(); }
204  Arithmetic standard_deviation() const { return stddev( nEntries(), sum(), sum2() ); }
205  };
206 
207  template <atomicity Atomicity, typename Arithmetic>
208  struct RootHistogramingAccumulator<Atomicity, Arithmetic, std::integral_constant<int, 2>>
209  : RootHistogramingAccumulatorInternal<Atomicity, Arithmetic, 2> {
212  Arithmetic nEntries() const { return this->sums2()[0]; }
213  Arithmetic sumx() const { return this->sums2()[1]; }
214  Arithmetic sumy() const { return this->sums2()[2]; }
215  Arithmetic sumx2() const { return this->sums2()[3]; }
216  Arithmetic sumy2() const { return this->sums2()[5]; }
217  Arithmetic sumxy() const { return this->sums2()[4]; }
218  Arithmetic meanx() const { return sumx() / nEntries(); }
219  Arithmetic meany() const { return sumy() / nEntries(); }
220  Arithmetic standard_deviationx() const { return stddev( nEntries(), sumx(), sumx2() ); }
221  Arithmetic standard_deviationy() const { return stddev( nEntries(), sumy(), sumy2() ); }
222  };
223 
224  template <atomicity Atomicity, typename Arithmetic>
225  struct RootHistogramingAccumulator<Atomicity, Arithmetic, std::integral_constant<int, 3>>
226  : RootHistogramingAccumulatorInternal<Atomicity, Arithmetic, 3> {
229  Arithmetic nEntries() const { return this->sums2()[0]; }
230  Arithmetic sumx() const { return this->sums2()[1]; }
231  Arithmetic sumy() const { return this->sums2()[2]; }
232  Arithmetic sumz() const { return this->sums2()[3]; }
233  Arithmetic sumx2() const { return this->sums2()[4]; }
234  Arithmetic sumy2() const { return this->sums2()[7]; }
235  Arithmetic sumz2() const { return this->sums2()[9]; }
236  Arithmetic sumxy() const { return this->sums2()[5]; }
237  Arithmetic sumxz() const { return this->sums2()[6]; }
238  Arithmetic sumyz() const { return this->sums2()[8]; }
239  Arithmetic meanx() const { return sumx() / nEntries(); }
240  Arithmetic meany() const { return sumy() / nEntries(); }
241  Arithmetic meanz() const { return sumz() / nEntries(); }
242  Arithmetic standard_deviationx() const { return stddev( nEntries(), sumx(), sumx2() ); }
243  Arithmetic standard_deviationy() const { return stddev( nEntries(), sumy(), sumy2() ); }
244  Arithmetic standard_deviationz() const { return stddev( nEntries(), sumz(), sumz2() ); }
245  };
246 
265  template <unsigned int ND, atomicity Atomicity, typename Arithmetic, const char* Type>
267 
268  template <atomicity Atomicity, typename Arithmetic, const char* Type>
269  class RootHistogramingCounterBase<1, Atomicity, Arithmetic, Type>
270  : public HistogramingCounterBaseInternal<1, Atomicity, Arithmetic, Type, RootHistogramingAccumulator,
271  std::make_index_sequence<1>> {
272  public:
274  std::make_index_sequence<1>>;
275  using Parent::Parent;
276 
278  to_json( j, static_cast<Parent const&>( h ) );
279  j["nTotEntries"] = h.nEntries();
280  j["sum"] = h.sum();
281  j["mean"] = h.mean();
282  j["sum2"] = h.sum2();
283  j["standard_deviation"] = h.standard_deviation();
284  }
285  };
286 
287  template <atomicity Atomicity, typename Arithmetic, const char* Type>
288  class RootHistogramingCounterBase<2, Atomicity, Arithmetic, Type>
289  : public HistogramingCounterBaseInternal<2, Atomicity, Arithmetic, Type, RootHistogramingAccumulator,
290  std::make_index_sequence<2>> {
291  public:
293  std::make_index_sequence<2>>;
294  using Parent::Parent;
295 
297  to_json( j, static_cast<Parent const&>( h ) );
298  j["nTotEntries"] = h.nEntries();
299  j["sumx"] = h.sumx();
300  j["sumy"] = h.sumy();
301  j["meanx"] = h.meanx();
302  j["meany"] = h.meany();
303  j["sumx2"] = h.sumx2();
304  j["sumy2"] = h.sumy2();
305  j["sumxy"] = h.sumxy();
306  j["standard_deviationx"] = h.standard_deviationx();
307  j["standard_deviationy"] = h.standard_deviationy();
308  }
309  };
310 
311  template <atomicity Atomicity, typename Arithmetic, const char* Type>
312  class RootHistogramingCounterBase<3, Atomicity, Arithmetic, Type>
313  : public HistogramingCounterBaseInternal<3, Atomicity, Arithmetic, Type, RootHistogramingAccumulator,
314  std::make_index_sequence<3>> {
315  public:
317  std::make_index_sequence<3>>;
318  using Parent::Parent;
319 
321  to_json( j, static_cast<Parent const&>( h ) );
322  j["nTotEntries"] = h.nEntries();
323  j["sumx"] = h.sumx();
324  j["sumy"] = h.sumy();
325  j["sumz"] = h.sumz();
326  j["meanx"] = h.meanx();
327  j["meany"] = h.meany();
328  j["meanz"] = h.meanz();
329  j["sumx2"] = h.sumx2();
330  j["sumy2"] = h.sumy2();
331  j["sumz2"] = h.sumz2();
332  j["sumxy"] = h.sumxy();
333  j["sumxz"] = h.sumxz();
334  j["sumyz"] = h.sumyz();
335  j["standard_deviationx"] = h.standard_deviationx();
336  j["standard_deviationy"] = h.standard_deviationy();
337  j["standard_deviationz"] = h.standard_deviationz();
338  }
339  };
340 
342  template <unsigned int ND, atomicity Atomicity = atomicity::full, typename Arithmetic = double>
344 
345 } // namespace Gaudi::Accumulators
Gaudi::Accumulators::SigmasValueHandler::merge
static void merge(InternalType &a, OutputType b) noexcept
Definition: RootHistogram.h:60
Gaudi::Accumulators::RootHistogramingAccumulator
Class implementing a root histogram accumulator.
Definition: RootHistogram.h:193
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::mergeAndReset
void mergeAndReset(RootHistogramingAccumulatorInternal< ato, Arithmetic, ND > &other)
Definition: RootHistogram.h:154
Gaudi::Accumulators::sqrt
auto sqrt(std::chrono::duration< Rep, Period > d)
sqrt for std::chrono::duration
Definition: Counters.h:34
Gaudi::Accumulators::SigmasValueHandler::merge
static void merge(InternalType &a, InputType b) noexcept
Definition: RootHistogram.h:67
Gaudi::Accumulators::RootHistogramingCounterBase< 2, Atomicity, Arithmetic, Type >::to_json
friend void to_json(nlohmann::json &j, RootHistogramingCounterBase< 2, Atomicity, Arithmetic, Type > const &h)
Definition: RootHistogram.h:296
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::standard_deviationz
Arithmetic standard_deviationz() const
Definition: RootHistogram.h:244
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumy
Arithmetic sumy() const
Definition: RootHistogram.h:231
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::Proxy::operator++
void operator++()
Definition: RootHistogram.h:135
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::meanx
Arithmetic meanx() const
Definition: RootHistogram.h:239
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::Proxy
friend struct Proxy
Definition: RootHistogram.h:142
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumz2
Arithmetic sumz2() const
Definition: RootHistogram.h:235
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumz
Arithmetic sumz() const
Definition: RootHistogram.h:232
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::Proxy::m_v
InputType::ValueType m_v
Definition: RootHistogram.h:137
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::meanz
Arithmetic meanz() const
Definition: RootHistogram.h:241
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::nEntries
Arithmetic nEntries() const
Definition: RootHistogram.h:212
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::m_accumulator
SigmaNAccumulator< Arithmetic, Atomicity, ND > m_accumulator
Definition: RootHistogram.h:175
Gaudi::Accumulators::atomicity::full
@ full
Histogram.h
gaudirun.s
string s
Definition: gaudirun.py:346
Gaudi::Accumulators::IntegralAccumulator
IntegralAccumulator.
Definition: Accumulators.h:640
jsonFromLHCbLog.json
json
Definition: jsonFromLHCbLog.py:86
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::sumx
Arithmetic sumx() const
Definition: RootHistogram.h:213
Gaudi::Accumulators::SigmasValueHandler::OutputTypeTS::operator=
OutputTypeTS & operator=(OutputType const &other)
Definition: RootHistogram.h:34
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 1 > >::nEntries
Arithmetic nEntries() const
Definition: RootHistogram.h:200
Gaudi::Accumulators::SigmaNAccumulator< Arithmetic, Atomicity, 1 >::sums
std::array< Arithmetic, 3 > const sums() const
Definition: RootHistogram.h:106
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::meanx
Arithmetic meanx() const
Definition: RootHistogram.h:218
Gaudi::Accumulators::RootHistogramingCounterBase< 3, Atomicity, Arithmetic, Type >::to_json
friend void to_json(nlohmann::json &j, RootHistogramingCounterBase< 3, Atomicity, Arithmetic, Type > const &h)
Definition: RootHistogram.h:320
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::operator[]
auto operator[](typename InputType::ValueType v)
Definition: RootHistogram.h:158
std::sqrt
T sqrt(T... args)
Gaudi::Accumulators::SigmaNAccumulator
Definition: RootHistogram.h:97
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::meany
Arithmetic meany() const
Definition: RootHistogram.h:219
Gaudi::Accumulators::SigmasValueHandler::getValue
static constexpr OutputType getValue(const InternalType &v) noexcept
Definition: RootHistogram.h:46
Gaudi::Accumulators::SigmasValueHandler::InternalType
std::conditional_t< Atomicity==atomicity::full, OutputTypeTS, OutputType > InternalType
Definition: RootHistogram.h:45
Gaudi::Accumulators::SigmasValueHandler::exchange
static OutputType exchange(InternalType &v, OutputType newv) noexcept
Definition: RootHistogram.h:50
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::standard_deviationx
Arithmetic standard_deviationx() const
Definition: RootHistogram.h:220
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 1 > >::standard_deviation
Arithmetic standard_deviation() const
Definition: RootHistogram.h:204
Gaudi::Accumulators::HistoInputType
small class used as InputType for regular Histograms
Definition: Histogram.h:210
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::nEntries
Arithmetic nEntries() const
Definition: RootHistogram.h:229
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::sums2
auto sums2() const
returns the nbentries, sums and "squared sums" of the inputs Practically we have first th enumber of ...
Definition: RootHistogram.h:164
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumy2
Arithmetic sumy2() const
Definition: RootHistogram.h:234
ProduceConsume.j
j
Definition: ProduceConsume.py:101
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumx
Arithmetic sumx() const
Definition: RootHistogram.h:230
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::Proxy::Proxy
Proxy(RootHistogramingAccumulatorInternal &histo, typename InputType::ValueType &v)
Definition: RootHistogram.h:133
Gaudi::Accumulators::HistogramingAccumulatorInternal::operator[]
auto operator[](typename InputType::ValueType v)
Definition: Histogram.h:343
Gaudi::Accumulators::RootHistogramingCounterBase< 1, Atomicity, Arithmetic, Type >
Definition: RootHistogram.h:271
Gaudi::Accumulators::HistogramingAccumulatorInternal::mergeAndReset
void mergeAndReset(HistogramingAccumulatorInternal< ato, InputType, Arithmetic, ND, BaseAccumulatorT > &other)
Definition: Histogram.h:337
AlgSequencer.h
h
Definition: AlgSequencer.py:31
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::operator+=
RootHistogramingAccumulatorInternal & operator+=(InputType v)
Definition: RootHistogram.h:145
std::array
STL class.
GaudiAlg.HistoUtils.nEntries
nEntries
Definition: HistoUtils.py:938
Gaudi::Accumulators::RootHistogramingAccumulatorInternal
Internal Accumulator class dealing with RootHistograming.
Definition: RootHistogram.h:117
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::Proxy::m_histo
RootHistogramingAccumulatorInternal & m_histo
Definition: RootHistogram.h:136
Gaudi::Accumulators::SigmasValueHandler::InputType
std::conditional_t< ND==1, Arithmetic, std::array< Arithmetic, ND > > InputType
Definition: RootHistogram.h:25
Gaudi::Accumulators::HistogramingAccumulatorInternal::reset
void reset()
Definition: Histogram.h:333
Gaudi::Accumulators::SigmasValueHandler::OutputType
std::array< Arithmetic, NSUMS(ND)> OutputType
Definition: RootHistogram.h:26
Gaudi::Accumulators::GenericAccumulator
Generic Accumulator, templated by.
Definition: Accumulators.h:471
Gaudi::Accumulators::to_json
void to_json(nlohmann::json &j, const Axis< Arithmetic > &axis)
automatic conversion of the Axis type to json
Definition: Histogram.h:200
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::sumy
Arithmetic sumy() const
Definition: RootHistogram.h:214
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:234
Gaudi::Accumulators::GenericAccumulator< std::array< Arithmetic, ND >, std::array< Arithmetic, NSUMS(ND)>, Atomicity, Identity, Identity, SigmasValueHandler< Arithmetic, Atomicity, ND > >::value
OutputType value() const
Definition: Accumulators.h:501
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::meany
Arithmetic meany() const
Definition: RootHistogram.h:240
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 1 > >::mean
Arithmetic mean() const
Definition: RootHistogram.h:203
Gaudi::Accumulators::HistogramingAccumulatorInternal
Internal Accumulator class dealing with Histograming.
Definition: Histogram.h:304
Gaudi::Accumulators
Definition: HistogramsTests.cpp:20
Gaudi::Accumulators::SigmasValueHandler::DefaultValue
static constexpr OutputType DefaultValue()
Definition: RootHistogram.h:59
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumx2
Arithmetic sumx2() const
Definition: RootHistogram.h:233
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::sumxy
Arithmetic sumxy() const
Definition: RootHistogram.h:217
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 1 > >::sum
Arithmetic sum() const
Definition: RootHistogram.h:201
Containers::array
struct GAUDI_API array
Parametrisation class for redirection array - like implementation.
Definition: KeyedObjectManager.h:37
Tuples::Type
Type
Definition: TupleObj.h:91
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::standard_deviationy
Arithmetic standard_deviationy() const
Definition: RootHistogram.h:243
std
STL namespace.
Gaudi::Accumulators::SigmasValueHandler::OutputTypeTS::OutputTypeTS
OutputTypeTS(OutputType const &other)
Definition: RootHistogram.h:30
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::standard_deviationy
Arithmetic standard_deviationy() const
Definition: RootHistogram.h:221
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumxy
Arithmetic sumxy() const
Definition: RootHistogram.h:236
Gaudi::Accumulators::RootHistogramingCounterBase< 1, Atomicity, Arithmetic, Type >::to_json
friend void to_json(nlohmann::json &j, RootHistogramingCounterBase< 1, Atomicity, Arithmetic, Type > const &h)
Definition: RootHistogram.h:277
Gaudi::Accumulators::fetch_add
void fetch_add(AtomicType &atVar, Arithmetic value)
generic fetch_add, also dealing with atomic types with no fetch_add member method
Definition: Accumulators.h:366
Properties.v
v
Definition: Properties.py:122
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::standard_deviationx
Arithmetic standard_deviationx() const
Definition: RootHistogram.h:242
Gaudi::Accumulators::NSUMS
constexpr unsigned int NSUMS(unsigned int ND)
number of items in sums for a given dimension = 1 (nb items) + ND (sums of each dimension) + ND*(ND+1...
Definition: RootHistogram.h:21
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::sumy2
Arithmetic sumy2() const
Definition: RootHistogram.h:216
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::Proxy
Small procyclass allowing operator[] to work as expected on the RootHistogram that is to return somet...
Definition: RootHistogram.h:132
Gaudi::Accumulators::RootHistogramingCounterBase
Extension of the standard Gaudi histogram to provide similar functionnality as ROOT.
Definition: RootHistogram.h:266
Gaudi::Accumulators::SigmasValueHandler
Definition: RootHistogram.h:24
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::reset
void reset()
Definition: RootHistogram.h:149
Gaudi::Accumulators::HistogramingCounterBaseInternal
A base counter dealing with Histograms.
Definition: Histogram.h:464
Gaudi::Accumulators::SigmasValueHandler::OutputTypeTS
Definition: RootHistogram.h:27
Gaudi::Accumulators::RootHistogramingAccumulatorInternal::update
void update(typename InputType::ValueType v)
Definition: RootHistogram.h:167
Gaudi::Accumulators::RootHistogramingCounterBase< 2, Atomicity, Arithmetic, Type >
Definition: RootHistogram.h:290
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumyz
Arithmetic sumyz() const
Definition: RootHistogram.h:238
Gaudi::Accumulators::SigmaNAccumulator::sums
std::array< Arithmetic, NSUMS(ND)> const sums() const
Definition: RootHistogram.h:98
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 3 > >::sumxz
Arithmetic sumxz() const
Definition: RootHistogram.h:237
Gaudi::Accumulators::RootHistogramingCounterBase< 3, Atomicity, Arithmetic, Type >
Definition: RootHistogram.h:314
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 2 > >::sumx2
Arithmetic sumx2() const
Definition: RootHistogram.h:215
AlgSequencer.s2
s2
Definition: AlgSequencer.py:36
PrepareBase.out
out
Definition: PrepareBase.py:20
Gaudi::Accumulators::RootHistogramingAccumulator< Atomicity, Arithmetic, std::integral_constant< int, 1 > >::sum2
Arithmetic sum2() const
Definition: RootHistogram.h:202