CMS 3D CMS Logo

HcaluLUTTPGCoder.h
Go to the documentation of this file.
1 #ifndef CALIBCALORIMETRY_HCALTPGALGOS_HCALNOMINALTPGCODER_H
2 #define CALIBCALORIMETRY_HCALTPGALGOS_HCALNOMINALTPGCODER_H 1
3 
9 
10 #include <bitset>
11 #include <vector>
12 
13 class HcalDbService;
14 
33 public:
34  static const float lsb_;
35 
37  HcaluLUTTPGCoder(const HcalTopology* topo, const HcalTimeSlew* delay);
38  ~HcaluLUTTPGCoder() override;
39 
40  void init(const HcalTopology* top, const HcalTimeSlew* delay);
41 
42  void adc2Linear(const HBHEDataFrame& df, IntegerCaloSamples& ics) const override;
43  void adc2Linear(const HFDataFrame& df, IntegerCaloSamples& ics) const override;
44  void adc2Linear(const QIE10DataFrame& df, IntegerCaloSamples& ics) const override;
45  void adc2Linear(const QIE11DataFrame& df, IntegerCaloSamples& ics) const override;
46  void compress(const IntegerCaloSamples& ics,
47  const std::vector<bool>& featureBits,
48  HcalTriggerPrimitiveDigi& tp) const override;
49  unsigned short adc2Linear(HcalQIESample sample, HcalDetId id) const override;
50  float getLUTPedestal(HcalDetId id) const override;
51  float getLUTGain(HcalDetId id) const override;
52  std::vector<unsigned short> getLinearizationLUT(HcalDetId id) const override;
53 
54  double cosh_ieta(int ieta, int depth, HcalSubdetector subdet);
55  void make_cosh_ieta_map(void);
56  void update(const HcalDbService& conditions);
57  void update(const char* filename, bool appendMSB = false);
58  void updateXML(const char* filename);
60  void setFGHFthresholds(const std::vector<uint32_t>& fgthresholds) { FG_HF_thresholds_ = fgthresholds; };
61  void setMaskBit(int bit) { bitToMask_ = bit; };
62  void setAllLinear(bool linear, double lsb8, double lsb11, double lsb11overlap) {
64  linearLSB_QIE8_ = lsb8;
65  linearLSB_QIE11_ = lsb11;
66  linearLSB_QIE11Overlap_ = lsb11overlap;
67  };
72  void lookupMSB(const HBHEDataFrame& df, std::vector<bool>& msb) const;
73  void lookupMSB(const QIE10DataFrame& df, std::vector<std::bitset<2>>& msb) const;
74  void lookupMSB(const QIE11DataFrame& df, std::vector<std::bitset<2>>& msb) const;
75  bool getMSB(const HcalDetId& id, int adc) const;
76  int getLUTId(HcalSubdetector id, int ieta, int iphi, int depth) const;
77  int getLUTId(uint32_t rawid) const;
78  int getLUTId(const HcalDetId& detid) const;
79 
80  static const int QIE8_LUT_BITMASK = 0x3FF;
81  static const int QIE10_LUT_BITMASK = 0x7FF;
82  static const int QIE11_LUT_BITMASK = 0x3FF;
83 
84 private:
85  // typedef
86  typedef unsigned short LutElement;
87  typedef std::vector<LutElement> Lut;
88 
89  // constants
90  static const size_t INPUT_LUT_SIZE = 128;
91  static const size_t UPGRADE_LUT_SIZE = 256;
92  static const int nFi_ = 72;
93 
94  static const int QIE8_LUT_MSB = 0x400;
95  static const int QIE11_LUT_MSB0 = 0x400;
96  static const int QIE11_LUT_MSB1 = 0x800;
97  static const int QIE10_LUT_MSB0 = 0x1000;
98  static const int QIE10_LUT_MSB1 = 0x2000;
99 
100  // member variables
104  std::vector<uint32_t> FG_HF_thresholds_;
109  std::vector<Lut> inputLUT_;
110  std::vector<float> gain_;
111  std::vector<float> ped_;
112  std::vector<double> cosh_ieta_;
113  // edge cases not covered by the cosh_ieta_ map
119  std::unique_ptr<HcalPulseContainmentManager> pulseCorr_;
120 };
121 
122 #endif
HcaluLUTTPGCoder::bitToMask_
int bitToMask_
Definition: HcaluLUTTPGCoder.h:105
HcaluLUTTPGCoder::update
void update(const HcalDbService &conditions)
Definition: HcaluLUTTPGCoder.cc:331
HcaluLUTTPGCoder::cosh_ieta_29_HE_
double cosh_ieta_29_HE_
Definition: HcaluLUTTPGCoder.h:114
HcaluLUTTPGCoder::sizeHF_
int sizeHF_
Definition: HcaluLUTTPGCoder.h:108
HcaluLUTTPGCoder::nHEEta_
int nHEEta_
Definition: HcaluLUTTPGCoder.h:107
HcaluLUTTPGCoder::ped_
std::vector< float > ped_
Definition: HcaluLUTTPGCoder.h:111
HcaluLUTTPGCoder::contain1TSHE_
bool contain1TSHE_
Definition: HcaluLUTTPGCoder.h:116
HcalPulseContainmentManager.h
HcaluLUTTPGCoder::set1TSContainHE
void set1TSContainHE(bool contain1TSHE)
Definition: HcaluLUTTPGCoder.h:69
simplePhotonAnalyzer_cfi.sample
sample
Definition: simplePhotonAnalyzer_cfi.py:12
HcaluLUTTPGCoder::linearLSB_QIE11_
double linearLSB_QIE11_
Definition: HcaluLUTTPGCoder.h:118
HcaluLUTTPGCoder::QIE8_LUT_BITMASK
static const int QIE8_LUT_BITMASK
Definition: HcaluLUTTPGCoder.h:80
HcaluLUTTPGCoder::allLinear_
bool allLinear_
Definition: HcaluLUTTPGCoder.h:115
HcaluLUTTPGCoder::cosh_ieta
double cosh_ieta(int ieta, int depth, HcalSubdetector subdet)
Definition: HcaluLUTTPGCoder.cc:286
HcaluLUTTPGCoder::QIE10_LUT_BITMASK
static const int QIE10_LUT_BITMASK
Definition: HcaluLUTTPGCoder.h:81
HcaluLUTTPGCoder::nHFEta_
int nHFEta_
Definition: HcaluLUTTPGCoder.h:108
HcaluLUTTPGCoder::QIE11_LUT_MSB1
static const int QIE11_LUT_MSB1
Definition: HcaluLUTTPGCoder.h:96
HcaluLUTTPGCoder::updateXML
void updateXML(const char *filename)
Definition: HcaluLUTTPGCoder.cc:259
HcalTopology
Definition: HcalTopology.h:26
HcaluLUTTPGCoder::sizeHE_
int sizeHE_
Definition: HcaluLUTTPGCoder.h:107
HcaluLUTTPGCoder::Lut
std::vector< LutElement > Lut
Definition: HcaluLUTTPGCoder.h:87
HcaluLUTTPGCoder::compress
void compress(const IntegerCaloSamples &ics, const std::vector< bool > &featureBits, HcalTriggerPrimitiveDigi &tp) const override
Definition: HcaluLUTTPGCoder.cc:107
HcaluLUTTPGCoder::INPUT_LUT_SIZE
static const size_t INPUT_LUT_SIZE
Definition: HcaluLUTTPGCoder.h:90
HcaluLUTTPGCoder::lastHBEta_
int lastHBEta_
Definition: HcaluLUTTPGCoder.h:106
HcaluLUTTPGCoder::sizeHB_
int sizeHB_
Definition: HcaluLUTTPGCoder.h:106
HcaluLUTTPGCoder::nFi_
static const int nFi_
Definition: HcaluLUTTPGCoder.h:92
HcaluLUTTPGCoder::maxDepthHE_
int maxDepthHE_
Definition: HcaluLUTTPGCoder.h:107
IntegerCaloSamples
Definition: IntegerCaloSamples.h:16
HcalTimeSlew
Definition: HcalTimeSlew.h:19
HcalQIESample
Definition: HcalQIESample.h:32
HcaluLUTTPGCoder::LUTGenerationMode_
bool LUTGenerationMode_
Definition: HcaluLUTTPGCoder.h:103
HcaluLUTTPGCoder::FG_HF_thresholds_
std::vector< uint32_t > FG_HF_thresholds_
Definition: HcaluLUTTPGCoder.h:104
HcalTPGCoder
Definition: HcalTPGCoder.h:26
HcaluLUTTPGCoder::UPGRADE_LUT_SIZE
static const size_t UPGRADE_LUT_SIZE
Definition: HcaluLUTTPGCoder.h:91
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
ecalLiteDTU::adc
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
Definition: EcalLiteDTUSample.h:12
hcaltpdigi_cff.containPhaseNSHE
containPhaseNSHE
Definition: hcaltpdigi_cff.py:20
HcaluLUTTPGCoder::cosh_ieta_28_HE_low_depths_
double cosh_ieta_28_HE_low_depths_
Definition: HcaluLUTTPGCoder.h:114
HcaluLUTTPGCoder::containPhaseNSHB_
double containPhaseNSHB_
Definition: HcaluLUTTPGCoder.h:117
HcaluLUTTPGCoder::setContainPhaseHE
void setContainPhaseHE(double containPhaseNSHE)
Definition: HcaluLUTTPGCoder.h:71
HcaluLUTTPGCoder::HcaluLUTTPGCoder
HcaluLUTTPGCoder()
Definition: HcaluLUTTPGCoder.cc:39
HcaluLUTTPGCoder::lsb_
static const float lsb_
Definition: HcaluLUTTPGCoder.h:34
HcaluLUTTPGCoder::setLUTGenerationMode
void setLUTGenerationMode(bool gen)
Definition: HcaluLUTTPGCoder.h:59
HcalNominalCoder.h
HcaluLUTTPGCoder::gain_
std::vector< float > gain_
Definition: HcaluLUTTPGCoder.h:110
hcaltpdigi_cff.contain1TSHE
contain1TSHE
Definition: hcaltpdigi_cff.py:19
HcaluLUTTPGCoder::getLUTPedestal
float getLUTPedestal(HcalDetId id) const override
Definition: HcaluLUTTPGCoder.cc:538
HcaluLUTTPGCoder::lastHEEta_
int lastHEEta_
Definition: HcaluLUTTPGCoder.h:107
corrVsCorr.filename
filename
Definition: corrVsCorr.py:123
HcaluLUTTPGCoder::setMaskBit
void setMaskBit(int bit)
Definition: HcaluLUTTPGCoder.h:61
hcaltpdigi_cff.contain1TSHB
contain1TSHB
Definition: hcaltpdigi_cff.py:18
HcaluLUTTPGCoder::lastHFEta_
int lastHFEta_
Definition: HcaluLUTTPGCoder.h:108
gen
Definition: PythiaDecays.h:13
HcaluLUTTPGCoder::nHBEta_
int nHBEta_
Definition: HcaluLUTTPGCoder.h:106
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
HcaluLUTTPGCoder::cosh_ieta_28_HE_high_depths_
double cosh_ieta_28_HE_high_depths_
Definition: HcaluLUTTPGCoder.h:114
HBHEDataFrame
Definition: HBHEDataFrame.h:14
HcaluLUTTPGCoder::getLUTGain
float getLUTGain(HcalDetId id) const override
Definition: HcaluLUTTPGCoder.cc:543
HcaluLUTTPGCoder::containPhaseNSHE_
double containPhaseNSHE_
Definition: HcaluLUTTPGCoder.h:117
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
HcaluLUTTPGCoder::firstHEEta_
int firstHEEta_
Definition: HcaluLUTTPGCoder.h:107
HcalTriggerPrimitiveDigi
Definition: HcalTriggerPrimitiveDigi.h:13
HcaluLUTTPGCoder::linearLSB_QIE11Overlap_
double linearLSB_QIE11Overlap_
Definition: HcaluLUTTPGCoder.h:118
HcaluLUTTPGCoder::linearLSB_QIE8_
double linearLSB_QIE8_
Definition: HcaluLUTTPGCoder.h:118
HcaluLUTTPGCoder
Definition: HcaluLUTTPGCoder.h:32
HcalDetId.h
HcaluLUTTPGCoder::init
void init(const HcalTopology *top, const HcalTimeSlew *delay)
Definition: HcaluLUTTPGCoder.cc:72
HcaluLUTTPGCoder::LutElement
unsigned short LutElement
Definition: HcaluLUTTPGCoder.h:86
HcaluLUTTPGCoder::lookupMSB
void lookupMSB(const HBHEDataFrame &df, std::vector< bool > &msb) const
Definition: HcaluLUTTPGCoder.cc:553
HcalDetId
Definition: HcalDetId.h:12
HFDataFrame
Definition: HFDataFrame.h:14
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
HcaluLUTTPGCoder::set1TSContainHB
void set1TSContainHB(bool contain1TSHB)
Definition: HcaluLUTTPGCoder.h:68
HcaluLUTTPGCoder::topo_
const HcalTopology * topo_
Definition: HcaluLUTTPGCoder.h:101
hcaltpdigi_cff.containPhaseNSHB
containPhaseNSHB
Definition: hcaltpdigi_cff.py:21
HcaluLUTTPGCoder::maxDepthHB_
int maxDepthHB_
Definition: HcaluLUTTPGCoder.h:106
HcalSubdetector
HcalSubdetector
Definition: HcalAssistant.h:31
HcaluLUTTPGCoder::firstHBEta_
int firstHBEta_
Definition: HcaluLUTTPGCoder.h:106
linear
float linear(float x)
Definition: OccupancyPlotMacros.cc:26
HcaluLUTTPGCoder::QIE11_LUT_BITMASK
static const int QIE11_LUT_BITMASK
Definition: HcaluLUTTPGCoder.h:82
HcalTopology.h
HcaluLUTTPGCoder::getMSB
bool getMSB(const HcalDetId &id, int adc) const
Definition: HcaluLUTTPGCoder.cc:559
HcalDbService
Definition: HcalDbService.h:26
HcaluLUTTPGCoder::cosh_ieta_
std::vector< double > cosh_ieta_
Definition: HcaluLUTTPGCoder.h:112
submitPVValidationJobs.conditions
list conditions
Definition: submitPVValidationJobs.py:674
HcaluLUTTPGCoder::setAllLinear
void setAllLinear(bool linear, double lsb8, double lsb11, double lsb11overlap)
Definition: HcaluLUTTPGCoder.h:62
hgcalPerformanceValidation.df
df
Definition: hgcalPerformanceValidation.py:640
QIE10DataFrame
Definition: QIE10DataFrame.h:11
HcaluLUTTPGCoder::~HcaluLUTTPGCoder
~HcaluLUTTPGCoder() override
Definition: HcaluLUTTPGCoder.cc:113
QIE11DataFrame
Definition: QIE11DataFrame.h:11
HcaluLUTTPGCoder::getLinearizationLUT
std::vector< unsigned short > getLinearizationLUT(HcalDetId id) const override
Get the full linearization LUT (128 elements). Default implementation just uses adc2Linear to get all...
Definition: HcaluLUTTPGCoder.cc:548
HcaluLUTTPGCoder::setContainPhaseHB
void setContainPhaseHB(double containPhaseNSHB)
Definition: HcaluLUTTPGCoder.h:70
HcaluLUTTPGCoder::contain1TSHB_
bool contain1TSHB_
Definition: HcaluLUTTPGCoder.h:116
HcaluLUTTPGCoder::QIE10_LUT_MSB1
static const int QIE10_LUT_MSB1
Definition: HcaluLUTTPGCoder.h:98
HcaluLUTTPGCoder::QIE10_LUT_MSB0
static const int QIE10_LUT_MSB0
Definition: HcaluLUTTPGCoder.h:97
HcaluLUTTPGCoder::make_cosh_ieta_map
void make_cosh_ieta_map(void)
Definition: HcaluLUTTPGCoder.cc:304
HcaluLUTTPGCoder::inputLUT_
std::vector< Lut > inputLUT_
Definition: HcaluLUTTPGCoder.h:109
relval_steps.gen
def gen(fragment, howMuch)
Production test section ####.
Definition: relval_steps.py:509
Ecal07UnpackerData_cfi.ics
ics
Definition: Ecal07UnpackerData_cfi.py:55
HcaluLUTTPGCoder::getLUTId
int getLUTId(HcalSubdetector id, int ieta, int iphi, int depth) const
Definition: HcaluLUTTPGCoder.cc:115
HcaluLUTTPGCoder::QIE11_LUT_MSB0
static const int QIE11_LUT_MSB0
Definition: HcaluLUTTPGCoder.h:95
phase2TrackerDigitizer_cfi.delay
delay
Definition: phase2TrackerDigitizer_cfi.py:49
HcaluLUTTPGCoder::firstHFEta_
int firstHFEta_
Definition: HcaluLUTTPGCoder.h:108
HcaluLUTTPGCoder::QIE8_LUT_MSB
static const int QIE8_LUT_MSB
Definition: HcaluLUTTPGCoder.h:94
HcaluLUTTPGCoder::delay_
const HcalTimeSlew * delay_
Definition: HcaluLUTTPGCoder.h:102
HcaluLUTTPGCoder::pulseCorr_
std::unique_ptr< HcalPulseContainmentManager > pulseCorr_
Definition: HcaluLUTTPGCoder.h:119
HcaluLUTTPGCoder::adc2Linear
void adc2Linear(const HBHEDataFrame &df, IntegerCaloSamples &ics) const override
Definition: HcaluLUTTPGCoder.cc:501
HcalTPGCoder.h
HcaluLUTTPGCoder::setFGHFthresholds
void setFGHFthresholds(const std::vector< uint32_t > &fgthresholds)
Definition: HcaluLUTTPGCoder.h:60
HcaluLUTTPGCoder::maxDepthHF_
int maxDepthHF_
Definition: HcaluLUTTPGCoder.h:108