CMS 3D CMS Logo

EcalUncalibRecHitWorkerGlobal.cc
Go to the documentation of this file.
2 
7 
10 
17  testbeamEEShape(EEShape(true)),
18  testbeamEBShape(EBShape(true)),
19  tokenSampleMask_(c.esConsumes<EcalSampleMask, EcalSampleMaskRcd>()),
23  // ratio method parameters
24  EBtimeFitParameters_ = ps.getParameter<std::vector<double>>("EBtimeFitParameters");
25  EEtimeFitParameters_ = ps.getParameter<std::vector<double>>("EEtimeFitParameters");
26  EBamplitudeFitParameters_ = ps.getParameter<std::vector<double>>("EBamplitudeFitParameters");
27  EEamplitudeFitParameters_ = ps.getParameter<std::vector<double>>("EEamplitudeFitParameters");
28  EBtimeFitLimits_.first = ps.getParameter<double>("EBtimeFitLimits_Lower");
29  EBtimeFitLimits_.second = ps.getParameter<double>("EBtimeFitLimits_Upper");
30  EEtimeFitLimits_.first = ps.getParameter<double>("EEtimeFitLimits_Lower");
31  EEtimeFitLimits_.second = ps.getParameter<double>("EEtimeFitLimits_Upper");
32  EBtimeConstantTerm_ = ps.getParameter<double>("EBtimeConstantTerm");
33  EBtimeNconst_ = ps.getParameter<double>("EBtimeNconst");
34  EEtimeConstantTerm_ = ps.getParameter<double>("EEtimeConstantTerm");
35  EEtimeNconst_ = ps.getParameter<double>("EEtimeNconst");
36  outOfTimeThreshG12pEB_ = ps.getParameter<double>("outOfTimeThresholdGain12pEB");
37  outOfTimeThreshG12mEB_ = ps.getParameter<double>("outOfTimeThresholdGain12mEB");
38  outOfTimeThreshG61pEB_ = ps.getParameter<double>("outOfTimeThresholdGain61pEB");
39  outOfTimeThreshG61mEB_ = ps.getParameter<double>("outOfTimeThresholdGain61mEB");
40  outOfTimeThreshG12pEE_ = ps.getParameter<double>("outOfTimeThresholdGain12pEE");
41  outOfTimeThreshG12mEE_ = ps.getParameter<double>("outOfTimeThresholdGain12mEE");
42  outOfTimeThreshG61pEE_ = ps.getParameter<double>("outOfTimeThresholdGain61pEE");
43  outOfTimeThreshG61mEE_ = ps.getParameter<double>("outOfTimeThresholdGain61mEE");
44  amplitudeThreshEB_ = ps.getParameter<double>("amplitudeThresholdEB");
45  amplitudeThreshEE_ = ps.getParameter<double>("amplitudeThresholdEE");
46 
47  // spike threshold
48  ebSpikeThresh_ = ps.getParameter<double>("ebSpikeThreshold");
49 
50  ebPulseShape_ = ps.getParameter<std::vector<double>>("ebPulseShape");
51  eePulseShape_ = ps.getParameter<std::vector<double>>("eePulseShape");
52 
53  // chi2 parameters
54  kPoorRecoFlagEB_ = ps.getParameter<bool>("kPoorRecoFlagEB");
55  kPoorRecoFlagEE_ = ps.getParameter<bool>("kPoorRecoFlagEE");
56 
57  chi2ThreshEB_ = ps.getParameter<double>("chi2ThreshEB_");
58  chi2ThreshEE_ = ps.getParameter<double>("chi2ThreshEE_");
59  EBchi2Parameters_ = ps.getParameter<std::vector<double>>("EBchi2Parameters");
60  EEchi2Parameters_ = ps.getParameter<std::vector<double>>("EEchi2Parameters");
61 }
62 
64  // common setup
67 
68  // for the weights method
71 
72  // which of the samples need be used
74 
75  // for the ratio method
76 
79 
80  // for the time correction methods
82 
83  // for the DB Ecal Pulse Sim Shape
86 }
87 
88 // check saturation: 5 samples with gainId = 0
89 template <class C>
91  //bool saturated_ = 0;
92  int cnt;
93  for (int j = 0; j < C::MAXSAMPLES - 5; ++j) {
94  cnt = 0;
95  for (int i = j; i < (j + 5) && i < C::MAXSAMPLES; ++i) {
96  if (dataFrame.sample(i).gainId() == 0)
97  ++cnt;
98  }
99  if (cnt == 5)
100  return j - 1; // the last unsaturated sample
101  }
102  return -1; // no saturation found
103 }
104 
115  const std::vector<float>& amplitudeBins,
116  const std::vector<float>& shiftBins) {
117  // computed initially in ns. Than turned in the BX's, as
118  // EcalUncalibratedRecHit need be.
119  double theCorrection = 0;
120 
121  // sanity check for arrays
122  if (amplitudeBins.empty()) {
123  edm::LogError("EcalRecHitError") << "timeCorrAmplitudeBins is empty, forcing no time bias corrections.";
124 
125  return 0;
126  }
127 
128  if (amplitudeBins.size() != shiftBins.size()) {
129  edm::LogError("EcalRecHitError") << "Size of timeCorrAmplitudeBins different from "
130  "timeCorrShiftBins. Forcing no time bias corrections. ";
131 
132  return 0;
133  }
134 
135  int myBin = -1;
136  for (int bin = 0; bin < (int)amplitudeBins.size(); bin++) {
137  if (ampli > amplitudeBins.at(bin)) {
138  myBin = bin;
139  } else {
140  break;
141  }
142  }
143 
144  if (myBin == -1) {
145  theCorrection = shiftBins.at(0);
146  } else if (myBin == ((int)(amplitudeBins.size() - 1))) {
147  theCorrection = shiftBins.at(myBin);
148  } else if (-1 < myBin && myBin < ((int)amplitudeBins.size() - 1)) {
149  // interpolate linearly between two assingned points
150  theCorrection = (shiftBins.at(myBin + 1) - shiftBins.at(myBin));
151  theCorrection *=
152  (((double)ampli) - amplitudeBins.at(myBin)) / (amplitudeBins.at(myBin + 1) - amplitudeBins.at(myBin));
153  theCorrection += shiftBins.at(myBin);
154  } else {
155  edm::LogError("EcalRecHitError") << "Assigning time correction impossible. Setting it to 0 ";
156  theCorrection = 0.;
157  }
158 
159  // convert ns into clocks
160  return theCorrection / 25.;
161 }
162 
166  DetId detid(itdg->id());
167 
168  const EcalSampleMask* sampleMask_ = sampleMaskHand_.product();
169 
170  // intelligence for recHit computation
171  EcalUncalibratedRecHit uncalibRecHit;
172 
173  const EcalPedestals::Item* aped = nullptr;
174  const EcalMGPAGainRatio* aGain = nullptr;
175  const EcalXtalGroupId* gid = nullptr;
176  float offsetTime = 0;
177 
178  if (detid.subdetId() == EcalEndcap) {
179  unsigned int hashedIndex = EEDetId(detid).hashedIndex();
180  aped = &peds_->endcap(hashedIndex);
181  aGain = &gains_->endcap(hashedIndex);
182  gid = &grps_->endcap(hashedIndex);
183  offsetTime = offtime_->getEEValue();
184  } else {
185  unsigned int hashedIndex = EBDetId(detid).hashedIndex();
186  aped = &peds_->barrel(hashedIndex);
187  aGain = &gains_->barrel(hashedIndex);
188  gid = &grps_->barrel(hashedIndex);
189  offsetTime = offtime_->getEBValue();
190  }
191 
192  pedVec[0] = aped->mean_x12;
193  pedVec[1] = aped->mean_x6;
194  pedVec[2] = aped->mean_x1;
195  pedRMSVec[0] = aped->rms_x12;
196  pedRMSVec[1] = aped->rms_x6;
197  pedRMSVec[2] = aped->rms_x1;
198  gainRatios[0] = 1.;
199  gainRatios[1] = aGain->gain12Over6();
200  gainRatios[2] = aGain->gain6Over1() * aGain->gain12Over6();
201 
202  // compute the right bin of the pulse shape using time calibration constants
204  EcalTimeCalibConstant itimeconst = 0;
205  if (it != itime_->end()) {
206  itimeconst = (*it);
207  } else {
208  edm::LogError("EcalRecHitError") << "No time intercalib const found for xtal " << detid.rawId()
209  << "! something wrong with EcalTimeCalibConstants in your DB? ";
210  }
211 
212  // === amplitude computation ===
213  int leadingSample = -1;
214  if (detid.subdetId() == EcalEndcap) {
215  leadingSample = ((EcalDataFrame)(*itdg)).lastUnsaturatedSample();
216  } else {
217  leadingSample = ((EcalDataFrame)(*itdg)).lastUnsaturatedSample();
218  }
219 
220  if (leadingSample == 4) { // saturation on the expected max sample
221  uncalibRecHit = EcalUncalibratedRecHit((*itdg).id(), 4095 * 12, 0, 0, 0);
223  // do not propagate the default chi2 = -1 value to the calib rechit (mapped to 64), set it to 0 when saturation
224  uncalibRecHit.setChi2(0);
225  } else if (leadingSample >= 0) { // saturation on other samples: cannot extrapolate from the fourth one
226  double pedestal = 0.;
227  double gainratio = 1.;
228  int gainId = ((EcalDataFrame)(*itdg)).sample(5).gainId();
229 
230  if (gainId == 0 || gainId == 3) {
231  pedestal = aped->mean_x1;
232  gainratio = aGain->gain6Over1() * aGain->gain12Over6();
233  } else if (gainId == 1) {
234  pedestal = aped->mean_x12;
235  gainratio = 1.;
236  } else if (gainId == 2) {
237  pedestal = aped->mean_x6;
238  gainratio = aGain->gain12Over6();
239  }
240  double amplitude = ((double)(((EcalDataFrame)(*itdg)).sample(5).adc()) - pedestal) * gainratio;
241  uncalibRecHit = EcalUncalibratedRecHit((*itdg).id(), amplitude, 0, 0, 0);
243  // do not propagate the default chi2 = -1 value to the calib rechit (mapped to 64), set it to 0 when saturation
244  uncalibRecHit.setChi2(0);
245  } else {
246  // weights method
247  EcalTBWeights::EcalTDCId tdcid(1);
248  EcalTBWeights::EcalTBWeightMap const& wgtsMap = wgts_->getMap();
249  EcalTBWeights::EcalTBWeightMap::const_iterator wit;
250  wit = wgtsMap.find(std::make_pair(*gid, tdcid));
251  if (wit == wgtsMap.end()) {
252  edm::LogError("EcalUncalibRecHitError")
253  << "No weights found for EcalGroupId: " << gid->id() << " and EcalTDCId: " << tdcid
254  << "\n skipping digi with id: " << detid.rawId();
255 
256  return false;
257  }
258  const EcalWeightSet& wset = wit->second; // this is the EcalWeightSet
259 
262 
263  weights[0] = &mat1;
264  weights[1] = &mat2;
265 
266  // get uncalibrated recHit from weights
267  if (detid.subdetId() == EcalEndcap) {
269  } else {
271  }
272 
273  // === time computation ===
274  // ratio method
275  float const clockToNsConstant = 25.;
276  if (detid.subdetId() == EcalEndcap) {
277  ratioMethod_endcap_.init(*itdg, *sampleMask_, pedVec, pedRMSVec, gainRatios);
281  double theTimeCorrectionEE = timeCorrection(
283 
284  uncalibRecHit.setJitter(crh.timeMax - 5 + theTimeCorrectionEE);
285  uncalibRecHit.setJitterError(
286  std::sqrt(pow(crh.timeError, 2) + std::pow(EEtimeConstantTerm_, 2) / std::pow(clockToNsConstant, 2)));
287  // consider flagging as kOutOfTime only if above noise
288  if (uncalibRecHit.amplitude() > pedRMSVec[0] * amplitudeThreshEE_) {
289  float outOfTimeThreshP = outOfTimeThreshG12pEE_;
290  float outOfTimeThreshM = outOfTimeThreshG12mEE_;
291  // determine if gain has switched away from gainId==1 (x12 gain)
292  // and determine cuts (number of 'sigmas') to ose for kOutOfTime
293  // >3k ADC is necessasry condition for gain switch to occur
294  if (uncalibRecHit.amplitude() > 3000.) {
295  for (int iSample = 0; iSample < EEDataFrame::MAXSAMPLES; iSample++) {
296  int GainId = ((EcalDataFrame)(*itdg)).sample(iSample).gainId();
297  if (GainId != 1) {
298  outOfTimeThreshP = outOfTimeThreshG61pEE_;
299  outOfTimeThreshM = outOfTimeThreshG61mEE_;
300  break;
301  }
302  }
303  }
304  float correctedTime = (crh.timeMax - 5) * clockToNsConstant + itimeconst + offsetTime;
305  float cterm = EEtimeConstantTerm_;
306  float sigmaped = pedRMSVec[0]; // approx for lower gains
307  float nterm = EEtimeNconst_ * sigmaped / uncalibRecHit.amplitude();
308  float sigmat = std::sqrt(nterm * nterm + cterm * cterm);
309  if ((correctedTime > sigmat * outOfTimeThreshP) || (correctedTime < (-1. * sigmat * outOfTimeThreshM))) {
311  }
312  }
313 
314  } else {
315  ratioMethod_barrel_.init(*itdg, *sampleMask_, pedVec, pedRMSVec, gainRatios);
320 
321  double theTimeCorrectionEB = timeCorrection(
323 
324  uncalibRecHit.setJitter(crh.timeMax - 5 + theTimeCorrectionEB);
325 
326  uncalibRecHit.setJitterError(
327  std::sqrt(std::pow(crh.timeError, 2) + std::pow(EBtimeConstantTerm_, 2) / std::pow(clockToNsConstant, 2)));
328  // consider flagging as kOutOfTime only if above noise
329  if (uncalibRecHit.amplitude() > pedRMSVec[0] * amplitudeThreshEB_) {
330  float outOfTimeThreshP = outOfTimeThreshG12pEB_;
331  float outOfTimeThreshM = outOfTimeThreshG12mEB_;
332  // determine if gain has switched away from gainId==1 (x12 gain)
333  // and determine cuts (number of 'sigmas') to ose for kOutOfTime
334  // >3k ADC is necessasry condition for gain switch to occur
335  if (uncalibRecHit.amplitude() > 3000.) {
336  for (int iSample = 0; iSample < EBDataFrame::MAXSAMPLES; iSample++) {
337  int GainId = ((EcalDataFrame)(*itdg)).sample(iSample).gainId();
338  if (GainId != 1) {
339  outOfTimeThreshP = outOfTimeThreshG61pEB_;
340  outOfTimeThreshM = outOfTimeThreshG61mEB_;
341  break;
342  }
343  }
344  }
345  float correctedTime = (crh.timeMax - 5) * clockToNsConstant + itimeconst + offsetTime;
346  float cterm = EBtimeConstantTerm_;
347  float sigmaped = pedRMSVec[0]; // approx for lower gains
348  float nterm = EBtimeNconst_ * sigmaped / uncalibRecHit.amplitude();
349  float sigmat = std::sqrt(nterm * nterm + cterm * cterm);
350  if ((correctedTime > sigmat * outOfTimeThreshP) || (correctedTime < (-1. * sigmat * outOfTimeThreshM))) {
352  }
353  }
354  }
355 
356  // === chi2express ===
357  if (detid.subdetId() == EcalEndcap) {
358  double amplitude = uncalibRecHit.amplitude();
359  double amplitudeOutOfTime = 0.;
360  double jitter = uncalibRecHit.jitter();
361 
362  EcalUncalibRecHitRecChi2Algo<EEDataFrame> chi2expressEE_(*itdg,
363  amplitude,
364  (itimeconst + offsetTime),
365  amplitudeOutOfTime,
366  jitter,
367  pedVec,
368  pedRMSVec,
369  gainRatios,
372  double chi2 = chi2expressEE_.chi2();
373  uncalibRecHit.setChi2(chi2);
374 
375  if (kPoorRecoFlagEE_) {
376  if (chi2 > chi2ThreshEE_) {
377  // first check if all samples are ok, if not don't use chi2 to flag
378  bool samplesok = true;
379  for (int sample = 0; sample < EcalDataFrame::MAXSAMPLES; ++sample) {
380  if (!sampleMask_->useSampleEE(sample)) {
381  samplesok = false;
382  break;
383  }
384  }
385  if (samplesok)
387  }
388  }
389 
390  } else {
391  double amplitude = uncalibRecHit.amplitude();
392  double amplitudeOutOfTime = 0.;
393  double jitter = uncalibRecHit.jitter();
394 
395  EcalUncalibRecHitRecChi2Algo<EBDataFrame> chi2expressEB_(*itdg,
396  amplitude,
397  (itimeconst + offsetTime),
398  amplitudeOutOfTime,
399  jitter,
400  pedVec,
401  pedRMSVec,
402  gainRatios,
405  double chi2 = chi2expressEB_.chi2();
406  uncalibRecHit.setChi2(chi2);
407 
408  if (kPoorRecoFlagEB_) {
409  if (chi2 > chi2ThreshEB_) {
410  // first check if all samples are ok, if not don't use chi2 to flag
411  bool samplesok = true;
412  for (int sample = 0; sample < EcalDataFrame::MAXSAMPLES; ++sample) {
413  if (!sampleMask_->useSampleEB(sample)) {
414  samplesok = false;
415  break;
416  }
417  }
418  if (samplesok)
420  }
421  }
422  }
423  }
424 
425  // set flags if gain switch has occurred
426  if (((EcalDataFrame)(*itdg)).hasSwitchToGain6())
428  if (((EcalDataFrame)(*itdg)).hasSwitchToGain1())
430 
431  // put the recHit in the collection
432  if (detid.subdetId() == EcalEndcap) {
433  result.push_back(uncalibRecHit);
434  } else {
435  result.push_back(uncalibRecHit);
436  }
437 
438  return true;
439 }
440 
443  psd.addNode(
444  edm::ParameterDescription<std::vector<double>>(
445  "eePulseShape", {5.2e-05, -5.26e-05, 6.66e-05, 0.1168, 0.7575, 1.0, 0.8876, 0.6732, 0.4741, 0.3194}, true) and
446  edm::ParameterDescription<std::vector<double>>(
447  "EBtimeFitParameters",
448  {-2.015452, 3.130702, -12.3473, 41.88921, -82.83944, 91.01147, -50.35761, 11.05621},
449  true) and
450  edm::ParameterDescription<double>("outOfTimeThresholdGain61pEB", 5, true) and
451  edm::ParameterDescription<double>("amplitudeThresholdEE", 10, true) and
452  edm::ParameterDescription<double>("EBtimeConstantTerm", 0.6, true) and
453  edm::ParameterDescription<double>("outOfTimeThresholdGain61pEE", 1000, true) and
454  edm::ParameterDescription<double>("ebSpikeThreshold", 1.042, true) and
455  edm::ParameterDescription<double>("EBtimeNconst", 28.5, true) and
456  edm::ParameterDescription<bool>("kPoorRecoFlagEB", true, true) and
457  edm::ParameterDescription<std::vector<double>>(
458  "ebPulseShape", {5.2e-05, -5.26e-05, 6.66e-05, 0.1168, 0.7575, 1.0, 0.8876, 0.6732, 0.4741, 0.3194}, true) and
459  edm::ParameterDescription<double>("EBtimeFitLimits_Lower", 0.2, true) and
460  edm::ParameterDescription<bool>("kPoorRecoFlagEE", false, true) and
461  edm::ParameterDescription<double>("chi2ThreshEB_", 36.0, true) and
462  edm::ParameterDescription<std::vector<double>>(
463  "EEtimeFitParameters",
464  {-2.390548, 3.553628, -17.62341, 67.67538, -133.213, 140.7432, -75.41106, 16.20277},
465  true) and
466  edm::ParameterDescription<double>("outOfTimeThresholdGain61mEE", 1000, true) and
467  edm::ParameterDescription<std::vector<double>>("EEchi2Parameters", {2.122, 0.022, 2.122, 0.022}, true) and
468  edm::ParameterDescription<double>("outOfTimeThresholdGain12mEE", 1000, true) and
469  edm::ParameterDescription<double>("outOfTimeThresholdGain12mEB", 5, true) and
470  edm::ParameterDescription<double>("EEtimeFitLimits_Upper", 1.4, true) and
471  edm::ParameterDescription<double>("EEtimeFitLimits_Lower", 0.2, true) and
472  edm::ParameterDescription<std::vector<double>>("EEamplitudeFitParameters", {1.89, 1.4}, true) and
473  edm::ParameterDescription<std::vector<double>>("EBamplitudeFitParameters", {1.138, 1.652}, true) and
474  edm::ParameterDescription<double>("amplitudeThresholdEB", 10, true) and
475  edm::ParameterDescription<double>("outOfTimeThresholdGain12pEE", 1000, true) and
476  edm::ParameterDescription<double>("outOfTimeThresholdGain12pEB", 5, true) and
477  edm::ParameterDescription<double>("EEtimeNconst", 31.8, true) and
478  edm::ParameterDescription<double>("outOfTimeThresholdGain61mEB", 5, true) and
479  edm::ParameterDescription<std::vector<double>>("EBchi2Parameters", {2.122, 0.022, 2.122, 0.022}, true) and
480  edm::ParameterDescription<double>("EEtimeConstantTerm", 1.0, true) and
481  edm::ParameterDescription<double>("chi2ThreshEE_", 95.0, true) and
482  edm::ParameterDescription<double>("EBtimeFitLimits_Upper", 1.4, true));
483 
484  return psd;
485 }
486 
493  "EcalUncalibRecHitWorkerGlobal");
EcalDataFrame::MAXSAMPLES
static constexpr int MAXSAMPLES
Definition: EcalDataFrame.h:48
ConfigurationDescriptions.h
EcalUncalibRecHitWorkerGlobal::isSaturated
int isSaturated(const C &digi)
Definition: EcalUncalibRecHitWorkerGlobal.cc:90
EcalUncalibratedRecHit::kHasSwitchToGain6
Definition: EcalUncalibratedRecHit.h:18
EcalUncalibRecHitRatioMethodAlgo::computeAmplitude
void computeAmplitude(std::vector< double > &amplitudeFitParameters)
Definition: EcalUncalibRecHitRatioMethodAlgo.h:527
EBDetId::hashedIndex
int hashedIndex() const
get a compact index for arrays
Definition: EBDetId.h:82
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
EcalUncalibratedRecHit::setChi2
void setChi2(float chi2)
Definition: EcalUncalibratedRecHit.h:44
EcalTimeOffsetConstantRcd
Definition: EcalTimeOffsetConstantRcd.h:5
EcalUncalibRecHitWorkerGlobal::grps_
edm::ESHandle< EcalWeightXtalGroups > grps_
Definition: EcalUncalibRecHitWorkerGlobal.h:75
EcalTBWeights::getMap
const EcalTBWeightMap & getMap() const
Definition: EcalTBWeights.h:28
EcalShapeBase::setEventSetup
void setEventSetup(const edm::EventSetup &evtSetup)
Definition: EcalShapeBase.cc:19
ecalLiteDTU::gainId
constexpr int gainId(sample_type sample)
get the gainId (2 bits)
Definition: EcalLiteDTUSample.h:14
mps_fire.i
i
Definition: mps_fire.py:428
CustomPhysics_cfi.amplitude
amplitude
Definition: CustomPhysics_cfi.py:12
EcalUncalibRecHitFillDescriptionWorkerFactory.h
EcalUncalibRecHitWorkerGlobal::tokenGrps_
edm::ESGetToken< EcalWeightXtalGroups, EcalWeightXtalGroupsRcd > tokenGrps_
Definition: EcalUncalibRecHitWorkerGlobal.h:73
MessageLogger.h
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG61pEE_
double outOfTimeThreshG61pEE_
Definition: EcalUncalibRecHitWorkerGlobal.h:109
edm::DataFrameContainer::const_iterator
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
Definition: DataFrameContainer.h:61
EcalUncalibRecHitWorkerGlobal::testbeamEEShape
EEShape testbeamEEShape
Definition: EcalUncalibRecHitWorkerGlobal.h:81
simplePhotonAnalyzer_cfi.sample
sample
Definition: simplePhotonAnalyzer_cfi.py:12
EcalUncalibRecHitWorkerGlobal::tokenItime_
edm::ESGetToken< EcalTimeCalibConstants, EcalTimeCalibConstantsRcd > tokenItime_
Definition: EcalUncalibRecHitWorkerGlobal.h:118
EcalUncalibRecHitWorkerGlobal::timeCorrBias_
edm::ESHandle< EcalTimeBiasCorrections > timeCorrBias_
Definition: EcalUncalibRecHitWorkerGlobal.h:116
EcalUncalibRecHitWorkerGlobal::set
void set(const edm::EventSetup &es) override
Definition: EcalUncalibRecHitWorkerGlobal.cc:63
EcalUncalibRecHitWorkerGlobal::tokenPeds_
edm::ESGetToken< EcalPedestals, EcalPedestalsRcd > tokenPeds_
Definition: EcalUncalibRecHitWorkerGlobal.h:62
EBShape
Definition: EBShape.h:6
EcalUncalibRecHitRecChi2Algo
Definition: EcalUncalibRecHitRecChi2Algo.h:24
EcalUncalibratedRecHit::amplitude
float amplitude() const
Definition: EcalUncalibratedRecHit.h:28
EBDetId
Definition: EBDetId.h:17
EcalUncalibRecHitWorkerGlobal::eePulseShape_
std::vector< double > eePulseShape_
Definition: EcalUncalibRecHitWorkerGlobal.h:123
EcalUncalibRecHitWorkerGlobal::tokenSampleMask_
edm::ESGetToken< EcalSampleMask, EcalSampleMaskRcd > tokenSampleMask_
Definition: EcalUncalibRecHitWorkerGlobal.h:85
EcalUncalibRecHitWorkerGlobal::timeCorrection
double timeCorrection(float ampli, const std::vector< float > &amplitudeBins, const std::vector< float > &shiftBins)
Definition: EcalUncalibRecHitWorkerGlobal.cc:114
EcalUncalibRecHitWorkerGlobal::chi2ThreshEE_
double chi2ThreshEE_
Definition: EcalUncalibRecHitWorkerGlobal.h:129
EcalSampleMask
Definition: EcalSampleMask.h:16
EcalTimeBiasCorrectionsRcd
Definition: EcalTimeBiasCorrectionsRcd.h:12
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
EcalTimeOffsetConstant::getEEValue
float getEEValue() const
Definition: EcalTimeOffsetConstant.h:21
EcalUncalibRecHitWorkerGlobal::offtime_
edm::ESHandle< EcalTimeOffsetConstant > offtime_
Definition: EcalUncalibRecHitWorkerGlobal.h:121
EcalUncalibRecHitWorkerGlobal::weightsMethod_barrel_
EcalUncalibRecHitRecWeightsAlgo< EBDataFrame > weightsMethod_barrel_
Definition: EcalUncalibRecHitWorkerGlobal.h:79
edm::SortedCollection
Definition: SortedCollection.h:49
EcalTimeOffsetConstant
Definition: EcalTimeOffsetConstant.h:13
EcalUncalibRecHitWorkerGlobal::testbeamEBShape
EBShape testbeamEBShape
Definition: EcalUncalibRecHitWorkerGlobal.h:82
EcalUncalibRecHitWorkerGlobal::EEchi2Parameters_
std::vector< double > EEchi2Parameters_
Definition: EcalUncalibRecHitWorkerGlobal.h:131
EcalTimeOffsetConstant::getEBValue
float getEBValue() const
Definition: EcalTimeOffsetConstant.h:20
EcalUncalibRecHitRatioMethodAlgo::getCalculatedRecHit
CalculatedRecHit getCalculatedRecHit()
Definition: EcalUncalibRecHitRatioMethodAlgo.h:75
EcalUncalibRecHitWorkerGlobal
Definition: EcalUncalibRecHitWorkerGlobal.h:44
EcalUncalibRecHitWorkerGlobal::tokenGains_
edm::ESGetToken< EcalGainRatios, EcalGainRatiosRcd > tokenGains_
Definition: EcalUncalibRecHitWorkerGlobal.h:63
hltPixelTracks_cff.chi2
chi2
Definition: hltPixelTracks_cff.py:25
EcalUncalibRecHitWorkerGlobal::pedRMSVec
double pedRMSVec[3]
Definition: EcalUncalibRecHitWorkerGlobal.h:59
EcalUncalibRecHitWorkerGlobal::gainRatios
double gainRatios[3]
Definition: EcalUncalibRecHitWorkerGlobal.h:60
EcalDataFrame
Definition: EcalDataFrame.h:16
EcalCondObjectContainer
Definition: EcalCondObjectContainer.h:13
EcalUncalibRecHitWorkerGlobal::kPoorRecoFlagEB_
bool kPoorRecoFlagEB_
Definition: EcalUncalibRecHitWorkerGlobal.h:126
EcalUncalibRecHitRatioMethodAlgo::computeTime
void computeTime(std::vector< double > &timeFitParameters, std::pair< double, double > &timeFitLimits, std::vector< double > &amplitudeFitParameters)
Definition: EcalUncalibRecHitRatioMethodAlgo.h:211
EcalXtalGroupId
Definition: EcalXtalGroupId.h:11
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG61mEB_
double outOfTimeThreshG61mEB_
Definition: EcalUncalibRecHitWorkerGlobal.h:106
EcalUncalibRecHitWorkerGlobal::ratioMethod_endcap_
EcalUncalibRecHitRatioMethodAlgo< EEDataFrame > ratioMethod_endcap_
Definition: EcalUncalibRecHitWorkerGlobal.h:97
EcalTimeBiasCorrections::EETimeCorrAmplitudeBins
std::vector< float > EETimeCorrAmplitudeBins
Definition: EcalTimeBiasCorrections.h:26
EcalTBWeightsRcd
Definition: EcalTBWeightsRcd.h:5
EcalTimeBiasCorrections::EETimeCorrShiftBins
std::vector< float > EETimeCorrShiftBins
Definition: EcalTimeBiasCorrections.h:27
EcalUncalibratedRecHit::setFlagBit
void setFlagBit(Flags flag)
Definition: EcalUncalibratedRecHit.cc:99
EcalUncalibRecHitWorkerGlobal::EEtimeConstantTerm_
double EEtimeConstantTerm_
Definition: EcalUncalibRecHitWorkerGlobal.h:101
EcalWeightSet::EcalWeightMatrix
math::Matrix< 3, 10 >::type EcalWeightMatrix
Definition: EcalWeightSet.h:19
DetId
Definition: DetId.h:17
MakerMacros.h
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG12pEE_
double outOfTimeThreshG12pEE_
Definition: EcalUncalibRecHitWorkerGlobal.h:107
EcalUncalibRecHitWorkerGlobal::EBtimeFitParameters_
std::vector< double > EBtimeFitParameters_
Definition: EcalUncalibRecHitWorkerGlobal.h:89
EcalUncalibRecHitWorkerGlobal::EBtimeConstantTerm_
double EBtimeConstantTerm_
Definition: EcalUncalibRecHitWorkerGlobal.h:99
EcalUncalibratedRecHit::kPoorReco
Definition: EcalUncalibratedRecHit.h:14
EcalSampleMaskRcd
Definition: EcalSampleMaskRcd.h:5
EcalUncalibratedRecHit::kOutOfTime
Definition: EcalUncalibratedRecHit.h:16
EcalUncalibRecHitWorkerRunOneDigiBase
Definition: EcalUncalibRecHitWorkerRunOneDigiBase.h:10
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
EcalTimeBiasCorrections::EBTimeCorrAmplitudeBins
std::vector< float > EBTimeCorrAmplitudeBins
Definition: EcalTimeBiasCorrections.h:23
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG12mEE_
double outOfTimeThreshG12mEE_
Definition: EcalUncalibRecHitWorkerGlobal.h:108
EcalUncalibRecHitWorkerGlobal::tokenTimeCorrBias_
edm::ESGetToken< EcalTimeBiasCorrections, EcalTimeBiasCorrectionsRcd > tokenTimeCorrBias_
Definition: EcalUncalibRecHitWorkerGlobal.h:115
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG61pEB_
double outOfTimeThreshG61pEB_
Definition: EcalUncalibRecHitWorkerGlobal.h:105
EcalUncalibRecHitWorkerGlobal::EBtimeNconst_
double EBtimeNconst_
Definition: EcalUncalibRecHitWorkerGlobal.h:100
EcalUncalibRecHitWorkerGlobal::ebPulseShape_
std::vector< double > ebPulseShape_
Definition: EcalUncalibRecHitWorkerGlobal.h:122
ParameterSetDescription.h
EcalWeightSet::getWeightsAfterGainSwitch
EcalWeightMatrix & getWeightsAfterGainSwitch()
Definition: EcalWeightSet.h:27
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
EEShape
Definition: EEShape.h:6
EcalUncalibratedRecHit::setJitter
void setJitter(float jitter)
Definition: EcalUncalibratedRecHit.h:43
EcalTimeBiasCorrections
Definition: EcalTimeBiasCorrections.h:16
EcalMGPAGainRatio::gain12Over6
float gain12Over6() const
Definition: EcalMGPAGainRatio.h:19
EEDetId
Definition: EEDetId.h:14
EcalGainRatiosRcd
Definition: EcalGainRatiosRcd.h:5
EcalUncalibRecHitWorkerGlobal::run
bool run(const edm::Event &evt, const EcalDigiCollection::const_iterator &digi, EcalUncalibratedRecHitCollection &result) override
Definition: EcalUncalibRecHitWorkerGlobal.cc:163
EcalUncalibRecHitRatioMethodAlgo
Definition: EcalUncalibRecHitRatioMethodAlgo.h:32
EcalEndcap
Definition: EcalSubdetector.h:10
EcalWeightSet::getWeightsBeforeGainSwitch
EcalWeightMatrix & getWeightsBeforeGainSwitch()
Definition: EcalWeightSet.h:26
funct::true
true
Definition: Factorize.h:173
EcalTBWeights::EcalTDCId
int EcalTDCId
Definition: EcalTBWeights.h:17
edm::ParameterSet
Definition: ParameterSet.h:47
EcalUncalibRecHitWorkerGlobal::chi2ThreshEB_
double chi2ThreshEB_
Definition: EcalUncalibRecHitWorkerGlobal.h:128
EcalUncalibRecHitWorkerGlobal::amplitudeThreshEB_
double amplitudeThreshEB_
Definition: EcalUncalibRecHitWorkerGlobal.h:111
Event.h
EcalUncalibRecHitWorkerGlobal.h
EcalCondObjectContainer::Item
T Item
Definition: EcalCondObjectContainer.h:15
EcalUncalibRecHitWorkerGlobal::ratioMethod_barrel_
EcalUncalibRecHitRatioMethodAlgo< EBDataFrame > ratioMethod_barrel_
Definition: EcalUncalibRecHitWorkerGlobal.h:96
edmplugin::PluginFactory
Definition: PluginFactory.h:34
EcalUncalibRecHitWorkerGlobal::EBamplitudeFitParameters_
std::vector< double > EBamplitudeFitParameters_
Definition: EcalUncalibRecHitWorkerGlobal.h:91
EEDetId::hashedIndex
int hashedIndex() const
Definition: EEDetId.h:183
EcalUncalibRecHitWorkerGlobal::EBchi2Parameters_
std::vector< double > EBchi2Parameters_
Definition: EcalUncalibRecHitWorkerGlobal.h:130
EcalUncalibRecHitWorkerGlobal::EcalUncalibRecHitWorkerGlobal
EcalUncalibRecHitWorkerGlobal()
Definition: EcalUncalibRecHitWorkerGlobal.h:47
createfilelist.int
int
Definition: createfilelist.py:10
EcalUncalibRecHitWorkerGlobal::weights
const EcalWeightSet::EcalWeightMatrix * weights[2]
Definition: EcalUncalibRecHitWorkerGlobal.h:77
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG61mEE_
double outOfTimeThreshG61mEE_
Definition: EcalUncalibRecHitWorkerGlobal.h:110
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
EcalUncalibRecHitWorkerGlobal::gains_
edm::ESHandle< EcalGainRatios > gains_
Definition: EcalUncalibRecHitWorkerGlobal.h:65
EcalCondDBWriter_cfi.pedestal
pedestal
Definition: EcalCondDBWriter_cfi.py:49
edm::EventSetup
Definition: EventSetup.h:58
edm::ParameterSetDescription::addNode
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
Definition: ParameterSetDescription.cc:41
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
EcalUncalibRecHitWorkerGlobal::peds_
edm::ESHandle< EcalPedestals > peds_
Definition: EcalUncalibRecHitWorkerGlobal.h:64
EcalTBWeights::EcalTBWeightMap
std::map< std::pair< EcalXtalGroupId, EcalTDCId >, EcalWeightSet > EcalTBWeightMap
Definition: EcalTBWeights.h:18
EcalTimeCalibConstantsRcd
Definition: EcalTimeCalibConstantsRcd.h:5
newFWLiteAna.bin
bin
Definition: newFWLiteAna.py:161
EcalWeightSet
Definition: EcalWeightSet.h:17
EcalUncalibratedRecHit
Definition: EcalUncalibratedRecHit.h:8
EcalUncalibRecHitRatioMethodAlgo::init
void init(const C &dataFrame, const EcalSampleMask &sampleMask, const double *pedestals, const double *pedestalRMSes, const double *gainRatios)
Definition: EcalUncalibRecHitRatioMethodAlgo.h:96
EcalUncalibRecHitWorkerGlobal::EBtimeFitLimits_
std::pair< double, double > EBtimeFitLimits_
Definition: EcalUncalibRecHitWorkerGlobal.h:93
EcalUncalibRecHitWorkerFactory.h
EcalUncalibratedRecHit::setJitterError
void setJitterError(float jitterErr)
Definition: EcalUncalibratedRecHit.cc:45
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG12mEB_
double outOfTimeThreshG12mEB_
Definition: EcalUncalibRecHitWorkerGlobal.h:104
EcalUncalibRecHitWorkerGlobal::tokenOfftime_
edm::ESGetToken< EcalTimeOffsetConstant, EcalTimeOffsetConstantRcd > tokenOfftime_
Definition: EcalUncalibRecHitWorkerGlobal.h:119
gen::C
C
Definition: PomwigHadronizer.cc:78
EcalMGPAGainRatio::gain6Over1
float gain6Over1() const
Definition: EcalMGPAGainRatio.h:20
EcalUncalibRecHitWorkerGlobal::wgts_
edm::ESHandle< EcalTBWeights > wgts_
Definition: EcalUncalibRecHitWorkerGlobal.h:76
EcalUncalibRecHitRecWeightsAlgo::makeRecHit
virtual EcalUncalibratedRecHit makeRecHit(const C &dataFrame, const double *pedestals, const double *pedestalsRMS, const double *gainRatios, const EcalWeightSet::EcalWeightMatrix **weights, const EcalShapeBase &testbeamPulseShape)
Compute parameters.
Definition: EcalUncalibRecHitRecWeightsAlgo.h:30
EventSetup.h
EcalUncalibRecHitWorkerGlobal::getAlgoDescription
edm::ParameterSetDescription getAlgoDescription() override
Definition: EcalUncalibRecHitWorkerGlobal.cc:441
EcalUncalibratedRecHit::kSaturated
Definition: EcalUncalibratedRecHit.h:15
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
EcalUncalibRecHitWorkerGlobal::sampleMaskHand_
edm::ESHandle< EcalSampleMask > sampleMaskHand_
Definition: EcalUncalibRecHitWorkerGlobal.h:86
EcalUncalibRecHitRatioMethodAlgo::fixMGPAslew
bool fixMGPAslew(const C &dataFrame)
Definition: EcalUncalibRecHitRatioMethodAlgo.h:179
EcalXtalGroupId::id
unsigned int id() const
Definition: EcalXtalGroupId.h:22
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
EcalCondObjectContainer::const_iterator
std::vector< Item >::const_iterator const_iterator
Definition: EcalCondObjectContainer.h:19
EcalUncalibRecHitWorkerGlobal::amplitudeThreshEE_
double amplitudeThreshEE_
Definition: EcalUncalibRecHitWorkerGlobal.h:112
EcalUncalibRecHitWorkerGlobal::kPoorRecoFlagEE_
bool kPoorRecoFlagEE_
Definition: EcalUncalibRecHitWorkerGlobal.h:127
mps_fire.result
result
Definition: mps_fire.py:311
EcalUncalibratedRecHit::jitter
float jitter() const
Definition: EcalUncalibratedRecHit.h:31
EcalUncalibRecHitWorkerGlobal::EEtimeFitParameters_
std::vector< double > EEtimeFitParameters_
Definition: EcalUncalibRecHitWorkerGlobal.h:90
EcalUncalibRecHitWorkerGlobal::pedVec
double pedVec[3]
Definition: EcalUncalibRecHitWorkerGlobal.h:58
EcalUncalibRecHitWorkerGlobal::outOfTimeThreshG12pEB_
double outOfTimeThreshG12pEB_
Definition: EcalUncalibRecHitWorkerGlobal.h:103
EcalWeightXtalGroupsRcd
Definition: EcalWeightXtalGroupsRcd.h:5
ParameterSet.h
EcalUncalibRecHitRecChi2Algo::chi2
virtual double chi2()
Definition: EcalUncalibRecHitRecChi2Algo.h:41
EcalUncalibRecHitWorkerGlobal::itime_
edm::ESHandle< EcalTimeCalibConstants > itime_
Definition: EcalUncalibRecHitWorkerGlobal.h:120
EcalUncalibRecHitWorkerGlobal::tokenWgts_
edm::ESGetToken< EcalTBWeights, EcalTBWeightsRcd > tokenWgts_
Definition: EcalUncalibRecHitWorkerGlobal.h:74
EcalPedestalsRcd
Definition: EcalPedestalsRcd.h:5
EcalTimeBiasCorrections::EBTimeCorrShiftBins
std::vector< float > EBTimeCorrShiftBins
Definition: EcalTimeBiasCorrections.h:24
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
EcalUncalibratedRecHit::kHasSwitchToGain1
Definition: EcalUncalibratedRecHit.h:19
EcalUncalibRecHitWorkerGlobal::EEtimeNconst_
double EEtimeNconst_
Definition: EcalUncalibRecHitWorkerGlobal.h:102
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::Event
Definition: Event.h:73
EcalUncalibRecHitWorkerGlobal::EEamplitudeFitParameters_
std::vector< double > EEamplitudeFitParameters_
Definition: EcalUncalibRecHitWorkerGlobal.h:92
ecalpyutils::hashedIndex
int hashedIndex(int ieta, int iphi)
Definition: EcalPyUtils.cc:38
edm::ParameterDescription
Definition: ParameterDescription.h:110
EcalUncalibRecHitWorkerGlobal::EEtimeFitLimits_
std::pair< double, double > EEtimeFitLimits_
Definition: EcalUncalibRecHitWorkerGlobal.h:94
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
EcalUncalibRecHitWorkerGlobal::ebSpikeThresh_
double ebSpikeThresh_
Definition: EcalUncalibRecHitWorkerGlobal.h:113
EcalTimeCalibConstant
float EcalTimeCalibConstant
Definition: EcalTimeCalibConstants.h:10
EcalTBWeights
Definition: EcalTBWeights.h:15
EcalMGPAGainRatio
Definition: EcalMGPAGainRatio.h:13
EcalUncalibRecHitWorkerGlobal::weightsMethod_endcap_
EcalUncalibRecHitRecWeightsAlgo< EEDataFrame > weightsMethod_endcap_
Definition: EcalUncalibRecHitWorkerGlobal.h:80