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"
36 CLHEP::HepRandomEngine* engine,
44 runSimpleShaper(dataFrame, chargeColl, thrADC, lsbADC, gainIdx, maxADC);
66 float jitter2 = A2 / X2 + C2;
85 DFr& dataFrame,
hgc::HGCSimHitData& chargeColl, uint32_t thrADC,
float lsbADC, uint32_t gainIdx,
float maxADC);
91 DFr& dataFrame,
hgc::HGCSimHitData& chargeColl, uint32_t thrADC,
float lsbADC, uint32_t gainIdx,
float maxADC);
99 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)
switches according to the firmware version
std::array< bool, hgc::nSamples > totFlags
std::array< bool, hgc::nSamples > toaFlags
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)
applies a shape to each time sample and propagates the tails to the subsequent time samples
std::array< float, 3 > getTDCForToAOnset()
void setADClsb(float newLSB)
std::array< float, 6 > adcPulse_
std::vector< float > noise_fC_
hgc::HGCSimHitData newCharge
std::array< float, 3 > jitterConstant2_ns_
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)
implements pulse shape and switch to time over threshold including deadtime
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
std::array< float, 6 > pulseAvgT_