CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
HcalTriggerPrimitiveAlgo Class Reference

#include <HcalTriggerPrimitiveAlgo.h>

Classes

struct  HFDetails
 
struct  HFUpgradeDetails
 

Public Member Functions

template<typename D >
void addDigis (const HcalDataFrameContainer< D > &collection)
 
template<typename T >
void addDigis (const T &collection)
 
template<typename T , typename... Args>
void addDigis (const T &collection, const Args &... digis)
 
 HcalTriggerPrimitiveAlgo (bool pf, const std::vector< double > &w, int latency, uint32_t FG_threshold, const std::vector< uint32_t > &FG_HF_thresholds, uint32_t ZS_threshold, int numberOfSamples, int numberOfPresamples, int numberOfFilterPresamplesHBQIE11, int numberOfFilterPresamplesHEQIE11, int numberOfSamplesHF, int numberOfPresamplesHF, bool useTDCInMinBiasBits, uint32_t minSignalThreshold=0, uint32_t PMT_NoiseThreshold=0)
 
void overrideParameters (const edm::ParameterSet &ps)
 
template<typename... Digis>
void run (const HcalTPGCoder *incoder, const HcalTPGCompressor *outcoder, const HcalDbService *conditions, HcalTrigPrimDigiCollection &result, const HcalTrigTowerGeometry *trigTowerGeometry, float rctlsb, const HcalFeatureBit *LongvrsShortCut, const Digis &... digis)
 
void runFEFormatError (const FEDRawDataCollection *rawraw, const HcalElectronicsMap *emap, HcalTrigPrimDigiCollection &result)
 
void runZS (HcalTrigPrimDigiCollection &tp)
 
void setNCTScaleShift (int)
 
void setPeakFinderAlgorithm (int algo)
 
void setRCTScaleShift (int)
 
void setUpgradeFlags (bool hb, bool he, bool hf)
 
void setWeightsQIE11 (const edm::ParameterSet &weightsQIE11)
 
 ~HcalTriggerPrimitiveAlgo ()
 

Private Types

typedef std::map< HcalTrigTowerDetId, std::vector< bool > > FGbitMap
 
typedef std::vector< HcalFinegrainBit::TowerFGUpgradeContainer
 
typedef std::map< HcalTrigTowerDetId, FGUpgradeContainerFGUpgradeMap
 
typedef std::map< HcalTrigTowerDetId, std::map< uint32_t, HFDetails > > HFDetailMap
 
typedef std::map< HcalTrigTowerDetId, std::map< uint32_t, std::array< HFUpgradeDetails, 4 > > > HFUpgradeDetailMap
 
typedef std::vector< IntegerCaloSamplesSumFGContainer
 
typedef std::map< HcalTrigTowerDetId, IntegerCaloSamplesSumMap
 
typedef std::map< HcalTrigTowerDetId, SumFGContainerTowerMapFGSum
 
typedef std::map< uint32_t, std::vector< bool > > TowerMapVeto
 

Private Member Functions

void addFG (const HcalTrigTowerDetId &id, std::vector< bool > &msb)
 
void addSignal (const HBHEDataFrame &frame)
 adds the signal to the map More...
 
void addSignal (const HFDataFrame &frame)
 
void addSignal (const IntegerCaloSamples &samples)
 
void addSignal (const QIE10DataFrame &frame)
 
void addSignal (const QIE11DataFrame &frame)
 
void addUpgradeFG (const HcalTrigTowerDetId &id, int depth, const std::vector< std::bitset< 2 >> &bits)
 
void analyze (IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result)
 adds the actual digis More...
 
void analyzeHF (IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result, const int hf_lumi_shift)
 
void analyzeHF2016 (const IntegerCaloSamples &SAMPLES, HcalTriggerPrimitiveDigi &result, const int HF_LUMI_SHIFT, const HcalFeatureBit *HCALFEM)
 
void analyzeHFQIE10 (const IntegerCaloSamples &SAMPLES, HcalTriggerPrimitiveDigi &result, const int HF_LUMI_SHIFT, const HcalFeatureBit *HCALFEM)
 
void analyzeQIE11 (IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result, const HcalFinegrainBit &fg_algo)
 
bool needLegacyFG (const HcalTrigTowerDetId &id) const
 
bool needUpgradeID (const HcalTrigTowerDetId &id, int depth) const
 
bool passTDC (const QIE10DataFrame &digi, int ts) const
 
bool validChannel (const QIE10DataFrame &digi, int ts) const
 
bool validUpgradeFG (const HcalTrigTowerDetId &id, int depth) const
 

Private Attributes

const HcalDbServiceconditions_
 
std::vector< uint32_t > FG_HF_thresholds_
 
uint32_t FG_threshold_
 
FGbitMap fgMap_
 
FGUpgradeMap fgUpgradeMap_
 
TowerMapVeto HF_Veto
 
const HcaluLUTTPGCoderincoder_
 
int latency_
 
HcalFeatureBitLongvrsShortCut
 
uint32_t minSignalThreshold_
 
int NCTScaleShift
 
int numberOfFilterPresamplesHBQIE11_
 
int numberOfFilterPresamplesHEQIE11_
 
int numberOfPresamples_
 
int numberOfPresamplesHF_
 
int numberOfSamples_
 
int numberOfSamplesHF_
 
const HcalTPGCompressoroutcoder_
 
bool override_adc_hf_ = false
 
uint32_t override_adc_hf_value_
 
edm::ParameterSet override_parameters_
 
bool override_tdc_hf_ = false
 
unsigned long long override_tdc_hf_value_
 
int peak_finder_algorithm_
 
bool peakfind_
 
uint32_t PMT_NoiseThreshold_
 
int RCTScaleShift
 
HFDetailMap theHFDetailMap
 
HFUpgradeDetailMap theHFUpgradeDetailMap
 
SumMap theSumMap
 
double theThreshold
 
TowerMapFGSum theTowerMapFGSum
 
const HcalTrigTowerGeometrytheTrigTowerGeometry
 
bool upgrade_hb_ = false
 
bool upgrade_he_ = false
 
bool upgrade_hf_ = false
 
bool useTDCInMinBiasBits_
 
std::vector< double > weights_
 
std::array< std::array< double, 2 >, 29 > weightsQIE11_
 
uint32_t ZS_threshold_
 
int ZS_threshold_I_
 

Static Private Attributes

static const int FIRST_DEPTH7_TOWER = 26
 
static const int FIRST_FINEGRAIN_TOWER = 30
 
static const int HBHE_OVERLAP_TOWER = 16
 
static const int LAST_FINEGRAIN_DEPTH = 6
 
static const int LAST_FINEGRAIN_TOWER = 28
 
static const int QIE10_LINEARIZATION_ET = HcaluLUTTPGCoder::QIE10_LUT_BITMASK
 
static const int QIE10_MAX_LINEARIZATION_ET = 0x7FF
 
static const int QIE11_LINEARIZATION_ET = HcaluLUTTPGCoder::QIE11_LUT_BITMASK
 
static const int QIE11_MAX_LINEARIZATION_ET = 0x7FF
 
static const int QIE8_LINEARIZATION_ET = HcaluLUTTPGCoder::QIE8_LUT_BITMASK
 

Detailed Description

Definition at line 25 of file HcalTriggerPrimitiveAlgo.h.

Member Typedef Documentation

◆ FGbitMap

typedef std::map<HcalTrigTowerDetId, std::vector<bool> > HcalTriggerPrimitiveAlgo::FGbitMap
private

Definition at line 195 of file HcalTriggerPrimitiveAlgo.h.

◆ FGUpgradeContainer

Definition at line 198 of file HcalTriggerPrimitiveAlgo.h.

◆ FGUpgradeMap

Definition at line 199 of file HcalTriggerPrimitiveAlgo.h.

◆ HFDetailMap

typedef std::map<HcalTrigTowerDetId, std::map<uint32_t, HFDetails> > HcalTriggerPrimitiveAlgo::HFDetailMap
private

Definition at line 165 of file HcalTriggerPrimitiveAlgo.h.

◆ HFUpgradeDetailMap

typedef std::map<HcalTrigTowerDetId, std::map<uint32_t, std::array<HFUpgradeDetails, 4> > > HcalTriggerPrimitiveAlgo::HFUpgradeDetailMap
private

Definition at line 175 of file HcalTriggerPrimitiveAlgo.h.

◆ SumFGContainer

Definition at line 178 of file HcalTriggerPrimitiveAlgo.h.

◆ SumMap

Definition at line 156 of file HcalTriggerPrimitiveAlgo.h.

◆ TowerMapFGSum

Definition at line 179 of file HcalTriggerPrimitiveAlgo.h.

◆ TowerMapVeto

typedef std::map<uint32_t, std::vector<bool> > HcalTriggerPrimitiveAlgo::TowerMapVeto
private

Definition at line 192 of file HcalTriggerPrimitiveAlgo.h.

Constructor & Destructor Documentation

◆ HcalTriggerPrimitiveAlgo()

HcalTriggerPrimitiveAlgo::HcalTriggerPrimitiveAlgo ( bool  pf,
const std::vector< double > &  w,
int  latency,
uint32_t  FG_threshold,
const std::vector< uint32_t > &  FG_HF_thresholds,
uint32_t  ZS_threshold,
int  numberOfSamples,
int  numberOfPresamples,
int  numberOfFilterPresamplesHBQIE11,
int  numberOfFilterPresamplesHEQIE11,
int  numberOfSamplesHF,
int  numberOfPresamplesHF,
bool  useTDCInMinBiasBits,
uint32_t  minSignalThreshold = 0,
uint32_t  PMT_NoiseThreshold = 0 
)

◆ ~HcalTriggerPrimitiveAlgo()

HcalTriggerPrimitiveAlgo::~HcalTriggerPrimitiveAlgo ( )

Definition at line 71 of file HcalTriggerPrimitiveAlgo.cc.

71 {}

Member Function Documentation

◆ addDigis() [1/3]

template<typename D >
void HcalTriggerPrimitiveAlgo::addDigis ( const HcalDataFrameContainer< D > &  collection)
inline

Definition at line 68 of file HcalTriggerPrimitiveAlgo.h.

68  {
69  for (auto i = collection.begin(); i != collection.end(); ++i) {
70  D digi(*i);
71  addSignal(digi);
72  }
73  };

References addSignal(), universalConfigTemplate::collection, and mps_fire::i.

◆ addDigis() [2/3]

template<typename T >
void HcalTriggerPrimitiveAlgo::addDigis ( const T collection)
inline

Definition at line 61 of file HcalTriggerPrimitiveAlgo.h.

61  {
62  for (const auto& digi : collection) {
63  addSignal(digi);
64  }
65  };

References addSignal(), and universalConfigTemplate::collection.

◆ addDigis() [3/3]

template<typename T , typename... Args>
void HcalTriggerPrimitiveAlgo::addDigis ( const T collection,
const Args &...  digis 
)
inline

Definition at line 55 of file HcalTriggerPrimitiveAlgo.h.

55  {
57  addDigis(digis...);
58  };

References universalConfigTemplate::collection.

Referenced by run().

◆ addFG()

void HcalTriggerPrimitiveAlgo::addFG ( const HcalTrigTowerDetId id,
std::vector< bool > &  msb 
)
private

Definition at line 786 of file HcalTriggerPrimitiveAlgo.cc.

786  {
787  FGbitMap::iterator itr = fgMap_.find(id);
788  if (itr != fgMap_.end()) {
789  std::vector<bool>& _msb = itr->second;
790  for (size_t i = 0; i < msb.size(); ++i)
791  _msb[i] = _msb[i] || msb[i];
792  } else
793  fgMap_[id] = msb;
794 }

References fgMap_, mps_fire::i, and triggerObjects_cff::id.

Referenced by addSignal(), and addUpgradeFG().

◆ addSignal() [1/5]

void HcalTriggerPrimitiveAlgo::addSignal ( const HBHEDataFrame frame)
private

adds the signal to the map

Definition at line 92 of file HcalTriggerPrimitiveAlgo.cc.

92  {
93  // TODO: Need to add support for seperate 28, 29 in HE
94  //Hack for 300_pre10, should be removed.
95  if (frame.id().depth() == 5)
96  return;
97 
98  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(frame.id());
99  assert(ids.size() == 1 || ids.size() == 2);
100  IntegerCaloSamples samples1(ids[0], int(frame.size()));
101 
102  samples1.setPresamples(frame.presamples());
103  incoder_->adc2Linear(frame, samples1);
104 
105  std::vector<bool> msb;
106  incoder_->lookupMSB(frame, msb);
107 
108  if (ids.size() == 2) {
109  // make a second trigprim for the other one, and split the energy
110  IntegerCaloSamples samples2(ids[1], samples1.size());
111  for (int i = 0; i < samples1.size(); ++i) {
112  samples1[i] = uint32_t(samples1[i] * 0.5);
113  samples2[i] = samples1[i];
114  }
115  samples2.setPresamples(frame.presamples());
116  addSignal(samples2);
117  addFG(ids[1], msb);
118  }
119  addSignal(samples1);
120  addFG(ids[0], msb);
121 }

References HcaluLUTTPGCoder::adc2Linear(), addFG(), cms::cuda::assert(), amptDefault_cfi::frame, mps_fire::i, incoder_, HcaluLUTTPGCoder::lookupMSB(), theTrigTowerGeometry, and HcalTrigTowerGeometry::towerIds().

Referenced by addDigis(), and addSignal().

◆ addSignal() [2/5]

void HcalTriggerPrimitiveAlgo::addSignal ( const HFDataFrame frame)
private

Definition at line 123 of file HcalTriggerPrimitiveAlgo.cc.

123  {
124  if (frame.id().depth() == 1 || frame.id().depth() == 2) {
125  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(frame.id());
126  std::vector<HcalTrigTowerDetId>::const_iterator it;
127  for (it = ids.begin(); it != ids.end(); ++it) {
128  HcalTrigTowerDetId trig_tower_id = *it;
129  IntegerCaloSamples samples(trig_tower_id, frame.size());
130  samples.setPresamples(frame.presamples());
132 
133  // Don't add to final collection yet
134  // HF PMT veto sum is calculated in analyzerHF()
135  IntegerCaloSamples zero_samples(trig_tower_id, frame.size());
136  zero_samples.setPresamples(frame.presamples());
137  addSignal(zero_samples);
138 
139  // Pre-LS1 Configuration
140  if (trig_tower_id.version() == 0) {
141  // Mask off depths: fgid is the same for both depths
142  uint32_t fgid = (frame.id().maskDepth());
143 
144  if (theTowerMapFGSum.find(trig_tower_id) == theTowerMapFGSum.end()) {
145  SumFGContainer sumFG;
146  theTowerMapFGSum.insert(std::pair<HcalTrigTowerDetId, SumFGContainer>(trig_tower_id, sumFG));
147  }
148 
149  SumFGContainer& sumFG = theTowerMapFGSum[trig_tower_id];
150  SumFGContainer::iterator sumFGItr;
151  for (sumFGItr = sumFG.begin(); sumFGItr != sumFG.end(); ++sumFGItr) {
152  if (sumFGItr->id() == fgid) {
153  break;
154  }
155  }
156  // If find
157  if (sumFGItr != sumFG.end()) {
158  for (int i = 0; i < samples.size(); ++i) {
159  (*sumFGItr)[i] += samples[i];
160  }
161  } else {
162  //Copy samples (change to fgid)
163  IntegerCaloSamples sumFGSamples(DetId(fgid), samples.size());
164  sumFGSamples.setPresamples(samples.presamples());
165  for (int i = 0; i < samples.size(); ++i) {
166  sumFGSamples[i] = samples[i];
167  }
168  sumFG.push_back(sumFGSamples);
169  }
170 
171  // set veto to true if Long or Short less than threshold
172  if (HF_Veto.find(fgid) == HF_Veto.end()) {
173  vector<bool> vetoBits(samples.size(), false);
174  HF_Veto[fgid] = vetoBits;
175  }
176  for (int i = 0; i < samples.size(); ++i) {
177  if (samples[i] < minSignalThreshold_) {
178  HF_Veto[fgid][i] = true;
179  }
180  }
181  }
182  // HF 1x1
183  else if (trig_tower_id.version() == 1) {
184  uint32_t fgid = (frame.id().maskDepth());
185  HFDetails& details = theHFDetailMap[trig_tower_id][fgid];
186  // Check the frame type to determine long vs short
187  if (frame.id().depth() == 1) { // Long
188  details.long_fiber = samples;
189  details.LongDigi = frame;
190  } else if (frame.id().depth() == 2) { // Short
191  details.short_fiber = samples;
192  details.ShortDigi = frame;
193  } else {
194  // Neither long nor short... So we have no idea what to do
195  edm::LogWarning("HcalTPAlgo") << "Unable to figure out what to do with data frame for " << frame.id();
196  return;
197  }
198  }
199  // Uh oh, we are in a bad/unknown state! Things will start crashing.
200  else {
201  return;
202  }
203  }
204  }
205 }

References HcaluLUTTPGCoder::adc2Linear(), addSignal(), amptDefault_cfi::frame, HF_Veto, mps_fire::i, incoder_, minSignalThreshold_, EgammaValidation_cff::samples, IntegerCaloSamples::setPresamples(), theHFDetailMap, theTowerMapFGSum, theTrigTowerGeometry, HcalTrigTowerGeometry::towerIds(), and HcalTrigTowerDetId::version().

◆ addSignal() [3/5]

void HcalTriggerPrimitiveAlgo::addSignal ( const IntegerCaloSamples samples)
private

Definition at line 278 of file HcalTriggerPrimitiveAlgo.cc.

278  {
280  SumMap::iterator itr = theSumMap.find(id);
281  if (itr == theSumMap.end()) {
282  theSumMap.insert(std::make_pair(id, samples));
283  } else {
284  // wish CaloSamples had a +=
285  for (int i = 0; i < samples.size(); ++i) {
286  (itr->second)[i] += samples[i];
287  }
288  }
289 }

References mps_fire::i, triggerObjects_cff::id, EgammaValidation_cff::samples, and theSumMap.

◆ addSignal() [4/5]

void HcalTriggerPrimitiveAlgo::addSignal ( const QIE10DataFrame frame)
private

Definition at line 207 of file HcalTriggerPrimitiveAlgo.cc.

207  {
208  HcalDetId detId = frame.detid();
209  // prevent QIE10 calibration channels from entering TP emulation
210  if (detId.subdet() != HcalForward)
211  return;
212 
213  auto ids = theTrigTowerGeometry->towerIds(frame.id());
214  for (const auto& id : ids) {
215  if (id.version() == 0) {
216  edm::LogError("HcalTPAlgo") << "Encountered QIE10 data frame mapped to TP version 0:" << id;
217  continue;
218  }
219 
220  int nsamples = frame.samples();
221 
222  IntegerCaloSamples samples(id, nsamples);
223  samples.setPresamples(frame.presamples());
225 
226  // Don't add to final collection yet
227  // HF PMT veto sum is calculated in analyzerHF()
228  IntegerCaloSamples zero_samples(id, nsamples);
229  zero_samples.setPresamples(frame.presamples());
230  addSignal(zero_samples);
231 
232  auto fid = HcalDetId(frame.id());
233  auto& details = theHFUpgradeDetailMap[id][fid.maskDepth()];
234  auto& detail = details[fid.depth() - 1];
235  detail.samples = samples;
236  detail.digi = frame;
237  detail.validity.resize(nsamples);
238  detail.passTDC.resize(nsamples);
239  incoder_->lookupMSB(frame, detail.fgbits);
240  for (int idx = 0; idx < nsamples; ++idx) {
241  detail.validity[idx] = validChannel(frame, idx);
242  detail.passTDC[idx] = passTDC(frame, idx);
243  }
244  }
245 }

References HcaluLUTTPGCoder::adc2Linear(), addSignal(), amptDefault_cfi::frame, HcalForward, triggerObjects_cff::id, heavyIonCSV_trainingSettings::idx, incoder_, HcaluLUTTPGCoder::lookupMSB(), passTDC(), EgammaValidation_cff::samples, IntegerCaloSamples::setPresamples(), HcalDetId::subdet(), theHFUpgradeDetailMap, theTrigTowerGeometry, HcalTrigTowerGeometry::towerIds(), validChannel(), and BeamSplash_cfg::version.

◆ addSignal() [5/5]

void HcalTriggerPrimitiveAlgo::addSignal ( const QIE11DataFrame frame)
private

Definition at line 247 of file HcalTriggerPrimitiveAlgo.cc.

247  {
248  HcalDetId detId(frame.id());
249  // prevent QIE11 calibration channels from entering TP emulation
250  if (detId.subdet() != HcalEndcap && detId.subdet() != HcalBarrel)
251  return;
252 
253  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
254  assert(ids.size() == 1 || ids.size() == 2);
255  IntegerCaloSamples samples1(ids[0], int(frame.samples()));
256 
257  samples1.setPresamples(frame.presamples());
258  incoder_->adc2Linear(frame, samples1);
259 
260  std::vector<std::bitset<2>> msb(frame.samples(), 0);
261  incoder_->lookupMSB(frame, msb);
262 
263  if (ids.size() == 2) {
264  // make a second trigprim for the other one, and share the energy
265  IntegerCaloSamples samples2(ids[1], samples1.size());
266  for (int i = 0; i < samples1.size(); ++i) {
267  samples1[i] = uint32_t(samples1[i]);
268  samples2[i] = samples1[i];
269  }
270  samples2.setPresamples(frame.presamples());
271  addSignal(samples2);
272  addUpgradeFG(ids[1], detId.depth(), msb);
273  }
274  addSignal(samples1);
275  addUpgradeFG(ids[0], detId.depth(), msb);
276 }

References HcaluLUTTPGCoder::adc2Linear(), addSignal(), addUpgradeFG(), cms::cuda::assert(), amptDefault_cfi::frame, HcalBarrel, HcalEndcap, mps_fire::i, incoder_, HcaluLUTTPGCoder::lookupMSB(), theTrigTowerGeometry, and HcalTrigTowerGeometry::towerIds().

◆ addUpgradeFG()

void HcalTriggerPrimitiveAlgo::addUpgradeFG ( const HcalTrigTowerDetId id,
int  depth,
const std::vector< std::bitset< 2 >> &  bits 
)
private

Definition at line 825 of file HcalTriggerPrimitiveAlgo.cc.

827  {
828  if (not validUpgradeFG(id, depth)) {
829  if (needLegacyFG(id)) {
830  std::vector<bool> pseudo(bits.size(), false);
831  addFG(id, pseudo);
832  } else if (needUpgradeID(id, depth)) {
833  // If the tower id is not in the map yet
834  // then for safety's sake add it, otherwise, no need
835  // Likewise, we're here with non-fg depth 7 so the bits are not to be added
836  auto it = fgUpgradeMap_.find(id);
837  if (it == fgUpgradeMap_.end()) {
838  FGUpgradeContainer element;
839  element.resize(bits.size());
840  fgUpgradeMap_.insert(std::make_pair(id, element));
841  }
842  }
843 
844  return;
845  }
846 
847  auto it = fgUpgradeMap_.find(id);
848  if (it == fgUpgradeMap_.end()) {
849  FGUpgradeContainer element;
850  element.resize(bits.size());
851  it = fgUpgradeMap_.insert(std::make_pair(id, element)).first;
852  }
853  for (unsigned int i = 0; i < bits.size(); ++i) {
854  it->second[i][0][depth - 1] = bits[i][0];
855  it->second[i][1][depth - 1] = bits[i][1];
856  }
857 }

References addFG(), LEDCalibrationChannels::depth, fgUpgradeMap_, mps_fire::i, needLegacyFG(), needUpgradeID(), and validUpgradeFG().

Referenced by addSignal().

◆ analyze()

void HcalTriggerPrimitiveAlgo::analyze ( IntegerCaloSamples samples,
HcalTriggerPrimitiveDigi result 
)
private

adds the actual digis

Definition at line 291 of file HcalTriggerPrimitiveAlgo.cc.

291  {
292  int shrink = weights_.size() - 1;
293  std::vector<bool>& msb = fgMap_[samples.id()];
294  IntegerCaloSamples sum(samples.id(), samples.size());
295 
296  //slide algo window
297  for (int ibin = 0; ibin < int(samples.size()) - shrink; ++ibin) {
298  int algosumvalue = 0;
299  for (unsigned int i = 0; i < weights_.size(); i++) {
300  //add up value * scale factor
301  algosumvalue += int(samples[ibin + i] * weights_[i]);
302  }
303  if (algosumvalue < 0)
304  sum[ibin] = 0; // low-side
305  //high-side
306  //else if (algosumvalue>QIE8_LINEARIZATION_ET) sum[ibin]=QIE8_LINEARIZATION_ET;
307  else
308  sum[ibin] = algosumvalue; //assign value to sum[]
309  }
310 
311  // Align digis and TP
312  int dgPresamples = samples.presamples();
313  int tpPresamples = numberOfPresamples_;
314  int shift = dgPresamples - tpPresamples;
315  int dgSamples = samples.size();
316  int tpSamples = numberOfSamples_;
317  if (peakfind_) {
318  if ((shift < shrink) || (shift + tpSamples + shrink > dgSamples - (peak_finder_algorithm_ - 1))) {
319  edm::LogInfo("HcalTriggerPrimitiveAlgo::analyze")
320  << "TP presample or size from the configuration file is out of the accessible range. Using digi values from "
321  "data instead...";
322  shift = shrink;
323  tpPresamples = dgPresamples - shrink;
324  tpSamples = dgSamples - (peak_finder_algorithm_ - 1) - shrink - shift;
325  }
326  }
327 
328  std::vector<int> finegrain(tpSamples, false);
329 
330  IntegerCaloSamples output(samples.id(), tpSamples);
331  output.setPresamples(tpPresamples);
332 
333  for (int ibin = 0; ibin < tpSamples; ++ibin) {
334  // ibin - index for output TP
335  // idx - index for samples + shift
336  int idx = ibin + shift;
337 
338  //Peak finding
339  if (peakfind_) {
340  bool isPeak = false;
341  switch (peak_finder_algorithm_) {
342  case 1:
343  isPeak = (samples[idx] > samples[idx - 1] && samples[idx] >= samples[idx + 1] && samples[idx] > theThreshold);
344  break;
345  case 2:
346  isPeak = (sum[idx] > sum[idx - 1] && sum[idx] >= sum[idx + 1] && sum[idx] > theThreshold);
347  break;
348  default:
349  break;
350  }
351 
352  if (isPeak) {
353  output[ibin] = std::min<unsigned int>(sum[idx], QIE8_LINEARIZATION_ET);
354  finegrain[ibin] = msb[idx];
355  }
356  // Not a peak
357  else
358  output[ibin] = 0;
359  } else { // No peak finding, just output running sum
360  output[ibin] = std::min<unsigned int>(sum[idx], QIE8_LINEARIZATION_ET);
361  finegrain[ibin] = msb[idx];
362  }
363 
364  // Only Pegged for 1-TS algo.
365  if (peak_finder_algorithm_ == 1) {
368  }
369  }
370  outcoder_->compress(output, finegrain, result);
371 }

References HcalTPGCompressor::compress(), fgMap_, mps_fire::i, heavyIonCSV_trainingSettings::idx, createfilelist::int, numberOfPresamples_, numberOfSamples_, outcoder_, convertSQLitetoXML_cfg::output, peak_finder_algorithm_, peakfind_, QIE8_LINEARIZATION_ET, mps_fire::result, EgammaValidation_cff::samples, edm::shift, theThreshold, and weights_.

Referenced by run().

◆ analyzeHF()

void HcalTriggerPrimitiveAlgo::analyzeHF ( IntegerCaloSamples samples,
HcalTriggerPrimitiveDigi result,
const int  hf_lumi_shift 
)
private

Definition at line 461 of file HcalTriggerPrimitiveAlgo.cc.

463  {
464  HcalTrigTowerDetId detId(samples.id());
465 
466  // Align digis and TP
467  int dgPresamples = samples.presamples();
468  int tpPresamples = numberOfPresamplesHF_;
469  int shift = dgPresamples - tpPresamples;
470  int dgSamples = samples.size();
471  int tpSamples = numberOfSamplesHF_;
472  if (shift < 0 || shift + tpSamples > dgSamples) {
473  edm::LogInfo("HcalTriggerPrimitiveAlgo::analyzeHF")
474  << "TP presample or size from the configuration file is out of the accessible range. Using digi values from "
475  "data instead...";
476  tpPresamples = dgPresamples;
477  shift = 0;
478  tpSamples = dgSamples;
479  }
480 
481  std::vector<int> finegrain(tpSamples, false);
482 
483  TowerMapFGSum::const_iterator tower2fg = theTowerMapFGSum.find(detId);
484  assert(tower2fg != theTowerMapFGSum.end());
485 
486  const SumFGContainer& sumFG = tower2fg->second;
487  // Loop over all L+S pairs that mapped from samples.id()
488  // Note: 1 samples.id() = 6 x (L+S) without noZS
489  for (SumFGContainer::const_iterator sumFGItr = sumFG.begin(); sumFGItr != sumFG.end(); ++sumFGItr) {
490  const std::vector<bool>& veto = HF_Veto[sumFGItr->id().rawId()];
491  for (int ibin = 0; ibin < tpSamples; ++ibin) {
492  int idx = ibin + shift;
493  // if not vetod, add L+S to total sum and calculate FG
494  bool vetoed = idx < int(veto.size()) && veto[idx];
495  if (!(vetoed && (*sumFGItr)[idx] > PMT_NoiseThreshold_)) {
496  samples[idx] += (*sumFGItr)[idx];
497  finegrain[ibin] = (finegrain[ibin] || (*sumFGItr)[idx] >= FG_threshold_);
498  }
499  }
500  }
501 
502  IntegerCaloSamples output(samples.id(), tpSamples);
503  output.setPresamples(tpPresamples);
504 
505  for (int ibin = 0; ibin < tpSamples; ++ibin) {
506  int idx = ibin + shift;
507  output[ibin] = samples[idx] >> hf_lumi_shift;
508  static const int MAX_OUTPUT = QIE8_LINEARIZATION_ET; // QIE8_LINEARIZATION_ET = 1023
509  if (output[ibin] > MAX_OUTPUT)
510  output[ibin] = MAX_OUTPUT;
511  }
512  outcoder_->compress(output, finegrain, result);
513 }

References cms::cuda::assert(), HcalTPGCompressor::compress(), FG_threshold_, HF_Veto, heavyIonCSV_trainingSettings::idx, createfilelist::int, numberOfPresamplesHF_, numberOfSamplesHF_, outcoder_, convertSQLitetoXML_cfg::output, PMT_NoiseThreshold_, QIE8_LINEARIZATION_ET, mps_fire::result, EgammaValidation_cff::samples, edm::shift, theTowerMapFGSum, and PbPb_ZMuSkimMuonDPG_cff::veto.

Referenced by run().

◆ analyzeHF2016()

void HcalTriggerPrimitiveAlgo::analyzeHF2016 ( const IntegerCaloSamples SAMPLES,
HcalTriggerPrimitiveDigi result,
const int  HF_LUMI_SHIFT,
const HcalFeatureBit HCALFEM 
)
private

Definition at line 515 of file HcalTriggerPrimitiveAlgo.cc.

518  {
519  // Align digis and TP
520  const int SHIFT = samples.presamples() - numberOfPresamplesHF_;
521  assert(SHIFT >= 0);
522  assert((SHIFT + numberOfSamplesHF_) <= samples.size());
523 
524  // Try to find the HFDetails from the map corresponding to our samples
525  const HcalTrigTowerDetId detId(samples.id());
526  HFDetailMap::const_iterator it = theHFDetailMap.find(detId);
527  // Missing values will give an empty digi
528  if (it == theHFDetailMap.end()) {
529  return;
530  }
531 
532  std::vector<std::bitset<2>> finegrain(numberOfSamplesHF_, false);
533 
534  // Set up out output of IntergerCaloSamples
536  output.setPresamples(numberOfPresamplesHF_);
537 
538  for (const auto& item : it->second) {
539  auto& details = item.second;
540  for (int ibin = 0; ibin < numberOfSamplesHF_; ++ibin) {
541  const int IDX = ibin + SHIFT;
542  int long_fiber_val = 0;
543  if (IDX < details.long_fiber.size()) {
544  long_fiber_val = details.long_fiber[IDX];
545  }
546  int short_fiber_val = 0;
547  if (IDX < details.short_fiber.size()) {
548  short_fiber_val = details.short_fiber[IDX];
549  }
550  output[ibin] += (long_fiber_val + short_fiber_val);
551 
552  uint32_t ADCLong = details.LongDigi[ibin].adc();
553  uint32_t ADCShort = details.ShortDigi[ibin].adc();
554 
555  if (details.LongDigi.id().ietaAbs() >= FIRST_FINEGRAIN_TOWER) {
556  finegrain[ibin][1] = (ADCLong > FG_HF_thresholds_[0] || ADCShort > FG_HF_thresholds_[0]);
557 
558  if (embit != nullptr)
559  finegrain[ibin][0] = embit->fineGrainbit(details.ShortDigi, details.LongDigi, ibin);
560  }
561  }
562  }
563 
564  for (int bin = 0; bin < numberOfSamplesHF_; ++bin) {
565  static const unsigned int MAX_OUTPUT = QIE8_LINEARIZATION_ET; // QIE8_LINEARIZATION_ET = 1023
566  output[bin] = min({MAX_OUTPUT, output[bin] >> hf_lumi_shift});
567  }
568 
569  std::vector<int> finegrain_converted;
570  finegrain_converted.reserve(finegrain.size());
571  for (const auto& fg : finegrain)
572  finegrain_converted.push_back(fg.to_ulong());
573  outcoder_->compress(output, finegrain_converted, result);
574 }

References cms::cuda::assert(), newFWLiteAna::bin, HcalTPGCompressor::compress(), FG_HF_thresholds_, HcalFeatureBit::fineGrainbit(), FIRST_FINEGRAIN_TOWER, B2GTnPMonitor_cfi::item, min(), numberOfPresamplesHF_, numberOfSamplesHF_, outcoder_, convertSQLitetoXML_cfg::output, QIE8_LINEARIZATION_ET, mps_fire::result, EgammaValidation_cff::samples, and theHFDetailMap.

Referenced by run().

◆ analyzeHFQIE10()

void HcalTriggerPrimitiveAlgo::analyzeHFQIE10 ( const IntegerCaloSamples SAMPLES,
HcalTriggerPrimitiveDigi result,
const int  HF_LUMI_SHIFT,
const HcalFeatureBit HCALFEM 
)
private

Definition at line 604 of file HcalTriggerPrimitiveAlgo.cc.

607  {
608  // Align digis and TP
609  const int shift = samples.presamples() - numberOfPresamplesHF_;
610  assert(shift >= 0);
611  assert((shift + numberOfSamplesHF_) <= samples.size());
612  assert(hf_lumi_shift >= 2);
613 
614  // Try to find the HFDetails from the map corresponding to our samples
615  const HcalTrigTowerDetId detId(samples.id());
616  auto it = theHFUpgradeDetailMap.find(detId);
617  // Missing values will give an empty digi
618  if (it == theHFUpgradeDetailMap.end()) {
619  return;
620  }
621 
622  std::vector<std::bitset<2>> finegrain(numberOfSamplesHF_, false);
623 
624  // Set up out output of IntergerCaloSamples
626  output.setPresamples(numberOfPresamplesHF_);
627 
628  for (const auto& item : it->second) {
629  auto& details = item.second;
630  for (int ibin = 0; ibin < numberOfSamplesHF_; ++ibin) {
631  const int idx = ibin + shift;
632 
633  int long_fiber_val = 0;
634  int long_fiber_count = 0;
635  int short_fiber_val = 0;
636  int short_fiber_count = 0;
637 
638  bool saturated = false;
639 
640  for (auto i : {0, 2}) {
641  if (idx < details[i].samples.size() and details[i].validity[idx] and details[i].passTDC[idx]) {
642  long_fiber_val += details[i].samples[idx];
643  saturated = saturated || (details[i].samples[idx] == QIE10_LINEARIZATION_ET);
644  ++long_fiber_count;
645  }
646  }
647  for (auto i : {1, 3}) {
648  if (idx < details[i].samples.size() and details[i].validity[idx] and details[i].passTDC[idx]) {
649  short_fiber_val += details[i].samples[idx];
650  saturated = saturated || (details[i].samples[idx] == QIE10_LINEARIZATION_ET);
651  ++short_fiber_count;
652  }
653  }
654 
655  if (saturated) {
657  } else {
658  // For details of the energy handling, see:
659  // https://cms-docdb.cern.ch/cgi-bin/DocDB/ShowDocument?docid=12306
660  // If both readouts are valid, average of the two energies is taken
661  // division by 2 is compensated by adjusting the total scale shift in the end
662  if (long_fiber_count == 2)
663  long_fiber_val >>= 1;
664  if (short_fiber_count == 2)
665  short_fiber_val >>= 1;
666 
667  auto sum = long_fiber_val + short_fiber_val;
668  // Similar to above, if both channels are valid,
669  // average of the two energies is calculated
670  // division by 2 here is also compensated by adjusting the total scale shift in the end
671  if (long_fiber_count > 0 and short_fiber_count > 0)
672  sum >>= 1;
673 
674  output[ibin] += sum;
675  }
676 
677  for (const auto& detail : details) {
678  if (idx < int(detail.digi.size()) and detail.validity[idx] and
679  HcalDetId(detail.digi.id()).ietaAbs() >= FIRST_FINEGRAIN_TOWER) {
680  if (useTDCInMinBiasBits_ && !detail.passTDC[idx])
681  continue;
682  finegrain[ibin][1] = finegrain[ibin][1] or detail.fgbits[idx][0];
683  // what is commonly called the "second" HF min-bias bit is
684  // actually the 0-th bit, which can also be used instead for the EM bit
685  // (called finegrain[ibin][0] below) in non-HI running
686  finegrain[ibin][0] = finegrain[ibin][0] or detail.fgbits[idx][1];
687  }
688  }
689  // the EM bit is only used if the "second" FG bit is disabled
690  if (embit != nullptr and FG_HF_thresholds_.at(1) != 255) {
691  finegrain[ibin][0] = embit->fineGrainbit(details[1].digi,
692  details[3].digi,
693  details[0].digi,
694  details[2].digi,
695  details[1].validity[idx],
696  details[3].validity[idx],
697  details[0].validity[idx],
698  details[2].validity[idx],
699  idx);
700  }
701  }
702  }
703 
704  for (int bin = 0; bin < numberOfSamplesHF_; ++bin) {
705  output[bin] = min({(unsigned int)QIE10_MAX_LINEARIZATION_ET, output[bin] >> (hf_lumi_shift - 2)});
706  }
707  std::vector<int> finegrain_converted;
708  finegrain_converted.reserve(finegrain.size());
709  for (const auto& fg : finegrain)
710  finegrain_converted.push_back(fg.to_ulong());
711  outcoder_->compress(output, finegrain_converted, result);
712 }

References cms::cuda::assert(), newFWLiteAna::bin, HcalTPGCompressor::compress(), FG_HF_thresholds_, HcalFeatureBit::fineGrainbit(), FIRST_FINEGRAIN_TOWER, mps_fire::i, heavyIonCSV_trainingSettings::idx, createfilelist::int, B2GTnPMonitor_cfi::item, min(), numberOfPresamplesHF_, numberOfSamplesHF_, or, outcoder_, convertSQLitetoXML_cfg::output, QIE10_LINEARIZATION_ET, QIE10_MAX_LINEARIZATION_ET, mps_fire::result, EgammaValidation_cff::samples, edm::shift, theHFUpgradeDetailMap, and useTDCInMinBiasBits_.

Referenced by run().

◆ analyzeQIE11()

void HcalTriggerPrimitiveAlgo::analyzeQIE11 ( IntegerCaloSamples samples,
HcalTriggerPrimitiveDigi result,
const HcalFinegrainBit fg_algo 
)
private

Definition at line 373 of file HcalTriggerPrimitiveAlgo.cc.

375  {
376  HcalDetId detId(samples.id());
377 
378  // Get the |ieta| for current sample
379  int theIeta = detId.ietaAbs();
380 
381  unsigned int dgSamples = samples.size();
382  unsigned int dgPresamples = samples.presamples();
383 
384  unsigned int tpSamples = numberOfSamples_;
385  unsigned int tpPresamples = numberOfPresamples_;
386 
387  unsigned int filterSamples = weightsQIE11_[theIeta].size();
388  unsigned int filterPresamples = theIeta > theTrigTowerGeometry->topology().lastHBRing()
391 
392  unsigned int shift = dgPresamples - tpPresamples;
393 
394  // shrink keeps the FIR filter from going off the end of the 8TS vector
395  unsigned int shrink = filterSamples - 1;
396 
397  auto& msb = fgUpgradeMap_[samples.id()];
398  IntegerCaloSamples sum(samples.id(), samples.size());
399 
400  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
401  //slide algo window
402  for (unsigned int ibin = 0; ibin < dgSamples - shrink; ++ibin) {
403  int algosumvalue = 0;
404  for (unsigned int i = 0; i < filterSamples; i++) {
405  //add up value * scale factor
406  // In addition, divide by two in the 10 degree phi segmentation region
407  // to mimic 5 degree segmentation for the trigger
408  unsigned int sample = samples[ibin + i];
411 
412  // Usually use a segmentation factor of 1.0 but for ieta >= 21 use 0.5
413  double segmentationFactor = 1.0;
414  if (ids.size() == 2) {
415  segmentationFactor = 0.5;
416  }
417 
418  // Based on the |ieta| of the sample, retrieve the correct region weight
419  double theWeight = weightsQIE11_[theIeta][i];
420 
421  algosumvalue += int(sample * segmentationFactor * theWeight);
422  }
423  if (algosumvalue < 0)
424  sum[ibin] = 0; // low-side
425  //high-side
426  //else if (algosumvalue>QIE11_LINEARIZATION_ET) sum[ibin]=QIE11_LINEARIZATION_ET;
427  else
428  sum[ibin] = algosumvalue; //assign value to sum[]
429  }
430 
431  std::vector<int> finegrain(tpSamples, false);
432 
433  IntegerCaloSamples output(samples.id(), tpSamples);
434  output.setPresamples(tpPresamples);
435 
436  for (unsigned int ibin = 0; ibin < tpSamples; ++ibin) {
437  // ibin - index for output TP
438  // idx - index for samples + shift - filterPresamples
439  int idx = ibin + shift - filterPresamples;
440 
441  // When idx is <= 0 peakfind would compare out-of-bounds of the vector. Avoid this ambiguity
442  if (idx <= 0) {
443  output[ibin] = 0;
444  continue;
445  }
446 
447  bool isPeak = (sum[idx] > sum[idx - 1] && sum[idx] >= sum[idx + 1] && sum[idx] > theThreshold);
448 
449  if (isPeak) {
450  output[ibin] = std::min<unsigned int>(sum[idx], QIE11_MAX_LINEARIZATION_ET);
451  } else {
452  // Not a peak
453  output[ibin] = 0;
454  }
455  // peak-finding is not applied for FG bits
456  finegrain[ibin] = fg_algo.compute(msb[idx]).to_ulong();
457  }
458  outcoder_->compress(output, finegrain, result);
459 }

References HcalTPGCompressor::compress(), HcalFinegrainBit::compute(), fgUpgradeMap_, mps_fire::i, heavyIonCSV_trainingSettings::idx, HcalDetId::ietaAbs(), createfilelist::int, HcalTopology::lastHBRing(), numberOfFilterPresamplesHBQIE11_, numberOfFilterPresamplesHEQIE11_, numberOfPresamples_, numberOfSamples_, outcoder_, convertSQLitetoXML_cfg::output, QIE11_MAX_LINEARIZATION_ET, mps_fire::result, simplePhotonAnalyzer_cfi::sample, EgammaValidation_cff::samples, edm::shift, theThreshold, theTrigTowerGeometry, HcalTrigTowerGeometry::topology(), HcalTrigTowerGeometry::towerIds(), and weightsQIE11_.

Referenced by run().

◆ needLegacyFG()

bool HcalTriggerPrimitiveAlgo::needLegacyFG ( const HcalTrigTowerDetId id) const
private

Definition at line 806 of file HcalTriggerPrimitiveAlgo.cc.

806  {
807  // This tower (ietaAbs == 16) does not accept upgraded FG bits,
808  // but needs pseudo legacy ones to ensure that the tower is processed
809  // even when the QIE8 depths in front of it do not have energy deposits.
810  if (id.ietaAbs() == HBHE_OVERLAP_TOWER and not upgrade_hb_)
811  return true;
812  return false;
813 }

References HBHE_OVERLAP_TOWER, and upgrade_hb_.

Referenced by addUpgradeFG().

◆ needUpgradeID()

bool HcalTriggerPrimitiveAlgo::needUpgradeID ( const HcalTrigTowerDetId id,
int  depth 
) const
private

Definition at line 815 of file HcalTriggerPrimitiveAlgo.cc.

815  {
816  // Depth 7 for TT 26, 27, and 28 is not considered a fine grain depth.
817  // However, the trigger tower for these ieta should still be added to the fgUpgradeMap_
818  // Otherwise, depth 7-only signal will not be analyzed.
819  unsigned int aieta = id.ietaAbs();
820  if (aieta >= FIRST_DEPTH7_TOWER and aieta <= LAST_FINEGRAIN_TOWER and depth > LAST_FINEGRAIN_DEPTH)
821  return true;
822  return false;
823 }

References FIRST_DEPTH7_TOWER, and LAST_FINEGRAIN_DEPTH.

Referenced by addUpgradeFG().

◆ overrideParameters()

void HcalTriggerPrimitiveAlgo::overrideParameters ( const edm::ParameterSet ps)

◆ passTDC()

bool HcalTriggerPrimitiveAlgo::passTDC ( const QIE10DataFrame digi,
int  ts 
) const
private

Definition at line 576 of file HcalTriggerPrimitiveAlgo.cc.

576  {
578  auto adc_threshold = parameters->getADCThresholdHF();
579  auto tdc_mask = parameters->getTDCMaskHF();
580 
581  if (override_adc_hf_)
582  adc_threshold = override_adc_hf_value_;
583  if (override_tdc_hf_)
584  tdc_mask = override_tdc_hf_value_;
585 
586  if (digi[ts].adc() < adc_threshold)
587  return true;
588 
589  return (1ul << digi[ts].le_tdc()) & tdc_mask;
590 }

References ecalLiteDTU::adc(), conditions_, HcalDbService::getHcalTPParameters(), override_adc_hf_, override_adc_hf_value_, override_tdc_hf_, and override_tdc_hf_value_.

Referenced by addSignal().

◆ run()

template<typename... Digis>
void HcalTriggerPrimitiveAlgo::run ( const HcalTPGCoder incoder,
const HcalTPGCompressor outcoder,
const HcalDbService conditions,
HcalTrigPrimDigiCollection result,
const HcalTrigTowerGeometry trigTowerGeometry,
float  rctlsb,
const HcalFeatureBit LongvrsShortCut,
const Digis &...  digis 
)

Definition at line 231 of file HcalTriggerPrimitiveAlgo.h.

238  {
239  theTrigTowerGeometry = trigTowerGeometry;
240 
241  incoder_ = dynamic_cast<const HcaluLUTTPGCoder*>(incoder);
242  outcoder_ = outcoder;
244 
245  theSumMap.clear();
246  theTowerMapFGSum.clear();
247  HF_Veto.clear();
248  fgMap_.clear();
249  fgUpgradeMap_.clear();
250  theHFDetailMap.clear();
251  theHFUpgradeDetailMap.clear();
252 
253  // Add all digi collections
254  addDigis(digis...);
255 
256  // Prepare the fine-grain calculation algorithm for HB/HE
257  int version = 0;
260  if (override_parameters_.exists("FGVersionHBHE"))
261  version = override_parameters_.getParameter<uint32_t>("FGVersionHBHE");
262  HcalFinegrainBit fg_algo(version);
263 
264  // VME produces additional bits on the front used by lumi but not the
265  // trigger, this shift corrects those out by right shifting over them.
266  for (auto& item : theSumMap) {
267  result.push_back(HcalTriggerPrimitiveDigi(item.first));
268  HcalTrigTowerDetId detId(item.second.id());
269  if (detId.ietaAbs() >= theTrigTowerGeometry->firstHFTower(detId.version())) {
270  if (detId.version() == 0) {
271  analyzeHF(item.second, result.back(), RCTScaleShift);
272  } else if (detId.version() == 1) {
273  if (upgrade_hf_)
275  else
277  } else {
278  // Things are going to go poorly
279  }
280  } else {
281  // Determine which energy reconstruction path to take based on the
282  // fine-grain availability:
283  // * QIE8 TP add entries into fgMap_
284  // * QIE11 TP add entries into fgUpgradeMap_
285  // (not for tower 16 unless HB is upgraded, too)
286  if (fgMap_.find(item.first) != fgMap_.end()) {
287  analyze(item.second, result.back());
288  } else if (fgUpgradeMap_.find(item.first) != fgUpgradeMap_.end()) {
289  analyzeQIE11(item.second, result.back(), fg_algo);
290  }
291  }
292  }
293 
294  // Free up some memory
295  theSumMap.clear();
296  theTowerMapFGSum.clear();
297  HF_Veto.clear();
298  fgMap_.clear();
299  fgUpgradeMap_.clear();
300  theHFDetailMap.clear();
301  theHFUpgradeDetailMap.clear();
302 
303  return;
304 }

References addDigis(), analyze(), analyzeHF(), analyzeHF2016(), analyzeHFQIE10(), analyzeQIE11(), submitPVValidationJobs::conditions, conditions_, edm::ParameterSet::exists(), fgMap_, fgUpgradeMap_, HcalTrigTowerGeometry::firstHFTower(), HcalTPParameters::getFGVersionHBHE(), HcalDbService::getHcalTPParameters(), edm::ParameterSet::getParameter(), HF_Veto, incoder_, B2GTnPMonitor_cfi::item, LongvrsShortCut, NCTScaleShift, or, outcoder_, override_parameters_, RCTScaleShift, mps_fire::result, theHFDetailMap, theHFUpgradeDetailMap, theSumMap, theTowerMapFGSum, theTrigTowerGeometry, upgrade_hb_, upgrade_he_, upgrade_hf_, and BeamSplash_cfg::version.

Referenced by HcalTrigPrimDigiProducer::produce().

◆ runFEFormatError()

void HcalTriggerPrimitiveAlgo::runFEFormatError ( const FEDRawDataCollection rawraw,
const HcalElectronicsMap emap,
HcalTrigPrimDigiCollection result 
)

Definition at line 730 of file HcalTriggerPrimitiveAlgo.cc.

732  {
733  std::set<uint32_t> FrontEndErrors;
734 
736  const FEDRawData& raw = rawraw->FEDData(i);
737  if (raw.size() < 12)
738  continue;
739  const HcalDCCHeader* dccHeader = (const HcalDCCHeader*)(raw.data());
740  if (!dccHeader)
741  continue;
742  HcalHTRData htr;
743  for (int spigot = 0; spigot < HcalDCCHeader::SPIGOT_COUNT; spigot++) {
744  if (!dccHeader->getSpigotPresent(spigot))
745  continue;
746  dccHeader->getSpigotData(spigot, htr, raw.size());
747  int dccid = dccHeader->getSourceId();
748  int errWord = htr.getErrorsWord() & 0x1FFFF;
749  bool HTRError = (!htr.check() || htr.isHistogramEvent() || (errWord & 0x800) != 0);
750 
751  if (HTRError) {
752  bool valid = false;
753  for (int fchan = 0; fchan < 3 && !valid; fchan++) {
754  for (int fib = 0; fib < 9 && !valid; fib++) {
755  HcalElectronicsId eid(fchan, fib, spigot, dccid - FEDNumbering::MINHCALFEDID);
756  eid.setHTR(htr.readoutVMECrateId(), htr.htrSlot(), htr.htrTopBottom());
757  DetId detId = emap->lookup(eid);
758  if (detId.null())
759  continue;
760  HcalSubdetector subdet = (HcalSubdetector(detId.subdetId()));
761  if (detId.det() != 4 || (subdet != HcalBarrel && subdet != HcalEndcap && subdet != HcalForward))
762  continue;
763  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
764  for (std::vector<HcalTrigTowerDetId>::const_iterator triggerId = ids.begin(); triggerId != ids.end();
765  ++triggerId) {
766  FrontEndErrors.insert(triggerId->rawId());
767  }
768  //valid = true;
769  }
770  }
771  }
772  }
773  }
774 
775  // Loop over TP collection
776  // Set TP to zero if there is FE Format Error
777  HcalTriggerPrimitiveSample zeroSample(0);
778  for (HcalTrigPrimDigiCollection::iterator tp = result.begin(); tp != result.end(); ++tp) {
779  if (FrontEndErrors.find(tp->id().rawId()) != FrontEndErrors.end()) {
780  for (int i = 0; i < tp->size(); ++i)
781  tp->setSample(i, zeroSample);
782  }
783  }
784 }

References HcalHTRData::check(), FEDRawData::data(), DetId::det(), runTauDisplay::eid, FEDRawDataCollection::FEDData(), HcalHTRData::getErrorsWord(), HcalDCCHeader::getSourceId(), HcalDCCHeader::getSpigotData(), HcalDCCHeader::getSpigotPresent(), HcalBarrel, HcalEndcap, HcalForward, HcalHTRData::htrSlot(), HcalHTRData::htrTopBottom(), mps_fire::i, HcalHTRData::isHistogramEvent(), HcalElectronicsMap::lookup(), FEDNumbering::MAXHCALFEDID, FEDNumbering::MINHCALFEDID, DetId::null(), HcalHTRData::readoutVMECrateId(), mps_fire::result, FEDRawData::size(), HcalDCCHeader::SPIGOT_COUNT, DetId::subdetId(), theTrigTowerGeometry, HcalTrigTowerGeometry::towerIds(), cmsswSequenceInfo::tp, and RunInfoPI::valid.

Referenced by HcalTrigPrimDigiProducer::produce().

◆ runZS()

void HcalTriggerPrimitiveAlgo::runZS ( HcalTrigPrimDigiCollection tp)

Definition at line 714 of file HcalTriggerPrimitiveAlgo.cc.

714  {
715  for (HcalTrigPrimDigiCollection::iterator tp = result.begin(); tp != result.end(); ++tp) {
716  bool ZS = true;
717  for (int i = 0; i < tp->size(); ++i) {
718  if (tp->sample(i).compressedEt() > ZS_threshold_I_) {
719  ZS = false;
720  break;
721  }
722  }
723  if (ZS)
724  tp->setZSInfo(false, true);
725  else
726  tp->setZSInfo(true, false);
727  }
728 }

References mps_fire::i, mps_fire::result, cmsswSequenceInfo::tp, and ZS_threshold_I_.

Referenced by HcalTrigPrimDigiProducer::produce().

◆ setNCTScaleShift()

void HcalTriggerPrimitiveAlgo::setNCTScaleShift ( int  shift)

◆ setPeakFinderAlgorithm()

void HcalTriggerPrimitiveAlgo::setPeakFinderAlgorithm ( int  algo)

Definition at line 869 of file HcalTriggerPrimitiveAlgo.cc.

869  {
870  if (algo <= 0 || algo > 2)
871  throw cms::Exception("ERROR: Only algo 1 & 2 are supported.") << std::endl;
873 }

References Exception, and peak_finder_algorithm_.

Referenced by HcalTrigPrimDigiProducer::HcalTrigPrimDigiProducer().

◆ setRCTScaleShift()

void HcalTriggerPrimitiveAlgo::setRCTScaleShift ( int  shift)

◆ setUpgradeFlags()

void HcalTriggerPrimitiveAlgo::setUpgradeFlags ( bool  hb,
bool  he,
bool  hf 
)

◆ setWeightsQIE11()

void HcalTriggerPrimitiveAlgo::setWeightsQIE11 ( const edm::ParameterSet weightsQIE11)

Definition at line 859 of file HcalTriggerPrimitiveAlgo.cc.

859  {
860  // Names are just abs(ieta) for HBHE
861  std::vector<std::string> ietaStrs = weightsQIE11.getParameterNames();
862  for (auto& ietaStr : ietaStrs) {
863  // Strip off "ieta" part of key and just use integer value in map
864  auto const& v = weightsQIE11.getParameter<std::vector<double>>(ietaStr);
865  weightsQIE11_[std::stoi(ietaStr.substr(4))] = {{v[0], v[1]}};
866  }
867 }

References findQualityFiles::v, hcaltpdigi_cfi::weightsQIE11, and weightsQIE11_.

Referenced by HcalTrigPrimDigiProducer::HcalTrigPrimDigiProducer().

◆ validChannel()

bool HcalTriggerPrimitiveAlgo::validChannel ( const QIE10DataFrame digi,
int  ts 
) const
private

Definition at line 592 of file HcalTriggerPrimitiveAlgo.cc.

592  {
593  // channels with invalid data should not contribute to the sum
594  if (digi.linkError() || ts >= digi.samples() || !digi[ts].ok())
595  return false;
596 
597  auto mask = conditions_->getHcalTPChannelParameter(HcalDetId(digi.id()))->getMask();
598  if (mask)
599  return false;
600 
601  return true;
602 }

References conditions_, HcalDbService::getHcalTPChannelParameter(), HcalTPChannelParameter::getMask(), QIE10DataFrame::id(), QIE10DataFrame::linkError(), and QIE10DataFrame::samples().

Referenced by addSignal().

◆ validUpgradeFG()

bool HcalTriggerPrimitiveAlgo::validUpgradeFG ( const HcalTrigTowerDetId id,
int  depth 
) const
private

Definition at line 796 of file HcalTriggerPrimitiveAlgo.cc.

796  {
798  return false;
799  if (id.ietaAbs() > LAST_FINEGRAIN_TOWER)
800  return false;
801  if (id.ietaAbs() == HBHE_OVERLAP_TOWER and not upgrade_hb_)
802  return false;
803  return true;
804 }

References LEDCalibrationChannels::depth, HBHE_OVERLAP_TOWER, LAST_FINEGRAIN_DEPTH, LAST_FINEGRAIN_TOWER, and upgrade_hb_.

Referenced by addUpgradeFG().

Member Data Documentation

◆ conditions_

const HcalDbService* HcalTriggerPrimitiveAlgo::conditions_
private

Definition at line 123 of file HcalTriggerPrimitiveAlgo.h.

Referenced by passTDC(), run(), and validChannel().

◆ FG_HF_thresholds_

std::vector<uint32_t> HcalTriggerPrimitiveAlgo::FG_HF_thresholds_
private

Definition at line 130 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2016(), and analyzeHFQIE10().

◆ FG_threshold_

uint32_t HcalTriggerPrimitiveAlgo::FG_threshold_
private

Definition at line 129 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF().

◆ fgMap_

FGbitMap HcalTriggerPrimitiveAlgo::fgMap_
private

Definition at line 196 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addFG(), analyze(), and run().

◆ fgUpgradeMap_

FGUpgradeMap HcalTriggerPrimitiveAlgo::fgUpgradeMap_
private

Definition at line 200 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addUpgradeFG(), analyzeQIE11(), and run().

◆ FIRST_DEPTH7_TOWER

const int HcalTriggerPrimitiveAlgo::FIRST_DEPTH7_TOWER = 26
staticprivate

Definition at line 215 of file HcalTriggerPrimitiveAlgo.h.

Referenced by needUpgradeID().

◆ FIRST_FINEGRAIN_TOWER

const int HcalTriggerPrimitiveAlgo::FIRST_FINEGRAIN_TOWER = 30
staticprivate

Definition at line 220 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2016(), and analyzeHFQIE10().

◆ HBHE_OVERLAP_TOWER

const int HcalTriggerPrimitiveAlgo::HBHE_OVERLAP_TOWER = 16
staticprivate

Definition at line 214 of file HcalTriggerPrimitiveAlgo.h.

Referenced by needLegacyFG(), and validUpgradeFG().

◆ HF_Veto

TowerMapVeto HcalTriggerPrimitiveAlgo::HF_Veto
private

Definition at line 193 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), analyzeHF(), and run().

◆ incoder_

const HcaluLUTTPGCoder* HcalTriggerPrimitiveAlgo::incoder_
private

Definition at line 121 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), and run().

◆ LAST_FINEGRAIN_DEPTH

const int HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_DEPTH = 6
staticprivate

Definition at line 216 of file HcalTriggerPrimitiveAlgo.h.

Referenced by needUpgradeID(), and validUpgradeFG().

◆ LAST_FINEGRAIN_TOWER

const int HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_TOWER = 28
staticprivate

Definition at line 217 of file HcalTriggerPrimitiveAlgo.h.

Referenced by validUpgradeFG().

◆ latency_

int HcalTriggerPrimitiveAlgo::latency_
private

Definition at line 128 of file HcalTriggerPrimitiveAlgo.h.

◆ LongvrsShortCut

HcalFeatureBit* HcalTriggerPrimitiveAlgo::LongvrsShortCut
private

Definition at line 191 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run().

◆ minSignalThreshold_

uint32_t HcalTriggerPrimitiveAlgo::minSignalThreshold_
private

Definition at line 140 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal().

◆ NCTScaleShift

int HcalTriggerPrimitiveAlgo::NCTScaleShift
private

Definition at line 142 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setNCTScaleShift().

◆ numberOfFilterPresamplesHBQIE11_

int HcalTriggerPrimitiveAlgo::numberOfFilterPresamplesHBQIE11_
private

Definition at line 135 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeQIE11().

◆ numberOfFilterPresamplesHEQIE11_

int HcalTriggerPrimitiveAlgo::numberOfFilterPresamplesHEQIE11_
private

Definition at line 136 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeQIE11().

◆ numberOfPresamples_

int HcalTriggerPrimitiveAlgo::numberOfPresamples_
private

Definition at line 134 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), analyzeQIE11(), and HcalTriggerPrimitiveAlgo().

◆ numberOfPresamplesHF_

int HcalTriggerPrimitiveAlgo::numberOfPresamplesHF_
private

◆ numberOfSamples_

int HcalTriggerPrimitiveAlgo::numberOfSamples_
private

Definition at line 133 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), analyzeQIE11(), and HcalTriggerPrimitiveAlgo().

◆ numberOfSamplesHF_

int HcalTriggerPrimitiveAlgo::numberOfSamplesHF_
private

◆ outcoder_

const HcalTPGCompressor* HcalTriggerPrimitiveAlgo::outcoder_
private

◆ override_adc_hf_

bool HcalTriggerPrimitiveAlgo::override_adc_hf_ = false
private

Definition at line 208 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

◆ override_adc_hf_value_

uint32_t HcalTriggerPrimitiveAlgo::override_adc_hf_value_
private

Definition at line 209 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

◆ override_parameters_

edm::ParameterSet HcalTriggerPrimitiveAlgo::override_parameters_
private

Definition at line 206 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and run().

◆ override_tdc_hf_

bool HcalTriggerPrimitiveAlgo::override_tdc_hf_ = false
private

Definition at line 210 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

◆ override_tdc_hf_value_

unsigned long long HcalTriggerPrimitiveAlgo::override_tdc_hf_value_
private

Definition at line 211 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

◆ peak_finder_algorithm_

int HcalTriggerPrimitiveAlgo::peak_finder_algorithm_
private

Definition at line 149 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and setPeakFinderAlgorithm().

◆ peakfind_

bool HcalTriggerPrimitiveAlgo::peakfind_
private

Definition at line 125 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and HcalTriggerPrimitiveAlgo().

◆ PMT_NoiseThreshold_

uint32_t HcalTriggerPrimitiveAlgo::PMT_NoiseThreshold_
private

Definition at line 141 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF().

◆ QIE10_LINEARIZATION_ET

const int HcalTriggerPrimitiveAlgo::QIE10_LINEARIZATION_ET = HcaluLUTTPGCoder::QIE10_LUT_BITMASK
staticprivate

Definition at line 223 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHFQIE10().

◆ QIE10_MAX_LINEARIZATION_ET

const int HcalTriggerPrimitiveAlgo::QIE10_MAX_LINEARIZATION_ET = 0x7FF
staticprivate

Definition at line 226 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHFQIE10().

◆ QIE11_LINEARIZATION_ET

const int HcalTriggerPrimitiveAlgo::QIE11_LINEARIZATION_ET = HcaluLUTTPGCoder::QIE11_LUT_BITMASK
staticprivate

Definition at line 224 of file HcalTriggerPrimitiveAlgo.h.

◆ QIE11_MAX_LINEARIZATION_ET

const int HcalTriggerPrimitiveAlgo::QIE11_MAX_LINEARIZATION_ET = 0x7FF
staticprivate

Definition at line 227 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeQIE11().

◆ QIE8_LINEARIZATION_ET

const int HcalTriggerPrimitiveAlgo::QIE8_LINEARIZATION_ET = HcaluLUTTPGCoder::QIE8_LUT_BITMASK
staticprivate

Definition at line 222 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), analyzeHF(), and analyzeHF2016().

◆ RCTScaleShift

int HcalTriggerPrimitiveAlgo::RCTScaleShift
private

Definition at line 143 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setRCTScaleShift().

◆ theHFDetailMap

HFDetailMap HcalTriggerPrimitiveAlgo::theHFDetailMap
private

Definition at line 166 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), analyzeHF2016(), and run().

◆ theHFUpgradeDetailMap

HFUpgradeDetailMap HcalTriggerPrimitiveAlgo::theHFUpgradeDetailMap
private

Definition at line 176 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), analyzeHFQIE10(), and run().

◆ theSumMap

SumMap HcalTriggerPrimitiveAlgo::theSumMap
private

Definition at line 157 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), and run().

◆ theThreshold

double HcalTriggerPrimitiveAlgo::theThreshold
private

Definition at line 124 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and analyzeQIE11().

◆ theTowerMapFGSum

TowerMapFGSum HcalTriggerPrimitiveAlgo::theTowerMapFGSum
private

Definition at line 180 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), analyzeHF(), and run().

◆ theTrigTowerGeometry

const HcalTrigTowerGeometry* HcalTriggerPrimitiveAlgo::theTrigTowerGeometry
private

Definition at line 154 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), analyzeQIE11(), run(), and runFEFormatError().

◆ upgrade_hb_

bool HcalTriggerPrimitiveAlgo::upgrade_hb_ = false
private

Definition at line 202 of file HcalTriggerPrimitiveAlgo.h.

Referenced by needLegacyFG(), run(), setUpgradeFlags(), and validUpgradeFG().

◆ upgrade_he_

bool HcalTriggerPrimitiveAlgo::upgrade_he_ = false
private

Definition at line 203 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setUpgradeFlags().

◆ upgrade_hf_

bool HcalTriggerPrimitiveAlgo::upgrade_hf_ = false
private

Definition at line 204 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setUpgradeFlags().

◆ useTDCInMinBiasBits_

bool HcalTriggerPrimitiveAlgo::useTDCInMinBiasBits_
private

Definition at line 139 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHFQIE10().

◆ weights_

std::vector<double> HcalTriggerPrimitiveAlgo::weights_
private

Definition at line 126 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze().

◆ weightsQIE11_

std::array<std::array<double, 2>, 29> HcalTriggerPrimitiveAlgo::weightsQIE11_
private

Definition at line 127 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeQIE11(), and setWeightsQIE11().

◆ ZS_threshold_

uint32_t HcalTriggerPrimitiveAlgo::ZS_threshold_
private

Definition at line 131 of file HcalTriggerPrimitiveAlgo.h.

Referenced by HcalTriggerPrimitiveAlgo().

◆ ZS_threshold_I_

int HcalTriggerPrimitiveAlgo::ZS_threshold_I_
private

Definition at line 132 of file HcalTriggerPrimitiveAlgo.h.

Referenced by HcalTriggerPrimitiveAlgo(), and runZS().

HcalHTRData::readoutVMECrateId
unsigned int readoutVMECrateId() const
HcalElectronicsId-style VME crate number.
Definition: HcalHTRData.cc:373
HcalTriggerPrimitiveAlgo::numberOfSamplesHF_
int numberOfSamplesHF_
Definition: HcalTriggerPrimitiveAlgo.h:137
BeamSpotPI::parameters
parameters
Definition: BeamSpotPayloadInspectorHelper.h:29
hcaltpdigi_cfi.numberOfSamplesHF
numberOfSamplesHF
Definition: hcaltpdigi_cfi.py:56
HcalTriggerPrimitiveAlgo::addFG
void addFG(const HcalTrigTowerDetId &id, std::vector< bool > &msb)
Definition: HcalTriggerPrimitiveAlgo.cc:786
mps_fire.i
i
Definition: mps_fire.py:428
HcalTrigTowerGeometry::towerIds
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
Definition: HcalTrigTowerGeometry.cc:15
HcalTriggerPrimitiveAlgo::weightsQIE11_
std::array< std::array< double, 2 >, 29 > weightsQIE11_
Definition: HcalTriggerPrimitiveAlgo.h:127
HcalHTRData::isHistogramEvent
bool isHistogramEvent() const
Is this event a histogram event? (do not call standard unpack in this case!!!!!)
Definition: HcalHTRData.cc:409
config_102169_raw_cff.latency
latency
Definition: config_102169_raw_cff.py:29
simplePhotonAnalyzer_cfi.sample
sample
Definition: simplePhotonAnalyzer_cfi.py:12
HcalTriggerPrimitiveAlgo::override_adc_hf_value_
uint32_t override_adc_hf_value_
Definition: HcalTriggerPrimitiveAlgo.h:209
HcalTriggerPrimitiveAlgo::HF_Veto
TowerMapVeto HF_Veto
Definition: HcalTriggerPrimitiveAlgo.h:193
QIE10DataFrame::samples
constexpr int samples() const
total number of samples in the digi
Definition: QIE10DataFrame.h:86
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
min
T min(T a, T b)
Definition: MathUtil.h:58
HcalTriggerPrimitiveSample
Definition: HcalTriggerPrimitiveSample.h:11
HcalTriggerPrimitiveAlgo::upgrade_he_
bool upgrade_he_
Definition: HcalTriggerPrimitiveAlgo.h:203
QIE10DataFrame::linkError
constexpr bool linkError() const
Definition: QIE10DataFrame.h:101
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
HcalTriggerPrimitiveAlgo::addDigis
void addDigis(const T &collection, const Args &... digis)
Definition: HcalTriggerPrimitiveAlgo.h:55
HcalTriggerPrimitiveAlgo::FIRST_FINEGRAIN_TOWER
static const int FIRST_FINEGRAIN_TOWER
Definition: HcalTriggerPrimitiveAlgo.h:220
HcalTriggerPrimitiveAlgo::addUpgradeFG
void addUpgradeFG(const HcalTrigTowerDetId &id, int depth, const std::vector< std::bitset< 2 >> &bits)
Definition: HcalTriggerPrimitiveAlgo.cc:825
HcalTriggerPrimitiveAlgo::ZS_threshold_
uint32_t ZS_threshold_
Definition: HcalTriggerPrimitiveAlgo.h:131
HcalTriggerPrimitiveAlgo::numberOfPresamples_
int numberOfPresamples_
Definition: HcalTriggerPrimitiveAlgo.h:134
HcalTriggerPrimitiveAlgo::conditions_
const HcalDbService * conditions_
Definition: HcalTriggerPrimitiveAlgo.h:123
cms::cuda::assert
assert(be >=bs)
HcalTPChannelParameter::getMask
uint32_t getMask() const
get mask for channel validity and self trigger information
Definition: HcalTPChannelParameter.h:10
HcalTriggerPrimitiveAlgo::FGUpgradeContainer
std::vector< HcalFinegrainBit::Tower > FGUpgradeContainer
Definition: HcalTriggerPrimitiveAlgo.h:198
DetId::null
constexpr bool null() const
is this a null id ?
Definition: DetId.h:59
HcalTPGCompressor::compress
void compress(const IntegerCaloSamples &ics, const std::vector< int > &fineGrain, HcalTriggerPrimitiveDigi &digi) const
Definition: HcalTPGCompressor.cc:6
detail
Definition: ConvertingESProducerWithDependenciesT.h:23
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
hcaltpdigi_cfi.numberOfPresamples
numberOfPresamples
Definition: hcaltpdigi_cfi.py:55
HcalBarrel
Definition: HcalAssistant.h:33
findQualityFiles.v
v
Definition: findQualityFiles.py:179
HcalTriggerPrimitiveAlgo::override_tdc_hf_value_
unsigned long long override_tdc_hf_value_
Definition: HcalTriggerPrimitiveAlgo.h:211
HcalHTRData::htrSlot
unsigned int htrSlot() const
HcalElectronicsId-style HTR slot.
Definition: HcalHTRData.cc:365
HcalTriggerPrimitiveAlgo::QIE11_MAX_LINEARIZATION_ET
static const int QIE11_MAX_LINEARIZATION_ET
Definition: HcalTriggerPrimitiveAlgo.h:227
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
IntegerCaloSamples
Definition: IntegerCaloSamples.h:16
HcalDCCHeader::SPIGOT_COUNT
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
FEDRawData::data
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:24
FEDRawData
Definition: FEDRawData.h:19
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
EgammaValidation_cff.samples
samples
Definition: EgammaValidation_cff.py:19
HcalFinegrainBit
Definition: HcalFinegrainBit.h:7
ecalLiteDTU::adc
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
Definition: EcalLiteDTUSample.h:12
DetId
Definition: DetId.h:17
cmsdt::algo
algo
Definition: constants.h:164
hcaltpdigi_cfi.weightsQIE11
weightsQIE11
hardware algo
Definition: hcaltpdigi_cfi.py:19
HcalTriggerPrimitiveAlgo::QIE10_MAX_LINEARIZATION_ET
static const int QIE10_MAX_LINEARIZATION_ET
Definition: HcalTriggerPrimitiveAlgo.h:226
HcalDCCHeader::getSourceId
int getSourceId() const
Definition: HcalDCCHeader.h:32
HcalTPParameters::getFGVersionHBHE
int getFGVersionHBHE() const
get FineGrain Algorithm Version for HBHE
Definition: HcalTPParameters.h:19
HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_TOWER
static const int LAST_FINEGRAIN_TOWER
Definition: HcalTriggerPrimitiveAlgo.h:217
HcalTriggerPrimitiveAlgo::passTDC
bool passTDC(const QIE10DataFrame &digi, int ts) const
Definition: HcalTriggerPrimitiveAlgo.cc:576
photonIsolationHIProducer_cfi.hf
hf
Definition: photonIsolationHIProducer_cfi.py:9
HcalTriggerPrimitiveAlgo::addSignal
void addSignal(const HBHEDataFrame &frame)
adds the signal to the map
Definition: HcalTriggerPrimitiveAlgo.cc:92
HcalHTRData::htrTopBottom
unsigned int htrTopBottom() const
HcalElectronicsId-style HTR top/bottom (1=top/0=bottom)
Definition: HcalHTRData.cc:369
w
const double w
Definition: UKUtility.cc:23
HcalTriggerPrimitiveAlgo::numberOfFilterPresamplesHEQIE11_
int numberOfFilterPresamplesHEQIE11_
Definition: HcalTriggerPrimitiveAlgo.h:136
HcalTriggerPrimitiveAlgo::FG_threshold_
uint32_t FG_threshold_
Definition: HcalTriggerPrimitiveAlgo.h:129
HcalTriggerPrimitiveAlgo::QIE10_LINEARIZATION_ET
static const int QIE10_LINEARIZATION_ET
Definition: HcalTriggerPrimitiveAlgo.h:223
HcalElectronicsId
Readout chain identification for Hcal.
Definition: HcalElectronicsId.h:32
hcal_dqm_sourceclient-live_cfg.FG_threshold
FG_threshold
Definition: hcal_dqm_sourceclient-live_cfg.py:104
details
Definition: helper.h:56
HcalTriggerPrimitiveAlgo::fgUpgradeMap_
FGUpgradeMap fgUpgradeMap_
Definition: HcalTriggerPrimitiveAlgo.h:200
HcalTrigTowerDetId::version
int version() const
get the version code for the trigger tower
Definition: HcalTrigTowerDetId.h:60
HcalDbService::getHcalTPParameters
const HcalTPParameters * getHcalTPParameters() const
Definition: HcalDbService.cc:412
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
FEDRawDataCollection::FEDData
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
Definition: FEDRawDataCollection.cc:19
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
HcalTriggerPrimitiveAlgo::validUpgradeFG
bool validUpgradeFG(const HcalTrigTowerDetId &id, int depth) const
Definition: HcalTriggerPrimitiveAlgo.cc:796
HcalTriggerPrimitiveAlgo::override_parameters_
edm::ParameterSet override_parameters_
Definition: HcalTriggerPrimitiveAlgo.h:206
HcalTriggerPrimitiveAlgo::numberOfFilterPresamplesHBQIE11_
int numberOfFilterPresamplesHBQIE11_
Definition: HcalTriggerPrimitiveAlgo.h:135
HcalTriggerPrimitiveAlgo::minSignalThreshold_
uint32_t minSignalThreshold_
Definition: HcalTriggerPrimitiveAlgo.h:140
HcalTriggerPrimitiveAlgo::HBHE_OVERLAP_TOWER
static const int HBHE_OVERLAP_TOWER
Definition: HcalTriggerPrimitiveAlgo.h:214
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
HcalTriggerPrimitiveAlgo::PMT_NoiseThreshold_
uint32_t PMT_NoiseThreshold_
Definition: HcalTriggerPrimitiveAlgo.h:141
HcalTriggerPrimitiveDigi
Definition: HcalTriggerPrimitiveDigi.h:13
HcalTriggerPrimitiveAlgo::theHFUpgradeDetailMap
HFUpgradeDetailMap theHFUpgradeDetailMap
Definition: HcalTriggerPrimitiveAlgo.h:176
HcalTriggerPrimitiveAlgo::theTrigTowerGeometry
const HcalTrigTowerGeometry * theTrigTowerGeometry
Definition: HcalTriggerPrimitiveAlgo.h:154
hcal_dqm_sourceclient-live_cfg.ZS_threshold
ZS_threshold
Definition: hcal_dqm_sourceclient-live_cfg.py:113
HcalTriggerPrimitiveAlgo::theSumMap
SumMap theSumMap
Definition: HcalTriggerPrimitiveAlgo.h:157
edm::SortedCollection::iterator
std::vector< T >::iterator iterator
Definition: SortedCollection.h:81
HcalTriggerPrimitiveAlgo::peakfind_
bool peakfind_
Definition: HcalTriggerPrimitiveAlgo.h:125
hcaltpdigi_cff.FG_HF_thresholds
FG_HF_thresholds
Definition: hcaltpdigi_cff.py:24
HcalTriggerPrimitiveAlgo::analyzeHF
void analyzeHF(IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result, const int hf_lumi_shift)
Definition: HcalTriggerPrimitiveAlgo.cc:461
HcalTrigTowerGeometry::topology
const HcalTopology & topology() const
Definition: HcalTrigTowerGeometry.h:27
HcalTriggerPrimitiveAlgo::override_adc_hf_
bool override_adc_hf_
Definition: HcalTriggerPrimitiveAlgo.h:208
HcalDetId::subdet
constexpr HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:138
HcaluLUTTPGCoder::lookupMSB
void lookupMSB(const HBHEDataFrame &df, std::vector< bool > &msb) const
Definition: HcaluLUTTPGCoder.cc:553
HcalDetId
Definition: HcalDetId.h:12
createfilelist.int
int
Definition: createfilelist.py:10
HcalTrigTowerGeometry::firstHFTower
int firstHFTower(int version) const
Definition: HcalTrigTowerGeometry.h:18
hcaltpdigi_cfi.numberOfFilterPresamplesHBQIE11
numberOfFilterPresamplesHBQIE11
Definition: hcaltpdigi_cfi.py:58
runTauDisplay.eid
eid
Definition: runTauDisplay.py:298
HcalTriggerPrimitiveAlgo::analyzeHFQIE10
void analyzeHFQIE10(const IntegerCaloSamples &SAMPLES, HcalTriggerPrimitiveDigi &result, const int HF_LUMI_SHIFT, const HcalFeatureBit *HCALFEM)
Definition: HcalTriggerPrimitiveAlgo.cc:604
universalConfigTemplate.collection
collection
Definition: universalConfigTemplate.py:81
HcalTriggerPrimitiveAlgo::needLegacyFG
bool needLegacyFG(const HcalTrigTowerDetId &id) const
Definition: HcalTriggerPrimitiveAlgo.cc:806
HcalTriggerPrimitiveAlgo::needUpgradeID
bool needUpgradeID(const HcalTrigTowerDetId &id, int depth) const
Definition: HcalTriggerPrimitiveAlgo.cc:815
HcalTriggerPrimitiveAlgo::FIRST_DEPTH7_TOWER
static const int FIRST_DEPTH7_TOWER
Definition: HcalTriggerPrimitiveAlgo.h:215
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
HcalTriggerPrimitiveAlgo::theHFDetailMap
HFDetailMap theHFDetailMap
Definition: HcalTriggerPrimitiveAlgo.h:166
HcalTriggerPrimitiveAlgo::fgMap_
FGbitMap fgMap_
Definition: HcalTriggerPrimitiveAlgo.h:196
HcalFinegrainBit::compute
std::bitset< 4 > compute(const Tower &) const
Definition: HcalFinegrainBit.cc:5
hcaltpdigi_cfi.numberOfFilterPresamplesHEQIE11
numberOfFilterPresamplesHEQIE11
Definition: hcaltpdigi_cfi.py:59
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
itr
std::vector< std::pair< float, float > >::iterator itr
Definition: HGCDigitizer.cc:29
HcalTriggerPrimitiveAlgo::validChannel
bool validChannel(const QIE10DataFrame &digi, int ts) const
Definition: HcalTriggerPrimitiveAlgo.cc:592
HcalTriggerPrimitiveAlgo::NCTScaleShift
int NCTScaleShift
Definition: HcalTriggerPrimitiveAlgo.h:142
HcalTriggerPrimitiveAlgo::RCTScaleShift
int RCTScaleShift
Definition: HcalTriggerPrimitiveAlgo.h:143
hcalSimParameters_cfi.hb
hb
Definition: hcalSimParameters_cfi.py:60
FEDRawData::size
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:45
HcalDCCHeader::getSpigotPresent
bool getSpigotPresent(unsigned int nspigot) const
Read the "PRESENT" bit for this spigot.
Definition: HcalDCCHeader.h:106
HcalDCCHeader
Definition: HcalDCCHeader.h:17
HcalTriggerPrimitiveAlgo::theThreshold
double theThreshold
Definition: HcalTriggerPrimitiveAlgo.h:124
newFWLiteAna.bin
bin
Definition: newFWLiteAna.py:161
HcalSubdetector
HcalSubdetector
Definition: HcalAssistant.h:31
HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_DEPTH
static const int LAST_FINEGRAIN_DEPTH
Definition: HcalTriggerPrimitiveAlgo.h:216
HcalForward
Definition: HcalAssistant.h:36
HcalTriggerPrimitiveAlgo::numberOfPresamplesHF_
int numberOfPresamplesHF_
Definition: HcalTriggerPrimitiveAlgo.h:138
HcalTriggerPrimitiveAlgo::upgrade_hf_
bool upgrade_hf_
Definition: HcalTriggerPrimitiveAlgo.h:204
HcalTriggerPrimitiveAlgo::analyzeQIE11
void analyzeQIE11(IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result, const HcalFinegrainBit &fg_algo)
Definition: HcalTriggerPrimitiveAlgo.cc:373
funct::D
DecomposeProduct< arg, typename Div::arg > D
Definition: Factorize.h:141
submitPVValidationJobs.conditions
list conditions
Definition: submitPVValidationJobs.py:674
HcalTriggerPrimitiveAlgo::peak_finder_algorithm_
int peak_finder_algorithm_
Definition: HcalTriggerPrimitiveAlgo.h:149
HcalElectronicsMap::lookup
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
Definition: HcalElectronicsMap.cc:70
edm::shift
static unsigned const int shift
Definition: LuminosityBlockID.cc:7
hcalSimParameters_cfi.he
he
Definition: hcalSimParameters_cfi.py:79
HcalEndcap
Definition: HcalAssistant.h:34
packedPFCandidateRefMixer_cfi.pf
pf
Definition: packedPFCandidateRefMixer_cfi.py:4
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
amptDefault_cfi.frame
frame
Definition: amptDefault_cfi.py:12
Exception
Definition: hltDiff.cc:246
HcalTriggerPrimitiveAlgo::outcoder_
const HcalTPGCompressor * outcoder_
Definition: HcalTriggerPrimitiveAlgo.h:122
FEDNumbering::MINHCALFEDID
Definition: FEDNumbering.h:47
HcalTriggerPrimitiveAlgo::ZS_threshold_I_
int ZS_threshold_I_
Definition: HcalTriggerPrimitiveAlgo.h:132
HcalTriggerPrimitiveAlgo::latency_
int latency_
Definition: HcalTriggerPrimitiveAlgo.h:128
HcalTriggerPrimitiveAlgo::override_tdc_hf_
bool override_tdc_hf_
Definition: HcalTriggerPrimitiveAlgo.h:210
hcaltpdigi_cfi.numberOfPresamplesHF
numberOfPresamplesHF
Definition: hcaltpdigi_cfi.py:57
IntegerCaloSamples::setPresamples
void setPresamples(int pre)
set presample information
Definition: IntegerCaloSamples.cc:13
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
hcaltpdigi_cfi.useTDCInMinBiasBits
useTDCInMinBiasBits
Definition: hcaltpdigi_cfi.py:60
HcalTriggerPrimitiveAlgo::analyze
void analyze(IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result)
adds the actual digis
Definition: HcalTriggerPrimitiveAlgo.cc:291
mps_fire.result
result
Definition: mps_fire.py:311
RunInfoPI::valid
Definition: RunInfoPayloadInspectoHelper.h:16
HcalDetId::ietaAbs
constexpr int ietaAbs() const
get the absolute value of the cell ieta
Definition: HcalDetId.h:148
FEDNumbering::MAXHCALFEDID
Definition: FEDNumbering.h:48
HcalTriggerPrimitiveAlgo::theTowerMapFGSum
TowerMapFGSum theTowerMapFGSum
Definition: HcalTriggerPrimitiveAlgo.h:180
HcalTriggerPrimitiveAlgo::useTDCInMinBiasBits_
bool useTDCInMinBiasBits_
Definition: HcalTriggerPrimitiveAlgo.h:139
HcalTriggerPrimitiveAlgo::upgrade_hb_
bool upgrade_hb_
Definition: HcalTriggerPrimitiveAlgo.h:202
HcalTriggerPrimitiveAlgo::FG_HF_thresholds_
std::vector< uint32_t > FG_HF_thresholds_
Definition: HcalTriggerPrimitiveAlgo.h:130
QIE10DataFrame::id
constexpr edm::DataFrame::id_type id() const
Definition: QIE10DataFrame.h:77
HcalHTRData
Definition: HcalHTRData.h:16
PbPb_ZMuSkimMuonDPG_cff.veto
veto
Definition: PbPb_ZMuSkimMuonDPG_cff.py:61
HcalTriggerPrimitiveAlgo::numberOfSamples_
int numberOfSamples_
Definition: HcalTriggerPrimitiveAlgo.h:133
HcalDbService::getHcalTPChannelParameter
const HcalTPChannelParameter * getHcalTPChannelParameter(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:391
BeamSplash_cfg.version
version
Definition: BeamSplash_cfg.py:45
HcalTriggerPrimitiveAlgo::analyzeHF2016
void analyzeHF2016(const IntegerCaloSamples &SAMPLES, HcalTriggerPrimitiveDigi &result, const int HF_LUMI_SHIFT, const HcalFeatureBit *HCALFEM)
Definition: HcalTriggerPrimitiveAlgo.cc:515
HcalHTRData::getErrorsWord
unsigned int getErrorsWord() const
Get the errors word.
Definition: HcalHTRData.h:162
HcalDCCHeader::getSpigotData
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
Definition: HcalDCCHeader.cc:27
HcalTriggerPrimitiveAlgo::SumFGContainer
std::vector< IntegerCaloSamples > SumFGContainer
Definition: HcalTriggerPrimitiveAlgo.h:178
numberOfSamples
Definition: TotemSampicFrame.h:53
HcaluLUTTPGCoder::adc2Linear
void adc2Linear(const HBHEDataFrame &df, IntegerCaloSamples &ics) const override
Definition: HcaluLUTTPGCoder.cc:501
HcalTriggerPrimitiveAlgo::LongvrsShortCut
HcalFeatureBit * LongvrsShortCut
Definition: HcalTriggerPrimitiveAlgo.h:191
HcalTriggerPrimitiveAlgo::QIE8_LINEARIZATION_ET
static const int QIE8_LINEARIZATION_ET
Definition: HcalTriggerPrimitiveAlgo.h:222
HcalTopology::lastHBRing
int lastHBRing() const
Definition: HcalTopology.h:92
HcalTriggerPrimitiveAlgo::weights_
std::vector< double > weights_
Definition: HcalTriggerPrimitiveAlgo.h:126
HcalTriggerPrimitiveAlgo::incoder_
const HcaluLUTTPGCoder * incoder_
Definition: HcalTriggerPrimitiveAlgo.h:121
HcalTrigTowerDetId
Definition: HcalTrigTowerDetId.h:14
HcalHTRData::check
bool check() const
Check for a good event Requires a minimum length, matching wordcount and length, not an empty event.
Definition: HcalHTRData.cc:63