Go to the documentation of this file. 1 #ifndef _hgcfeelectronics_h_
2 #define _hgcfeelectronics_h_
7 #include "CLHEP/Random/RandGauss.h"
8 #include "CLHEP/Random/RandGaussQ.h"
9 #include "CLHEP/Random/RandFlat.h"
41 CLHEP::HepRandomEngine* engine,
47 float tdcOnsetAuto = -1) {
55 dataFrame, chargeColl, toa, engine, thrADC, lsbADC, gainIdx, maxADC,
thickness, tdcOnsetAuto,
adcPulse);
67 CLHEP::HepRandomEngine* engine,
84 float jitter2 = A2 / X2 + C2;
103 DFr& dataFrame,
hgc::HGCSimHitData& chargeColl, uint32_t thrADC,
float lsbADC, uint32_t gainIdx,
float maxADC);
116 DFr& dataFrame,
hgc::HGCSimHitData& chargeColl, uint32_t thrADC,
float lsbADC, uint32_t gainIdx,
float maxADC) {
126 CLHEP::HepRandomEngine* engine,
137 CLHEP::HepRandomEngine* engine,
143 float tdcOnsetAuto) {
145 dataFrame, chargeColl, toa, engine, thrADC, lsbADC, gainIdx, maxADC,
thickness, tdcOnsetAuto,
adcPulse_);
HGCFEElectronics(const edm::ParameterSet &ps)
CTOR.
std::array< float, 3 > jitterNoise2_ns_
hgc::HGCSimHitData toaFromToT
std::vector< float > tdcChargeDrainParameterisation_
void runShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, CLHEP::HepRandomEngine *engine, uint32_t thrADC=0, float lsbADC=-1, uint32_t gainIdx=0, float maxADC=-1, int thickness=1)
std::array< bool, hgc::nSamples > totFlags
void runShaperWithToT(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, CLHEP::HepRandomEngine *engine, uint32_t thrADC, float lsbADC, uint32_t gainIdx, float maxADC, int thickness, float tdcOnsetAuto)
std::array< bool, hgc::nSamples > toaFlags
void runSimpleShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, uint32_t thrADC, float lsbADC, uint32_t gainIdx, float maxADC, const hgc_digi::FEADCPulseShape &adcPulse)
applies a shape to each time sample and propagates the tails to the subsequent time samples
std::array< float, 6 > FEADCPulseShape
void runShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, const hgc_digi::FEADCPulseShape &adcPulse, CLHEP::HepRandomEngine *engine, uint32_t thrADC=0, float lsbADC=-1, uint32_t gainIdx=0, float maxADC=-1, int thickness=1, float tdcOnsetAuto=-1)
switches according to the firmware version
float getTimeJitter(float totalCharge, int thickness)
uint32_t toaMode() const
returns how ToT will be computed
void runTrivialShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, uint32_t thrADC, float lsbADC, uint32_t gainIdx, float maxADC)
converts charge to digis without pulse shape
std::array< HGCSimData_t, nSamples > HGCSimHitData
models the behavior of the front-end electronics
void SetNoiseValues(const std::vector< float > &noise_fC)
bool thresholdFollowsMIP_
void runSimpleShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, uint32_t thrADC, float lsbADC, uint32_t gainIdx, float maxADC)
void runShaperWithToT(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, CLHEP::HepRandomEngine *engine, uint32_t thrADC, float lsbADC, uint32_t gainIdx, float maxADC, int thickness, float tdcOnsetAuto, const hgc_digi::FEADCPulseShape &adcPulse)
implements pulse shape and switch to time over threshold including deadtime
std::array< float, 3 > getTDCForToAOnset()
void setADClsb(float newLSB)
std::vector< float > noise_fC_
hgc::HGCSimHitData newCharge
std::array< float, 3 > jitterConstant2_ns_
hgc_digi::FEADCPulseShape pulseAvgT_
uint32_t targetMIPvalue_ADC_
std::array< float, 3 > tdcForToAOnset_fC_
HGCFEElectronicsFirmwareVersion
Power< A, B >::type pow(const A &a, const B &b)
float getADClsb()
returns the LSB in MIP currently configured
std::array< bool, hgc::nSamples > busyFlags
hgc_digi::FEADCPulseShape adcPulse_
hgc_digi::FEADCPulseShape & getDefaultADCPulse()
getter for the default ADC pulse configured by python