CMS 3D CMS Logo

HGCalSiNoiseMap.h
Go to the documentation of this file.
1 #ifndef simcalorimetry_hgcalsimalgos_hgcalsinoisemap
2 #define simcalorimetry_hgcalsimalgos_hgcalsinoisemap
3 
7 #include <string>
8 #include <array>
9 
15 public:
18 
21  : lnfluence(0.), fluence(0.), ileak(0.), cce(1.), noise(0.), mipfC(0), gain(0), mipADC(0), thrADC(0) {}
23  unsigned int gain, mipADC, thrADC;
24  };
25 
28 
32  void setIleakParam(const std::vector<double> &pars) { ileakParam_ = pars; }
33 
37  void setCceParam(const std::vector<double> &parsFine,
38  const std::vector<double> &parsThin,
39  const std::vector<double> &parsThick) {
40  cceParam_.push_back(parsFine); //120
41  cceParam_.push_back(parsThin); //200
42  cceParam_.push_back(parsThick); //300
43  }
44 
48  void setDoseMap(const std::string &, const unsigned int &);
49 
55  GainRange_t gain = GainRange_t::AUTO,
56  int aimMIPtoADC = 10);
57 
58  std::array<double, 3> &getMipEqfC() { return mipEqfC_; }
59  std::array<double, 3> &getCellCapacitance() { return cellCapacitance_; }
60  std::array<double, 3> &getCellVolume() { return cellVolume_; }
61  std::vector<std::vector<double> > &getCCEParam() { return cceParam_; }
62  std::vector<double> &getIleakParam() { return ileakParam_; }
63  std::vector<std::vector<double> > &getENCsParam() { return encsParam_; }
64  std::vector<double> &getLSBPerGain() { return lsbPerGain_; }
65  std::vector<double> &getMaxADCPerGain() { return chargeAtFullScaleADCPerGain_; }
66 
67 private:
68  //vector of three params, per sensor type: 0:120 [mum], 1:200, 2:300
69  std::array<double, 3> mipEqfC_, cellCapacitance_, cellVolume_;
70  std::vector<std::vector<double> > cceParam_;
71 
72  //leakage current/volume vs fluence
73  std::vector<double> ileakParam_;
74 
75  //shaper noise param
76  const double encpScale_;
77 
78  //common noise subtraction noise (final scaling value)
79  const double encCommonNoiseSub_;
80 
81  //electron charge in fC
82  const double qe2fc_;
83 
84  //electronics noise (series+parallel) polynomial coeffs;
85  std::vector<std::vector<double> > encsParam_;
86 
87  //lsb
89 
90  //conversions
91  const double unitToMicro_ = 1.e6;
92 
93  //flags used to disable specific components of the Si operation parameters
95 };
96 
97 #endif
void setIleakParam(const std::vector< double > &pars)
set the ileak parameters to use
std::vector< std::vector< double > > cceParam_
std::vector< double > chargeAtFullScaleADCPerGain_
std::array< double, 3 > & getCellCapacitance()
std::vector< double > & getMaxADCPerGain()
std::array< double, 3 > & getMipEqfC()
std::vector< double > & getLSBPerGain()
void setDoseMap(const std::string &, const unsigned int &)
overrides base class method with specifics for the configuration of the algo
std::array< double, 3 > & getCellVolume()
derives from HGCalRadiation map to parse fluence parameters, provides Si-specific functions; see DN-1...
SiCellOpCharacteristics getSiCellOpCharacteristics(const HGCSiliconDetId &did, GainRange_t gain=GainRange_t::AUTO, int aimMIPtoADC=10)
returns the charge collection efficiency and noise if gain range is set to auto, it will find the mos...
std::array< double, 3 > cellCapacitance_
void setCceParam(const std::vector< double > &parsFine, const std::vector< double > &parsThin, const std::vector< double > &parsThick)
set the cce parameters to use
std::array< double, 3 > mipEqfC_
std::vector< std::vector< double > > encsParam_
parses a txt file with dose/fluence parameters and provides functions for noise, etc.
const double encCommonNoiseSub_
std::vector< double > & getIleakParam()
std::vector< std::vector< double > > & getCCEParam()
const double encpScale_
std::array< double, 3 > cellVolume_
std::vector< std::vector< double > > & getENCsParam()
const double unitToMicro_
const double qe2fc_
std::vector< double > ileakParam_
std::vector< double > lsbPerGain_