Belle II Software  release-05-01-25
TOPDigitizerModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010, 2019 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Marko Petric, Marko Staric *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <framework/core/Module.h>
14 
15 #include <framework/datastore/StoreArray.h>
16 #include <top/dataobjects/TOPSimHit.h>
17 #include <top/dataobjects/TOPSimCalPulse.h>
18 #include <top/dataobjects/TOPDigit.h>
19 #include <top/dataobjects/TOPRawDigit.h>
20 #include <top/dataobjects/TOPRawWaveform.h>
21 #include <mdst/dataobjects/MCParticle.h>
22 
23 #include <framework/database/DBObjPtr.h>
24 #include <top/dbobjects/TOPSampleTimes.h>
25 #include <top/dbobjects/TOPCalTimebase.h>
26 #include <top/dbobjects/TOPCalChannelT0.h>
27 #include <top/dbobjects/TOPCalAsicShift.h>
28 #include <top/dbobjects/TOPCalModuleT0.h>
29 #include <top/dbobjects/TOPCalCommonT0.h>
30 #include <top/dbobjects/TOPCalChannelPulseHeight.h>
31 #include <top/dbobjects/TOPCalChannelThreshold.h>
32 #include <top/dbobjects/TOPCalChannelNoise.h>
33 #include <top/dbobjects/TOPFrontEndSetting.h>
34 #include <top/dbobjects/TOPCalTimeWalk.h>
35 
36 #include <top/modules/TOPDigitizer/PulseHeightGenerator.h>
37 
38 
39 namespace Belle2 {
51  class TOPDigitizerModule : public Module {
52 
53  public:
54 
59 
64  virtual void initialize() override;
65 
69  virtual void beginRun() override;
70 
74  virtual void event() override;
75 
76  private:
77 
81  struct TimeOffset {
82  double value = 0;
83  double error = 0;
84  int windowShift = 0;
85  double timeShift = 0;
89  TimeOffset(double v, double e, int n, double t):
91  {}
92  };
93 
101  TimeOffset getTimeOffset(double trgOffset, int moduleID, int pixelID);
102 
109  double generatePulseHeight(int moduleID, int pixelID) const;
110 
111  // module steering parameters
112  double m_timeZeroJitter;
113  double m_electronicJitter;
114  double m_darkNoise;
115  double m_ADCx0;
116  double m_ADCp1;
117  double m_ADCp2;
118  double m_ADCmax;
119  double m_rmsNoise;
130  // datastore objects
138  // constants from conditions DB
150  // default for no DB or calibration not available
154  // other
155  double m_syncTimeBase = 0;
157  };
158 
160 } // Belle2 namespace
161 
Belle2::TOPDigitizerModule::TOPDigitizerModule
TOPDigitizerModule()
Constructor.
Definition: TOPDigitizerModule.cc:49
Belle2::TOPDigitizerModule::getTimeOffset
TimeOffset getTimeOffset(double trgOffset, int moduleID, int pixelID)
Returns a complete time offset by adding time mis-calibration to trgOffset.
Definition: TOPDigitizerModule.cc:487
Belle2::TOPDigitizerModule::m_rmsNoise
double m_rmsNoise
r.m.s of noise [ADC counts]
Definition: TOPDigitizerModule.h:127
Belle2::TOPDigitizerModule::m_thresholds
DBObjPtr< TOPCalChannelThreshold > m_thresholds
channel thresholds
Definition: TOPDigitizerModule.h:153
Belle2::TOPDigitizerModule::m_asicShift
DBObjPtr< TOPCalAsicShift > m_asicShift
ASIC shifts calibration constants.
Definition: TOPDigitizerModule.h:149
Belle2::TOPDigitizerModule::m_rawDigits
StoreArray< TOPRawDigit > m_rawDigits
collection of raw digits
Definition: TOPDigitizerModule.h:143
Belle2::TOPDigitizerModule::m_electronicJitter
double m_electronicJitter
r.m.s of electronic jitter
Definition: TOPDigitizerModule.h:121
Belle2::TOPDigitizerModule::m_useDatabase
bool m_useDatabase
if true, use calibration constants from database
Definition: TOPDigitizerModule.h:132
Belle2::TOPDigitizerModule::event
virtual void event() override
Event processor.
Definition: TOPDigitizerModule.cc:234
Belle2::TOPDigitizerModule::m_channelT0
DBObjPtr< TOPCalChannelT0 > m_channelT0
channel T0 calibration constants
Definition: TOPDigitizerModule.h:148
Belle2::TOPDigitizerModule::m_simulateTTS
bool m_simulateTTS
if true, add TTS to simulated hits
Definition: TOPDigitizerModule.h:134
Belle2::TOPDigitizerModule::m_commonT0
DBObjPtr< TOPCalCommonT0 > m_commonT0
common T0 calibration constants
Definition: TOPDigitizerModule.h:151
Belle2::TOPDigitizerModule::m_thresholdCount
int m_thresholdCount
minimal number of samples above threshold
Definition: TOPDigitizerModule.h:130
Belle2::TOPDigitizerModule::m_useSampleTimeCalibration
bool m_useSampleTimeCalibration
if true, use time base calibration
Definition: TOPDigitizerModule.h:133
Belle2::TOPDigitizerModule::beginRun
virtual void beginRun() override
Called when entering a new run.
Definition: TOPDigitizerModule.cc:139
Belle2::TOPDigitizerModule::m_sampleTimes
TOPSampleTimes m_sampleTimes
equidistant sample times
Definition: TOPDigitizerModule.h:159
Belle2::TOPDigitizerModule::TimeOffset::error
double error
error squared
Definition: TOPDigitizerModule.h:91
Belle2::TOPDigitizerModule::m_mcParticles
StoreArray< MCParticle > m_mcParticles
collection of MC particles
Definition: TOPDigitizerModule.h:141
Belle2::TOPDigitizerModule::m_simHits
StoreArray< TOPSimHit > m_simHits
collection of simuated hits
Definition: TOPDigitizerModule.h:139
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::TOPDigitizerModule::m_hysteresis
int m_hysteresis
pulse height threshold hysteresis [ADC counts]
Definition: TOPDigitizerModule.h:129
Belle2::TOPDigitizerModule::m_simCalPulses
StoreArray< TOPSimCalPulse > m_simCalPulses
collection of simuated cal pulses
Definition: TOPDigitizerModule.h:140
Belle2::OptionalDBObjPtr
Optional DBObjPtr: This class behaves the same as the DBObjPtr except that it will not raise errors w...
Definition: DBObjPtr.h:55
Belle2::TOP::PulseHeightGenerator
Generates pulse height according to distribution: P(x) = (x/x0)^p1 * exp(-(x/x0)^p2),...
Definition: PulseHeightGenerator.h:35
Belle2::TOPDigitizerModule::m_moduleT0
DBObjPtr< TOPCalModuleT0 > m_moduleT0
module T0 calibration constants
Definition: TOPDigitizerModule.h:150
Belle2::TOPDigitizerModule::m_pulseHeights
DBObjPtr< TOPCalChannelPulseHeight > m_pulseHeights
pulse height param.
Definition: TOPDigitizerModule.h:152
Belle2::TOPDigitizerModule::m_allChannels
bool m_allChannels
if true, always make waveforms for all channels
Definition: TOPDigitizerModule.h:135
Belle2::TOPSampleTimes
Calibration constants of a singe ASIC channel: time axis (sample times)
Definition: TOPSampleTimes.h:34
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TOPDigitizerModule::TimeOffset::value
double value
value
Definition: TOPDigitizerModule.h:90
Belle2::TOPDigitizerModule::TimeOffset::windowShift
int windowShift
number of shifted windows
Definition: TOPDigitizerModule.h:92
Belle2::TOPDigitizerModule::m_ADCp1
double m_ADCp1
pulse height distribution parameter, must be non-negative
Definition: TOPDigitizerModule.h:124
Belle2::TOPDigitizerModule::m_ADCmax
double m_ADCmax
pulse height upper bound of range [ADC counts]
Definition: TOPDigitizerModule.h:126
Belle2::TOPDigitizerModule::m_minWidthXheight
double m_minWidthXheight
minimal width * height [ns * ADC counts]
Definition: TOPDigitizerModule.h:136
Belle2::TOPDigitizerModule::TimeOffset::TimeOffset
TimeOffset(double v, double e, int n, double t)
Full constructor.
Definition: TOPDigitizerModule.h:97
Belle2::TOPDigitizerModule::m_threshold
int m_threshold
pulse height threshold [ADC counts]
Definition: TOPDigitizerModule.h:128
Belle2::TOPDigitizerModule::generatePulseHeight
double generatePulseHeight(int moduleID, int pixelID) const
Generates and returns pulse height.
Definition: TOPDigitizerModule.cc:524
Belle2::TOPDigitizerModule::m_feSetting
DBObjPtr< TOPFrontEndSetting > m_feSetting
front-end settings
Definition: TOPDigitizerModule.h:156
Belle2::TOPDigitizerModule::m_pulseHeightGenerator
TOP::PulseHeightGenerator m_pulseHeightGenerator
default generator
Definition: TOPDigitizerModule.h:160
Belle2::TOPDigitizerModule::TimeOffset::timeShift
double timeShift
shift expressed in time
Definition: TOPDigitizerModule.h:93
Belle2::TOPDigitizerModule::m_useWaveforms
bool m_useWaveforms
if true, use full waveform digitization
Definition: TOPDigitizerModule.h:131
Belle2::TOPDigitizerModule::initialize
virtual void initialize() override
Initialize the Module.
Definition: TOPDigitizerModule.cc:101
Belle2::TOPDigitizerModule::m_digits
StoreArray< TOPDigit > m_digits
collection of digits
Definition: TOPDigitizerModule.h:144
Belle2::TOPDigitizerModule::m_waveforms
StoreArray< TOPRawWaveform > m_waveforms
collection of waveforms
Definition: TOPDigitizerModule.h:142
Belle2::TOPDigitizerModule::m_ADCx0
double m_ADCx0
pulse height distribution parameter [ADC counts]
Definition: TOPDigitizerModule.h:123
Belle2::TOPDigitizerModule::m_timebases
DBObjPtr< TOPCalTimebase > m_timebases
sample times from database
Definition: TOPDigitizerModule.h:147
Belle2::TOPDigitizerModule::m_timeZeroJitter
double m_timeZeroJitter
r.m.s of T0 jitter
Definition: TOPDigitizerModule.h:120
Belle2::TOPDigitizerModule::m_timeWalk
OptionalDBObjPtr< TOPCalTimeWalk > m_timeWalk
time-walk calibration constants
Definition: TOPDigitizerModule.h:155
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::TOPDigitizerModule::TimeOffset
Utility structure for time offset.
Definition: TOPDigitizerModule.h:89
Belle2::TOPDigitizerModule::m_darkNoise
double m_darkNoise
uniform dark noise (hits per bar)
Definition: TOPDigitizerModule.h:122
Belle2::TOPDigitizerModule::m_noises
DBObjPtr< TOPCalChannelNoise > m_noises
channel noise levels (r.m.s)
Definition: TOPDigitizerModule.h:154
Belle2::TOPDigitizerModule::m_syncTimeBase
double m_syncTimeBase
SSTin period.
Definition: TOPDigitizerModule.h:163
Belle2::TOPDigitizerModule::m_ADCp2
double m_ADCp2
pulse height distribution parameter, must be positive
Definition: TOPDigitizerModule.h:125