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,
65 CLHEP::HepRandomEngine* engine,
82 float jitter2 = A2 / X2 + C2;
101 DFr& dataFrame,
hgc::HGCSimHitData& chargeColl, uint32_t thrADC,
float lsbADC, uint32_t gainIdx,
float maxADC);
114 DFr& dataFrame,
hgc::HGCSimHitData& chargeColl, uint32_t thrADC,
float lsbADC, uint32_t gainIdx,
float maxADC) {
124 CLHEP::HepRandomEngine* engine,
134 CLHEP::HepRandomEngine* engine,
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 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)
switches according to the firmware version
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
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, 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_
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)
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