CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HGCFEElectronics.h
Go to the documentation of this file.
1 #ifndef _hgcfeelectronics_h_
2 #define _hgcfeelectronics_h_
3 
6 
7 #include "CLHEP/Random/RandGauss.h"
8 #include "CLHEP/Random/RandGaussQ.h"
9 
11 
17 namespace hgc = hgc_digi;
18 
19 template <class DFr>
21 {
22  public:
23 
26 
31 
35  inline void runShaper(DFr &dataFrame, hgc::HGCSimHitData& chargeColl,
36  hgc::HGCSimHitData& toa, CLHEP::HepRandomEngine* engine)
37  {
38  switch(fwVersion_)
39  {
40  case SIMPLE : { runSimpleShaper(dataFrame,chargeColl); break; }
41  case WITHTOT : { runShaperWithToT(dataFrame,chargeColl,toa,engine); break; }
42  default : { runTrivialShaper(dataFrame,chargeColl); break; }
43  }
44  }
45 
49  float getADClsb() { return adcLSB_fC_; }
50  float getTDClsb() { return tdcLSB_fC_; }
51  float getADCThreshold() { return adcThreshold_fC_; }
52  float getTDCOnset() { return tdcOnset_fC_; }
53  void setADClsb(float newLSB) { adcLSB_fC_=newLSB; }
54 
58  void runTrivialShaper(DFr &dataFrame, hgc::HGCSimHitData& chargeColl);
59 
63  void runSimpleShaper(DFr &dataFrame, hgc::HGCSimHitData& chargeColl);
64 
68  void runShaperWithToT(DFr &dataFrame, hgc::HGCSimHitData& chargeColl,
69  hgc::HGCSimHitData& toa, CLHEP::HepRandomEngine* engine);
70 
74  uint32_t toaMode() const { return toaMode_; }
75 
80 
81  private:
82 
83  //private members
84  uint32_t fwVersion_;
88  uint32_t toaMode_;
89  //caches
90  std::array<bool,hgc::nSamples> busyFlags, totFlags;
92 };
93 
94 #endif
void runTrivialShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl)
converts charge to digis without pulse shape
std::vector< double > adcPulse_
hgc::HGCSimHitData toaFromToT
std::array< bool, hgc::nSamples > totFlags
std::array< HGCSimData_t, nSamples > HGCSimHitData
void runSimpleShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl)
applies a shape to each time sample and propagates the tails to the subsequent time samples ...
HGCFEElectronics(const edm::ParameterSet &ps)
CTOR.
void runShaper(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, CLHEP::HepRandomEngine *engine)
switches according to the firmware version
std::array< bool, hgc::nSamples > busyFlags
void runShaperWithToT(DFr &dataFrame, hgc::HGCSimHitData &chargeColl, hgc::HGCSimHitData &toa, CLHEP::HepRandomEngine *engine)
implements pulse shape and switch to time over threshold including deadtime
float getADClsb()
returns the LSB in MIP currently configured
uint32_t toaMode() const
returns how ToT will be computed
void setADClsb(float newLSB)
std::vector< double > tdcChargeDrainParameterisation_
std::vector< double > pulseAvgT_
models the behavior of the front-end electronics
hgc::HGCSimHitData newCharge