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 T , typename... Args>
void addDigis (const T &collection, const Args &...digis)
 
template<typename T >
void addDigis (const T &collection)
 
template<typename D >
void addDigis (const HcalDataFrameContainer< D > &collection)
 
 HcalTriggerPrimitiveAlgo (bool pf, const std::vector< double > &w, int latency, uint32_t FG_threshold, uint32_t FG_HF_threshold, uint32_t ZS_threshold, int numberOfSamples, int numberOfPresamples, 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)
 
 ~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 QIE10DataFrame &frame)
 
void addSignal (const QIE11DataFrame &frame)
 
void addSignal (const IntegerCaloSamples &samples)
 
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 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_
 
uint32_t FG_HF_threshold_
 
uint32_t FG_threshold_
 
FGbitMap fgMap_
 
FGUpgradeMap fgUpgradeMap_
 
TowerMapVeto HF_Veto
 
const HcaluLUTTPGCoderincoder_
 
int latency_
 
HcalFeatureBitLongvrsShortCut
 
uint32_t minSignalThreshold_
 
int NCTScaleShift
 
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_
 
uint32_t ZS_threshold_
 
int ZS_threshold_I_
 

Static Private Attributes

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

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

Definition at line 184 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 187 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 188 of file HcalTriggerPrimitiveAlgo.h.

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

Definition at line 154 of file HcalTriggerPrimitiveAlgo.h.

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

Definition at line 164 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 167 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 145 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 168 of file HcalTriggerPrimitiveAlgo.h.

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

Definition at line 181 of file HcalTriggerPrimitiveAlgo.h.

Constructor & Destructor Documentation

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

Definition at line 23 of file HcalTriggerPrimitiveAlgo.cc.

References numberOfPresamples_, numberOfPresamplesHF_, numberOfSamples_, numberOfSamplesHF_, peakfind_, ZS_threshold_, and ZS_threshold_I_.

29  : incoder_(nullptr), outcoder_(nullptr),
37  minSignalThreshold_(minSignalThreshold),
38  PMT_NoiseThreshold_(PMT_NoiseThreshold),
42 {
43  //No peak finding setting (for Fastsim)
44  if (!peakfind_){
45  numberOfSamples_ = 1;
47  numberOfSamplesHF_ = 1;
49  }
50  // Switch to integer for comparisons - remove compiler warning
52 }
const double w
Definition: UKUtility.cc:23
const HcalTPGCompressor * outcoder_
ZS_threshold
threshold for setting fine grain bit
const HcaluLUTTPGCoder * incoder_
latency
hardware algo
HcalTriggerPrimitiveAlgo::~HcalTriggerPrimitiveAlgo ( )

Definition at line 55 of file HcalTriggerPrimitiveAlgo.cc.

55  {
56 }

Member Function Documentation

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

Definition at line 44 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run().

44  {
46  addDigis(digis...);
47  };
void addDigis(const T &collection, const Args &...digis)
template<typename T >
void HcalTriggerPrimitiveAlgo::addDigis ( const T collection)
inline

Definition at line 50 of file HcalTriggerPrimitiveAlgo.h.

References addSignal().

50  {
51  for (const auto& digi: collection) {
52  addSignal(digi);
53  }
54  };
void addSignal(const HBHEDataFrame &frame)
adds the signal to the map
template<typename D >
void HcalTriggerPrimitiveAlgo::addDigis ( const HcalDataFrameContainer< D > &  collection)
inline
void HcalTriggerPrimitiveAlgo::addFG ( const HcalTrigTowerDetId id,
std::vector< bool > &  msb 
)
private

Definition at line 739 of file HcalTriggerPrimitiveAlgo.cc.

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

Referenced by addDigis(), addSignal(), and addUpgradeFG().

739  {
740  FGbitMap::iterator itr = fgMap_.find(id);
741  if (itr != fgMap_.end()){
742  std::vector<bool>& _msb = itr->second;
743  for (size_t i=0; i<msb.size(); ++i)
744  _msb[i] = _msb[i] || msb[i];
745  }
746  else fgMap_[id] = msb;
747 }
void HcalTriggerPrimitiveAlgo::addSignal ( const HBHEDataFrame frame)
private

adds the signal to the map

Definition at line 84 of file HcalTriggerPrimitiveAlgo.cc.

References HcaluLUTTPGCoder::adc2Linear(), addFG(), HcalDetId::depth(), mps_fire::i, HBHEDataFrame::id(), electrons_cff::ids, incoder_, HcaluLUTTPGCoder::lookupMSB(), HBHEDataFrame::presamples(), HBHEDataFrame::size(), theTrigTowerGeometry, and HcalTrigTowerGeometry::towerIds().

Referenced by addDigis(), and addSignal().

84  {
85  // TODO: Need to add support for seperate 28, 29 in HE
86  //Hack for 300_pre10, should be removed.
87  if (frame.id().depth()==5) return;
88 
89  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(frame.id());
90  assert(ids.size() == 1 || ids.size() == 2);
91  IntegerCaloSamples samples1(ids[0], int(frame.size()));
92 
93  samples1.setPresamples(frame.presamples());
94  incoder_->adc2Linear(frame, samples1);
95 
96  std::vector<bool> msb;
97  incoder_->lookupMSB(frame, msb);
98 
99  if(ids.size() == 2) {
100  // make a second trigprim for the other one, and split the energy
101  IntegerCaloSamples samples2(ids[1], samples1.size());
102  for(int i = 0; i < samples1.size(); ++i) {
103  samples1[i] = uint32_t(samples1[i]*0.5);
104  samples2[i] = samples1[i];
105  }
106  samples2.setPresamples(frame.presamples());
107  addSignal(samples2);
108  addFG(ids[1], msb);
109  }
110  addSignal(samples1);
111  addFG(ids[0], msb);
112 }
void adc2Linear(const HBHEDataFrame &df, IntegerCaloSamples &ics) const override
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
int size() const
total number of samples in the digi
Definition: HBHEDataFrame.h:31
void addFG(const HcalTrigTowerDetId &id, std::vector< bool > &msb)
int depth() const
get the tower depth
Definition: HcalDetId.h:162
const HcalTrigTowerGeometry * theTrigTowerGeometry
void lookupMSB(const HBHEDataFrame &df, std::vector< bool > &msb) const
int presamples() const
number of samples before the sample from the triggered beam crossing (according to the hardware) ...
Definition: HBHEDataFrame.h:33
const HcaluLUTTPGCoder * incoder_
const HcalDetId & id() const
Definition: HBHEDataFrame.h:27
void addSignal(const HBHEDataFrame &frame)
adds the signal to the map
void HcalTriggerPrimitiveAlgo::addSignal ( const HFDataFrame frame)
private

Definition at line 115 of file HcalTriggerPrimitiveAlgo.cc.

References HcaluLUTTPGCoder::adc2Linear(), addSignal(), HcalDetId::depth(), HF_Veto, mps_fire::i, HFDataFrame::id(), electrons_cff::ids, incoder_, HcalTriggerPrimitiveAlgo::HFDetails::long_fiber, HcalTriggerPrimitiveAlgo::HFDetails::LongDigi, HcalDetId::maskDepth(), minSignalThreshold_, HFDataFrame::presamples(), hcalTTPDigis_cfi::samples, IntegerCaloSamples::setPresamples(), HcalTriggerPrimitiveAlgo::HFDetails::short_fiber, HcalTriggerPrimitiveAlgo::HFDetails::ShortDigi, HFDataFrame::size(), theHFDetailMap, theTowerMapFGSum, theTrigTowerGeometry, HcalTrigTowerGeometry::towerIds(), and HcalTrigTowerDetId::version().

115  {
116  if(frame.id().depth() == 1 || frame.id().depth() == 2) {
117  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(frame.id());
118  std::vector<HcalTrigTowerDetId>::const_iterator it;
119  for (it = ids.begin(); it != ids.end(); ++it) {
120  HcalTrigTowerDetId trig_tower_id = *it;
121  IntegerCaloSamples samples(trig_tower_id, frame.size());
122  samples.setPresamples(frame.presamples());
123  incoder_->adc2Linear(frame, samples);
124 
125  // Don't add to final collection yet
126  // HF PMT veto sum is calculated in analyzerHF()
127  IntegerCaloSamples zero_samples(trig_tower_id, frame.size());
128  zero_samples.setPresamples(frame.presamples());
129  addSignal(zero_samples);
130 
131  // Pre-LS1 Configuration
132  if (trig_tower_id.version() == 0) {
133  // Mask off depths: fgid is the same for both depths
134  uint32_t fgid = (frame.id().maskDepth());
135 
136  if ( theTowerMapFGSum.find(trig_tower_id) == theTowerMapFGSum.end() ) {
137  SumFGContainer sumFG;
138  theTowerMapFGSum.insert(std::pair<HcalTrigTowerDetId, SumFGContainer>(trig_tower_id, sumFG));
139  }
140 
141  SumFGContainer& sumFG = theTowerMapFGSum[trig_tower_id];
142  SumFGContainer::iterator sumFGItr;
143  for ( sumFGItr = sumFG.begin(); sumFGItr != sumFG.end(); ++sumFGItr) {
144  if (sumFGItr->id() == fgid) { break; }
145  }
146  // If find
147  if (sumFGItr != sumFG.end()) {
148  for (int i=0; i<samples.size(); ++i) {
149  (*sumFGItr)[i] += samples[i];
150  }
151  }
152  else {
153  //Copy samples (change to fgid)
154  IntegerCaloSamples sumFGSamples(DetId(fgid), samples.size());
155  sumFGSamples.setPresamples(samples.presamples());
156  for (int i=0; i<samples.size(); ++i) {
157  sumFGSamples[i] = samples[i];
158  }
159  sumFG.push_back(sumFGSamples);
160  }
161 
162  // set veto to true if Long or Short less than threshold
163  if (HF_Veto.find(fgid) == HF_Veto.end()) {
164  vector<bool> vetoBits(samples.size(), false);
165  HF_Veto[fgid] = vetoBits;
166  }
167  for (int i=0; i<samples.size(); ++i) {
168  if (samples[i] < minSignalThreshold_) {
169  HF_Veto[fgid][i] = true;
170  }
171  }
172  }
173  // HF 1x1
174  else if (trig_tower_id.version() == 1) {
175  uint32_t fgid = (frame.id().maskDepth());
176  HFDetails& details = theHFDetailMap[trig_tower_id][fgid];
177  // Check the frame type to determine long vs short
178  if (frame.id().depth() == 1) { // Long
179  details.long_fiber = samples;
180  details.LongDigi = frame;
181  } else if (frame.id().depth() == 2) { // Short
182  details.short_fiber = samples;
183  details.ShortDigi = frame;
184  } else {
185  // Neither long nor short... So we have no idea what to do
186  edm::LogWarning("HcalTPAlgo") << "Unable to figure out what to do with data frame for " << frame.id();
187  return;
188  }
189  }
190  // Uh oh, we are in a bad/unknown state! Things will start crashing.
191  else {
192  return;
193  }
194  }
195  }
196 }
void adc2Linear(const HBHEDataFrame &df, IntegerCaloSamples &ics) const override
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
void setPresamples(int pre)
set presample information
uint32_t maskDepth() const
get the tower depth
Definition: HcalDetId.h:175
std::vector< IntegerCaloSamples > SumFGContainer
int depth() const
get the tower depth
Definition: HcalDetId.h:162
const HcalTrigTowerGeometry * theTrigTowerGeometry
HcalDetId const & id() const
Definition: HFDataFrame.h:26
Definition: DetId.h:18
int size() const
total number of samples in the digi
Definition: HFDataFrame.h:30
int version() const
get the version code for the trigger tower
const HcaluLUTTPGCoder * incoder_
int presamples() const
number of samples before the sample from the triggered beam crossing (according to the hardware) ...
Definition: HFDataFrame.h:32
void addSignal(const HBHEDataFrame &frame)
adds the signal to the map
void HcalTriggerPrimitiveAlgo::addSignal ( const QIE10DataFrame frame)
private

Definition at line 199 of file HcalTriggerPrimitiveAlgo.cc.

References HcaluLUTTPGCoder::adc2Linear(), addSignal(), QIE10DataFrame::detid(), HcalForward, triggerObjects_cff::id, QIE10DataFrame::id(), electrons_cff::ids, training_settings::idx, incoder_, HcaluLUTTPGCoder::lookupMSB(), passTDC(), QIE10DataFrame::presamples(), hcalTTPDigis_cfi::samples, QIE10DataFrame::samples(), IntegerCaloSamples::setPresamples(), HcalDetId::subdet(), theHFUpgradeDetailMap, theTrigTowerGeometry, HcalTrigTowerGeometry::towerIds(), validChannel(), and jets_cff::version.

200 {
201  HcalDetId detId = frame.detid();
202  // prevent QIE10 calibration channels from entering TP emulation
203  if(detId.subdet() != HcalForward) return;
204 
205  auto ids = theTrigTowerGeometry->towerIds(frame.id());
206  for (const auto& id: ids) {
207  if (id.version() == 0) {
208  edm::LogError("HcalTPAlgo") << "Encountered QIE10 data frame mapped to TP version 0:" << id;
209  continue;
210  }
211 
212  int nsamples=frame.samples();
213 
214  IntegerCaloSamples samples(id, nsamples);
215  samples.setPresamples(frame.presamples());
216  incoder_->adc2Linear(frame, samples);
217 
218  // Don't add to final collection yet
219  // HF PMT veto sum is calculated in analyzerHF()
220  IntegerCaloSamples zero_samples(id, nsamples);
221  zero_samples.setPresamples(frame.presamples());
222  addSignal(zero_samples);
223 
224  auto fid = HcalDetId(frame.id());
225  auto& details = theHFUpgradeDetailMap[id][fid.maskDepth()];
226  auto& detail = details[fid.depth()-1];
227  detail.samples = samples;
228  detail.digi = frame;
229  detail.validity.resize(nsamples);
230  detail.passTDC.resize(nsamples);
231  incoder_->lookupMSB(frame, detail.fgbit);
232  for (int idx = 0; idx < nsamples; ++idx){
233  detail.validity[idx] = validChannel(frame, idx);
234  detail.passTDC[idx] = passTDC(frame, idx);
235  }
236  }
237 }
int samples() const
total number of samples in the digi
void adc2Linear(const HBHEDataFrame &df, IntegerCaloSamples &ics) const override
HFUpgradeDetailMap theHFUpgradeDetailMap
bool passTDC(const QIE10DataFrame &digi, int ts) const
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:142
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
int presamples() const
for backward compatibility
edm::DataFrame::id_type id() const
bool validChannel(const QIE10DataFrame &digi, int ts) const
const HcalTrigTowerGeometry * theTrigTowerGeometry
void lookupMSB(const HBHEDataFrame &df, std::vector< bool > &msb) const
DetId detid() const
Get the detector id.
const HcaluLUTTPGCoder * incoder_
void addSignal(const HBHEDataFrame &frame)
adds the signal to the map
void HcalTriggerPrimitiveAlgo::addSignal ( const QIE11DataFrame frame)
private

Definition at line 240 of file HcalTriggerPrimitiveAlgo.cc.

References HcaluLUTTPGCoder::adc2Linear(), addSignal(), addUpgradeFG(), HcalBarrel, HcalEndcap, mps_fire::i, QIE11DataFrame::id(), electrons_cff::ids, incoder_, HcaluLUTTPGCoder::lookupMSB(), QIE11DataFrame::presamples(), QIE11DataFrame::samples(), theTrigTowerGeometry, and HcalTrigTowerGeometry::towerIds().

241 {
242  HcalDetId detId(frame.id());
243  // prevent QIE11 calibration channels from entering TP emulation
244  if(detId.subdet() != HcalEndcap && detId.subdet() != HcalBarrel) return;
245 
246  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
247  assert(ids.size() == 1 || ids.size() == 2);
248  IntegerCaloSamples samples1(ids[0], int(frame.samples()));
249 
250  samples1.setPresamples(frame.presamples());
251  incoder_->adc2Linear(frame, samples1);
252 
253  std::vector<std::bitset<2>> msb(frame.samples(), 0);
254  incoder_->lookupMSB(frame, msb);
255 
256  if(ids.size() == 2) {
257  // make a second trigprim for the other one, and share the energy
258  IntegerCaloSamples samples2(ids[1], samples1.size());
259  for(int i = 0; i < samples1.size(); ++i) {
260  samples1[i] = uint32_t(samples1[i]);
261  samples2[i] = samples1[i];
262  }
263  samples2.setPresamples(frame.presamples());
264  addSignal(samples2);
265  addUpgradeFG(ids[1], detId.depth(), msb);
266  }
267  addSignal(samples1);
268  addUpgradeFG(ids[0], detId.depth(), msb);
269 }
void adc2Linear(const HBHEDataFrame &df, IntegerCaloSamples &ics) const override
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
const HcalTrigTowerGeometry * theTrigTowerGeometry
void lookupMSB(const HBHEDataFrame &df, std::vector< bool > &msb) const
edm::DataFrame::id_type id() const
void addUpgradeFG(const HcalTrigTowerDetId &id, int depth, const std::vector< std::bitset< 2 >> &bits)
int presamples() const
for backward compatibility
const HcaluLUTTPGCoder * incoder_
int samples() const
total number of samples in the digi
void addSignal(const HBHEDataFrame &frame)
adds the signal to the map
void HcalTriggerPrimitiveAlgo::addSignal ( const IntegerCaloSamples samples)
private

Definition at line 271 of file HcalTriggerPrimitiveAlgo.cc.

References mps_fire::i, IntegerCaloSamples::id(), triggerObjects_cff::id, IntegerCaloSamples::size(), and theSumMap.

271  {
272  HcalTrigTowerDetId id(samples.id());
273  SumMap::iterator itr = theSumMap.find(id);
274  if(itr == theSumMap.end()) {
275  theSumMap.insert(std::make_pair(id, samples));
276  }
277  else {
278  // wish CaloSamples had a +=
279  for(int i = 0; i < samples.size(); ++i) {
280  (itr->second)[i] += samples[i];
281  }
282  }
283 }
int size() const
get the size
DetId id() const
get the (generic) id
void HcalTriggerPrimitiveAlgo::addUpgradeFG ( const HcalTrigTowerDetId id,
int  depth,
const std::vector< std::bitset< 2 >> &  bits 
)
private

Definition at line 773 of file HcalTriggerPrimitiveAlgo.cc.

References addFG(), bits, egammaForCoreTracking_cff::depth, fgUpgradeMap_, mps_fire::i, needLegacyFG(), and validUpgradeFG().

Referenced by addDigis(), and addSignal().

774 {
775  if (not validUpgradeFG(id, depth)) {
776  if (needLegacyFG(id)) {
777  std::vector<bool> pseudo(bits.size(), false);
778  addFG(id, pseudo);
779  }
780  return;
781  }
782 
783  auto it = fgUpgradeMap_.find(id);
784  if (it == fgUpgradeMap_.end()) {
785  FGUpgradeContainer element;
786  element.resize(bits.size());
787  it = fgUpgradeMap_.insert(std::make_pair(id, element)).first;
788  }
789  for (unsigned int i = 0; i < bits.size(); ++i) {
790  it->second[i][0][depth] = bits[i][0];
791  it->second[i][1][depth] = bits[i][1];
792  }
793 }
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision bits
void addFG(const HcalTrigTowerDetId &id, std::vector< bool > &msb)
bool needLegacyFG(const HcalTrigTowerDetId &id) const
std::vector< HcalFinegrainBit::Tower > FGUpgradeContainer
bool validUpgradeFG(const HcalTrigTowerDetId &id, int depth) const
void HcalTriggerPrimitiveAlgo::analyze ( IntegerCaloSamples samples,
HcalTriggerPrimitiveDigi result 
)
private

adds the actual digis

Definition at line 286 of file HcalTriggerPrimitiveAlgo.cc.

References HcalTPGCompressor::compress(), fgMap_, mps_fire::i, IntegerCaloSamples::id(), training_settings::idx, createfilelist::int, numberOfPresamples_, numberOfSamples_, outcoder_, convertSQLitetoXML_cfg::output, peak_finder_algorithm_, peakfind_, IntegerCaloSamples::presamples(), QIE8_LINEARIZATION_ET, edm::shift, IntegerCaloSamples::size(), theThreshold, and weights_.

Referenced by addDigis(), and run().

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

Definition at line 432 of file HcalTriggerPrimitiveAlgo.cc.

References HcalTPGCompressor::compress(), FG_threshold_, HF_Veto, IntegerCaloSamples::id(), training_settings::idx, createfilelist::int, numberOfPresamplesHF_, numberOfSamplesHF_, outcoder_, convertSQLitetoXML_cfg::output, PMT_NoiseThreshold_, IntegerCaloSamples::presamples(), QIE8_LINEARIZATION_ET, edm::shift, IntegerCaloSamples::size(), theTowerMapFGSum, and TriggerAnalyzer::veto.

Referenced by addDigis(), and run().

432  {
433  HcalTrigTowerDetId detId(samples.id());
434 
435  // Align digis and TP
436  int dgPresamples=samples.presamples();
437  int tpPresamples=numberOfPresamplesHF_;
438  int shift = dgPresamples - tpPresamples;
439  int dgSamples=samples.size();
440  int tpSamples=numberOfSamplesHF_;
441  if(shift<0 || shift+tpSamples>dgSamples){
442  edm::LogInfo("HcalTriggerPrimitiveAlgo::analyzeHF") <<
443  "TP presample or size from the configuration file is out of the accessible range. Using digi values from data instead...";
444  tpPresamples=dgPresamples;
445  shift=0;
446  tpSamples=dgSamples;
447  }
448 
449  std::vector<int> finegrain(tpSamples, false);
450 
451  TowerMapFGSum::const_iterator tower2fg = theTowerMapFGSum.find(detId);
452  assert(tower2fg != theTowerMapFGSum.end());
453 
454  const SumFGContainer& sumFG = tower2fg->second;
455  // Loop over all L+S pairs that mapped from samples.id()
456  // Note: 1 samples.id() = 6 x (L+S) without noZS
457  for (SumFGContainer::const_iterator sumFGItr = sumFG.begin(); sumFGItr != sumFG.end(); ++sumFGItr) {
458  const std::vector<bool>& veto = HF_Veto[sumFGItr->id().rawId()];
459  for (int ibin = 0; ibin < tpSamples; ++ibin) {
460  int idx = ibin + shift;
461  // if not vetod, add L+S to total sum and calculate FG
462  bool vetoed = idx<int(veto.size()) && veto[idx];
463  if (!(vetoed && (*sumFGItr)[idx] > PMT_NoiseThreshold_)) {
464  samples[idx] += (*sumFGItr)[idx];
465  finegrain[ibin] = (finegrain[ibin] || (*sumFGItr)[idx] >= FG_threshold_);
466  }
467  }
468  }
469 
470  IntegerCaloSamples output(samples.id(), tpSamples);
471  output.setPresamples(tpPresamples);
472 
473  for (int ibin = 0; ibin < tpSamples; ++ibin) {
474  int idx = ibin + shift;
475  output[ibin] = samples[idx] >> hf_lumi_shift;
476  static const int MAX_OUTPUT = QIE8_LINEARIZATION_ET; // QIE8_LINEARIZATION_ET = 1023
477  if (output[ibin] > MAX_OUTPUT) output[ibin] = MAX_OUTPUT;
478  }
479  outcoder_->compress(output, finegrain, result);
480 }
int presamples() const
access presample information
const HcalTPGCompressor * outcoder_
std::vector< IntegerCaloSamples > SumFGContainer
int size() const
get the size
void compress(const IntegerCaloSamples &ics, const std::vector< int > &fineGrain, HcalTriggerPrimitiveDigi &digi) const
static unsigned int const shift
DetId id() const
get the (generic) id
void HcalTriggerPrimitiveAlgo::analyzeHF2016 ( const IntegerCaloSamples SAMPLES,
HcalTriggerPrimitiveDigi result,
const int  HF_LUMI_SHIFT,
const HcalFeatureBit HCALFEM 
)
private

Definition at line 482 of file HcalTriggerPrimitiveAlgo.cc.

References stringResolutionProvider_cfi::bin, HcalTPGCompressor::compress(), FG_HF_threshold_, HcalFeatureBit::fineGrainbit(), FIRST_FINEGRAIN_TOWER, IntegerCaloSamples::id(), min(), numberOfPresamplesHF_, numberOfSamplesHF_, outcoder_, convertSQLitetoXML_cfg::output, IntegerCaloSamples::presamples(), QIE8_LINEARIZATION_ET, IntegerCaloSamples::size(), and theHFDetailMap.

Referenced by addDigis(), and run().

487  {
488  // Align digis and TP
489  const int SHIFT = samples.presamples() - numberOfPresamplesHF_;
490  assert(SHIFT >= 0);
491  assert((SHIFT + numberOfSamplesHF_) <= samples.size());
492 
493  // Try to find the HFDetails from the map corresponding to our samples
494  const HcalTrigTowerDetId detId(samples.id());
495  HFDetailMap::const_iterator it = theHFDetailMap.find(detId);
496  // Missing values will give an empty digi
497  if (it == theHFDetailMap.end()) {
498  return;
499  }
500 
501  std::vector<std::bitset<2>> finegrain(numberOfSamplesHF_, false);
502 
503  // Set up out output of IntergerCaloSamples
505  output.setPresamples(numberOfPresamplesHF_);
506 
507  for (const auto& item: it->second) {
508  auto& details = item.second;
509  for (int ibin = 0; ibin < numberOfSamplesHF_; ++ibin) {
510  const int IDX = ibin + SHIFT;
511  int long_fiber_val = 0;
512  if (IDX < details.long_fiber.size()) {
513  long_fiber_val = details.long_fiber[IDX];
514  }
515  int short_fiber_val = 0;
516  if (IDX < details.short_fiber.size()) {
517  short_fiber_val = details.short_fiber[IDX];
518  }
519  output[ibin] += (long_fiber_val + short_fiber_val);
520 
521  uint32_t ADCLong = details.LongDigi[ibin].adc();
522  uint32_t ADCShort = details.ShortDigi[ibin].adc();
523 
524  if (details.LongDigi.id().ietaAbs() >= FIRST_FINEGRAIN_TOWER) {
525  finegrain[ibin][1] = (ADCLong > FG_HF_threshold_ || ADCShort > FG_HF_threshold_);
526 
527  if (embit != nullptr)
528  finegrain[ibin][0] = embit->fineGrainbit(details.ShortDigi, details.LongDigi, ibin);
529  }
530  }
531  }
532 
533  for (int bin = 0; bin < numberOfSamplesHF_; ++bin) {
534  static const unsigned int MAX_OUTPUT = QIE8_LINEARIZATION_ET; // QIE8_LINEARIZATION_ET = 1023
535  output[bin] = min({MAX_OUTPUT, output[bin] >> hf_lumi_shift});
536  }
537 
538  std::vector<int> finegrain_converted;
539  for (const auto& fg: finegrain)
540  finegrain_converted.push_back(fg.to_ulong());
541  outcoder_->compress(output, finegrain_converted, result);
542 }
const HcalTPGCompressor * outcoder_
T min(T a, T b)
Definition: MathUtil.h:58
void compress(const IntegerCaloSamples &ics, const std::vector< int > &fineGrain, HcalTriggerPrimitiveDigi &digi) const
bin
set the eta bin as selection string.
void HcalTriggerPrimitiveAlgo::analyzeHFQIE10 ( const IntegerCaloSamples SAMPLES,
HcalTriggerPrimitiveDigi result,
const int  HF_LUMI_SHIFT,
const HcalFeatureBit HCALFEM 
)
private

Definition at line 575 of file HcalTriggerPrimitiveAlgo.cc.

References stringResolutionProvider_cfi::bin, HcalTPGCompressor::compress(), HcalFeatureBit::fineGrainbit(), FIRST_FINEGRAIN_TOWER, mps_fire::i, IntegerCaloSamples::id(), training_settings::idx, createfilelist::int, min(), numberOfPresamplesHF_, numberOfSamplesHF_, or, outcoder_, convertSQLitetoXML_cfg::output, IntegerCaloSamples::presamples(), QIE10_LINEARIZATION_ET, QIE10_MAX_LINEARIZATION_ET, edm::shift, IntegerCaloSamples::size(), theHFUpgradeDetailMap, and useTDCInMinBiasBits_.

Referenced by addDigis(), and run().

578 {
579  // Align digis and TP
580  const int shift = samples.presamples() - numberOfPresamplesHF_;
581  assert(shift >= 0);
582  assert((shift + numberOfSamplesHF_) <= samples.size());
583  assert(hf_lumi_shift>=2);
584 
585  // Try to find the HFDetails from the map corresponding to our samples
586  const HcalTrigTowerDetId detId(samples.id());
587  auto it = theHFUpgradeDetailMap.find(detId);
588  // Missing values will give an empty digi
589  if (it == theHFUpgradeDetailMap.end()) {
590  return;
591  }
592 
593  std::vector<std::bitset<2>> finegrain(numberOfSamplesHF_, false);
594 
595  // Set up out output of IntergerCaloSamples
597  output.setPresamples(numberOfPresamplesHF_);
598 
599  for (const auto& item: it->second) {
600  auto& details = item.second;
601  for (int ibin = 0; ibin < numberOfSamplesHF_; ++ibin) {
602  const int idx = ibin + shift;
603 
604  int long_fiber_val = 0;
605  int long_fiber_count = 0;
606  int short_fiber_val = 0;
607  int short_fiber_count = 0;
608 
609  bool saturated = false;
610 
611  for (auto i: {0, 2}) {
612  if (idx < details[i].samples.size() and details[i].validity[idx] and details[i].passTDC[idx]) {
613  long_fiber_val += details[i].samples[idx];
614  saturated = saturated || (details[i].samples[idx] == QIE10_LINEARIZATION_ET);
615  ++long_fiber_count;
616  }
617  }
618  for (auto i: {1, 3}) {
619  if (idx < details[i].samples.size() and details[i].validity[idx] and details[i].passTDC[idx]) {
620  short_fiber_val += details[i].samples[idx];
621  saturated = saturated || (details[i].samples[idx] == QIE10_LINEARIZATION_ET);
622  ++short_fiber_count;
623  }
624  }
625 
626  if (saturated) {
628  } else {
629  // For details of the energy handling, see:
630  // https://cms-docdb.cern.ch/cgi-bin/DocDB/ShowDocument?docid=12306
631  // If both readouts are valid, average of the two energies is taken
632  // division by 2 is compensated by adjusting the total scale shift in the end
633  if (long_fiber_count == 2) long_fiber_val >>=1;
634  if (short_fiber_count == 2) short_fiber_val >>=1;
635 
636  auto sum = long_fiber_val + short_fiber_val;
637  // Similar to above, if both channels are valid,
638  // average of the two energies is calculated
639  // division by 2 here is also compensated by adjusting the total scale shift in the end
640  if (long_fiber_count > 0 and short_fiber_count > 0) sum >>=1;
641 
642  output[ibin] += sum;
643  }
644 
645  for (const auto& detail: details) {
646  if (idx < int(detail.digi.size()) and detail.validity[idx] and HcalDetId(detail.digi.id()).ietaAbs() >= FIRST_FINEGRAIN_TOWER) {
647  if(useTDCInMinBiasBits_ && !detail.passTDC[idx]) continue;
648  finegrain[ibin][1] = finegrain[ibin][1] or detail.fgbit[idx];
649  }
650  }
651 
652  if (embit != nullptr) {
653  finegrain[ibin][0] = embit->fineGrainbit(
654  details[1].digi, details[3].digi,
655  details[0].digi, details[2].digi,
656  details[1].validity[idx], details[3].validity[idx],
657  details[0].validity[idx], details[2].validity[idx],
658  idx
659  );
660  }
661  }
662  }
663 
664  for (int bin = 0; bin < numberOfSamplesHF_; ++bin) {
665  output[bin] = min({(unsigned int) QIE10_MAX_LINEARIZATION_ET, output[bin] >> (hf_lumi_shift-2)});
666  }
667  std::vector<int> finegrain_converted;
668  for (const auto& fg: finegrain)
669  finegrain_converted.push_back(fg.to_ulong());
670  outcoder_->compress(output, finegrain_converted, result);
671 }
HFUpgradeDetailMap theHFUpgradeDetailMap
static const int QIE10_MAX_LINEARIZATION_ET
const HcalTPGCompressor * outcoder_
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
T min(T a, T b)
Definition: MathUtil.h:58
void compress(const IntegerCaloSamples &ics, const std::vector< int > &fineGrain, HcalTriggerPrimitiveDigi &digi) const
bin
set the eta bin as selection string.
static unsigned int const shift
void HcalTriggerPrimitiveAlgo::analyzeQIE11 ( IntegerCaloSamples samples,
HcalTriggerPrimitiveDigi result,
const HcalFinegrainBit fg_algo 
)
private

Definition at line 367 of file HcalTriggerPrimitiveAlgo.cc.

References HcalTPGCompressor::compress(), HcalFinegrainBit::compute(), fgUpgradeMap_, mps_fire::i, IntegerCaloSamples::id(), electrons_cff::ids, training_settings::idx, createfilelist::int, numberOfPresamples_, numberOfSamples_, outcoder_, convertSQLitetoXML_cfg::output, peak_finder_algorithm_, IntegerCaloSamples::presamples(), QIE11_MAX_LINEARIZATION_ET, simplePhotonAnalyzer_cfi::sample, edm::shift, IntegerCaloSamples::size(), theThreshold, theTrigTowerGeometry, HcalTrigTowerGeometry::towerIds(), and weights_.

Referenced by addDigis(), and run().

368 {
369  int shrink = weights_.size() - 1;
370  auto& msb = fgUpgradeMap_[samples.id()];
371  IntegerCaloSamples sum(samples.id(), samples.size());
372 
373  HcalDetId detId(samples.id());
374  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
375  //slide algo window
376  for(int ibin = 0; ibin < int(samples.size())- shrink; ++ibin) {
377  int algosumvalue = 0;
378  for(unsigned int i = 0; i < weights_.size(); i++) {
379  //add up value * scale factor
380  // In addition, divide by two in the 10 degree phi segmentation region
381  // to mimic 5 degree segmentation for the trigger
382  unsigned int sample = samples[ibin+i];
384  if(ids.size()==2) algosumvalue += int(sample * 0.5 * weights_[i]);
385  else algosumvalue += int(sample * weights_[i]);
386  }
387  if (algosumvalue<0) sum[ibin]=0; // low-side
388  //high-side
389  //else if (algosumvalue>QIE11_LINEARIZATION_ET) sum[ibin]=QIE11_LINEARIZATION_ET;
390  else sum[ibin] = algosumvalue; //assign value to sum[]
391  }
392 
393  // Align digis and TP
394  int dgPresamples=samples.presamples();
395  int tpPresamples=numberOfPresamples_;
396  int shift = dgPresamples - tpPresamples;
397  int dgSamples=samples.size();
398  int tpSamples=numberOfSamples_;
399 
400  if((shift<shrink) || (shift + tpSamples + shrink > dgSamples - (peak_finder_algorithm_ - 1) ) ){
401  edm::LogInfo("HcalTriggerPrimitiveAlgo::analyze") <<
402  "TP presample or size from the configuration file is out of the accessible range. Using digi values from data instead...";
403  shift=shrink;
404  tpPresamples=dgPresamples-shrink;
405  tpSamples=dgSamples-(peak_finder_algorithm_-1)-shrink-shift;
406  }
407 
408  std::vector<int> finegrain(tpSamples,false);
409 
410  IntegerCaloSamples output(samples.id(), tpSamples);
411  output.setPresamples(tpPresamples);
412 
413  for (int ibin = 0; ibin < tpSamples; ++ibin) {
414  // ibin - index for output TP
415  // idx - index for samples + shift
416  int idx = ibin + shift;
417  bool isPeak = (sum[idx] > sum[idx-1] && sum[idx] >= sum[idx+1] && sum[idx] > theThreshold);
418 
419  if (isPeak){
420  output[ibin] = std::min<unsigned int>(sum[idx],QIE11_MAX_LINEARIZATION_ET);
421  finegrain[ibin] = fg_algo.compute(msb[idx]).to_ulong();
422  } else {
423  // Not a peak
424  output[ibin] = 0;
425  finegrain[ibin] = 0;
426  }
427  }
428  outcoder_->compress(output, finegrain, result);
429 }
int presamples() const
access presample information
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
const HcalTPGCompressor * outcoder_
int size() const
get the size
const HcalTrigTowerGeometry * theTrigTowerGeometry
std::bitset< 4 > compute(const Tower &) const
void compress(const IntegerCaloSamples &ics, const std::vector< int > &fineGrain, HcalTriggerPrimitiveDigi &digi) const
static const int QIE11_MAX_LINEARIZATION_ET
static unsigned int const shift
DetId id() const
get the (generic) id
bool HcalTriggerPrimitiveAlgo::needLegacyFG ( const HcalTrigTowerDetId id) const
private

Definition at line 762 of file HcalTriggerPrimitiveAlgo.cc.

References HBHE_OVERLAP_TOWER, and upgrade_hb_.

Referenced by addDigis(), and addUpgradeFG().

763 {
764  // This tower (ietaAbs == 16) does not accept upgraded FG bits,
765  // but needs pseudo legacy ones to ensure that the tower is processed
766  // even when the QIE8 depths in front of it do not have energy deposits.
767  if (id.ietaAbs() == HBHE_OVERLAP_TOWER and not upgrade_hb_)
768  return true;
769  return false;
770 }
void HcalTriggerPrimitiveAlgo::overrideParameters ( const edm::ParameterSet ps)

Definition at line 69 of file HcalTriggerPrimitiveAlgo.cc.

References edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), override_adc_hf_, override_adc_hf_value_, override_parameters_, override_tdc_hf_, and override_tdc_hf_value_.

Referenced by addDigis(), and HcalTrigPrimDigiProducer::HcalTrigPrimDigiProducer().

70 {
72 
73  if (override_parameters_.exists("ADCThresholdHF")) {
74  override_adc_hf_ = true;
75  override_adc_hf_value_ = override_parameters_.getParameter<uint32_t>("ADCThresholdHF");
76  }
77  if (override_parameters_.exists("TDCMaskHF")) {
78  override_tdc_hf_ = true;
79  override_tdc_hf_value_ = override_parameters_.getParameter<unsigned long long>("TDCMaskHF");
80  }
81 }
T getParameter(std::string const &) const
bool exists(std::string const &parameterName) const
checks if a parameter exists
unsigned long long override_tdc_hf_value_
bool HcalTriggerPrimitiveAlgo::passTDC ( const QIE10DataFrame digi,
int  ts 
) const
private

Definition at line 545 of file HcalTriggerPrimitiveAlgo.cc.

References ecalMGPA::adc(), conditions_, HcalTPParameters::getADCThresholdHF(), HcalDbService::getHcalTPParameters(), override_adc_hf_, override_adc_hf_value_, override_tdc_hf_, and override_tdc_hf_value_.

Referenced by addDigis(), and addSignal().

546 {
548  auto adc_threshold = parameters->getADCThresholdHF();
549  auto tdc_mask = parameters->getTDCMaskHF();
550 
551  if (override_adc_hf_)
552  adc_threshold = override_adc_hf_value_;
553  if (override_tdc_hf_)
554  tdc_mask = override_tdc_hf_value_;
555 
556  if (digi[ts].adc() < adc_threshold)
557  return true;
558 
559  return (1ul << digi[ts].le_tdc()) & tdc_mask;
560 }
int adc(sample_type sample)
get the ADC sample (12 bits)
const HcalDbService * conditions_
unsigned long long override_tdc_hf_value_
const HcalTPParameters * getHcalTPParameters() const
int getADCThresholdHF() const
get ADC threshold fof TDC mask of HF
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 219 of file HcalTriggerPrimitiveAlgo.h.

References addDigis(), analyze(), analyzeHF(), analyzeHF2016(), analyzeHFQIE10(), analyzeQIE11(), edm::SortedCollection< T, SORT >::back(), conditions_, edm::ParameterSet::exists(), fgMap_, fgUpgradeMap_, HcalTrigTowerGeometry::firstHFTower(), HcalTPParameters::getFGVersionHBHE(), HcalDbService::getHcalTPParameters(), edm::ParameterSet::getParameter(), HF_Veto, incoder_, LongvrsShortCut, NCTScaleShift, or, outcoder_, override_parameters_, edm::SortedCollection< T, SORT >::push_back(), RCTScaleShift, theHFDetailMap, theHFUpgradeDetailMap, theSumMap, theTowerMapFGSum, theTrigTowerGeometry, upgrade_hb_, upgrade_he_, upgrade_hf_, and jets_cff::version.

Referenced by HcalTrigPrimDigiProducer::produce().

225  {
226  theTrigTowerGeometry = trigTowerGeometry;
227 
228  incoder_ = dynamic_cast<const HcaluLUTTPGCoder*>(incoder);
229  outcoder_ = outcoder;
230  conditions_ = conditions;
231 
232  theSumMap.clear();
233  theTowerMapFGSum.clear();
234  HF_Veto.clear();
235  fgMap_.clear();
236  fgUpgradeMap_.clear();
237  theHFDetailMap.clear();
238  theHFUpgradeDetailMap.clear();
239 
240  // Add all digi collections
241  addDigis(digis...);
242 
243  // Prepare the fine-grain calculation algorithm for HB/HE
244  int version = 0;
247  if (override_parameters_.exists("FGVersionHBHE"))
248  version = override_parameters_.getParameter<uint32_t>("FGVersionHBHE");
249  HcalFinegrainBit fg_algo(version);
250 
251  // VME produces additional bits on the front used by lumi but not the
252  // trigger, this shift corrects those out by right shifting over them.
253  for (auto& item: theSumMap) {
254  result.push_back(HcalTriggerPrimitiveDigi(item.first));
255  HcalTrigTowerDetId detId(item.second.id());
256  if(detId.ietaAbs() >= theTrigTowerGeometry->firstHFTower(detId.version())) {
257  if (detId.version() == 0) {
258  analyzeHF(item.second, result.back(), RCTScaleShift);
259  } else if (detId.version() == 1) {
260  if (upgrade_hf_)
261  analyzeHFQIE10(item.second, result.back(), NCTScaleShift, LongvrsShortCut);
262  else
263  analyzeHF2016(item.second, result.back(), NCTScaleShift, LongvrsShortCut);
264  } else {
265  // Things are going to go poorly
266  }
267  }
268  else {
269  // Determine which energy reconstruction path to take based on the
270  // fine-grain availability:
271  // * QIE8 TP add entries into fgMap_
272  // * QIE11 TP add entries into fgUpgradeMap_
273  // (not for tower 16 unless HB is upgraded, too)
274  if (fgMap_.find(item.first) != fgMap_.end()) {
275  analyze(item.second, result.back());
276  } else if (fgUpgradeMap_.find(item.first) != fgUpgradeMap_.end()) {
277  analyzeQIE11(item.second, result.back(), fg_algo);
278  }
279  }
280  }
281 
282  // Free up some memory
283  theSumMap.clear();
284  theTowerMapFGSum.clear();
285  HF_Veto.clear();
286  fgMap_.clear();
287  fgUpgradeMap_.clear();
288  theHFDetailMap.clear();
289  theHFUpgradeDetailMap.clear();
290 
291  return;
292 }
T getParameter(std::string const &) const
void analyze(IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result)
adds the actual digis
HFUpgradeDetailMap theHFUpgradeDetailMap
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)
bool exists(std::string const &parameterName) const
checks if a parameter exists
void push_back(T const &t)
const HcalTPGCompressor * outcoder_
void analyzeQIE11(IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result, const HcalFinegrainBit &fg_algo)
const HcalTrigTowerGeometry * theTrigTowerGeometry
const HcalDbService * conditions_
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
int getFGVersionHBHE() const
get FineGrain Algorithm Version for HBHE
void addDigis(const T &collection, const Args &...digis)
const HcalTPParameters * getHcalTPParameters() const
const HcaluLUTTPGCoder * incoder_
const_reference back() const
int firstHFTower(int version) const
void HcalTriggerPrimitiveAlgo::runFEFormatError ( const FEDRawDataCollection rawraw,
const HcalElectronicsMap emap,
HcalTrigPrimDigiCollection result 
)

Definition at line 687 of file HcalTriggerPrimitiveAlgo.cc.

References edm::SortedCollection< T, SORT >::begin(), HcalHTRData::check(), FEDRawData::data(), DetId::det(), runTauDisplay::eid, edm::SortedCollection< T, SORT >::end(), FEDRawDataCollection::FEDData(), HcalHTRData::getErrorsWord(), HcalDCCHeader::getSourceId(), HcalDCCHeader::getSpigotData(), HcalDCCHeader::getSpigotPresent(), HcalBarrel, HcalEndcap, HcalForward, HcalHTRData::htrSlot(), HcalHTRData::htrTopBottom(), mps_fire::i, electrons_cff::ids, HcalHTRData::isHistogramEvent(), HcalElectronicsMap::lookup(), FEDNumbering::MAXHCALFEDID, FEDNumbering::MINHCALFEDID, DetId::null(), HcalHTRData::readoutVMECrateId(), HcalElectronicsId::setHTR(), FEDRawData::size(), HcalDCCHeader::SPIGOT_COUNT, DetId::subdetId(), theTrigTowerGeometry, and HcalTrigTowerGeometry::towerIds().

Referenced by addDigis(), and HcalTrigPrimDigiProducer::produce().

690  {
691  std::set<uint32_t> FrontEndErrors;
692 
694  const FEDRawData& raw = rawraw->FEDData(i);
695  if (raw.size()<12) continue;
696  const HcalDCCHeader* dccHeader=(const HcalDCCHeader*)(raw.data());
697  if(!dccHeader) continue;
698  HcalHTRData htr;
699  for (int spigot=0; spigot<HcalDCCHeader::SPIGOT_COUNT; spigot++) {
700  if (!dccHeader->getSpigotPresent(spigot)) continue;
701  dccHeader->getSpigotData(spigot,htr,raw.size());
702  int dccid = dccHeader->getSourceId();
703  int errWord = htr.getErrorsWord() & 0x1FFFF;
704  bool HTRError = (!htr.check() || htr.isHistogramEvent() || (errWord & 0x800)!=0);
705 
706  if(HTRError) {
707  bool valid =false;
708  for(int fchan=0; fchan<3 && !valid; fchan++) {
709  for(int fib=0; fib<9 && !valid; fib++) {
710  HcalElectronicsId eid(fchan,fib,spigot,dccid-FEDNumbering::MINHCALFEDID);
711  eid.setHTR(htr.readoutVMECrateId(),htr.htrSlot(),htr.htrTopBottom());
712  DetId detId = emap->lookup(eid);
713  if(detId.null()) continue;
714  HcalSubdetector subdet=(HcalSubdetector(detId.subdetId()));
715  if (detId.det()!=4||
716  (subdet!=HcalBarrel && subdet!=HcalEndcap &&
717  subdet!=HcalForward )) continue;
718  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
719  for (std::vector<HcalTrigTowerDetId>::const_iterator triggerId=ids.begin(); triggerId != ids.end(); ++triggerId) {
720  FrontEndErrors.insert(triggerId->rawId());
721  }
722  //valid = true;
723  }
724  }
725  }
726  }
727  }
728 
729  // Loop over TP collection
730  // Set TP to zero if there is FE Format Error
731  HcalTriggerPrimitiveSample zeroSample(0);
732  for (HcalTrigPrimDigiCollection::iterator tp = result.begin(); tp != result.end(); ++tp){
733  if (FrontEndErrors.find(tp->id().rawId()) != FrontEndErrors.end()) {
734  for (int i=0; i<tp->size(); ++i) tp->setSample(i, zeroSample);
735  }
736  }
737 }
bool check() const
Check for a good event Requires a minimum length, matching wordcount and length, not an empty event...
Definition: HcalHTRData.cc:62
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
unsigned int htrTopBottom() const
HcalElectronicsId-style HTR top/bottom (1=top/0=bottom)
Definition: HcalHTRData.cc:343
constexpr bool null() const
is this a null id ?
Definition: DetId.h:49
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
unsigned int htrSlot() const
HcalElectronicsId-style HTR slot.
Definition: HcalHTRData.cc:339
const HcalTrigTowerGeometry * theTrigTowerGeometry
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
HcalSubdetector
Definition: HcalAssistant.h:31
bool getSpigotPresent(unsigned int nspigot) const
Read the "PRESENT" bit for this spigot.
std::vector< HcalTriggerPrimitiveDigi >::iterator iterator
const_iterator end() const
int getSourceId() const
Definition: HcalDCCHeader.h:32
Definition: DetId.h:18
unsigned int getErrorsWord() const
Get the errors word.
Definition: HcalHTRData.h:157
unsigned int readoutVMECrateId() const
HcalElectronicsId-style VME crate number.
Definition: HcalHTRData.cc:347
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
Readout chain identification for Hcal.
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
bool isHistogramEvent() const
Is this event a histogram event? (do not call standard unpack in this case!!!!!)
Definition: HcalHTRData.cc:386
const_iterator begin() const
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:39
void HcalTriggerPrimitiveAlgo::runZS ( HcalTrigPrimDigiCollection tp)

Definition at line 673 of file HcalTriggerPrimitiveAlgo.cc.

References edm::SortedCollection< T, SORT >::begin(), edm::SortedCollection< T, SORT >::end(), mps_fire::i, CaloTPGTranscoder_cfi::ZS, and ZS_threshold_I_.

Referenced by addDigis(), and HcalTrigPrimDigiProducer::produce().

673  {
674  for (HcalTrigPrimDigiCollection::iterator tp = result.begin(); tp != result.end(); ++tp){
675  bool ZS = true;
676  for (int i=0; i<tp->size(); ++i) {
677  if (tp->sample(i).compressedEt() > ZS_threshold_I_) {
678  ZS=false;
679  break;
680  }
681  }
682  if (ZS) tp->setZSInfo(false,true);
683  else tp->setZSInfo(true,false);
684  }
685 }
std::vector< HcalTriggerPrimitiveDigi >::iterator iterator
size_type size() const
void HcalTriggerPrimitiveAlgo::setNCTScaleShift ( int  shift)

Definition at line 801 of file HcalTriggerPrimitiveAlgo.cc.

References NCTScaleShift, and edm::shift.

Referenced by addDigis(), and HcalTrigPrimDigiProducer::HcalTrigPrimDigiProducer().

801  {
803 }
static unsigned int const shift
void HcalTriggerPrimitiveAlgo::setPeakFinderAlgorithm ( int  algo)

Definition at line 795 of file HcalTriggerPrimitiveAlgo.cc.

References patPFMETCorrections_cff::algo, Exception, and peak_finder_algorithm_.

Referenced by addDigis(), and HcalTrigPrimDigiProducer::HcalTrigPrimDigiProducer().

795  {
796  if (algo <=0 && algo>2)
797  throw cms::Exception("ERROR: Only algo 1 & 2 are supported.") << std::endl;
799 }
void HcalTriggerPrimitiveAlgo::setRCTScaleShift ( int  shift)

Definition at line 805 of file HcalTriggerPrimitiveAlgo.cc.

References RCTScaleShift, and edm::shift.

Referenced by addDigis(), and HcalTrigPrimDigiProducer::HcalTrigPrimDigiProducer().

805  {
807 }
static unsigned int const shift
void HcalTriggerPrimitiveAlgo::setUpgradeFlags ( bool  hb,
bool  he,
bool  hf 
)
bool HcalTriggerPrimitiveAlgo::validChannel ( const QIE10DataFrame digi,
int  ts 
) const
private

Definition at line 563 of file HcalTriggerPrimitiveAlgo.cc.

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

Referenced by addDigis(), and addSignal().

564 {
565  // channels with invalid data should not contribute to the sum
566  if(digi.linkError() || ts>=digi.samples() || !digi[ts].ok()) return false;
567 
569  if (mask)
570  return false;
571 
572  return true;
573 }
int samples() const
total number of samples in the digi
const HcalTPChannelParameter * getHcalTPChannelParameter(const HcalGenericDetId &fId) const
bool linkError() const
edm::DataFrame::id_type id() const
const HcalDbService * conditions_
uint32_t getMask() const
get mask for channel validity and self trigger information
bool HcalTriggerPrimitiveAlgo::validUpgradeFG ( const HcalTrigTowerDetId id,
int  depth 
) const
private

Definition at line 750 of file HcalTriggerPrimitiveAlgo.cc.

References HBHE_OVERLAP_TOWER, LAST_FINEGRAIN_DEPTH, LAST_FINEGRAIN_TOWER, and upgrade_hb_.

Referenced by addDigis(), and addUpgradeFG().

751 {
753  return false;
754  if (id.ietaAbs() > LAST_FINEGRAIN_TOWER)
755  return false;
756  if (id.ietaAbs() == HBHE_OVERLAP_TOWER and not upgrade_hb_)
757  return false;
758  return true;
759 }

Member Data Documentation

const HcalDbService* HcalTriggerPrimitiveAlgo::conditions_
private

Definition at line 115 of file HcalTriggerPrimitiveAlgo.h.

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

uint32_t HcalTriggerPrimitiveAlgo::FG_HF_threshold_
private

Definition at line 121 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2016().

uint32_t HcalTriggerPrimitiveAlgo::FG_threshold_
private

Definition at line 120 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF().

FGbitMap HcalTriggerPrimitiveAlgo::fgMap_
private

Definition at line 185 of file HcalTriggerPrimitiveAlgo.h.

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

FGUpgradeMap HcalTriggerPrimitiveAlgo::fgUpgradeMap_
private

Definition at line 189 of file HcalTriggerPrimitiveAlgo.h.

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

const int HcalTriggerPrimitiveAlgo::FIRST_FINEGRAIN_TOWER = 30
staticprivate

Definition at line 208 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2016(), and analyzeHFQIE10().

const int HcalTriggerPrimitiveAlgo::HBHE_OVERLAP_TOWER = 16
staticprivate

Definition at line 203 of file HcalTriggerPrimitiveAlgo.h.

Referenced by needLegacyFG(), and validUpgradeFG().

TowerMapVeto HcalTriggerPrimitiveAlgo::HF_Veto
private

Definition at line 182 of file HcalTriggerPrimitiveAlgo.h.

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

const HcaluLUTTPGCoder* HcalTriggerPrimitiveAlgo::incoder_
private

Definition at line 113 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), and run().

const int HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_DEPTH = 6
staticprivate

Definition at line 204 of file HcalTriggerPrimitiveAlgo.h.

Referenced by validUpgradeFG().

const int HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_TOWER = 28
staticprivate

Definition at line 205 of file HcalTriggerPrimitiveAlgo.h.

Referenced by validUpgradeFG().

int HcalTriggerPrimitiveAlgo::latency_
private

Definition at line 119 of file HcalTriggerPrimitiveAlgo.h.

HcalFeatureBit* HcalTriggerPrimitiveAlgo::LongvrsShortCut
private

Definition at line 180 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run().

uint32_t HcalTriggerPrimitiveAlgo::minSignalThreshold_
private

Definition at line 129 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal().

int HcalTriggerPrimitiveAlgo::NCTScaleShift
private

Definition at line 131 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setNCTScaleShift().

int HcalTriggerPrimitiveAlgo::numberOfPresamples_
private

Definition at line 125 of file HcalTriggerPrimitiveAlgo.h.

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

int HcalTriggerPrimitiveAlgo::numberOfPresamplesHF_
private
int HcalTriggerPrimitiveAlgo::numberOfSamples_
private

Definition at line 124 of file HcalTriggerPrimitiveAlgo.h.

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

int HcalTriggerPrimitiveAlgo::numberOfSamplesHF_
private
const HcalTPGCompressor* HcalTriggerPrimitiveAlgo::outcoder_
private
bool HcalTriggerPrimitiveAlgo::override_adc_hf_ = false
private

Definition at line 197 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

uint32_t HcalTriggerPrimitiveAlgo::override_adc_hf_value_
private

Definition at line 198 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

edm::ParameterSet HcalTriggerPrimitiveAlgo::override_parameters_
private

Definition at line 195 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and run().

bool HcalTriggerPrimitiveAlgo::override_tdc_hf_ = false
private

Definition at line 199 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

unsigned long long HcalTriggerPrimitiveAlgo::override_tdc_hf_value_
private

Definition at line 200 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and passTDC().

int HcalTriggerPrimitiveAlgo::peak_finder_algorithm_
private

Definition at line 138 of file HcalTriggerPrimitiveAlgo.h.

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

bool HcalTriggerPrimitiveAlgo::peakfind_
private

Definition at line 117 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and HcalTriggerPrimitiveAlgo().

uint32_t HcalTriggerPrimitiveAlgo::PMT_NoiseThreshold_
private

Definition at line 130 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF().

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

Definition at line 211 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHFQIE10().

const int HcalTriggerPrimitiveAlgo::QIE10_MAX_LINEARIZATION_ET = 0x7FF
staticprivate

Definition at line 214 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHFQIE10().

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

Definition at line 212 of file HcalTriggerPrimitiveAlgo.h.

const int HcalTriggerPrimitiveAlgo::QIE11_MAX_LINEARIZATION_ET = 0x7FF
staticprivate

Definition at line 215 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeQIE11().

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

Definition at line 210 of file HcalTriggerPrimitiveAlgo.h.

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

int HcalTriggerPrimitiveAlgo::RCTScaleShift
private

Definition at line 132 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setRCTScaleShift().

HFDetailMap HcalTriggerPrimitiveAlgo::theHFDetailMap
private

Definition at line 155 of file HcalTriggerPrimitiveAlgo.h.

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

HFUpgradeDetailMap HcalTriggerPrimitiveAlgo::theHFUpgradeDetailMap
private

Definition at line 165 of file HcalTriggerPrimitiveAlgo.h.

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

SumMap HcalTriggerPrimitiveAlgo::theSumMap
private

Definition at line 146 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), and run().

double HcalTriggerPrimitiveAlgo::theThreshold
private

Definition at line 116 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and analyzeQIE11().

TowerMapFGSum HcalTriggerPrimitiveAlgo::theTowerMapFGSum
private

Definition at line 169 of file HcalTriggerPrimitiveAlgo.h.

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

const HcalTrigTowerGeometry* HcalTriggerPrimitiveAlgo::theTrigTowerGeometry
private

Definition at line 143 of file HcalTriggerPrimitiveAlgo.h.

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

bool HcalTriggerPrimitiveAlgo::upgrade_hb_ = false
private

Definition at line 191 of file HcalTriggerPrimitiveAlgo.h.

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

bool HcalTriggerPrimitiveAlgo::upgrade_he_ = false
private

Definition at line 192 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setUpgradeFlags().

bool HcalTriggerPrimitiveAlgo::upgrade_hf_ = false
private

Definition at line 193 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setUpgradeFlags().

bool HcalTriggerPrimitiveAlgo::useTDCInMinBiasBits_
private

Definition at line 128 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHFQIE10().

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

Definition at line 118 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and analyzeQIE11().

uint32_t HcalTriggerPrimitiveAlgo::ZS_threshold_
private

Definition at line 122 of file HcalTriggerPrimitiveAlgo.h.

Referenced by HcalTriggerPrimitiveAlgo().

int HcalTriggerPrimitiveAlgo::ZS_threshold_I_
private

Definition at line 123 of file HcalTriggerPrimitiveAlgo.h.

Referenced by HcalTriggerPrimitiveAlgo(), and runZS().