CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Attributes
EGRegressionModifierV2 Class Reference
Inheritance diagram for EGRegressionModifierV2:
ModifyObjectValueBase

Classes

struct  CondNames
 

Public Member Functions

 EGRegressionModifierV2 (const edm::ParameterSet &conf, edm::ConsumesCollector &cc)
 
void modifyObject (pat::Electron &ele) const final
 
void modifyObject (pat::Photon &pho) const final
 
void modifyObject (reco::GsfElectron &) const final
 
void modifyObject (reco::Photon &) const final
 
void setEvent (const edm::Event &) final
 
void setEventContent (const edm::EventSetup &) final
 
- Public Member Functions inherited from ModifyObjectValueBase
virtual void modifyObject (pat::Jet &) const
 
virtual void modifyObject (pat::Muon &) const
 
virtual void modifyObject (pat::Tau &) const
 
virtual void modifyObject (reco::BaseTau &) const
 
virtual void modifyObject (reco::Jet &) const
 
virtual void modifyObject (reco::Muon &) const
 
 ModifyObjectValueBase (const edm::ParameterSet &conf)
 
const std::string & name () const
 
virtual ~ModifyObjectValueBase ()
 

Private Attributes

edm::ESHandle< CaloGeometrycaloGeometry_
 
CondNames eleCondNames_
 
std::vector< const GBRForestD * > eleForestsMean_
 
std::vector< const GBRForestD * > eleForestsSigma_
 
const double eOverPEcalTrkThr_
 
const double epDiffSigEcalTrackThr_
 
const double epSigEcalTrackThr_
 
const bool forceHighEnergyEcalTrainingIfSaturated_
 
const double highEnergyEcalTrackThr_
 
const double lowEnergyEcalOnlyThr_
 
const double lowEnergyEcalTrackThr_
 
CondNames phoCondNames_
 
std::vector< const GBRForestD * > phoForestsMean_
 
std::vector< const GBRForestD * > phoForestsSigma_
 
edm::EDGetTokenT< double > rhoToken_
 
float rhoValue_
 

Detailed Description

Definition at line 16 of file EGRegressionModifierV2.cc.

Constructor & Destructor Documentation

◆ EGRegressionModifierV2()

EGRegressionModifierV2::EGRegressionModifierV2 ( const edm::ParameterSet conf,
edm::ConsumesCollector cc 
)

Definition at line 59 of file EGRegressionModifierV2.cc.

60  : ModifyObjectValueBase(conf),
61  rhoToken_(cc.consumes<double>(conf.getParameter<edm::InputTag>("rhoCollection"))),
62  lowEnergyEcalOnlyThr_(conf.getParameter<double>("lowEnergy_ECALonlyThr")),
63  lowEnergyEcalTrackThr_(conf.getParameter<double>("lowEnergy_ECALTRKThr")),
64  highEnergyEcalTrackThr_(conf.getParameter<double>("highEnergy_ECALTRKThr")),
65  eOverPEcalTrkThr_(conf.getParameter<double>("eOverP_ECALTRKThr")),
66  epDiffSigEcalTrackThr_(conf.getParameter<double>("epDiffSig_ECALTRKThr")),
67  epSigEcalTrackThr_(conf.getParameter<double>("epSig_ECALTRKThr")),
68  forceHighEnergyEcalTrainingIfSaturated_(conf.getParameter<bool>("forceHighEnergyEcalTrainingIfSaturated")) {
69  const edm::ParameterSet& electrons = conf.getParameter<edm::ParameterSet>("electron_config");
70  eleCondNames_ = CondNames{
71  .mean = electrons.getParameter<std::vector<std::string> >("regressionKey"),
72  .sigma = electrons.getParameter<std::vector<std::string> >("uncertaintyKey"),
73  };
74 
75  unsigned int encor = eleCondNames_.mean.size();
76  eleForestsMean_.reserve(2 * encor);
77  eleForestsSigma_.reserve(2 * encor);
78 
79  const edm::ParameterSet& photons = conf.getParameter<edm::ParameterSet>("photon_config");
80  phoCondNames_ = CondNames{
81  .mean = photons.getParameter<std::vector<std::string> >("regressionKey"),
82  .sigma = photons.getParameter<std::vector<std::string> >("uncertaintyKey"),
83  };
84 
85  unsigned int ncor = phoCondNames_.mean.size();
86  phoForestsMean_.reserve(ncor);
87  phoForestsSigma_.reserve(ncor);
88 }

References eleCondNames_, pwdgSkimBPark_cfi::electrons, eleForestsMean_, eleForestsSigma_, edm::ParameterSet::getParameter(), EGRegressionModifierV2::CondNames::mean, phoCondNames_, phoForestsMean_, phoForestsSigma_, and BPHMonitor_cfi::photons.

Member Function Documentation

◆ modifyObject() [1/4]

void EGRegressionModifierV2::modifyObject ( pat::Electron ele) const
inlinefinalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 27 of file EGRegressionModifierV2.cc.

27 { modifyObject(static_cast<reco::GsfElectron&>(ele)); }

References modifyObject().

Referenced by modifyObject().

◆ modifyObject() [2/4]

void EGRegressionModifierV2::modifyObject ( pat::Photon pho) const
inlinefinalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 28 of file EGRegressionModifierV2.cc.

28 { modifyObject(static_cast<reco::Photon&>(pho)); }

References modifyObject().

Referenced by modifyObject().

◆ modifyObject() [3/4]

void EGRegressionModifierV2::modifyObject ( reco::GsfElectron ele) const
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 106 of file EGRegressionModifierV2.cc.

106  {
107  // regression calculation needs no additional valuemaps
108 
109  const reco::SuperClusterRef& superClus = ele.superCluster();
110  const edm::Ptr<reco::CaloCluster>& seed = superClus->seed();
111 
112  // skip HGCAL for now
113  if (EcalTools::isHGCalDet(seed->seed().det()))
114  return;
115 
116  const int numberOfClusters = superClus->clusters().size();
117  const bool missing_clusters = !superClus->clusters()[numberOfClusters - 1].isAvailable();
118  if (missing_clusters)
119  return; // do not apply corrections in case of missing info (slimmed MiniAOD electrons)
120 
121  //check if fbrem is filled as its needed for E/p combination so abort if its set to the default value
122  //this will be the case for <5 (or current cuts) for miniAOD electrons
124  return;
125 
126  const bool isEB = ele.isEB();
127 
128  std::array<float, 32> eval;
129  const double rawEnergy = superClus->rawEnergy();
130  const double raw_es_energy = superClus->preshowerEnergy();
131  const auto& full5x5_ess = ele.full5x5_showerShape();
132 
133  float e5x5Inverse = full5x5_ess.e5x5 != 0. ? vdt::fast_inv(full5x5_ess.e5x5) : 0.;
134 
135  eval[0] = rawEnergy;
136  eval[1] = superClus->etaWidth();
137  eval[2] = superClus->phiWidth();
138  eval[3] = superClus->seed()->energy() / rawEnergy;
139  eval[4] = full5x5_ess.e5x5 / rawEnergy;
140  eval[5] = ele.hcalOverEcalBc();
141  eval[6] = rhoValue_;
142  eval[7] = seed->eta() - superClus->position().Eta();
143  eval[8] = reco::deltaPhi(seed->phi(), superClus->position().Phi());
144  eval[9] = full5x5_ess.r9;
145  eval[10] = full5x5_ess.sigmaIetaIeta;
146  eval[11] = full5x5_ess.sigmaIetaIphi;
147  eval[12] = full5x5_ess.sigmaIphiIphi;
148  eval[13] = full5x5_ess.eMax * e5x5Inverse;
149  eval[14] = full5x5_ess.e2nd * e5x5Inverse;
150  eval[15] = full5x5_ess.eTop * e5x5Inverse;
151  eval[16] = full5x5_ess.eBottom * e5x5Inverse;
152  eval[17] = full5x5_ess.eLeft * e5x5Inverse;
153  eval[18] = full5x5_ess.eRight * e5x5Inverse;
154  eval[19] = full5x5_ess.e2x5Max * e5x5Inverse;
155  eval[20] = full5x5_ess.e2x5Left * e5x5Inverse;
156  eval[21] = full5x5_ess.e2x5Right * e5x5Inverse;
157  eval[22] = full5x5_ess.e2x5Top * e5x5Inverse;
158  eval[23] = full5x5_ess.e2x5Bottom * e5x5Inverse;
159  eval[24] = ele.nSaturatedXtals();
160  eval[25] = std::max(0, numberOfClusters);
161 
162  // calculate coordinate variables
163  if (isEB) {
164  float dummy;
165  int ieta;
166  int iphi;
168  eval[26] = ieta;
169  eval[27] = iphi;
170  int signieta = ieta > 0 ? +1 : -1;
171  eval[28] = (ieta - signieta) % 5;
172  eval[29] = (iphi - 1) % 2;
173  eval[30] = (abs(ieta) <= 25) * ((ieta - signieta)) + (abs(ieta) > 25) * ((ieta - 26 * signieta) % 20);
174  eval[31] = (iphi - 1) % 20;
175 
176  } else {
177  float dummy;
178  int ix;
179  int iy;
181  eval[26] = ix;
182  eval[27] = iy;
183  eval[28] = raw_es_energy / rawEnergy;
184  }
185 
186  //magic numbers for MINUIT-like transformation of BDT output onto limited range
187  //(These should be stored inside the conditions object in the future as well)
188  constexpr double meanlimlow = -1.0;
189  constexpr double meanlimhigh = 3.0;
190  constexpr double meanoffset = meanlimlow + 0.5 * (meanlimhigh - meanlimlow);
191  constexpr double meanscale = 0.5 * (meanlimhigh - meanlimlow);
192 
193  constexpr double sigmalimlow = 0.0002;
194  constexpr double sigmalimhigh = 0.5;
195  constexpr double sigmaoffset = sigmalimlow + 0.5 * (sigmalimhigh - sigmalimlow);
196  constexpr double sigmascale = 0.5 * (sigmalimhigh - sigmalimlow);
197 
198  size_t coridx = 0;
199  float rawPt = rawEnergy * superClus->position().rho() / superClus->position().r();
200  bool isSaturated = ele.nSaturatedXtals() != 0;
201 
203  if (isEB)
204  coridx = 1;
205  else
206  coridx = 3;
207  } else {
208  if (isEB)
209  coridx = 0;
210  else
211  coridx = 2;
212  }
213 
214  //these are the actual BDT responses
215  double rawmean = eleForestsMean_[coridx]->GetResponse(eval.data());
216  double rawsigma = eleForestsSigma_[coridx]->GetResponse(eval.data());
217 
218  //apply transformation to limited output range (matching the training)
219  double mean = meanoffset + meanscale * vdt::fast_sin(rawmean);
220  double sigma = sigmaoffset + sigmascale * vdt::fast_sin(rawsigma);
221 
222  // Correct the energy. A negative energy means that the correction went
223  // outside the boundaries of the training. In this case uses raw.
224  // The resolution estimation, on the other hand should be ok.
225  if (mean < 0.)
226  mean = 1.0;
227 
228  const double ecor = mean * (rawEnergy + raw_es_energy);
229  const double sigmacor = sigma * ecor;
230 
231  ele.setCorrectedEcalEnergy(ecor);
232  ele.setCorrectedEcalEnergyError(sigmacor);
233 
234  double combinedEnergy = ecor;
235  double combinedEnergyError = sigmacor;
236 
237  auto el_track = ele.gsfTrack();
238  const float trkMomentum = el_track->pMode();
239  const float trkEta = el_track->etaMode();
240  const float trkPhi = el_track->phiMode();
241  const float trkMomentumError = std::abs(el_track->qoverpModeError()) * trkMomentum * trkMomentum;
242 
243  const float eOverP = (rawEnergy + raw_es_energy) * mean / trkMomentum;
244  const float fbrem = ele.fbrem();
245 
246  // E-p combination
247  if (ecor < highEnergyEcalTrackThr_ && eOverP > eOverPEcalTrkThr_ &&
248  std::abs(ecor - trkMomentum) <
249  epDiffSigEcalTrackThr_ * std::sqrt(trkMomentumError * trkMomentumError + sigmacor * sigmacor) &&
250  trkMomentumError < epSigEcalTrackThr_ * trkMomentum) {
251  rawPt = ecor / cosh(trkEta);
252  if (isEB && rawPt < lowEnergyEcalTrackThr_)
253  coridx = 4;
254  else if (isEB && rawPt >= lowEnergyEcalTrackThr_)
255  coridx = 5;
256  else if (!isEB && rawPt < lowEnergyEcalTrackThr_)
257  coridx = 6;
258  else if (!isEB && rawPt >= lowEnergyEcalTrackThr_)
259  coridx = 7;
260 
261  eval[0] = ecor;
262  eval[1] = sigma / mean;
263  eval[2] = trkMomentumError / trkMomentum;
264  eval[3] = eOverP;
265  eval[4] = ele.ecalDrivenSeed();
266  eval[5] = full5x5_ess.r9;
267  eval[6] = fbrem;
268  eval[7] = trkEta;
269  eval[8] = trkPhi;
270 
271  float ecalEnergyVar = (rawEnergy + raw_es_energy) * sigma;
272  float rawcombNormalization = (trkMomentumError * trkMomentumError + ecalEnergyVar * ecalEnergyVar);
273  float rawcomb = (ecor * trkMomentumError * trkMomentumError + trkMomentum * ecalEnergyVar * ecalEnergyVar) /
274  rawcombNormalization;
275 
276  //these are the actual BDT responses
277  double rawmean_trk = eleForestsMean_[coridx]->GetResponse(eval.data());
278  double rawsigma_trk = eleForestsSigma_[coridx]->GetResponse(eval.data());
279 
280  //apply transformation to limited output range (matching the training)
281  double mean_trk = meanoffset + meanscale * vdt::fast_sin(rawmean_trk);
282  double sigma_trk = sigmaoffset + sigmascale * vdt::fast_sin(rawsigma_trk);
283 
284  // Final correction
285  // A negative energy means that the correction went
286  // outside the boundaries of the training. In this case uses raw.
287  // The resolution estimation, on the other hand should be ok.
288  if (mean_trk < 0.)
289  mean_trk = 1.0;
290 
291  combinedEnergy = mean_trk * rawcomb;
292  combinedEnergyError = sigma_trk * rawcomb;
293  }
294 
295  math::XYZTLorentzVector oldFourMomentum = ele.p4();
296  math::XYZTLorentzVector newFourMomentum(oldFourMomentum.x() * combinedEnergy / oldFourMomentum.t(),
297  oldFourMomentum.y() * combinedEnergy / oldFourMomentum.t(),
298  oldFourMomentum.z() * combinedEnergy / oldFourMomentum.t(),
299  combinedEnergy);
300 
301  ele.correctMomentum(newFourMomentum, ele.trackMomentumError(), combinedEnergyError);
302 }

References funct::abs(), caloGeometry_, reco::GsfElectron::correctMomentum(), reco::deltaPhi(), reco::GsfElectron::ShowerShape::e5x5, reco::GsfElectron::ecalDrivenSeed(), eleForestsMean_, eleForestsSigma_, EgHLTOffHistBins_cfi::eOverP, eOverPEcalTrkThr_, epDiffSigEcalTrackThr_, epSigEcalTrackThr_, reco::GsfElectron::fbrem(), forceHighEnergyEcalTrainingIfSaturated_, reco::GsfElectron::full5x5_showerShape(), reco::GsfElectron::gsfTrack(), reco::GsfElectron::hcalOverEcalBc(), LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, edm::Ref< C, T, F >::isAvailable(), reco::GsfElectron::isEB(), EcalTools::isHGCalDet(), CastorSimpleRecAlgoImpl::isSaturated(), egammaTools::localEcalClusterCoordsEB(), egammaTools::localEcalClusterCoordsEE(), lowEnergyEcalOnlyThr_, lowEnergyEcalTrackThr_, SiStripPI::max, SiStripPI::mean, reco::GsfElectron::nSaturatedXtals(), reco::GsfElectron::p4(), jets_cff::rawPt, rhoValue_, SurveyInfoScenario_cff::seed, reco::GsfElectron::setCorrectedEcalEnergy(), reco::GsfElectron::setCorrectedEcalEnergyError(), mathSSE::sqrt(), reco::GsfElectron::superCluster(), reco::GsfElectron::ClassificationVariables::trackFbrem, and reco::GsfElectron::trackMomentumError().

◆ modifyObject() [4/4]

void EGRegressionModifierV2::modifyObject ( reco::Photon pho) const
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 304 of file EGRegressionModifierV2.cc.

304  {
305  // regression calculation needs no additional valuemaps
306 
307  const reco::SuperClusterRef& superClus = pho.superCluster();
308  const edm::Ptr<reco::CaloCluster>& seed = superClus->seed();
309 
310  // skip HGCAL for now
311  if (EcalTools::isHGCalDet(seed->seed().det()))
312  return;
313 
314  const int numberOfClusters = superClus->clusters().size();
315  const bool missing_clusters = !superClus->clusters()[numberOfClusters - 1].isAvailable();
316  if (missing_clusters)
317  return; // do not apply corrections in case of missing info (slimmed MiniAOD electrons)
318 
319  const bool isEB = pho.isEB();
320 
321  std::array<float, 32> eval;
322  const double rawEnergy = superClus->rawEnergy();
323  const double raw_es_energy = superClus->preshowerEnergy();
324  const auto& full5x5_pss = pho.full5x5_showerShapeVariables();
325 
326  float e5x5Inverse = full5x5_pss.e5x5 != 0. ? vdt::fast_inv(full5x5_pss.e5x5) : 0.;
327 
328  eval[0] = rawEnergy;
329  eval[1] = superClus->etaWidth();
330  eval[2] = superClus->phiWidth();
331  eval[3] = superClus->seed()->energy() / rawEnergy;
332  eval[4] = full5x5_pss.e5x5 / rawEnergy;
333  eval[5] = pho.hadronicOverEm();
334  eval[6] = rhoValue_;
335  eval[7] = seed->eta() - superClus->position().Eta();
336  eval[8] = reco::deltaPhi(seed->phi(), superClus->position().Phi());
337  eval[9] = pho.full5x5_r9();
338  eval[10] = full5x5_pss.sigmaIetaIeta;
339  eval[11] = full5x5_pss.sigmaIetaIphi;
340  eval[12] = full5x5_pss.sigmaIphiIphi;
341  eval[13] = full5x5_pss.maxEnergyXtal * e5x5Inverse;
342  eval[14] = full5x5_pss.e2nd * e5x5Inverse;
343  eval[15] = full5x5_pss.eTop * e5x5Inverse;
344  eval[16] = full5x5_pss.eBottom * e5x5Inverse;
345  eval[17] = full5x5_pss.eLeft * e5x5Inverse;
346  eval[18] = full5x5_pss.eRight * e5x5Inverse;
347  eval[19] = full5x5_pss.e2x5Max * e5x5Inverse;
348  eval[20] = full5x5_pss.e2x5Left * e5x5Inverse;
349  eval[21] = full5x5_pss.e2x5Right * e5x5Inverse;
350  eval[22] = full5x5_pss.e2x5Top * e5x5Inverse;
351  eval[23] = full5x5_pss.e2x5Bottom * e5x5Inverse;
352  eval[24] = pho.nSaturatedXtals();
353  eval[25] = std::max(0, numberOfClusters);
354 
355  // calculate coordinate variables
356 
357  if (isEB) {
358  float dummy;
359  int ieta;
360  int iphi;
362  eval[26] = ieta;
363  eval[27] = iphi;
364  int signieta = ieta > 0 ? +1 : -1;
365  eval[28] = (ieta - signieta) % 5;
366  eval[29] = (iphi - 1) % 2;
367  eval[30] = (abs(ieta) <= 25) * ((ieta - signieta)) + (abs(ieta) > 25) * ((ieta - 26 * signieta) % 20);
368  eval[31] = (iphi - 1) % 20;
369 
370  } else {
371  float dummy;
372  int ix;
373  int iy;
375  eval[26] = ix;
376  eval[27] = iy;
377  eval[28] = raw_es_energy / rawEnergy;
378  }
379 
380  //magic numbers for MINUIT-like transformation of BDT output onto limited range
381  //(These should be stored inside the conditions object in the future as well)
382  constexpr double meanlimlow = -1.0;
383  constexpr double meanlimhigh = 3.0;
384  constexpr double meanoffset = meanlimlow + 0.5 * (meanlimhigh - meanlimlow);
385  constexpr double meanscale = 0.5 * (meanlimhigh - meanlimlow);
386 
387  constexpr double sigmalimlow = 0.0002;
388  constexpr double sigmalimhigh = 0.5;
389  constexpr double sigmaoffset = sigmalimlow + 0.5 * (sigmalimhigh - sigmalimlow);
390  constexpr double sigmascale = 0.5 * (sigmalimhigh - sigmalimlow);
391 
392  size_t coridx = 0;
393  float rawPt = rawEnergy * superClus->position().rho() / superClus->position().r();
394  bool isSaturated = pho.nSaturatedXtals();
395 
397  if (isEB)
398  coridx = 1;
399  else
400  coridx = 3;
401  } else {
402  if (isEB)
403  coridx = 0;
404  else
405  coridx = 2;
406  }
407 
408  //these are the actual BDT responses
409  double rawmean = phoForestsMean_[coridx]->GetResponse(eval.data());
410  double rawsigma = phoForestsSigma_[coridx]->GetResponse(eval.data());
411 
412  //apply transformation to limited output range (matching the training)
413  double mean = meanoffset + meanscale * vdt::fast_sin(rawmean);
414  double sigma = sigmaoffset + sigmascale * vdt::fast_sin(rawsigma);
415 
416  // Correct the energy. A negative energy means that the correction went
417  // outside the boundaries of the training. In this case uses raw.
418  // The resolution estimation, on the other hand should be ok.
419  if (mean < 0.)
420  mean = 1.0;
421 
422  const double ecor = mean * (rawEnergy + raw_es_energy);
423  const double sigmacor = sigma * ecor;
424 
425  pho.setCorrectedEnergy(reco::Photon::P4type::regression2, ecor, sigmacor, true);
426 }

References funct::abs(), caloGeometry_, reco::deltaPhi(), reco::Photon::ShowerShape::e5x5, forceHighEnergyEcalTrainingIfSaturated_, reco::Photon::full5x5_r9(), reco::Photon::full5x5_showerShapeVariables(), reco::Photon::hadronicOverEm(), LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, edm::Ref< C, T, F >::isAvailable(), reco::Photon::isEB(), EcalTools::isHGCalDet(), CastorSimpleRecAlgoImpl::isSaturated(), egammaTools::localEcalClusterCoordsEB(), egammaTools::localEcalClusterCoordsEE(), lowEnergyEcalOnlyThr_, SiStripPI::max, SiStripPI::mean, reco::Photon::nSaturatedXtals(), phoForestsMean_, phoForestsSigma_, jets_cff::rawPt, rhoValue_, SurveyInfoScenario_cff::seed, reco::Photon::setCorrectedEnergy(), and reco::Photon::superCluster().

◆ setEvent()

void EGRegressionModifierV2::setEvent ( const edm::Event evt)
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 90 of file EGRegressionModifierV2.cc.

90  {
92  evt.getByToken(rhoToken_, rhoH);
93  rhoValue_ = *rhoH;
94 }

References edm::Event::getByToken(), rhoToken_, and rhoValue_.

◆ setEventContent()

void EGRegressionModifierV2::setEventContent ( const edm::EventSetup evs)
finalvirtual

Member Data Documentation

◆ caloGeometry_

edm::ESHandle<CaloGeometry> EGRegressionModifierV2::caloGeometry_
private

Definition at line 41 of file EGRegressionModifierV2.cc.

Referenced by modifyObject(), and setEventContent().

◆ eleCondNames_

CondNames EGRegressionModifierV2::eleCondNames_
private

Definition at line 36 of file EGRegressionModifierV2.cc.

Referenced by EGRegressionModifierV2(), and setEventContent().

◆ eleForestsMean_

std::vector<const GBRForestD*> EGRegressionModifierV2::eleForestsMean_
private

Definition at line 45 of file EGRegressionModifierV2.cc.

Referenced by EGRegressionModifierV2(), modifyObject(), and setEventContent().

◆ eleForestsSigma_

std::vector<const GBRForestD*> EGRegressionModifierV2::eleForestsSigma_
private

Definition at line 46 of file EGRegressionModifierV2.cc.

Referenced by EGRegressionModifierV2(), modifyObject(), and setEventContent().

◆ eOverPEcalTrkThr_

const double EGRegressionModifierV2::eOverPEcalTrkThr_
private

Definition at line 51 of file EGRegressionModifierV2.cc.

Referenced by modifyObject().

◆ epDiffSigEcalTrackThr_

const double EGRegressionModifierV2::epDiffSigEcalTrackThr_
private

Definition at line 52 of file EGRegressionModifierV2.cc.

Referenced by modifyObject().

◆ epSigEcalTrackThr_

const double EGRegressionModifierV2::epSigEcalTrackThr_
private

Definition at line 53 of file EGRegressionModifierV2.cc.

Referenced by modifyObject().

◆ forceHighEnergyEcalTrainingIfSaturated_

const bool EGRegressionModifierV2::forceHighEnergyEcalTrainingIfSaturated_
private

Definition at line 54 of file EGRegressionModifierV2.cc.

Referenced by modifyObject().

◆ highEnergyEcalTrackThr_

const double EGRegressionModifierV2::highEnergyEcalTrackThr_
private

Definition at line 50 of file EGRegressionModifierV2.cc.

◆ lowEnergyEcalOnlyThr_

const double EGRegressionModifierV2::lowEnergyEcalOnlyThr_
private

Definition at line 48 of file EGRegressionModifierV2.cc.

Referenced by modifyObject().

◆ lowEnergyEcalTrackThr_

const double EGRegressionModifierV2::lowEnergyEcalTrackThr_
private

Definition at line 49 of file EGRegressionModifierV2.cc.

Referenced by modifyObject().

◆ phoCondNames_

CondNames EGRegressionModifierV2::phoCondNames_
private

Definition at line 37 of file EGRegressionModifierV2.cc.

Referenced by EGRegressionModifierV2(), and setEventContent().

◆ phoForestsMean_

std::vector<const GBRForestD*> EGRegressionModifierV2::phoForestsMean_
private

Definition at line 43 of file EGRegressionModifierV2.cc.

Referenced by EGRegressionModifierV2(), modifyObject(), and setEventContent().

◆ phoForestsSigma_

std::vector<const GBRForestD*> EGRegressionModifierV2::phoForestsSigma_
private

Definition at line 44 of file EGRegressionModifierV2.cc.

Referenced by EGRegressionModifierV2(), modifyObject(), and setEventContent().

◆ rhoToken_

edm::EDGetTokenT<double> EGRegressionModifierV2::rhoToken_
private

Definition at line 40 of file EGRegressionModifierV2.cc.

Referenced by setEvent().

◆ rhoValue_

float EGRegressionModifierV2::rhoValue_
private

Definition at line 39 of file EGRegressionModifierV2.cc.

Referenced by modifyObject(), and setEvent().

retrieveGBRForests
std::vector< const GBRForestD * > retrieveGBRForests(edm::EventSetup const &evs, std::vector< std::string > const &names)
Definition: EGRegressionModifierHelpers.cc:3
reco::GsfElectron::ClassificationVariables::trackFbrem
float trackFbrem
Definition: GsfElectron.h:719
EgHLTOffHistBins_cfi.eOverP
eOverP
Definition: EgHLTOffHistBins_cfi.py:37
EGRegressionModifierV2::caloGeometry_
edm::ESHandle< CaloGeometry > caloGeometry_
Definition: EGRegressionModifierV2.cc:41
reco::GsfElectron::isEB
bool isEB() const
Definition: GsfElectron.h:336
reco::GsfElectron::gsfTrack
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
Definition: GsfElectron.h:164
reco::Photon::superCluster
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
SiStripPI::mean
Definition: SiStripPayloadInspectorHelper.h:169
EGRegressionModifierV2::forceHighEnergyEcalTrainingIfSaturated_
const bool forceHighEnergyEcalTrainingIfSaturated_
Definition: EGRegressionModifierV2.cc:54
EcalTools::isHGCalDet
static bool isHGCalDet(DetId::Detector thedet)
identify HGCal cells
Definition: EcalTools.h:48
EGRegressionModifierV2::modifyObject
void modifyObject(reco::GsfElectron &) const final
Definition: EGRegressionModifierV2.cc:106
reco::GsfElectron::correctMomentum
void correctMomentum(const LorentzVector &p4, float trackMomentumError, float p4Error)
Definition: GsfElectron.h:829
edm::Ref::isAvailable
bool isAvailable() const
Definition: Ref.h:537
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
EGRegressionModifierV2::rhoToken_
edm::EDGetTokenT< double > rhoToken_
Definition: EGRegressionModifierV2.cc:40
EGRegressionModifierV2::eleCondNames_
CondNames eleCondNames_
Definition: EGRegressionModifierV2.cc:36
egammaTools::localEcalClusterCoordsEE
void localEcalClusterCoordsEE(const reco::CaloCluster &bclus, const CaloGeometry &geom, float &xcry, float &ycry, int &ix, int &iy, float &thetatilt, float &phitilt)
Definition: EcalClusterLocal.cc:88
EGRegressionModifierV2::phoForestsSigma_
std::vector< const GBRForestD * > phoForestsSigma_
Definition: EGRegressionModifierV2.cc:44
EGRegressionModifierV2::rhoValue_
float rhoValue_
Definition: EGRegressionModifierV2.cc:39
EGRegressionModifierV2::epSigEcalTrackThr_
const double epSigEcalTrackThr_
Definition: EGRegressionModifierV2.cc:53
edm::Handle< double >
ModifyObjectValueBase::ModifyObjectValueBase
ModifyObjectValueBase(const edm::ParameterSet &conf)
Definition: ModifyObjectValueBase.h:20
reco::GsfElectron::fbrem
float fbrem() const
Definition: GsfElectron.h:734
edm::Ref< SuperClusterCollection >
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
EGRegressionModifierV2::CondNames::sigma
std::vector< std::string > sigma
Definition: EGRegressionModifierV2.cc:33
reco::GsfElectron::full5x5_showerShape
const ShowerShape & full5x5_showerShape() const
Definition: GsfElectron.h:464
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
CastorSimpleRecAlgoImpl::isSaturated
bool isSaturated(const Digi &digi, const int &maxADCvalue, int ifirst, int n)
Definition: CastorSimpleRecAlgo.cc:97
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::GsfElectron::ecalDrivenSeed
bool ecalDrivenSeed() const
Definition: GsfElectron.h:166
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
reco::Photon::full5x5_r9
float full5x5_r9() const
Definition: Photon.h:252
egammaTools::localEcalClusterCoordsEB
void localEcalClusterCoordsEB(const reco::CaloCluster &bclus, const CaloGeometry &geom, float &etacry, float &phicry, int &ieta, int &iphi, float &thetatilt, float &phitilt)
Definition: EcalClusterLocal.cc:14
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
reco::GsfElectron::setCorrectedEcalEnergyError
void setCorrectedEcalEnergyError(float newEnergyError)
Definition: GsfElectron.cc:170
edm::ParameterSet
Definition: ParameterSet.h:36
EGRegressionModifierV2::CondNames::mean
std::vector< std::string > mean
Definition: EGRegressionModifierV2.cc:32
EGRegressionModifierV2::eOverPEcalTrkThr_
const double eOverPEcalTrkThr_
Definition: EGRegressionModifierV2.cc:51
reco::Photon::full5x5_showerShapeVariables
const ShowerShape & full5x5_showerShapeVariables() const
Definition: Photon.h:202
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
jets_cff.rawPt
rawPt
Definition: jets_cff.py:513
reco::Photon::isEB
bool isEB() const
Definition: Photon.h:119
reco::GsfElectron::hcalOverEcalBc
float hcalOverEcalBc() const
Definition: GsfElectron.h:433
BPHMonitor_cfi.photons
photons
Definition: BPHMonitor_cfi.py:91
reco::GsfElectron::ClassificationVariables
Definition: GsfElectron.h:718
reco::GsfElectron::nSaturatedXtals
float nSaturatedXtals() const
Definition: GsfElectron.h:497
reco::Photon::setCorrectedEnergy
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
get
#define get
cc
reco::GsfElectron::p4
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:211
edm::Ptr
Definition: AssociationVector.h:31
EGRegressionModifierV2::lowEnergyEcalOnlyThr_
const double lowEnergyEcalOnlyThr_
Definition: EGRegressionModifierV2.cc:48
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
EGRegressionModifierV2::lowEnergyEcalTrackThr_
const double lowEnergyEcalTrackThr_
Definition: EGRegressionModifierV2.cc:49
reco::Photon::hadronicOverEm
float hadronicOverEm() const
the total hadronic over electromagnetic fraction
Definition: Photon.h:208
pwdgSkimBPark_cfi.electrons
electrons
Definition: pwdgSkimBPark_cfi.py:6
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
EGRegressionModifierV2::phoCondNames_
CondNames phoCondNames_
Definition: EGRegressionModifierV2.cc:37
reco::GsfElectron::superCluster
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:163
reco::GsfElectron::trackMomentumError
float trackMomentumError() const
Definition: GsfElectron.h:808
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
dummy
Definition: DummySelector.h:38
reco::GsfElectron::setCorrectedEcalEnergy
void setCorrectedEcalEnergy(float newEnergy)
Definition: GsfElectron.cc:174
reco::Photon::nSaturatedXtals
float nSaturatedXtals() const
Definition: Photon.h:265
EGRegressionModifierV2::phoForestsMean_
std::vector< const GBRForestD * > phoForestsMean_
Definition: EGRegressionModifierV2.cc:43
EGRegressionModifierV2::epDiffSigEcalTrackThr_
const double epDiffSigEcalTrackThr_
Definition: EGRegressionModifierV2.cc:52
reco::GsfElectron::ShowerShape::e5x5
float e5x5
Definition: GsfElectron.h:372
edm::InputTag
Definition: InputTag.h:15
EGRegressionModifierV2::eleForestsMean_
std::vector< const GBRForestD * > eleForestsMean_
Definition: EGRegressionModifierV2.cc:45
SurveyInfoScenario_cff.seed
seed
Definition: SurveyInfoScenario_cff.py:295
EGRegressionModifierV2::highEnergyEcalTrackThr_
const double highEnergyEcalTrackThr_
Definition: EGRegressionModifierV2.cc:50
EGRegressionModifierV2::eleForestsSigma_
std::vector< const GBRForestD * > eleForestsSigma_
Definition: EGRegressionModifierV2.cc:46
reco::Photon::ShowerShape::e5x5
float e5x5
Definition: Photon.h:143