Belle II Software  release-05-01-25
TOPNominalTDC.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - 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 <top/dbobjects/TOPGeoBase.h>
14 
15 namespace Belle2 {
24  class TOPNominalTDC: public TOPGeoBase {
25  public:
26 
30  enum {c_WindowSize = 64,
31  c_syncWindows = 2
32  };
33 
38  {}
39 
53  TOPNominalTDC(int numWindows,
54  int subBits,
55  double syncTimeBase,
56  int numofBunches,
57  double offset,
58  double pileupTime,
59  double doubleHitResolution,
60  double timeJitter,
61  double efficiency,
62  const std::string& name = "TOPNominalTDC");
63 
75  TOPNominalTDC(unsigned numBits,
76  double binWidth,
77  double offset,
78  double pileupTime,
79  double doubleHitResolution,
80  double timeJitter,
81  double efficiency,
82  const std::string& name = "TOPNominalTDCold"):
83  TOPGeoBase(name),
84  m_offset(offset),
85  m_pileupTime(pileupTime),
86  m_doubleHitResolution(doubleHitResolution),
87  m_timeJitter(timeJitter),
88  m_efficiency(efficiency),
89  m_numBits(numBits),
90  m_binWidth(binWidth),
91  m_sampleWidth(binWidth)
92  {}
93 
98  void setADCBits(unsigned adcBits) {m_adcBits = adcBits;}
99 
104  void setAveragePedestal(int averagePedestal) {m_averagePedestal = averagePedestal;}
105 
110  unsigned getADCBits() const {return m_adcBits;}
111 
116  unsigned getADCRange() const {return 1 << m_adcBits;}
117 
122  int getAveragePedestal() const {return m_averagePedestal;}
123 
128  unsigned getNumWindows() const {return m_numWindows;}
133  unsigned getSubBits() const {return m_subBits;}
134 
139  double getSyncTimeBase() const {return m_syncTimeBase;}
140 
145  unsigned getNumofBunches() const {return m_numofBunches;}
146 
151  double getBunchSeparationTime() const {return m_syncTimeBase / m_numofBunches;}
152 
157  double getOffset() const {return m_offset;}
158 
163  double getPileupTime() const {return m_pileupTime;}
164 
169  double getDoubleHitResolution() const {return m_doubleHitResolution;}
170 
175  double getTimeJitter() const {return m_timeJitter;}
176 
181  double getEfficiency() const {return m_efficiency;}
182 
187  unsigned getNumBits() const {return m_numBits;}
188 
193  double getBinWidth() const {return m_binWidth;}
194 
199  double getSampleWidth() const {return m_sampleWidth;}
200 
205  int getOverflowValue() const {return 1 << m_numBits;}
206 
212  double getTime(int TDC) const {return (TDC + 0.5) * m_binWidth - m_offset;}
213 
218  double getTimeMin() const {return -m_offset;}
219 
224  double getTimeMax() const {return getOverflowValue() * m_binWidth - m_offset;}
225 
232  int getTDCcount(double time) const;
233 
240  int getSample(double time) const;
241 
247  double getSampleTime(int sample) const {return sample * m_sampleWidth - m_offset;}
248 
254  bool isSampleValid(int sample) const;
255 
260  bool isConsistent() const override;
261 
266  void print(const std::string& title = "Nominal time-to-digit conversion parameters") const override;
267 
268 
269  private:
270 
271  unsigned m_numWindows = 0;
272  unsigned m_subBits = 0;
273  float m_syncTimeBase = 0;
274  unsigned m_numofBunches = 0;
275  float m_offset = 0;
276  float m_pileupTime = 0;
277  float m_doubleHitResolution = 0;
278  float m_timeJitter = 0;
279  float m_efficiency = 0;
281  unsigned m_numBits = 0;
282  float m_binWidth = 0;
283  float m_sampleWidth = 0;
285  unsigned m_adcBits = 12;
290  };
291 
293 } // end namespace Belle2
Belle2::TOPNominalTDC::m_adcBits
unsigned m_adcBits
number of ADC bits
Definition: TOPNominalTDC.h:293
Belle2::TOPNominalTDC::m_numofBunches
unsigned m_numofBunches
number of bunches per syncTimeBase
Definition: TOPNominalTDC.h:282
Belle2::TOPNominalTDC::TOPNominalTDC
TOPNominalTDC()
Default constructor.
Definition: TOPNominalTDC.h:45
Belle2::TOPNominalTDC::getTime
double getTime(int TDC) const
Convert TDC count to time.
Definition: TOPNominalTDC.h:220
Belle2::TOPNominalTDC::c_WindowSize
@ c_WindowSize
number of samples per ASIC window
Definition: TOPNominalTDC.h:38
Belle2::TOPNominalTDC::m_numBits
unsigned m_numBits
number of bits
Definition: TOPNominalTDC.h:289
Belle2::TOPNominalTDC::getADCBits
unsigned getADCBits() const
Returns the number of ADC bits.
Definition: TOPNominalTDC.h:118
Belle2::TOPNominalTDC::setAveragePedestal
void setAveragePedestal(int averagePedestal)
Sets average of pedestals.
Definition: TOPNominalTDC.h:112
Belle2::TOPNominalTDC::m_numWindows
unsigned m_numWindows
number of ASIC windows per waveform
Definition: TOPNominalTDC.h:279
Belle2::TOPNominalTDC::m_averagePedestal
int m_averagePedestal
average of pedestals [ADC bins]
Definition: TOPNominalTDC.h:294
Belle2::TOPGeoBase
Base class for geometry parameters.
Definition: TOPGeoBase.h:35
Belle2::TOPNominalTDC::m_sampleWidth
float m_sampleWidth
time between two samples
Definition: TOPNominalTDC.h:291
Belle2::TOPNominalTDC::getNumBits
unsigned getNumBits() const
Returns number of bits.
Definition: TOPNominalTDC.h:195
Belle2::TOPNominalTDC::m_pileupTime
float m_pileupTime
pile-up time
Definition: TOPNominalTDC.h:284
Belle2::TOPNominalTDC::m_doubleHitResolution
float m_doubleHitResolution
double hit resolution time
Definition: TOPNominalTDC.h:285
Belle2::TOPNominalTDC::print
void print(const std::string &title="Nominal time-to-digit conversion parameters") const override
Print the content of the class.
Definition: TOPNominalTDC.cc:95
Belle2::TOPNominalTDC::ClassDefOverride
ClassDefOverride(TOPNominalTDC, 3)
ClassDef.
Belle2::TOPNominalTDC::getAveragePedestal
int getAveragePedestal() const
Returns average of pedestals.
Definition: TOPNominalTDC.h:130
Belle2::TOPNominalTDC::isSampleValid
bool isSampleValid(int sample) const
Check for the validity of sample number.
Definition: TOPNominalTDC.cc:79
Belle2::TOPNominalTDC::getSample
int getSample(double time) const
Converts time to sample number.
Definition: TOPNominalTDC.cc:69
Belle2::TOPNominalTDC::getPileupTime
double getPileupTime() const
Returns pile-up time.
Definition: TOPNominalTDC.h:171
Belle2::TOPNominalTDC::m_offset
float m_offset
time offset
Definition: TOPNominalTDC.h:283
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TOPNominalTDC::getBunchSeparationTime
double getBunchSeparationTime() const
Returns bunch separation time (e.g.
Definition: TOPNominalTDC.h:159
Belle2::TOPNominalTDC::getSampleWidth
double getSampleWidth() const
Returns time difference between two samples.
Definition: TOPNominalTDC.h:207
Belle2::TOPNominalTDC::getDoubleHitResolution
double getDoubleHitResolution() const
Returns double hit resolution time.
Definition: TOPNominalTDC.h:177
Belle2::TOPNominalTDC
Nominal time-to-digit conversion parameters (simplified model)
Definition: TOPNominalTDC.h:32
Belle2::TOPNominalTDC::getOverflowValue
int getOverflowValue() const
Returns TDC overflow value.
Definition: TOPNominalTDC.h:213
Belle2::TOPNominalTDC::isConsistent
bool isConsistent() const override
Check for consistency of data members.
Definition: TOPNominalTDC.cc:86
Belle2::TOPNominalTDC::m_subBits
unsigned m_subBits
number of bits per sample
Definition: TOPNominalTDC.h:280
Belle2::TOPNominalTDC::getEfficiency
double getEfficiency() const
Returns electronic efficiency.
Definition: TOPNominalTDC.h:189
Belle2::TOPNominalTDC::getSubBits
unsigned getSubBits() const
Returns number of bits per sample.
Definition: TOPNominalTDC.h:141
Belle2::TOPNominalTDC::setADCBits
void setADCBits(unsigned adcBits)
Sets the number of ADC bits.
Definition: TOPNominalTDC.h:106
Belle2::TOPNominalTDC::getTimeMin
double getTimeMin() const
Returns time range lower limit.
Definition: TOPNominalTDC.h:226
Belle2::TOPNominalTDC::m_binWidth
float m_binWidth
time width of a TDC bin
Definition: TOPNominalTDC.h:290
Belle2::TOPNominalTDC::getTimeMax
double getTimeMax() const
Returns time range upper limit.
Definition: TOPNominalTDC.h:232
Belle2::TOPNominalTDC::getOffset
double getOffset() const
Returns time offset.
Definition: TOPNominalTDC.h:165
Belle2::TOPNominalTDC::getSampleTime
double getSampleTime(int sample) const
Converts sample number to time.
Definition: TOPNominalTDC.h:255
Belle2::TOPNominalTDC::m_timeJitter
float m_timeJitter
r.m.s.
Definition: TOPNominalTDC.h:286
Belle2::TOPNominalTDC::getSyncTimeBase
double getSyncTimeBase() const
Returns synchonization time base (time width of c_syncWindows)
Definition: TOPNominalTDC.h:147
Belle2::TOPNominalTDC::getNumWindows
unsigned getNumWindows() const
Returns number of ASIC windows per waveform.
Definition: TOPNominalTDC.h:136
Belle2::TOPNominalTDC::getBinWidth
double getBinWidth() const
Returns time width of a TDC bin.
Definition: TOPNominalTDC.h:201
Belle2::TOPNominalTDC::getADCRange
unsigned getADCRange() const
Returns ADC range.
Definition: TOPNominalTDC.h:124
Belle2::TOPNominalTDC::c_syncWindows
@ c_syncWindows
number of windows corresponding to syncTimeBase
Definition: TOPNominalTDC.h:39
Belle2::TOPNominalTDC::m_efficiency
float m_efficiency
electronic efficiency (fract.
Definition: TOPNominalTDC.h:287
Belle2::TOPNominalTDC::getTimeJitter
double getTimeJitter() const
Returns r.m.s.
Definition: TOPNominalTDC.h:183
Belle2::TOPNominalTDC::m_syncTimeBase
float m_syncTimeBase
time width of c_syncWindows
Definition: TOPNominalTDC.h:281
Belle2::TOPNominalTDC::getNumofBunches
unsigned getNumofBunches() const
Returns number of bunches in the synchonization time base.
Definition: TOPNominalTDC.h:153
Belle2::TOPNominalTDC::getTDCcount
int getTDCcount(double time) const
Converts time to TDC count.
Definition: TOPNominalTDC.cc:60