Belle II Software  release-05-02-19
TOPASICPedestals.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Marko Staric *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <TObject.h>
14 #include <TProfile.h>
15 #include <vector>
16 
17 namespace Belle2 {
26  class TOPASICPedestals : public TObject {
27  public:
28 
32  enum {c_WindowSize = 64,
33  c_Bits = 9
34  };
35 
40  {
41  for (unsigned i = 0; i < c_WindowSize; i++) m_pedestals[i] = 0;
42  }
43 
48  explicit TOPASICPedestals(unsigned short asicWindow): m_asicWindow(asicWindow),
49  m_offset(0)
50  {
51  for (unsigned i = 0; i < c_WindowSize; i++) m_pedestals[i] = 0;
52  }
53 
60  int setPedestals(const TProfile* profile, double average = 0);
61 
66  unsigned getASICWindow() const {return m_asicWindow;}
67 
72  unsigned getSize() const {return c_WindowSize;}
73 
79  float getValue(unsigned i) const
80  {
81  if (i < c_WindowSize) {
82  unsigned short mask = (1 << c_Bits);
83  mask--;
84  return (m_pedestals[i] & mask) + m_offset;
85  }
86  return 0;
87  }
88 
94  float getError(unsigned i) const
95  {
96  if (i < c_WindowSize) {
97  return (m_pedestals[i] >> c_Bits);
98  }
99  return 0;
100  }
101 
107  bool isValid(unsigned i) const
108  {
109  if (i < c_WindowSize) {
110  return (m_pedestals[i] != 0);
111  }
112  return false;
113  }
114 
115 
120  unsigned getNumofUnvalid() const
121  {
122  unsigned bad = 0;
123  for (int i = 0; i < c_WindowSize; i++) {
124  if (!isValid(i)) bad++;
125  }
126  return bad;
127  }
128 
129  private:
130 
139  unsigned getOptimizedOffset(const std::vector<unsigned>& values,
140  const std::vector<unsigned>& errors,
141  unsigned maxDif,
142  unsigned maxErr);
143 
144  unsigned short m_asicWindow;
145  unsigned short m_offset;
146  unsigned short m_pedestals[c_WindowSize];
150  };
151 
153 } // end namespace Belle2
154 
Belle2::TOPASICPedestals::isValid
bool isValid(unsigned i) const
Check whether the pedestal of i-th sample is valid.
Definition: TOPASICPedestals.h:115
Belle2::TOPASICPedestals::c_WindowSize
@ c_WindowSize
number of samples
Definition: TOPASICPedestals.h:40
Belle2::TOPASICPedestals::m_pedestals
unsigned short m_pedestals[c_WindowSize]
pedestals (packed: value, error)
Definition: TOPASICPedestals.h:154
Belle2::TOPASICPedestals::ClassDef
ClassDef(TOPASICPedestals, 1)
ClassDef.
Belle2::TOPASICPedestals::m_asicWindow
unsigned short m_asicWindow
ASIC window number.
Definition: TOPASICPedestals.h:152
Belle2::TOPASICPedestals::setPedestals
int setPedestals(const TProfile *profile, double average=0)
Set pedestals from profile histogram with c_WindowSize bins.
Definition: TOPASICPedestals.cc:25
Belle2::TOPASICPedestals::getSize
unsigned getSize() const
Return window size (number of pedestal samples)
Definition: TOPASICPedestals.h:80
Belle2::TOPASICPedestals::TOPASICPedestals
TOPASICPedestals()
Default constructor.
Definition: TOPASICPedestals.h:47
Belle2::TOPASICPedestals::getError
float getError(unsigned i) const
Return pedestal uncertainly of i-th sample.
Definition: TOPASICPedestals.h:102
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TOPASICPedestals::getOptimizedOffset
unsigned getOptimizedOffset(const std::vector< unsigned > &values, const std::vector< unsigned > &errors, unsigned maxDif, unsigned maxErr)
Return the offset that can allow for the maximal number of good pedestal samples.
Definition: TOPASICPedestals.cc:67
Belle2::TOPASICPedestals::getASICWindow
unsigned getASICWindow() const
Return ASIC window number.
Definition: TOPASICPedestals.h:74
Belle2::TOPASICPedestals::getNumofUnvalid
unsigned getNumofUnvalid() const
Return number of un-valid pedestals (e.g.
Definition: TOPASICPedestals.h:128
Belle2::TOPASICPedestals::m_offset
unsigned short m_offset
common pedestal offset
Definition: TOPASICPedestals.h:153
Belle2::TOPASICPedestals::c_Bits
@ c_Bits
number of bits reserved for pedestal value
Definition: TOPASICPedestals.h:41
Belle2::TOPASICPedestals::getValue
float getValue(unsigned i) const
Return pedestal value of i-th sample.
Definition: TOPASICPedestals.h:87
Belle2::TOPASICPedestals
Calibration constants of a single ASIC window: pedestals.
Definition: TOPASICPedestals.h:34