Belle II Software development
ECLDigitizerModule.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11/* ECL headers. */
12#include <ecl/dbobjects/ECLCrystalCalib.h>
13#include <ecl/dbobjects/ECLDigitWaveformParametersForMC.h>
14#include <ecl/digitization/EclConfiguration.h>
15#include <ecl/mapper/ECLChannelMapper.h>
16
17/* Basf2 headers. */
18#include <framework/core/Module.h>
19#include <framework/dataobjects/EventMetaData.h>
20#include <framework/database/DBObjPtr.h>
21#include <framework/datastore/StoreArray.h>
22#include <framework/datastore/StoreObjPtr.h>
23
24/* C++ headers. */
25#include <vector>
26
27class TTree;
28
29namespace Belle2 {
35 class ECLWaveformData;
36 class ECLNoiseData;
37 class ECLWFAlgoParams;
38 class ECLHit;
39 class ECLSimHit;
40 class ECLDigit;
41 class ECLDsp;
42 class ECLDspWithExtraMCInfo;
43 class ECLTrig;
44 class ECLWaveforms;
45
70 class ECLDigitizerModule : public Module {
71 public:
72
76
80
81
83 virtual void initialize() override;
84
86 virtual void beginRun() override;
87
92 virtual void event() override;
93
95 virtual void endRun() override;
96
98 virtual void terminate() override;
99
100 private:
109 using uint_pair_t = std::pair<unsigned int, unsigned int>;
114 short unsigned int idn;
116 short unsigned int inoise;
118 short unsigned int ifunc;
120 short unsigned int iss;
121 };
122
124 std::vector<crystallinks_t> m_tbl;
125
127 std::vector<algoparams_t> m_idn;
128 std::vector<fitparams_t> m_fitparams;
129 std::vector<ECLNoiseData> m_noise;
130 std::vector<signalsample_t> m_ss;
131 std::vector<signalsample_t> m_ss_HadronShapeSimulations;
134 std::vector<adccounts_t> m_adc;
138 float ascale;
139 float tshift;
140 };
142 std::vector<calibration_t> m_calib;
143
145 std::vector<double> m_Awave;
146
151 unsigned char m_ttime[ECL::ECL_CRATES] = {};
152
154 void shapeFitterWrapper(const int j, const int* FitA, const int m_ttrig,
155 int& m_lar, int& m_ltr, int& m_lq, int& m_chi) const ;
156
158 bool m_loadOnce = true;
159
162
164 void readDSPDB();
166 void shapeSignals();
168 void makeWaveforms();
170 void repack(const ECLWFAlgoParams&, algoparams_t&);
174 void makeElectronicNoiseAndPedestal(int j, int* FitA);
175
178
181
184
187
190
193
196
199
202
205
207 DBObjPtr<ECLCrystalCalib> m_FPGAWaveform{"ECL_FPGA_StoreWaveform"};
208
211
212 /* Input arrays. */
213
216
219
222
225
230
233
236
239
246 bool m_inter;
249 unsigned int m_compAlgo;
254 std::string m_eclWaveformsName;
268 };
270}//Belle2
Class for accessing objects in the database.
Definition: DBObjPtr.h:21
The ECLDigitizer module.
int m_ADCThreshold
ADC threshold for wavefom fits.
std::vector< calibration_t > m_calib
Storage for calibration constants.
double m_unitscale
Normalization coefficient for ECL signal shape.
StoreArray< ECLDsp > m_eclDsps
Generated waveforms.
void callbackHadronSignalShapes()
callback hadron signal shapes from database
void shapeSignals()
Emulate response of energy deposition in a crystal and attached photodiode and make waveforms.
ECL::ECLChannelMapper m_eclMapper
Channel Mapper.
DBObjPtr< TTree > m_algoParameters
Shape fitting algorithm parameters.
StoreObjPtr< ECLWaveforms > m_eclWaveforms
Compressed waveforms.
std::vector< algoparams_t > m_idn
Fit algorithm parameters shared by group of crystals.
StoreArray< ECLHit > m_eclDiodeHits
Diode hits array.
std::pair< unsigned int, unsigned int > uint_pair_t
a pair of unsigned ints
bool m_dspDataTest
DSP data usage flag.
std::vector< fitparams_t > m_fitparams
Pairs of (waveform parameters, fit parameters)
virtual void initialize() override
Initialize variables
virtual void event() override
Actual digitization of all hits in the ECL.
double m_WaveformThresholdOverride
If gt 0, value will override ECL_FPGA_StoreWaveform and apply value (in GeV) as threshold for all cry...
DBObjPtr< ECLCrystalCalib > m_CrateTimeOffset
Crate time offset.
DBObjPtr< TTree > m_waveformParameters
CellID-specific signal shapes.
double m_DspWithExtraMCInfoThreshold
Energy threshold above which to store DSPs with extra information.
StoreArray< ECLTrig > m_eclTrigs
Trigger information.
virtual void endRun() override
Nothing so far.
DBObjPtr< ECLCrystalCalib > m_MCTimeOffset
MC time offset.
virtual void terminate() override
Free memory.
StoreArray< ECLSimHit > m_eclSimHits
SimHits array.
bool m_background
Module parameters.
StoreArray< ECLDigit > m_eclDigits
Output Arrays.
void getfitparams(const ECLWaveformData &, const ECLWFAlgoParams &, fitparams_t &)
load waveform fit parameters for the shapeFitter function
void shapeFitterWrapper(const int j, const int *FitA, const int m_ttrig, int &m_lar, int &m_ltr, int &m_lq, int &m_chi) const
function wrapper for waveform fit
std::vector< double > m_Awave
Storage for waveform saving thresholds.
DBObjPtr< ECLCrystalCalib > m_CrystalElectronicsTime
Crystal electronics time.
std::vector< signalsample_t > m_ss_HadronShapeSimulations
tabulated shape line for hadron shape simulations
fitparams_t::int_array_192x16_t int_array_192x16_t
weighting coefficients for time and amplitude calculation
DBObjPtr< ECLCrystalCalib > m_CrystalElectronics
Crystal electronics.
fitparams_t::int_array_24x16_t int_array_24x16_t
weighting coefficients amplitude calculation.
virtual void beginRun() override
Nothing so far.
unsigned int m_compAlgo
compression algorithm for background waveforms
bool m_HadronPulseShape
hadron pulse shape flag
DBObjPtr< ECLCrystalCalib > m_CrystalEnergy
Crystal energy.
bool m_trigTime
Use trigger time from beam background overlay.
std::vector< crystallinks_t > m_tbl
Lookup table for ECL channels.
std::vector< adccounts_t > m_adc
Storage for adc hits from entire calorimeter (8736 crystals)
StoreArray< ECLDspWithExtraMCInfo > m_eclDspsWithExtraMCInfo
Generated waveforms with extra MC information.
StoreArray< ECLHit > m_eclHits
Hits array.
bool m_useWaveformParameters
If true, use m_waveformParameters, m_algoParameters, m_noiseParameters.
DBObjPtr< ECLCrystalCalib > m_FPGAWaveform
FPGA waveform.
bool m_calibration
calibration flag
bool m_storeDspWithExtraMCInfo
DSP with extra info flag.
unsigned char m_ttime[ECL::ECL_CRATES]
storage for trigger time in each ECL.
DBObjPtr< TTree > m_noiseParameters
Electronics noise covariance matrix.
bool m_loadOnce
Always load waveform parameters at least once.
std::vector< ECLNoiseData > m_noise
parameters for correlated noise simulation
DBObjPtr< ECLDigitWaveformParametersForMC > m_waveformParametersMC
Hadron signal shapes.
void repack(const ECLWFAlgoParams &, algoparams_t &)
repack waveform fit parameters from ROOT format to plain array of unsigned short for the shapeFitter ...
void makeWaveforms()
Produce and compress waveforms for beam background overlay.
bool m_waveformMaker
produce only waveform digits
StoreObjPtr< EventMetaData > m_EventMetaData
Event metadata.
void readDSPDB()
read Shaper-DSP data from root file
void makeElectronicNoiseAndPedestal(int j, int *FitA)
fill the waveform array FitA by electronic noise and bias it for channel J [0-8735]
std::string m_eclWaveformsName
name of background waveforms storage
DBObjPtr< ECLCrystalCalib > m_CrystalTimeOffset
Crystal time offset.
bool m_inter
internuclear counter effect
std::vector< signalsample_t > m_ss
tabulated shape line
Container for constant parameters used in waveform fits.
ECLWaveformData - container for inverse covariant matrix and shape parameters for time and amplitude ...
This class provides access to ECL channel map that is either a) Loaded from the database (see ecl/dbo...
Base class for Modules.
Definition: Module.h:72
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
Type-safe access to single objects in the data store.
Definition: StoreObjPtr.h:96
Abstract base class for different kinds of events.
calibration constants per channel
a struct for the parameters of the algorithm
a struct for the fit parameters
int int_array_192x16_t[2 *m_ndt][16]
Array for DSP coefs in normal fit.
int int_array_24x16_t[m_ndt/4][16]
Array for DSP coefs in fast fit.