1 #ifndef _hgcfeelectronics_h_ 2 #define _hgcfeelectronics_h_ 7 #include "CLHEP/Random/RandGauss.h" 8 #include "CLHEP/Random/RandGaussQ.h" 36 hgc::HGCSimHitData& toa,
int thickness, CLHEP::HepRandomEngine* engine,
float cce = 1.0)
41 case WITHTOT : {
runShaperWithToT(dataFrame,chargeColl,toa, thickness, engine, cce);
break; }
69 hgc::HGCSimHitData& toa,
int thickness, CLHEP::HepRandomEngine* engine,
float cce = 1.0);
HGCFEElectronicsFirmwareVersion
void runShaperWithToT(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, int thickness, CLHEP::HepRandomEngine *engine, float cce=1.0)
implements pulse shape and switch to time over threshold including deadtime
hgc::HGCSimHitData toaFromToT
std::array< bool, hgc::nSamples > totFlags
std::array< HGCSimData_t, nSamples > HGCSimHitData
HGCFEElectronics(const edm::ParameterSet &ps)
CTOR.
bool thresholdFollowsMIP_
std::array< bool, hgc::nSamples > busyFlags
void runSimpleShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, int thickness, float cce=1.0)
applies a shape to each time sample and propagates the tails to the subsequent time samples ...
float getADClsb()
returns the LSB in MIP currently configured
uint32_t toaMode() const
returns how ToT will be computed
void setADClsb(float newLSB)
std::array< float, 6 > adcPulse_
void runTrivialShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, int thickness, float cce=1.0)
converts charge to digis without pulse shape
std::vector< float > tdcChargeDrainParameterisation_
void runShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, int thickness, CLHEP::HepRandomEngine *engine, float cce=1.0)
switches according to the firmware version
models the behavior of the front-end electronics
std::array< float, 6 > pulseAvgT_
hgc::HGCSimHitData newCharge