ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
FlexErrArray< T > Class Template Reference

#include <FlexErrArray.h>

Collaboration diagram for FlexErrArray< T >:

Public Member Functions

bool small () const
 
 FlexErrArray (unsigned nbins)
 
 ~FlexErrArray ()
 
unsigned getNBins () const
 
void fill (unsigned bin)
 
void fill (unsigned bin, const double &weight)
 
getBinContent (unsigned bin) const
 
double getBinError (unsigned bin) const
 
void getBinContentAndError (unsigned bin, T &content, double &error) const
 
void setBinContent (unsigned bin, const T &content)
 
void setBinError (unsigned bin, const double &error)
 
void setBinContentAndError (unsigned bin, const T &content, const double &error)
 
bool holdsSeparateSumW2Info () const
 
void copyContents (T *cont, double *err=0) const
 
double Integral () const
 
void resetActiveBinLoop ()
 
bool getNextActiveBin (unsigned &bin, T &content, double &error)
 
void scaleContentsAndErrors (const double &fact)
 

Static Public Member Functions

static unsigned extraAllocSize (unsigned nbins)
 
static bool small (unsigned nbins)
 

Private Member Functions

 FlexErrArray (const FlexErrArray &)
 
FlexErrArrayoperator= (const FlexErrArray &)
 
const FlexErrArrayGroup< T > *const *constsuperGroups () const
 
FlexErrArrayGroup< T > *** superGroups ()
 
const FlexErrArrayGroup< T > *constgroups () const
 
FlexErrArrayGroup< T > ** groups ()
 
void fastLoop_findAndResetNextGroup ()
 
unsigned iSuperGroup (unsigned bin) const
 
unsigned superGroupBin (unsigned bin) const
 
unsigned groupBin (unsigned bin) const
 
unsigned iGroup (unsigned bin) const
 
const FlexErrArrayGroup< T > * getGroupNoAlloc (unsigned bin) const
 
FlexErrArrayGroup< T > * getGroupNoAlloc (unsigned bin)
 
FlexErrArrayGroup< T > * getGroup (unsigned bin)
 
unsigned entriesInSuperGroup (unsigned iSuperGroup) const
 

Static Private Member Functions

static unsigned nGroupsNeeded (unsigned nbins)
 
static unsigned nSuperGroups (unsigned nbins)
 

Private Attributes

void * m_indices
 
FlexErrArrayGroup< T > * m_fastloop_group2check
 
const unsigned m_nbins
 
unsigned m_fastloop_isuper2check
 
unsigned m_fastloop_igr2check
 

Detailed Description

template<class T>
class FlexErrArray< T >

Definition at line 34 of file FlexErrArray.h.

Constructor & Destructor Documentation

◆ FlexErrArray() [1/2]

template<class T >
FlexErrArray< T >::FlexErrArray ( unsigned  nbins)

◆ ~FlexErrArray()

template<class T >
FlexErrArray< T >::~FlexErrArray ( )

◆ FlexErrArray() [2/2]

template<class T >
FlexErrArray< T >::FlexErrArray ( const FlexErrArray< T > &  )
private

Member Function Documentation

◆ copyContents()

template<class T >
void FlexErrArray< T >::copyContents ( T *  cont,
double *  err = 0 
) const

◆ entriesInSuperGroup()

template<class T >
unsigned FlexErrArray< T >::entriesInSuperGroup ( unsigned  iSuperGroup) const
inlineprivate

Definition at line 154 of file FlexErrArray.h.

154  {
155  unsigned l(nSuperGroups(m_nbins));
156  if (iSuperGroup+1<l) {
158  } else {
159  //Fixme: nGroupsNeeded calculated twice!
162  }
163  }

◆ extraAllocSize()

template<class T >
static unsigned FlexErrArray< T >::extraAllocSize ( unsigned  nbins)
inlinestatic

Definition at line 38 of file FlexErrArray.h.

38 { return (small(nbins) ? nGroupsNeeded(nbins) : nSuperGroups(nbins))*sizeof(void*); }

◆ fastLoop_findAndResetNextGroup()

template<class T >
void FlexErrArray< T >::fastLoop_findAndResetNextGroup ( )
private

◆ fill() [1/2]

template<class T >
void FlexErrArray< T >::fill ( unsigned  bin)

◆ fill() [2/2]

template<class T >
void FlexErrArray< T >::fill ( unsigned  bin,
const double &  weight 
)

◆ getBinContent()

template<class T >
T FlexErrArray< T >::getBinContent ( unsigned  bin) const

◆ getBinContentAndError()

template<class T >
void FlexErrArray< T >::getBinContentAndError ( unsigned  bin,
T &  content,
double &  error 
) const

◆ getBinError()

template<class T >
double FlexErrArray< T >::getBinError ( unsigned  bin) const

◆ getGroup()

template<class T >
FlexErrArrayGroup<T>* FlexErrArray< T >::getGroup ( unsigned  bin)
private

◆ getGroupNoAlloc() [1/2]

template<class T >
FlexErrArrayGroup<T>* FlexErrArray< T >::getGroupNoAlloc ( unsigned  bin)
inlineprivate

Definition at line 136 of file FlexErrArray.h.

137  {
138  assert(bin<m_nbins);
139  if (small()) {
140  assert(iGroup(bin)<nGroupsNeeded(m_nbins));
141  return groups()[iGroup(bin)];
142  } else {
144  FlexErrArrayGroup<T> ** supergroup = superGroups()[iSuperGroup(bin)];
145  return supergroup ? supergroup[superGroupBin(bin)] : 0;
146  }
147  }

◆ getGroupNoAlloc() [2/2]

template<class T >
const FlexErrArrayGroup<T>* FlexErrArray< T >::getGroupNoAlloc ( unsigned  bin) const
inlineprivate

Definition at line 124 of file FlexErrArray.h.

125  {
126  assert(bin<m_nbins);
127  if (small()) {
128  assert(iGroup(bin)<nGroupsNeeded(m_nbins));
129  return groups()[iGroup(bin)];
130  } else {
132  const FlexErrArrayGroup<T> * const* supergroup = superGroups()[iSuperGroup(bin)];
133  return supergroup ? supergroup[superGroupBin(bin)] : 0;
134  }
135  }

◆ getNBins()

template<class T >
unsigned FlexErrArray< T >::getNBins ( ) const

◆ getNextActiveBin()

template<class T >
bool FlexErrArray< T >::getNextActiveBin ( unsigned &  bin,
T &  content,
double &  error 
)

◆ groupBin()

template<class T >
unsigned FlexErrArray< T >::groupBin ( unsigned  bin) const
inlineprivate

Definition at line 119 of file FlexErrArray.h.

119 { assert(bin<m_nbins); return bin%FLEXERRARRAYGROUP_MAXBINS; }

◆ groups() [1/2]

template<class T >
FlexErrArrayGroup<T>** FlexErrArray< T >::groups ( )
inlineprivate

Definition at line 99 of file FlexErrArray.h.

100  {
101  assert(small());
102  return reinterpret_cast<FlexErrArrayGroup<T> **>(m_indices);
103  }

◆ groups() [2/2]

template<class T >
const FlexErrArrayGroup<T>* const* FlexErrArray< T >::groups ( ) const
inlineprivate

Definition at line 94 of file FlexErrArray.h.

95  {
96  assert(small());
97  return reinterpret_cast<const FlexErrArrayGroup<T> * const*>(m_indices);
98  }

◆ holdsSeparateSumW2Info()

template<class T >
bool FlexErrArray< T >::holdsSeparateSumW2Info ( ) const

◆ iGroup()

template<class T >
unsigned FlexErrArray< T >::iGroup ( unsigned  bin) const
inlineprivate

Definition at line 120 of file FlexErrArray.h.

120 { assert(bin<m_nbins); return bin/FLEXERRARRAYGROUP_MAXBINS; }

◆ Integral()

template<class T >
double FlexErrArray< T >::Integral ( ) const

◆ iSuperGroup()

template<class T >
unsigned FlexErrArray< T >::iSuperGroup ( unsigned  bin) const
inlineprivate

Definition at line 116 of file FlexErrArray.h.

◆ nGroupsNeeded()

template<class T >
static unsigned FlexErrArray< T >::nGroupsNeeded ( unsigned  nbins)
inlinestaticprivate

Definition at line 150 of file FlexErrArray.h.

◆ nSuperGroups()

template<class T >
static unsigned FlexErrArray< T >::nSuperGroups ( unsigned  nbins)
inlinestaticprivate

Definition at line 151 of file FlexErrArray.h.

◆ operator=()

template<class T >
FlexErrArray& FlexErrArray< T >::operator= ( const FlexErrArray< T > &  )
private

◆ resetActiveBinLoop()

template<class T >
void FlexErrArray< T >::resetActiveBinLoop ( )

◆ scaleContentsAndErrors()

template<class T >
void FlexErrArray< T >::scaleContentsAndErrors ( const double &  fact)

◆ setBinContent()

template<class T >
void FlexErrArray< T >::setBinContent ( unsigned  bin,
const T &  content 
)

◆ setBinContentAndError()

template<class T >
void FlexErrArray< T >::setBinContentAndError ( unsigned  bin,
const T &  content,
const double &  error 
)

◆ setBinError()

template<class T >
void FlexErrArray< T >::setBinError ( unsigned  bin,
const double &  error 
)

◆ small() [1/2]

template<class T >
bool FlexErrArray< T >::small ( ) const
inline

Definition at line 40 of file FlexErrArray.h.

40 { return small(m_nbins); }

◆ small() [2/2]

template<class T >
static bool FlexErrArray< T >::small ( unsigned  nbins)
inlinestatic

◆ superGroupBin()

template<class T >
unsigned FlexErrArray< T >::superGroupBin ( unsigned  bin) const
inlineprivate

Definition at line 117 of file FlexErrArray.h.

◆ superGroups() [1/2]

template<class T >
FlexErrArrayGroup<T>*** FlexErrArray< T >::superGroups ( )
inlineprivate

Definition at line 89 of file FlexErrArray.h.

90  {
91  assert(!small());
92  return reinterpret_cast<FlexErrArrayGroup<T> ***>(m_indices);
93  }

◆ superGroups() [2/2]

template<class T >
const FlexErrArrayGroup<T>* const* const* FlexErrArray< T >::superGroups ( ) const
inlineprivate

Definition at line 84 of file FlexErrArray.h.

85  {
86  assert(!small());
87  return reinterpret_cast<const FlexErrArrayGroup<T> * const* const*>(m_indices);
88  }

Member Data Documentation

◆ m_fastloop_group2check

template<class T >
FlexErrArrayGroup<T>* FlexErrArray< T >::m_fastloop_group2check
private

Definition at line 106 of file FlexErrArray.h.

◆ m_fastloop_igr2check

template<class T >
unsigned FlexErrArray< T >::m_fastloop_igr2check
private

Definition at line 109 of file FlexErrArray.h.

◆ m_fastloop_isuper2check

template<class T >
unsigned FlexErrArray< T >::m_fastloop_isuper2check
private

Definition at line 108 of file FlexErrArray.h.

◆ m_indices

template<class T >
void* FlexErrArray< T >::m_indices
private

Definition at line 105 of file FlexErrArray.h.

◆ m_nbins

template<class T >
const unsigned FlexErrArray< T >::m_nbins
private

Definition at line 107 of file FlexErrArray.h.


The documentation for this class was generated from the following file:
FlexErrArray::groups
const FlexErrArrayGroup< T > *const * groups() const
Definition: FlexErrArray.h:94
FlexErrArray::iGroup
unsigned iGroup(unsigned bin) const
Definition: FlexErrArray.h:120
FlexErrArrayGroup
Definition: FlexErrArrayGroup.h:48
FlexErrArray::nGroupsNeeded
static unsigned nGroupsNeeded(unsigned nbins)
Definition: FlexErrArray.h:150
FlexErrArray::iSuperGroup
unsigned iSuperGroup(unsigned bin) const
Definition: FlexErrArray.h:116
bin
Definition: BinsDiffFromStripMedian.h:43
FLEX1DERRARRAY_NGROUPSPERINDEX
#define FLEX1DERRARRAY_NGROUPSPERINDEX
Definition: FlexErrArray.h:29
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
SCT_CalibAlgs::nbins
@ nbins
Definition: SCT_CalibNumbers.h:10
beamspotman.n
n
Definition: beamspotman.py:731
FlexErrArray::nSuperGroups
static unsigned nSuperGroups(unsigned nbins)
Definition: FlexErrArray.h:151
FlexErrArray::superGroups
const FlexErrArrayGroup< T > *const *const * superGroups() const
Definition: FlexErrArray.h:84
FLEXERRARRAYGROUP_MAXBINS
#define FLEXERRARRAYGROUP_MAXBINS
Definition: FlexErrArrayGroup.h:27
FlexErrArray::small
bool small() const
Definition: FlexErrArray.h:40
FlexErrArray::m_nbins
const unsigned m_nbins
Definition: FlexErrArray.h:107
FlexErrArray::superGroupBin
unsigned superGroupBin(unsigned bin) const
Definition: FlexErrArray.h:117
FlexErrArray::m_indices
void * m_indices
Definition: FlexErrArray.h:105