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, 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 RecHits More...
 
void analyze2017 (IntegerCaloSamples &samples, HcalTriggerPrimitiveDigi &result, const HcalFinegrainBit &fg_algo)
 
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 analyzeHF2017 (const IntegerCaloSamples &SAMPLES, HcalTriggerPrimitiveDigi &result, const int HF_LUMI_SHIFT, const HcalFeatureBit *HCALFEM)
 
bool needLegacyFG (const HcalTrigTowerDetId &id) 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
 
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 181 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 184 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 185 of file HcalTriggerPrimitiveAlgo.h.

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

Definition at line 152 of file HcalTriggerPrimitiveAlgo.h.

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

Definition at line 161 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 164 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 143 of file HcalTriggerPrimitiveAlgo.h.

Definition at line 165 of file HcalTriggerPrimitiveAlgo.h.

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

Definition at line 178 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,
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),
36  minSignalThreshold_(minSignalThreshold),
37  PMT_NoiseThreshold_(PMT_NoiseThreshold),
41 {
42  //No peak finding setting (for Fastsim)
43  if (!peakfind_){
44  numberOfSamples_ = 1;
46  numberOfSamplesHF_ = 1;
48  }
49  // Switch to integer for comparisons - remove compiler warning
51 }
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 54 of file HcalTriggerPrimitiveAlgo.cc.

54  {
55 }

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 729 of file HcalTriggerPrimitiveAlgo.cc.

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

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

729  {
730  FGbitMap::iterator itr = fgMap_.find(id);
731  if (itr != fgMap_.end()){
732  std::vector<bool>& _msb = itr->second;
733  for (size_t i=0; i<msb.size(); ++i)
734  _msb[i] = _msb[i] || msb[i];
735  }
736  else fgMap_[id] = msb;
737 }
void HcalTriggerPrimitiveAlgo::addSignal ( const HBHEDataFrame frame)
private

adds the signal to the map

Definition at line 83 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().

83  {
84  // TODO: Need to add support for seperate 28, 29 in HE
85  //Hack for 300_pre10, should be removed.
86  if (frame.id().depth()==5) return;
87 
88  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(frame.id());
89  assert(ids.size() == 1 || ids.size() == 2);
90  IntegerCaloSamples samples1(ids[0], int(frame.size()));
91 
92  samples1.setPresamples(frame.presamples());
93  incoder_->adc2Linear(frame, samples1);
94 
95  std::vector<bool> msb;
96  incoder_->lookupMSB(frame, msb);
97 
98  if(ids.size() == 2) {
99  // make a second trigprim for the other one, and split the energy
100  IntegerCaloSamples samples2(ids[1], samples1.size());
101  for(int i = 0; i < samples1.size(); ++i) {
102  samples1[i] = uint32_t(samples1[i]*0.5);
103  samples2[i] = samples1[i];
104  }
105  samples2.setPresamples(frame.presamples());
106  addSignal(samples2);
107  addFG(ids[1], msb);
108  }
109  addSignal(samples1);
110  addFG(ids[0], msb);
111 }
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:26
void addFG(const HcalTrigTowerDetId &id, std::vector< bool > &msb)
int depth() const
get the tower depth
Definition: HcalDetId.cc:108
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:28
const HcaluLUTTPGCoder * incoder_
const HcalDetId & id() const
Definition: HBHEDataFrame.h:22
void addSignal(const HBHEDataFrame &frame)
adds the signal to the map
void HcalTriggerPrimitiveAlgo::addSignal ( const HFDataFrame frame)
private

Definition at line 114 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().

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

Definition at line 198 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(), QIE10DataFrame::presamples(), hcalTTPDigis_cfi::samples, QIE10DataFrame::samples(), IntegerCaloSamples::setPresamples(), HcalDetId::subdet(), theHFUpgradeDetailMap, theTrigTowerGeometry, HcalTrigTowerGeometry::towerIds(), validChannel(), and jets_cff::version.

199 {
200  HcalDetId detId = frame.detid();
201  // prevent QIE10 calibration channels from entering TP emulation
202  if(detId.subdet() != HcalForward) return;
203 
204  auto ids = theTrigTowerGeometry->towerIds(frame.id());
205  for (const auto& id: ids) {
206  if (id.version() == 0) {
207  edm::LogError("HcalTPAlgo") << "Encountered QIE10 data frame mapped to TP version 0:" << id;
208  continue;
209  }
210 
211  int nsamples=frame.samples();
212 
213  IntegerCaloSamples samples(id, nsamples);
214  samples.setPresamples(frame.presamples());
215  incoder_->adc2Linear(frame, samples);
216 
217  // Don't add to final collection yet
218  // HF PMT veto sum is calculated in analyzerHF()
219  IntegerCaloSamples zero_samples(id, nsamples);
220  zero_samples.setPresamples(frame.presamples());
221  addSignal(zero_samples);
222 
223  auto fid = HcalDetId(frame.id());
224  auto& details = theHFUpgradeDetailMap[id][fid.maskDepth()];
225  auto& detail = details[fid.depth()-1];
226  detail.samples = samples;
227  detail.digi = frame;
228  detail.validity.resize(nsamples);
229  incoder_->lookupMSB(frame, detail.fgbit);
230  for (int idx = 0; idx < nsamples; ++idx){
231  detail.validity[idx] = validChannel(frame, idx);
232  }
233  }
234 }
int samples() const
total number of samples in the digi
void adc2Linear(const HBHEDataFrame &df, IntegerCaloSamples &ics) const override
HFUpgradeDetailMap theHFUpgradeDetailMap
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:49
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 237 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().

238 {
239  HcalDetId detId(frame.id());
240  // prevent QIE11 calibration channels from entering TP emulation
241  if(detId.subdet() != HcalEndcap && detId.subdet() != HcalBarrel) return;
242 
243  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
244  assert(ids.size() == 1 || ids.size() == 2);
245  IntegerCaloSamples samples1(ids[0], int(frame.samples()));
246 
247  samples1.setPresamples(frame.presamples());
248  incoder_->adc2Linear(frame, samples1);
249 
250  std::vector<std::bitset<2>> msb(frame.samples(), 0);
251  incoder_->lookupMSB(frame, msb);
252 
253  if(ids.size() == 2) {
254  // make a second trigprim for the other one, and share the energy
255  IntegerCaloSamples samples2(ids[1], samples1.size());
256  for(int i = 0; i < samples1.size(); ++i) {
257  samples1[i] = uint32_t(samples1[i]);
258  samples2[i] = samples1[i];
259  }
260  samples2.setPresamples(frame.presamples());
261  addSignal(samples2);
262  addUpgradeFG(ids[1], detId.depth(), msb);
263  }
264  addSignal(samples1);
265  addUpgradeFG(ids[0], detId.depth(), msb);
266 }
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 268 of file HcalTriggerPrimitiveAlgo.cc.

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

268  {
269  HcalTrigTowerDetId id(samples.id());
270  SumMap::iterator itr = theSumMap.find(id);
271  if(itr == theSumMap.end()) {
272  theSumMap.insert(std::make_pair(id, samples));
273  }
274  else {
275  // wish CaloSamples had a +=
276  for(int i = 0; i < samples.size(); ++i) {
277  (itr->second)[i] += samples[i];
278  }
279  }
280 }
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 763 of file HcalTriggerPrimitiveAlgo.cc.

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

Referenced by addDigis(), and addSignal().

764 {
765  if (not validUpgradeFG(id, depth)) {
766  if (needLegacyFG(id)) {
767  std::vector<bool> pseudo(bits.size(), false);
768  addFG(id, pseudo);
769  }
770  return;
771  }
772 
773  auto it = fgUpgradeMap_.find(id);
774  if (it == fgUpgradeMap_.end()) {
775  FGUpgradeContainer element;
776  element.resize(bits.size());
777  it = fgUpgradeMap_.insert(std::make_pair(id, element)).first;
778  }
779  for (unsigned int i = 0; i < bits.size(); ++i) {
780  it->second[i][0][depth] = bits[i][0];
781  it->second[i][1][depth] = bits[i][1];
782  }
783 }
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 RecHits

Definition at line 283 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().

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

Definition at line 364 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().

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

Definition at line 429 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().

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

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

Definition at line 566 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(), and theHFUpgradeDetailMap.

Referenced by addDigis(), and run().

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

Definition at line 752 of file HcalTriggerPrimitiveAlgo.cc.

References HBHE_OVERLAP_TOWER, and upgrade_hb_.

Referenced by addDigis(), and addUpgradeFG().

753 {
754  // This tower (ietaAbs == 16) does not accept upgraded FG bits,
755  // but needs pseudo legacy ones to ensure that the tower is processed
756  // even when the QIE8 depths in front of it do not have energy deposits.
757  if (id.ietaAbs() == HBHE_OVERLAP_TOWER and not upgrade_hb_)
758  return true;
759  return false;
760 }
void HcalTriggerPrimitiveAlgo::overrideParameters ( const edm::ParameterSet ps)

Definition at line 68 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().

69 {
71 
72  if (override_parameters_.exists("ADCThresholdHF")) {
73  override_adc_hf_ = true;
74  override_adc_hf_value_ = override_parameters_.getParameter<uint32_t>("ADCThresholdHF");
75  }
76  if (override_parameters_.exists("TDCMaskHF")) {
77  override_tdc_hf_ = true;
78  override_tdc_hf_value_ = override_parameters_.getParameter<unsigned long long>("TDCMaskHF");
79  }
80 }
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_
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 216 of file HcalTriggerPrimitiveAlgo.h.

References addDigis(), analyze(), analyze2017(), analyzeHF(), analyzeHF2016(), analyzeHF2017(), 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().

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

Definition at line 677 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().

680  {
681  std::set<uint32_t> FrontEndErrors;
682 
684  const FEDRawData& raw = rawraw->FEDData(i);
685  if (raw.size()<12) continue;
686  const HcalDCCHeader* dccHeader=(const HcalDCCHeader*)(raw.data());
687  if(!dccHeader) continue;
688  HcalHTRData htr;
689  for (int spigot=0; spigot<HcalDCCHeader::SPIGOT_COUNT; spigot++) {
690  if (!dccHeader->getSpigotPresent(spigot)) continue;
691  dccHeader->getSpigotData(spigot,htr,raw.size());
692  int dccid = dccHeader->getSourceId();
693  int errWord = htr.getErrorsWord() & 0x1FFFF;
694  bool HTRError = (!htr.check() || htr.isHistogramEvent() || (errWord & 0x800)!=0);
695 
696  if(HTRError) {
697  bool valid =false;
698  for(int fchan=0; fchan<3 && !valid; fchan++) {
699  for(int fib=0; fib<9 && !valid; fib++) {
700  HcalElectronicsId eid(fchan,fib,spigot,dccid-FEDNumbering::MINHCALFEDID);
701  eid.setHTR(htr.readoutVMECrateId(),htr.htrSlot(),htr.htrTopBottom());
702  DetId detId = emap->lookup(eid);
703  if(detId.null()) continue;
704  HcalSubdetector subdet=(HcalSubdetector(detId.subdetId()));
705  if (detId.det()!=4||
706  (subdet!=HcalBarrel && subdet!=HcalEndcap &&
707  subdet!=HcalForward )) continue;
708  std::vector<HcalTrigTowerDetId> ids = theTrigTowerGeometry->towerIds(detId);
709  for (std::vector<HcalTrigTowerDetId>::const_iterator triggerId=ids.begin(); triggerId != ids.end(); ++triggerId) {
710  FrontEndErrors.insert(triggerId->rawId());
711  }
712  //valid = true;
713  }
714  }
715  }
716  }
717  }
718 
719  // Loop over TP collection
720  // Set TP to zero if there is FE Format Error
721  HcalTriggerPrimitiveSample zeroSample(0);
722  for (HcalTrigPrimDigiCollection::iterator tp = result.begin(); tp != result.end(); ++tp){
723  if (FrontEndErrors.find(tp->id().rawId()) != FrontEndErrors.end()) {
724  for (int i=0; i<tp->size(); ++i) tp->setSample(i, zeroSample);
725  }
726  }
727 }
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
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
HcalSubdetector
Definition: HcalAssistant.h:31
bool getSpigotPresent(unsigned int nspigot) const
Read the "PRESENT" bit for this spigot.
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:38
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
bool null() const
is this a null id ?
Definition: DetId.h:46
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
Detector det() const
get the detector field from this detid
Definition: DetId.h:36
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
void HcalTriggerPrimitiveAlgo::runZS ( HcalTrigPrimDigiCollection tp)

Definition at line 663 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().

663  {
664  for (HcalTrigPrimDigiCollection::iterator tp = result.begin(); tp != result.end(); ++tp){
665  bool ZS = true;
666  for (int i=0; i<tp->size(); ++i) {
667  if (tp->sample(i).compressedEt() > ZS_threshold_I_) {
668  ZS=false;
669  break;
670  }
671  }
672  if (ZS) tp->setZSInfo(false,true);
673  else tp->setZSInfo(true,false);
674  }
675 }
std::vector< HcalTriggerPrimitiveDigi >::iterator iterator
size_type size() const
void HcalTriggerPrimitiveAlgo::setNCTScaleShift ( int  shift)

Definition at line 791 of file HcalTriggerPrimitiveAlgo.cc.

References NCTScaleShift, and edm::shift.

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

791  {
793 }
static unsigned int const shift
void HcalTriggerPrimitiveAlgo::setPeakFinderAlgorithm ( int  algo)

Definition at line 785 of file HcalTriggerPrimitiveAlgo.cc.

References patPFMETCorrections_cff::algo, Exception, and peak_finder_algorithm_.

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

785  {
786  if (algo <=0 && algo>2)
787  throw cms::Exception("ERROR: Only algo 1 & 2 are supported.") << std::endl;
789 }
void HcalTriggerPrimitiveAlgo::setRCTScaleShift ( int  shift)

Definition at line 795 of file HcalTriggerPrimitiveAlgo.cc.

References RCTScaleShift, and edm::shift.

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

795  {
797 }
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 542 of file HcalTriggerPrimitiveAlgo.cc.

References ecalMGPA::adc(), conditions_, HcalTPParameters::getADCThresholdHF(), HcalDbService::getHcalTPChannelParameter(), HcalDbService::getHcalTPParameters(), HcalTPChannelParameter::getMask(), QIE10DataFrame::id(), QIE10DataFrame::linkError(), RecoTauDiscriminantConfiguration::mask, override_adc_hf_, override_adc_hf_value_, override_tdc_hf_, override_tdc_hf_value_, and QIE10DataFrame::samples().

Referenced by addDigis(), and addSignal().

543 {
544  // channels with invalid data should not contribute to the sum
545  if(digi.linkError() || ts>=digi.samples() || !digi[ts].ok()) return false;
546 
548  if (mask)
549  return false;
550 
552  auto adc_threshold = parameters->getADCThresholdHF();
553  auto tdc_mask = parameters->getTDCMaskHF();
554 
555  if (override_adc_hf_)
556  adc_threshold = override_adc_hf_value_;
557  if (override_tdc_hf_)
558  tdc_mask = override_tdc_hf_value_;
559 
560  if (digi[ts].adc() < adc_threshold)
561  return true;
562 
563  return (1ul << digi[ts].le_tdc()) & tdc_mask;
564 }
int adc(sample_type sample)
get the ADC sample (12 bits)
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_
unsigned long long override_tdc_hf_value_
const HcalTPParameters * getHcalTPParameters() const
int getADCThresholdHF() const
get ADC threshold fof TDC mask of HF
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 740 of file HcalTriggerPrimitiveAlgo.cc.

References HBHE_OVERLAP_TOWER, LAST_FINEGRAIN_DEPTH, LAST_FINEGRAIN_TOWER, and upgrade_hb_.

Referenced by addDigis(), and addUpgradeFG().

741 {
743  return false;
744  if (id.ietaAbs() > LAST_FINEGRAIN_TOWER)
745  return false;
746  if (id.ietaAbs() == HBHE_OVERLAP_TOWER and not upgrade_hb_)
747  return false;
748  return true;
749 }

Member Data Documentation

const HcalDbService* HcalTriggerPrimitiveAlgo::conditions_
private

Definition at line 114 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and validChannel().

uint32_t HcalTriggerPrimitiveAlgo::FG_HF_threshold_
private

Definition at line 120 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2016().

uint32_t HcalTriggerPrimitiveAlgo::FG_threshold_
private

Definition at line 119 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF().

FGbitMap HcalTriggerPrimitiveAlgo::fgMap_
private

Definition at line 182 of file HcalTriggerPrimitiveAlgo.h.

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

FGUpgradeMap HcalTriggerPrimitiveAlgo::fgUpgradeMap_
private

Definition at line 186 of file HcalTriggerPrimitiveAlgo.h.

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

const int HcalTriggerPrimitiveAlgo::FIRST_FINEGRAIN_TOWER = 30
staticprivate

Definition at line 205 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2016(), and analyzeHF2017().

const int HcalTriggerPrimitiveAlgo::HBHE_OVERLAP_TOWER = 16
staticprivate

Definition at line 200 of file HcalTriggerPrimitiveAlgo.h.

Referenced by needLegacyFG(), and validUpgradeFG().

TowerMapVeto HcalTriggerPrimitiveAlgo::HF_Veto
private

Definition at line 179 of file HcalTriggerPrimitiveAlgo.h.

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

const HcaluLUTTPGCoder* HcalTriggerPrimitiveAlgo::incoder_
private

Definition at line 112 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), and run().

const int HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_DEPTH = 6
staticprivate

Definition at line 201 of file HcalTriggerPrimitiveAlgo.h.

Referenced by validUpgradeFG().

const int HcalTriggerPrimitiveAlgo::LAST_FINEGRAIN_TOWER = 28
staticprivate

Definition at line 202 of file HcalTriggerPrimitiveAlgo.h.

Referenced by validUpgradeFG().

int HcalTriggerPrimitiveAlgo::latency_
private

Definition at line 118 of file HcalTriggerPrimitiveAlgo.h.

HcalFeatureBit* HcalTriggerPrimitiveAlgo::LongvrsShortCut
private

Definition at line 177 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run().

uint32_t HcalTriggerPrimitiveAlgo::minSignalThreshold_
private

Definition at line 127 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal().

int HcalTriggerPrimitiveAlgo::NCTScaleShift
private

Definition at line 129 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setNCTScaleShift().

int HcalTriggerPrimitiveAlgo::numberOfPresamples_
private

Definition at line 124 of file HcalTriggerPrimitiveAlgo.h.

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

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

Definition at line 123 of file HcalTriggerPrimitiveAlgo.h.

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

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

Definition at line 194 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and validChannel().

uint32_t HcalTriggerPrimitiveAlgo::override_adc_hf_value_
private

Definition at line 195 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and validChannel().

edm::ParameterSet HcalTriggerPrimitiveAlgo::override_parameters_
private

Definition at line 192 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and run().

bool HcalTriggerPrimitiveAlgo::override_tdc_hf_ = false
private

Definition at line 196 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and validChannel().

unsigned long long HcalTriggerPrimitiveAlgo::override_tdc_hf_value_
private

Definition at line 197 of file HcalTriggerPrimitiveAlgo.h.

Referenced by overrideParameters(), and validChannel().

int HcalTriggerPrimitiveAlgo::peak_finder_algorithm_
private

Definition at line 136 of file HcalTriggerPrimitiveAlgo.h.

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

bool HcalTriggerPrimitiveAlgo::peakfind_
private

Definition at line 116 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and HcalTriggerPrimitiveAlgo().

uint32_t HcalTriggerPrimitiveAlgo::PMT_NoiseThreshold_
private

Definition at line 128 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF().

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

Definition at line 208 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2017().

const int HcalTriggerPrimitiveAlgo::QIE10_MAX_LINEARIZATION_ET = 0x7FF
staticprivate

Definition at line 211 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyzeHF2017().

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

Definition at line 209 of file HcalTriggerPrimitiveAlgo.h.

const int HcalTriggerPrimitiveAlgo::QIE11_MAX_LINEARIZATION_ET = 0x7FF
staticprivate

Definition at line 212 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze2017().

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

Definition at line 207 of file HcalTriggerPrimitiveAlgo.h.

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

int HcalTriggerPrimitiveAlgo::RCTScaleShift
private

Definition at line 130 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setRCTScaleShift().

HFDetailMap HcalTriggerPrimitiveAlgo::theHFDetailMap
private

Definition at line 153 of file HcalTriggerPrimitiveAlgo.h.

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

HFUpgradeDetailMap HcalTriggerPrimitiveAlgo::theHFUpgradeDetailMap
private

Definition at line 162 of file HcalTriggerPrimitiveAlgo.h.

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

SumMap HcalTriggerPrimitiveAlgo::theSumMap
private

Definition at line 144 of file HcalTriggerPrimitiveAlgo.h.

Referenced by addSignal(), and run().

double HcalTriggerPrimitiveAlgo::theThreshold
private

Definition at line 115 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and analyze2017().

TowerMapFGSum HcalTriggerPrimitiveAlgo::theTowerMapFGSum
private

Definition at line 166 of file HcalTriggerPrimitiveAlgo.h.

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

const HcalTrigTowerGeometry* HcalTriggerPrimitiveAlgo::theTrigTowerGeometry
private

Definition at line 141 of file HcalTriggerPrimitiveAlgo.h.

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

bool HcalTriggerPrimitiveAlgo::upgrade_hb_ = false
private

Definition at line 188 of file HcalTriggerPrimitiveAlgo.h.

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

bool HcalTriggerPrimitiveAlgo::upgrade_he_ = false
private

Definition at line 189 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setUpgradeFlags().

bool HcalTriggerPrimitiveAlgo::upgrade_hf_ = false
private

Definition at line 190 of file HcalTriggerPrimitiveAlgo.h.

Referenced by run(), and setUpgradeFlags().

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

Definition at line 117 of file HcalTriggerPrimitiveAlgo.h.

Referenced by analyze(), and analyze2017().

uint32_t HcalTriggerPrimitiveAlgo::ZS_threshold_
private

Definition at line 121 of file HcalTriggerPrimitiveAlgo.h.

Referenced by HcalTriggerPrimitiveAlgo().

int HcalTriggerPrimitiveAlgo::ZS_threshold_I_
private

Definition at line 122 of file HcalTriggerPrimitiveAlgo.h.

Referenced by HcalTriggerPrimitiveAlgo(), and runZS().