CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalHitReconstructor.cc
Go to the documentation of this file.
1 //using namespace std;
2 #include "HcalHitReconstructor.h"
16 
17 #include <iostream>
18 
19 /* Hcal Hit reconstructor allows for CaloRecHits with status words */
20 
22  reco_(conf.getParameter<int>("firstSample"),
23  conf.getParameter<int>("samplesToAdd"),
24  conf.getParameter<bool>("correctForTimeslew"),
25  conf.getParameter<bool>("correctForPhaseContainment"),
26  conf.getParameter<double>("correctionPhaseNS")),
27  det_(DetId::Hcal),
28  inputLabel_(conf.getParameter<edm::InputTag>("digiLabel")),
29  correctTiming_(conf.getParameter<bool>("correctTiming")),
30  setNoiseFlags_(conf.getParameter<bool>("setNoiseFlags")),
31  setHSCPFlags_(conf.getParameter<bool>("setHSCPFlags")),
32  setSaturationFlags_(conf.getParameter<bool>("setSaturationFlags")),
33  setTimingTrustFlags_(conf.getParameter<bool>("setTimingTrustFlags")),
34  setPulseShapeFlags_(conf.getParameter<bool>("setPulseShapeFlags")),
35  dropZSmarkedPassed_(conf.getParameter<bool>("dropZSmarkedPassed")),
36  firstauxTS_(conf.getParameter<int>("firstSample")+conf.getParameter<int>("firstAuxOffset"))
37 {
38  std::string subd=conf.getParameter<std::string>("Subdetector");
39  //Set all FlagSetters to 0
40  /* Important to do this! Otherwise, if the setters are turned off,
41  the "if (XSetter_) delete XSetter_;" commands can crash
42  */
43  hbheFlagSetter_ = 0;
47  hfdigibit_ = 0;
48 
49  hfS9S1_ = 0;
50  hfS8S1_ = 0;
51  hfPET_ = 0;
54 
56  {
57  const edm::ParameterSet& pssat = conf.getParameter<edm::ParameterSet>("saturationParameters");
58  saturationFlagSetter_ = new HcalADCSaturationFlag(pssat.getParameter<int>("maxADCvalue"));
59  }
60 
61  if (!strcasecmp(subd.c_str(),"HBHE")) {
63  bool timingShapedCutsFlags = conf.getParameter<bool>("setTimingShapedCutsFlags");
64  if (timingShapedCutsFlags)
65  {
66  const edm::ParameterSet& psTshaped = conf.getParameter<edm::ParameterSet>("timingshapedcutsParameters");
67  hbheTimingShapedFlagSetter_ = new HBHETimingShapedFlagSetter(psTshaped.getParameter<std::vector<double> >("tfilterEnvelope"),
68  psTshaped.getParameter<bool>("ignorelowest"),
69  psTshaped.getParameter<bool>("ignorehighest"),
70  psTshaped.getParameter<double>("win_offset"),
71  psTshaped.getParameter<double>("win_gain"));
72  }
73 
74  if (setNoiseFlags_)
75  {
76  const edm::ParameterSet& psdigi =conf.getParameter<edm::ParameterSet>("flagParameters");
77  hbheFlagSetter_=new HBHEStatusBitSetter(psdigi.getParameter<double>("nominalPedestal"),
78  psdigi.getParameter<double>("hitEnergyMinimum"),
79  psdigi.getParameter<int>("hitMultiplicityThreshold"),
80  psdigi.getParameter<std::vector<edm::ParameterSet> >("pulseShapeParameterSets"),
81  conf.getParameter<int>("firstSample"),
82  conf.getParameter<int>("samplesToAdd"));
83  } // if (setNoiseFlags_)
84  if (setHSCPFlags_)
85  {
86  const edm::ParameterSet& psHSCP = conf.getParameter<edm::ParameterSet>("hscpParameters");
88  psHSCP.getParameter<double>("r1Max"),
89  psHSCP.getParameter<double>("r2Min"),
90  psHSCP.getParameter<double>("r2Max"),
91  psHSCP.getParameter<double>("fracLeaderMin"),
92  psHSCP.getParameter<double>("fracLeaderMax"),
93  psHSCP.getParameter<double>("slopeMin"),
94  psHSCP.getParameter<double>("slopeMax"),
95  psHSCP.getParameter<double>("outerMin"),
96  psHSCP.getParameter<double>("outerMax"),
97  psHSCP.getParameter<double>("TimingEnergyThreshold"));
98  } // if (setHSCPFlags_)
100  {
101  const edm::ParameterSet &psPulseShape = conf.getParameter<edm::ParameterSet>("pulseShapeParameters");
103  psPulseShape.getParameter<double>("MinimumChargeThreshold"),
104  psPulseShape.getParameter<unsigned int>("TrianglePeakTS"),
105  psPulseShape.getParameter<std::vector<double> >("LinearThreshold"),
106  psPulseShape.getParameter<std::vector<double> >("LinearCut"),
107  psPulseShape.getParameter<std::vector<double> >("RMS8MaxThreshold"),
108  psPulseShape.getParameter<std::vector<double> >("RMS8MaxCut"),
109  psPulseShape.getParameter<std::vector<double> >("LeftSlopeThreshold"),
110  psPulseShape.getParameter<std::vector<double> >("LeftSlopeCut"),
111  psPulseShape.getParameter<std::vector<double> >("RightSlopeThreshold"),
112  psPulseShape.getParameter<std::vector<double> >("RightSlopeCut"),
113  psPulseShape.getParameter<std::vector<double> >("RightSlopeSmallThreshold"),
114  psPulseShape.getParameter<std::vector<double> >("RightSlopeSmallCut"),
115  psPulseShape.getParameter<bool>("UseDualFit"),
116  psPulseShape.getParameter<bool>("TriangleIgnoreSlow"));
117  } // if (setPulseShapeFlags_)
118 
119  produces<HBHERecHitCollection>();
120  } else if (!strcasecmp(subd.c_str(),"HO")) {
122  produces<HORecHitCollection>();
123  } else if (!strcasecmp(subd.c_str(),"HF")) {
125 
126  if (setTimingTrustFlags_) {
127 
128  const edm::ParameterSet& pstrust = conf.getParameter<edm::ParameterSet>("hfTimingTrustParameters");
129  HFTimingTrustFlagSetter_=new HFTimingTrustFlag(pstrust.getParameter<int>("hfTimingTrustLevel1"),
130  pstrust.getParameter<int>("hfTimingTrustLevel2"));
131  }
132 
133  if (setNoiseFlags_)
134  {
135  const edm::ParameterSet& psdigi =conf.getParameter<edm::ParameterSet>("digistat");
136  const edm::ParameterSet& psTimeWin =conf.getParameter<edm::ParameterSet>("HFInWindowStat");
137  hfdigibit_=new HcalHFStatusBitFromDigis(conf.getParameter<int>("firstSample"),
138  conf.getParameter<int>("samplesToAdd"),
139  psdigi, psTimeWin);
140 
141  const edm::ParameterSet& psS9S1 = conf.getParameter<edm::ParameterSet>("S9S1stat");
142  hfS9S1_ = new HcalHF_S9S1algorithm(psS9S1.getParameter<std::vector<double> >("short_optimumSlope"),
143  psS9S1.getParameter<std::vector<double> >("shortEnergyParams"),
144  psS9S1.getParameter<std::vector<double> >("shortETParams"),
145  psS9S1.getParameter<std::vector<double> >("long_optimumSlope"),
146  psS9S1.getParameter<std::vector<double> >("longEnergyParams"),
147  psS9S1.getParameter<std::vector<double> >("longETParams"),
148  psS9S1.getParameter<int>("flagsToSkip"),
149  psS9S1.getParameter<bool>("isS8S1")
150  );
151 
152  const edm::ParameterSet& psS8S1 = conf.getParameter<edm::ParameterSet>("S8S1stat");
153  hfS8S1_ = new HcalHF_S9S1algorithm(psS8S1.getParameter<std::vector<double> >("short_optimumSlope"),
154  psS8S1.getParameter<std::vector<double> >("shortEnergyParams"),
155  psS8S1.getParameter<std::vector<double> >("shortETParams"),
156  psS8S1.getParameter<std::vector<double> >("long_optimumSlope"),
157  psS8S1.getParameter<std::vector<double> >("longEnergyParams"),
158  psS8S1.getParameter<std::vector<double> >("longETParams"),
159  psS8S1.getParameter<int>("flagsToSkip"),
160  psS8S1.getParameter<bool>("isS8S1")
161  );
162 
163  const edm::ParameterSet& psPET = conf.getParameter<edm::ParameterSet>("PETstat");
164  hfPET_ = new HcalHF_PETalgorithm(psPET.getParameter<std::vector<double> >("short_R"),
165  psPET.getParameter<std::vector<double> >("shortEnergyParams"),
166  psPET.getParameter<std::vector<double> >("shortETParams"),
167  psPET.getParameter<std::vector<double> >("long_R"),
168  psPET.getParameter<std::vector<double> >("longEnergyParams"),
169  psPET.getParameter<std::vector<double> >("longETParams"),
170  psPET.getParameter<int>("flagsToSkip"),
171  psPET.getParameter<std::vector<double> >("short_R_29"),
172  psPET.getParameter<std::vector<double> >("long_R_29")
173  );
174  }
175  produces<HFRecHitCollection>();
176  } else if (!strcasecmp(subd.c_str(),"ZDC")) {
179  produces<ZDCRecHitCollection>();
180  } else if (!strcasecmp(subd.c_str(),"CALIB")) {
183  produces<HcalCalibRecHitCollection>();
184  } else {
185  std::cout << "HcalHitReconstructor is not associated with a specific subdetector!" << std::endl;
186  }
187 
188 }
189 
191  if (hbheFlagSetter_) delete hbheFlagSetter_;
192  if (hfdigibit_) delete hfdigibit_;
195  if (hfS9S1_) delete hfS9S1_;
196  if (hfPET_) delete hfPET_;
197 }
198 
200 {
201  //bool isData=e.isRealData(); // some flags should only be applied to real data
202 
203  // get conditions
204  edm::ESHandle<HcalDbService> conditions;
205  eventSetup.get<HcalDbRecord>().get(conditions);
206  const HcalQIEShape* shape = conditions->getHcalShape (); // this one is generic
207 
209  eventSetup.get<HcalChannelQualityRcd>().get(p);
210  HcalChannelQuality* myqual = new HcalChannelQuality(*p.product());
211 
213  eventSetup.get<HcalSeverityLevelComputerRcd>().get(mycomputer);
214  const HcalSeverityLevelComputer* mySeverity = mycomputer.product();
215 
216  if (det_==DetId::Hcal) {
219 
220  e.getByLabel(inputLabel_,digi);
221 
222  // create empty output
223  std::auto_ptr<HBHERecHitCollection> rec(new HBHERecHitCollection);
224  rec->reserve(digi->size());
225  // run the algorithm
228  std::vector<HBHEDataFrame> HBDigis;
229  std::vector<int> RecHitIndex;
230 
231  // Vote on majority TS0 CapId
232  int favorite_capid = 0;
233  if (correctTiming_) {
234  long capid_votes[4] = {0,0,0,0};
235  for (i=digi->begin(); i!=digi->end(); i++) {
236  capid_votes[(*i)[0].capid()]++;
237  }
238  for (int k = 0; k < 4; k++)
239  if (capid_votes[k] > capid_votes[favorite_capid])
240  favorite_capid = k;
241  }
242 
243  for (i=digi->begin(); i!=digi->end(); i++) {
244  HcalDetId cell = i->id();
245  DetId detcell=(DetId)cell;
246 
247  // check on cells to be ignored and dropped: (rof,20.Feb.09)
248  const HcalChannelStatus* mydigistatus=myqual->getValues(detcell.rawId());
249  if (mySeverity->dropChannel(mydigistatus->getValue() ) ) continue;
251  if (i->zsMarkAndPass()) continue;
252 
253  const HcalCalibrations& calibrations=conditions->getHcalCalibrations(cell);
254  const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
255  HcalCoderDb coder (*channelCoder, *shape);
256  rec->push_back(reco_.reconstruct(*i,coder,calibrations));
257 
258  // Set auxiliary flag
259  int auxflag=0;
260  for (int xx=firstauxTS_;xx<firstauxTS_+4 && xx<i->size();++xx)
261  auxflag+=(i->sample(xx).adc())<<(7*(xx-firstauxTS_)); // store the time slices in the first 28 bits of aux, a set of 4 7-bit adc values
262  // bits 28 and 29 are reserved for capid of the first time slice saved in aux
263  auxflag+=((i->sample(firstauxTS_).capid())<<28);
264  (rec->back()).setAux(auxflag);
265 
266  (rec->back()).setFlags(0); // this sets all flag bits to 0
269  if (setNoiseFlags_)
270  hbheFlagSetter_->SetFlagsFromDigi(rec->back(),*i,coder,calibrations);
271  if (setPulseShapeFlags_ == true)
272  hbhePulseShapeFlagSetter_->SetPulseShapeFlags(rec->back(), *i, coder, calibrations);
275  if (correctTiming_)
276  HcalTimingCorrector::Correct(rec->back(), *i, favorite_capid);
277  if (setHSCPFlags_ && i->id().ietaAbs()<16)
278  {
279  double DigiEnergy=0;
280  for(int j=0; j!=i->size(); DigiEnergy += i->sample(j++).nominal_fC());
281  if(DigiEnergy > hbheHSCPFlagSetter_->EnergyThreshold())
282  {
283  HBDigis.push_back(*i);
284  RecHitIndex.push_back(rec->size()-1);
285  }
286 
287  } // if (set HSCPFlags_ && |ieta|<16)
288  } // loop over HBHE digis
289 
290 
292  if (setHSCPFlags_) hbheHSCPFlagSetter_->hbheSetTimeFlagsFromDigi(rec.get(), HBDigis, RecHitIndex);
293  // return result
294  e.put(rec);
295  } else if (subdet_==HcalOuter) {
297  e.getByLabel(inputLabel_,digi);
298 
299  // create empty output
300  std::auto_ptr<HORecHitCollection> rec(new HORecHitCollection);
301  rec->reserve(digi->size());
302  // run the algorithm
304 
305  // Vote on majority TS0 CapId
306  int favorite_capid = 0;
307  if (correctTiming_) {
308  long capid_votes[4] = {0,0,0,0};
309  for (i=digi->begin(); i!=digi->end(); i++) {
310  capid_votes[(*i)[0].capid()]++;
311  }
312  for (int k = 0; k < 4; k++)
313  if (capid_votes[k] > capid_votes[favorite_capid])
314  favorite_capid = k;
315  }
316 
317  for (i=digi->begin(); i!=digi->end(); i++) {
318  HcalDetId cell = i->id();
319  DetId detcell=(DetId)cell;
320  // check on cells to be ignored and dropped: (rof,20.Feb.09)
321  const HcalChannelStatus* mydigistatus=myqual->getValues(detcell.rawId());
322  if (mySeverity->dropChannel(mydigistatus->getValue() ) ) continue;
324  if (i->zsMarkAndPass()) continue;
325 
326  const HcalCalibrations& calibrations=conditions->getHcalCalibrations(cell);
327  const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
328  HcalCoderDb coder (*channelCoder, *shape);
329  rec->push_back(reco_.reconstruct(*i,coder,calibrations));
330 
331  // Set auxiliary flag
332  int auxflag=0;
333  for (int xx=firstauxTS_;xx<firstauxTS_+4 && xx<i->size();++xx)
334  auxflag+=(i->sample(xx).adc())<<(7*(xx-firstauxTS_)); // store the time slices in the first 28 bits of aux, a set of 4 7-bit adc values
335  // bits 28 and 29 are reserved for capid of the first time slice saved in aux
336  auxflag+=((i->sample(firstauxTS_).capid())<<28);
337  (rec->back()).setAux(auxflag);
338 
339  (rec->back()).setFlags(0);
342  if (correctTiming_)
343  HcalTimingCorrector::Correct(rec->back(), *i, favorite_capid);
344  }
345  // return result
346  e.put(rec);
347  } else if (subdet_==HcalForward) {
349  e.getByLabel(inputLabel_,digi);
350 
351  // ugly hack only for purposes of 3.11 HF treatment
352  if (e.isRealData() && e.run() <= 153943)
353  {
354  reco_.resetTimeSamples(3,4);
356  firstauxTS_=3; // hard-code starting position of aux word
357  }
358  else
359  {
360  reco_.resetTimeSamples(4,2);
361  if (hfdigibit_) hfdigibit_->resetTimeSamples(3,3); // flag uses 3 TS, even if reco uses 2 TS
362  firstauxTS_=3; // hard-code
363  }
364 
366  // create empty output
367  std::auto_ptr<HFRecHitCollection> rec(new HFRecHitCollection);
368  rec->reserve(digi->size());
369  // run the algorithm
371 
372  // Vote on majority TS0 CapId
373  int favorite_capid = 0;
374  if (correctTiming_) {
375  long capid_votes[4] = {0,0,0,0};
376  for (i=digi->begin(); i!=digi->end(); i++) {
377  capid_votes[(*i)[0].capid()]++;
378  }
379  for (int k = 0; k < 4; k++)
380  if (capid_votes[k] > capid_votes[favorite_capid])
381  favorite_capid = k;
382  }
383 
384  for (i=digi->begin(); i!=digi->end(); i++) {
385  HcalDetId cell = i->id();
386  DetId detcell=(DetId)cell;
387  // check on cells to be ignored and dropped: (rof,20.Feb.09)
388  const HcalChannelStatus* mydigistatus=myqual->getValues(detcell.rawId());
389  if (mySeverity->dropChannel(mydigistatus->getValue() ) ) continue;
391  if (i->zsMarkAndPass()) continue;
392 
393  const HcalCalibrations& calibrations=conditions->getHcalCalibrations(cell);
394  const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
395  HcalCoderDb coder (*channelCoder, *shape);
396  rec->push_back(reco_.reconstruct(*i,coder,calibrations));
397 
398  // Set auxiliary flag
399  int auxflag=0;
400  for (int xx=firstauxTS_;xx<firstauxTS_+4 && xx<i->size();++xx)
401  auxflag+=(i->sample(xx).adc())<<(7*(xx-firstauxTS_)); // store the time slices in the first 28 bits of aux, a set of 4 7-bit adc values
402  // bits 28 and 29 are reserved for capid of the first time slice saved in aux
403  auxflag+=((i->sample(firstauxTS_).capid())<<28);
404  (rec->back()).setAux(auxflag);
405 
406  // Clear flags
407  (rec->back()).setFlags(0);
408  // This calls the code for setting the HF noise bit determined from digi shape
409  if (setNoiseFlags_) hfdigibit_->hfSetFlagFromDigi(rec->back(),*i,coder,calibrations);
414  if (correctTiming_)
415  HcalTimingCorrector::Correct(rec->back(), *i, favorite_capid);
416  } // for (i=digi->begin(); i!=digi->end(); i++) -- loop on all HF digis
417 
418  // The following flags require the full set of rechits
419  // These need to be set consecutively, so an energy check should be the first
420  // test performed on these hits (to minimize the loop time)
421  if (setNoiseFlags_)
422  {
423  // Step 1: Set PET flag (short fibers of |ieta|==29)
424  // Neighbor/partner channels that are flagged by Pulse Shape algorithm (HFDigiTime)
425  // won't be considered in these calculations
426  for (HFRecHitCollection::iterator i = rec->begin();i!=rec->end();++i)
427  {
428  int depth=i->id().depth();
429  int ieta=i->id().ieta();
430  // Short fibers and all channels at |ieta|=29 use PET settings in Algo 3
431  if (depth==2 || abs(ieta)==29 )
432  hfPET_->HFSetFlagFromPET(*i,*rec,myqual,mySeverity);
433  }
434 
435  // Step 2: Set S8S1 flag (short fibers or |ieta|==29)
436  for (HFRecHitCollection::iterator i = rec->begin();i!=rec->end();++i)
437  {
438  int depth=i->id().depth();
439  int ieta=i->id().ieta();
440  // Short fibers and all channels at |ieta|=29 use PET settings in Algo 3
441  if (depth==2 || abs(ieta)==29 )
442  hfS8S1_->HFSetFlagFromS9S1(*i,*rec,myqual,mySeverity);
443  }
444 
445  // Set 3: Set S9S1 flag (long fibers)
446  for (HFRecHitCollection::iterator i = rec->begin();i!=rec->end();++i)
447  {
448  int depth=i->id().depth();
449  int ieta=i->id().ieta();
450  // Short fibers and all channels at |ieta|=29 use PET settings in Algo 3
451  if (depth==1 && abs(ieta)!=29 )
452  hfS9S1_->HFSetFlagFromS9S1(*i,*rec,myqual, mySeverity);
453  }
454  }
455 
456  // return result
457  e.put(rec);
458  } else if (subdet_==HcalOther && subdetOther_==HcalCalibration) {
460  e.getByLabel(inputLabel_,digi);
461 
462  // create empty output
463  std::auto_ptr<HcalCalibRecHitCollection> rec(new HcalCalibRecHitCollection);
464  rec->reserve(digi->size());
465  // run the algorithm
467  for (i=digi->begin(); i!=digi->end(); i++) {
468  HcalCalibDetId cell = i->id();
469  DetId detcell=(DetId)cell;
470  // check on cells to be ignored and dropped: (rof,20.Feb.09)
471  const HcalChannelStatus* mydigistatus=myqual->getValues(detcell.rawId());
472  if (mySeverity->dropChannel(mydigistatus->getValue() ) ) continue;
474  if (i->zsMarkAndPass()) continue;
475 
476  const HcalCalibrations& calibrations=conditions->getHcalCalibrations(cell);
477  const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
478  HcalCoderDb coder (*channelCoder, *shape);
479  rec->push_back(reco_.reconstruct(*i,coder,calibrations));
480 
481  /*
482  // Flag setting not available for calibration rechits
483  // Set auxiliary flag
484  int auxflag=0;
485  for (int xx=firstauxTS_;xx<firstauxTS_+4 && xx<i->size();++xx)
486  auxflag+=(i->sample(xx).adc())<<(7*(xx-firstauxTS_)); // store the time slices in the first 28 bits of aux, a set of 4 7-bit adc values
487  // bits 28 and 29 are reserved for capid of the first time slice saved in aux
488  auxflag+=((i->sample(firstauxTS_).capid())<<28);
489  (rec->back()).setAux(auxflag);
490 
491  (rec->back()).setFlags(0); // Not yet implemented for HcalCalibRecHit
492  */
493  }
494  // return result
495  e.put(rec);
496  }
497  }
498 
499  delete myqual;
500 } // void HcalHitReconstructor::produce(...)
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
void hbheSetTimeFlagsFromDigi(HBHERecHitCollection *, std::vector< HBHEDataFrame >, std::vector< int >)
void setHFTimingTrustFlag(HFRecHit &rechit, const HFDataFrame &digi)
HcalADCSaturationFlag * saturationFlagSetter_
void hfSetFlagFromDigi(HFRecHit &hf, const HFDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calib)
std::vector< T >::const_iterator const_iterator
#define abs(x)
Definition: mlp_lapack.h:159
bool isRealData() const
Definition: EventBase.h:60
void resetTimeSamples(int firstSample, int samplesToAdd)
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
void resetTimeSamples(int firstSample, int samplesToAdd)
void HFSetFlagFromPET(HFRecHit &hf, HFRecHitCollection &rec, HcalChannelQuality *myqual, const HcalSeverityLevelComputer *mySeverity)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:84
RunNumber_t run() const
Definition: Event.h:66
HcalHFStatusBitFromDigis * hfdigibit_
int j
Definition: DBlmapReader.cc:9
bool dropChannel(const uint32_t &mystatus) const
void setSaturationFlag(HBHERecHit &rechit, const HBHEDataFrame &digi)
virtual void produce(edm::Event &e, const edm::EventSetup &c)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
HcalHitReconstructor(const edm::ParameterSet &ps)
tuple conf
Definition: dbtoconf.py:185
std::vector< T >::iterator iterator
int k[5][pyjets_maxn]
HcalHF_PETalgorithm * hfPET_
Definition: DetId.h:20
void HFSetFlagFromS9S1(HFRecHit &hf, HFRecHitCollection &rec, HcalChannelQuality *myqual, const HcalSeverityLevelComputer *mySeverity)
HcalHF_S9S1algorithm * hfS9S1_
HBHEPulseShapeFlagSetter * hbhePulseShapeFlagSetter_
static const int SubdetectorId
Definition: HcalZDCDetId.h:22
HBHERecHit reconstruct(const HBHEDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calibs) const
void SetTimingShapedFlags(HBHERecHit &hbhe)
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
HBHEStatusBitSetter * hbheFlagSetter_
HBHETimeProfileStatusBitSetter * hbheHSCPFlagSetter_
void SetFlagsFromDigi(HBHERecHit &hbhe, const HBHEDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calib)
HBHETimingShapedFlagSetter * hbheTimingShapedFlagSetter_
HcalHF_S9S1algorithm * hfS8S1_
HcalOtherSubdetector subdetOther_
static void Correct(HBHERecHit &rechit, const HBHEDataFrame &digi, int favorite_capid)
void SetPulseShapeFlags(HBHERecHit &hbhe, const HBHEDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calib)
tuple cout
Definition: gather_cfg.py:41
HFTimingTrustFlag * HFTimingTrustFlagSetter_
uint32_t getValue() const
const Item * getValues(DetId fId) const
void SetFlagsFromRecHits(HBHERecHitCollection &rec)
HcalSimpleRecAlgo reco_