CMS 3D CMS Logo

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

Classes

struct  CondNames
 

Public Member Functions

 EGRegressionModifierV1 (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

const bool applyExtraHighEnergyProtection_
 
const bool autoDetectBunchSpacing_
 
int bunchspacing_
 
edm::EDGetTokenT< unsigned int > bunchSpacingToken_
 
edm::ESHandle< CaloGeometrycaloGeomH_
 
std::string condNamesWeight25ns_
 
std::string condNamesWeight50ns_
 
CondNames eleCondNames_
 
std::vector< const GBRForestD * > eleForestsMean_
 
std::vector< const GBRForestD * > eleForestsSigma_
 
const GBRForestepForest_
 
int nVtx_
 
CondNames phoCondNames_
 
std::vector< const GBRForestD * > phoForestsMean_
 
std::vector< const GBRForestD * > phoForestsSigma_
 
edm::EDGetTokenT< double > rhoToken_
 
float rhoValue_
 
edm::Handle< reco::VertexCollectionvtxH_
 
edm::EDGetTokenT< reco::VertexCollectionvtxToken_
 

Detailed Description

Definition at line 18 of file EGRegressionModifierV1.cc.

Constructor & Destructor Documentation

◆ EGRegressionModifierV1()

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

Definition at line 66 of file EGRegressionModifierV1.cc.

67  : ModifyObjectValueBase(conf),
68  autoDetectBunchSpacing_(conf.getParameter<bool>("autoDetectBunchSpacing")),
69  bunchspacing_(autoDetectBunchSpacing_ ? 450 : conf.getParameter<int>("manualBunchSpacing")),
70  rhoToken_(cc.consumes<double>(conf.getParameter<edm::InputTag>("rhoCollection"))),
71  vtxToken_(cc.consumes<reco::VertexCollection>(conf.getParameter<edm::InputTag>("vertexCollection"))),
72  applyExtraHighEnergyProtection_(conf.getParameter<bool>("applyExtraHighEnergyProtection")) {
74  bunchSpacingToken_ = cc.consumes<unsigned int>(conf.getParameter<edm::InputTag>("bunchSpacingTag"));
75 
76  const edm::ParameterSet& electrons = conf.getParameter<edm::ParameterSet>("electron_config");
77  eleCondNames_ = CondNames{.mean50ns = electrons.getParameter<std::vector<std::string>>("regressionKey_50ns"),
78  .sigma50ns = electrons.getParameter<std::vector<std::string>>("uncertaintyKey_50ns"),
79  .mean25ns = electrons.getParameter<std::vector<std::string>>("regressionKey_25ns"),
80  .sigma25ns = electrons.getParameter<std::vector<std::string>>("uncertaintyKey_25ns")};
81  condNamesWeight50ns_ = electrons.getParameter<std::string>("combinationKey_50ns");
82  condNamesWeight25ns_ = electrons.getParameter<std::string>("combinationKey_25ns");
83 
84  const edm::ParameterSet& photons = conf.getParameter<edm::ParameterSet>("photon_config");
85  phoCondNames_ = CondNames{.mean50ns = photons.getParameter<std::vector<std::string>>("regressionKey_50ns"),
86  .sigma50ns = photons.getParameter<std::vector<std::string>>("uncertaintyKey_50ns"),
87  .mean25ns = photons.getParameter<std::vector<std::string>>("regressionKey_25ns"),
88  .sigma25ns = photons.getParameter<std::vector<std::string>>("uncertaintyKey_25ns")};
89 }

References autoDetectBunchSpacing_, bunchSpacingToken_, condNamesWeight25ns_, condNamesWeight50ns_, eleCondNames_, pwdgSkimBPark_cfi::electrons, edm::ParameterSet::getParameter(), EGRegressionModifierV1::CondNames::mean50ns, phoCondNames_, BPHMonitor_cfi::photons, and AlCaHLTBitMon_QueryRunRegistry::string.

Member Function Documentation

◆ modifyObject() [1/4]

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

Reimplemented from ModifyObjectValueBase.

Definition at line 29 of file EGRegressionModifierV1.cc.

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

References modifyObject().

Referenced by modifyObject().

◆ modifyObject() [2/4]

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

Reimplemented from ModifyObjectValueBase.

Definition at line 30 of file EGRegressionModifierV1.cc.

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

References modifyObject().

Referenced by modifyObject().

◆ modifyObject() [3/4]

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

Reimplemented from ModifyObjectValueBase.

Definition at line 121 of file EGRegressionModifierV1.cc.

121  {
122  // regression calculation needs no additional valuemaps
123 
124  const reco::SuperClusterRef& superClus = ele.superCluster();
125  const edm::Ptr<reco::CaloCluster>& theseed = superClus->seed();
126  const int numberOfClusters = superClus->clusters().size();
127  const bool missing_clusters = !superClus->clusters()[numberOfClusters - 1].isAvailable();
128 
129  if (missing_clusters)
130  return; // do not apply corrections in case of missing info (slimmed MiniAOD electrons)
131 
132  std::array<float, 33> eval;
133  const double rawEnergy = superClus->rawEnergy();
134  const auto& ess = ele.showerShape();
135 
136  // SET INPUTS
137  eval[0] = nVtx_;
138  eval[1] = rawEnergy;
139  eval[2] = superClus->eta();
140  eval[3] = superClus->phi();
141  eval[4] = superClus->etaWidth();
142  eval[5] = superClus->phiWidth();
143  eval[6] = ess.r9;
144  eval[7] = theseed->energy() / rawEnergy;
145  eval[8] = ess.eMax / rawEnergy;
146  eval[9] = ess.e2nd / rawEnergy;
147  eval[10] = (ess.eLeft + ess.eRight != 0.f ? (ess.eLeft - ess.eRight) / (ess.eLeft + ess.eRight) : 0.f);
148  eval[11] = (ess.eTop + ess.eBottom != 0.f ? (ess.eTop - ess.eBottom) / (ess.eTop + ess.eBottom) : 0.f);
149  eval[12] = ess.sigmaIetaIeta;
150  eval[13] = ess.sigmaIetaIphi;
151  eval[14] = ess.sigmaIphiIphi;
152  eval[15] = std::max(0, numberOfClusters - 1);
153 
154  // calculate sub-cluster variables
155  std::vector<float> clusterRawEnergy;
156  clusterRawEnergy.resize(std::max(3, numberOfClusters), 0);
157  std::vector<float> clusterDEtaToSeed;
158  clusterDEtaToSeed.resize(std::max(3, numberOfClusters), 0);
159  std::vector<float> clusterDPhiToSeed;
160  clusterDPhiToSeed.resize(std::max(3, numberOfClusters), 0);
161  float clusterMaxDR = 999.;
162  float clusterMaxDRDPhi = 999.;
163  float clusterMaxDRDEta = 999.;
164  float clusterMaxDRRawEnergy = 0.;
165 
166  size_t iclus = 0;
167  float maxDR = 0;
168  // loop over all clusters that aren't the seed
169  for (auto const& pclus : superClus->clusters()) {
170  if (theseed == pclus)
171  continue;
172  clusterRawEnergy[iclus] = pclus->energy();
173  clusterDPhiToSeed[iclus] = reco::deltaPhi(pclus->phi(), theseed->phi());
174  clusterDEtaToSeed[iclus] = pclus->eta() - theseed->eta();
175 
176  // find cluster with max dR
177  const auto the_dr = reco::deltaR(*pclus, *theseed);
178  if (the_dr > maxDR) {
179  maxDR = the_dr;
180  clusterMaxDR = maxDR;
181  clusterMaxDRDPhi = clusterDPhiToSeed[iclus];
182  clusterMaxDRDEta = clusterDEtaToSeed[iclus];
183  clusterMaxDRRawEnergy = clusterRawEnergy[iclus];
184  }
185  ++iclus;
186  }
187 
188  eval[16] = clusterMaxDR;
189  eval[17] = clusterMaxDRDPhi;
190  eval[18] = clusterMaxDRDEta;
191  eval[19] = clusterMaxDRRawEnergy / rawEnergy;
192  eval[20] = clusterRawEnergy[0] / rawEnergy;
193  eval[21] = clusterRawEnergy[1] / rawEnergy;
194  eval[22] = clusterRawEnergy[2] / rawEnergy;
195  eval[23] = clusterDPhiToSeed[0];
196  eval[24] = clusterDPhiToSeed[1];
197  eval[25] = clusterDPhiToSeed[2];
198  eval[26] = clusterDEtaToSeed[0];
199  eval[27] = clusterDEtaToSeed[1];
200  eval[28] = clusterDEtaToSeed[2];
201 
202  // calculate coordinate variables
203  const bool isEB = ele.isEB();
204  float dummy;
205  int iPhi;
206  int iEta;
207  float cryPhi;
208  float cryEta;
209  if (ele.isEB())
210  egammaTools::localEcalClusterCoordsEB(*theseed, *caloGeomH_, cryEta, cryPhi, iEta, iPhi, dummy, dummy);
211  else
212  egammaTools::localEcalClusterCoordsEE(*theseed, *caloGeomH_, cryEta, cryPhi, iEta, iPhi, dummy, dummy);
213 
214  if (isEB) {
215  eval[29] = cryEta;
216  eval[30] = cryPhi;
217  eval[31] = iEta;
218  eval[32] = iPhi;
219  } else {
220  eval[29] = superClus->preshowerEnergy() / superClus->rawEnergy();
221  }
222 
223  //magic numbers for MINUIT-like transformation of BDT output onto limited range
224  //(These should be stored inside the conditions object in the future as well)
225  constexpr double meanlimlow = 0.2;
226  constexpr double meanlimhigh = 2.0;
227  constexpr double meanoffset = meanlimlow + 0.5 * (meanlimhigh - meanlimlow);
228  constexpr double meanscale = 0.5 * (meanlimhigh - meanlimlow);
229 
230  constexpr double sigmalimlow = 0.0002;
231  constexpr double sigmalimhigh = 0.5;
232  constexpr double sigmaoffset = sigmalimlow + 0.5 * (sigmalimhigh - sigmalimlow);
233  constexpr double sigmascale = 0.5 * (sigmalimhigh - sigmalimlow);
234 
235  const int coridx = isEB ? 0 : 1;
236 
237  //these are the actual BDT responses
238  double rawmean = eleForestsMean_[coridx]->GetResponse(eval.data());
239  double rawsigma = eleForestsSigma_[coridx]->GetResponse(eval.data());
240 
241  //apply transformation to limited output range (matching the training)
242  double mean = meanoffset + meanscale * vdt::fast_sin(rawmean);
243  double sigma = sigmaoffset + sigmascale * vdt::fast_sin(rawsigma);
244 
245  //regression target is ln(Etrue/Eraw)
246  //so corrected energy is ecor=exp(mean)*e, uncertainty is exp(mean)*eraw*sigma=ecor*sigma
247  double ecor = mean * (eval[1]);
248  if (!isEB)
249  ecor = mean * (eval[1] + superClus->preshowerEnergy());
250  const double sigmacor = sigma * ecor;
251 
252  ele.setCorrectedEcalEnergy(ecor);
253  ele.setCorrectedEcalEnergyError(sigmacor);
254 
255  // E-p combination
256  std::array<float, 11> eval_ep;
257 
258  const float ep = ele.trackMomentumAtVtx().R();
259  const float tot_energy = superClus->rawEnergy() + superClus->preshowerEnergy();
260  const float momentumError = ele.trackMomentumError();
261  const float trkMomentumRelError = ele.trackMomentumError() / ep;
262  const float eOverP = tot_energy * mean / ep;
263  eval_ep[0] = tot_energy * mean;
264  eval_ep[1] = sigma / mean;
265  eval_ep[2] = ep;
266  eval_ep[3] = trkMomentumRelError;
267  eval_ep[4] = sigma / mean / trkMomentumRelError;
268  eval_ep[5] = tot_energy * mean / ep;
269  eval_ep[6] = tot_energy * mean / ep * sqrt(sigma / mean * sigma / mean + trkMomentumRelError * trkMomentumRelError);
270  eval_ep[7] = ele.ecalDriven();
271  eval_ep[8] = ele.trackerDrivenSeed();
272  eval_ep[9] = int(ele.classification()); //eleClass;
273  eval_ep[10] = isEB;
274 
275  // CODE FOR FUTURE SEMI_PARAMETRIC
276  //double rawweight = ep_forestsMean_[coridx]->GetResponse(eval_ep.data());
278  //double weight = meanoffset + meanscale*vdt::fast_sin(rawweight);
280 
281  // CODE FOR STANDARD BDT
282  double weight = 0.;
283  if (eOverP > 0.025 && std::abs(ep - ecor) < 15. * std::sqrt(momentumError * momentumError + sigmacor * sigmacor) &&
284  (!applyExtraHighEnergyProtection_ || ((momentumError < 10. * ep) || (ecor < 200.)))) {
285  // protection against crazy track measurement
286  weight = std::clamp(epForest_->GetResponse(eval_ep.data()), 0., 1.);
287  }
288 
289  double combinedMomentum = weight * ele.trackMomentumAtVtx().R() + (1. - weight) * ecor;
290  double combinedMomentumError = sqrt(weight * weight * ele.trackMomentumError() * ele.trackMomentumError() +
291  (1. - weight) * (1. - weight) * sigmacor * sigmacor);
292 
293  math::XYZTLorentzVector oldMomentum = ele.p4();
294  math::XYZTLorentzVector newMomentum(oldMomentum.x() * combinedMomentum / oldMomentum.t(),
295  oldMomentum.y() * combinedMomentum / oldMomentum.t(),
296  oldMomentum.z() * combinedMomentum / oldMomentum.t(),
297  combinedMomentum);
298 
299  ele.correctMomentum(newMomentum, ele.trackMomentumError(), combinedMomentumError);
300 }

References funct::abs(), applyExtraHighEnergyProtection_, caloGeomH_, reco::GsfElectron::classification(), reco::GsfElectron::correctMomentum(), reco::deltaPhi(), reco::deltaR(), reco::GsfElectron::ecalDriven(), eleForestsMean_, eleForestsSigma_, reco::CaloCluster::energy(), EgHLTOffHistBins_cfi::eOverP, SiStripBadComponentsDQMServiceTemplate_cfg::ep, epForest_, reco::CaloCluster::eta(), GBRForest::GetResponse(), L1TowerCalibrationProducer_cfi::iEta, createfilelist::int, edm::Ref< C, T, F >::isAvailable(), reco::GsfElectron::isEB(), egammaTools::localEcalClusterCoordsEB(), egammaTools::localEcalClusterCoordsEE(), SiStripPI::max, jets_cff::maxDR, SiStripPI::mean, nVtx_, reco::GsfElectron::p4(), reco::CaloCluster::phi(), reco::GsfElectron::setCorrectedEcalEnergy(), reco::GsfElectron::setCorrectedEcalEnergyError(), reco::GsfElectron::showerShape(), mathSSE::sqrt(), reco::GsfElectron::superCluster(), reco::GsfElectron::trackerDrivenSeed(), reco::GsfElectron::trackMomentumAtVtx(), reco::GsfElectron::trackMomentumError(), and mps_merge::weight.

◆ modifyObject() [4/4]

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

this is 1*abs(ieta)/ieta in original training

duplicated variables but this was trained like that

duplicated variables but this was trained like that

Reimplemented from ModifyObjectValueBase.

Definition at line 302 of file EGRegressionModifierV1.cc.

302  {
303  // regression calculation needs no additional valuemaps
304 
305  std::array<float, 35> eval;
306  const reco::SuperClusterRef& superClus = pho.superCluster();
307  const edm::Ptr<reco::CaloCluster>& theseed = superClus->seed();
308 
309  const int numberOfClusters = superClus->clusters().size();
310  const bool missing_clusters = !superClus->clusters()[numberOfClusters - 1].isAvailable();
311 
312  if (missing_clusters)
313  return; // do not apply corrections in case of missing info (slimmed MiniAOD electrons)
314 
315  const double rawEnergy = superClus->rawEnergy();
316  const auto& ess = pho.showerShapeVariables();
317 
318  // SET INPUTS
319  eval[0] = rawEnergy;
320  eval[1] = pho.r9();
321  eval[2] = superClus->etaWidth();
322  eval[3] = superClus->phiWidth();
323  eval[4] = std::max(0, numberOfClusters - 1);
324  eval[5] = pho.hadronicOverEm();
325  eval[6] = rhoValue_;
326  eval[7] = nVtx_;
327  eval[8] = theseed->eta() - superClus->position().Eta();
328  eval[9] = reco::deltaPhi(theseed->phi(), superClus->position().Phi());
329  eval[10] = theseed->energy() / rawEnergy;
330  eval[11] = ess.e3x3 / ess.e5x5;
331  eval[12] = ess.sigmaIetaIeta;
332  eval[13] = ess.sigmaIphiIphi;
333  eval[14] = ess.sigmaIetaIphi / (ess.sigmaIphiIphi * ess.sigmaIetaIeta);
334  eval[15] = ess.maxEnergyXtal / ess.e5x5;
335  eval[16] = ess.e2nd / ess.e5x5;
336  eval[17] = ess.eTop / ess.e5x5;
337  eval[18] = ess.eBottom / ess.e5x5;
338  eval[19] = ess.eLeft / ess.e5x5;
339  eval[20] = ess.eRight / ess.e5x5;
340  eval[21] = ess.e2x5Max / ess.e5x5;
341  eval[22] = ess.e2x5Left / ess.e5x5;
342  eval[23] = ess.e2x5Right / ess.e5x5;
343  eval[24] = ess.e2x5Top / ess.e5x5;
344  eval[25] = ess.e2x5Bottom / ess.e5x5;
345 
346  const bool isEB = pho.isEB();
347  if (isEB) {
348  EBDetId ebseedid(theseed->seed());
349  eval[26] = pho.e5x5() / theseed->energy();
350  int ieta = ebseedid.ieta();
351  int iphi = ebseedid.iphi();
352  eval[27] = ieta;
353  eval[28] = iphi;
354  int signieta = ieta > 0 ? +1 : -1;
355  eval[29] = (ieta - signieta) % 5;
356  eval[30] = (iphi - 1) % 2;
357  eval[31] = (abs(ieta) <= 25) * ((ieta - signieta)) + (abs(ieta) > 25) * ((ieta - 26 * signieta) % 20);
358  eval[32] = (iphi - 1) % 20;
359  eval[33] = ieta;
360  eval[34] = iphi;
361  } else {
362  EEDetId eeseedid(theseed->seed());
363  eval[26] = superClus->preshowerEnergy() / rawEnergy;
364  eval[27] = superClus->preshowerEnergyPlane1() / rawEnergy;
365  eval[28] = superClus->preshowerEnergyPlane2() / rawEnergy;
366  eval[29] = eeseedid.ix();
367  eval[30] = eeseedid.iy();
368  }
369 
370  //magic numbers for MINUIT-like transformation of BDT output onto limited range
371  //(These should be stored inside the conditions object in the future as well)
372  const double meanlimlow = 0.2;
373  const double meanlimhigh = 2.0;
374  const double meanoffset = meanlimlow + 0.5 * (meanlimhigh - meanlimlow);
375  const double meanscale = 0.5 * (meanlimhigh - meanlimlow);
376 
377  const double sigmalimlow = 0.0002;
378  const double sigmalimhigh = 0.5;
379  const double sigmaoffset = sigmalimlow + 0.5 * (sigmalimhigh - sigmalimlow);
380  const double sigmascale = 0.5 * (sigmalimhigh - sigmalimlow);
381 
382  const int coridx = isEB ? 0 : 1;
383 
384  //these are the actual BDT responses
385  const double rawmean = phoForestsMean_[coridx]->GetResponse(eval.data());
386  const double rawsigma = phoForestsSigma_[coridx]->GetResponse(eval.data());
387  //apply transformation to limited output range (matching the training)
388  const double mean = meanoffset + meanscale * vdt::fast_sin(rawmean);
389  const double sigma = sigmaoffset + sigmascale * vdt::fast_sin(rawsigma);
390 
391  //regression target is ln(Etrue/Eraw)
392  //so corrected energy is ecor=exp(mean)*e, uncertainty is exp(mean)*eraw*sigma=ecor*sigma
393  const double ecor = isEB ? mean * eval[0] : mean * (eval[0] + superClus->preshowerEnergy());
394 
395  const double sigmacor = sigma * ecor;
396  pho.setCorrectedEnergy(reco::Photon::P4type::regression2, ecor, sigmacor, true);
397 }

References funct::abs(), reco::deltaPhi(), reco::Photon::e5x5(), reco::CaloCluster::energy(), reco::CaloCluster::eta(), reco::Photon::hadronicOverEm(), LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, edm::Ref< C, T, F >::isAvailable(), reco::Photon::isEB(), SiStripPI::max, SiStripPI::mean, nVtx_, reco::CaloCluster::phi(), phoForestsMean_, phoForestsSigma_, reco::Photon::r9(), rhoValue_, reco::CaloCluster::seed(), reco::Photon::setCorrectedEnergy(), reco::Photon::showerShapeVariables(), and reco::Photon::superCluster().

◆ setEvent()

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

Reimplemented from ModifyObjectValueBase.

Definition at line 91 of file EGRegressionModifierV1.cc.

91  {
93  edm::Handle<unsigned int> bunchSpacingH;
94  evt.getByToken(bunchSpacingToken_, bunchSpacingH);
95  bunchspacing_ = *bunchSpacingH;
96  }
97 
99  evt.getByToken(rhoToken_, rhoH);
100  rhoValue_ = *rhoH;
101 
102  evt.getByToken(vtxToken_, vtxH_);
103  nVtx_ = vtxH_->size();
104 }

References autoDetectBunchSpacing_, bunchspacing_, bunchSpacingToken_, edm::Event::getByToken(), nVtx_, rhoToken_, rhoValue_, vtxH_, and vtxToken_.

◆ setEventContent()

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

Member Data Documentation

◆ applyExtraHighEnergyProtection_

const bool EGRegressionModifierV1::applyExtraHighEnergyProtection_
private

Definition at line 55 of file EGRegressionModifierV1.cc.

Referenced by modifyObject().

◆ autoDetectBunchSpacing_

const bool EGRegressionModifierV1::autoDetectBunchSpacing_
private

Definition at line 46 of file EGRegressionModifierV1.cc.

Referenced by EGRegressionModifierV1(), and setEvent().

◆ bunchspacing_

int EGRegressionModifierV1::bunchspacing_
private

Definition at line 47 of file EGRegressionModifierV1.cc.

Referenced by setEvent(), and setEventContent().

◆ bunchSpacingToken_

edm::EDGetTokenT<unsigned int> EGRegressionModifierV1::bunchSpacingToken_
private

Definition at line 48 of file EGRegressionModifierV1.cc.

Referenced by EGRegressionModifierV1(), and setEvent().

◆ caloGeomH_

edm::ESHandle<CaloGeometry> EGRegressionModifierV1::caloGeomH_
private

Definition at line 54 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEventContent().

◆ condNamesWeight25ns_

std::string EGRegressionModifierV1::condNamesWeight25ns_
private

Definition at line 44 of file EGRegressionModifierV1.cc.

Referenced by EGRegressionModifierV1(), and setEventContent().

◆ condNamesWeight50ns_

std::string EGRegressionModifierV1::condNamesWeight50ns_
private

Definition at line 43 of file EGRegressionModifierV1.cc.

Referenced by EGRegressionModifierV1(), and setEventContent().

◆ eleCondNames_

CondNames EGRegressionModifierV1::eleCondNames_
private

Definition at line 40 of file EGRegressionModifierV1.cc.

Referenced by EGRegressionModifierV1(), and setEventContent().

◆ eleForestsMean_

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

Definition at line 59 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEventContent().

◆ eleForestsSigma_

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

Definition at line 60 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEventContent().

◆ epForest_

const GBRForest* EGRegressionModifierV1::epForest_
private

Definition at line 61 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEventContent().

◆ nVtx_

int EGRegressionModifierV1::nVtx_
private

Definition at line 51 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEvent().

◆ phoCondNames_

CondNames EGRegressionModifierV1::phoCondNames_
private

Definition at line 41 of file EGRegressionModifierV1.cc.

Referenced by EGRegressionModifierV1(), and setEventContent().

◆ phoForestsMean_

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

Definition at line 57 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEventContent().

◆ phoForestsSigma_

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

Definition at line 58 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEventContent().

◆ rhoToken_

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

Definition at line 50 of file EGRegressionModifierV1.cc.

Referenced by setEvent().

◆ rhoValue_

float EGRegressionModifierV1::rhoValue_
private

Definition at line 49 of file EGRegressionModifierV1.cc.

Referenced by modifyObject(), and setEvent().

◆ vtxH_

edm::Handle<reco::VertexCollection> EGRegressionModifierV1::vtxH_
private

Definition at line 53 of file EGRegressionModifierV1.cc.

Referenced by setEvent().

◆ vtxToken_

edm::EDGetTokenT<reco::VertexCollection> EGRegressionModifierV1::vtxToken_
private

Definition at line 52 of file EGRegressionModifierV1.cc.

Referenced by setEvent().

retrieveGBRForests
std::vector< const GBRForestD * > retrieveGBRForests(edm::EventSetup const &evs, std::vector< std::string > const &names)
Definition: EGRegressionModifierHelpers.cc:3
reco::CaloCluster::phi
double phi() const
azimuthal angle of cluster centroid
Definition: CaloCluster.h:184
EgHLTOffHistBins_cfi.eOverP
eOverP
Definition: EgHLTOffHistBins_cfi.py:37
EGRegressionModifierV1::autoDetectBunchSpacing_
const bool autoDetectBunchSpacing_
Definition: EGRegressionModifierV1.cc:46
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
EGRegressionModifierV1::bunchSpacingToken_
edm::EDGetTokenT< unsigned int > bunchSpacingToken_
Definition: EGRegressionModifierV1.cc:48
reco::GsfElectron::isEB
bool isEB() const
Definition: GsfElectron.h:336
reco::Photon::showerShapeVariables
const ShowerShape & showerShapeVariables() const
Definition: Photon.h:201
reco::Photon::superCluster
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
SiStripPI::mean
Definition: SiStripPayloadInspectorHelper.h:169
EGRegressionModifierV1::modifyObject
void modifyObject(reco::GsfElectron &) const final
Definition: EGRegressionModifierV1.cc:121
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
EBDetId
Definition: EBDetId.h:17
mps_merge.weight
weight
Definition: mps_merge.py:88
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
EGRegressionModifierV1::eleCondNames_
CondNames eleCondNames_
Definition: EGRegressionModifierV1.cc:40
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
EGRegressionModifierV1::vtxToken_
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
Definition: EGRegressionModifierV1.cc:52
reco::GsfElectron::showerShape
const ShowerShape & showerShape() const
Definition: GsfElectron.h:439
edm::Handle
Definition: AssociativeIterator.h:50
ModifyObjectValueBase::ModifyObjectValueBase
ModifyObjectValueBase(const edm::ParameterSet &conf)
Definition: ModifyObjectValueBase.h:20
edm::Ref< SuperClusterCollection >
EGRegressionModifierV1::nVtx_
int nVtx_
Definition: EGRegressionModifierV1.cc:51
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
GBRForest::GetResponse
double GetResponse(const float *vector) const
Definition: GBRForest.h:49
EGRegressionModifierV1::vtxH_
edm::Handle< reco::VertexCollection > vtxH_
Definition: EGRegressionModifierV1.cc:53
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
EGRegressionModifierV1::phoForestsMean_
std::vector< const GBRForestD * > phoForestsMean_
Definition: EGRegressionModifierV1.cc:57
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::GsfElectron::trackMomentumAtVtx
math::XYZVectorF trackMomentumAtVtx() const
Definition: GsfElectron.h:276
EGRegressionModifierV1::CondNames::sigma50ns
std::vector< std::string > sigma50ns
Definition: EGRegressionModifierV1.cc:35
edm::ESHandle< GBRForest >
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
EGRegressionModifierV1::eleForestsSigma_
std::vector< const GBRForestD * > eleForestsSigma_
Definition: EGRegressionModifierV1.cc:60
EEDetId
Definition: EEDetId.h:14
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EGRegressionModifierV1::epForest_
const GBRForest * epForest_
Definition: EGRegressionModifierV1.cc:61
EGRegressionModifierV1::bunchspacing_
int bunchspacing_
Definition: EGRegressionModifierV1.cc:47
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
reco::Photon::r9
float r9() const
Definition: Photon.h:240
reco::CaloCluster::eta
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
EGRegressionModifierV1::CondNames::mean50ns
std::vector< std::string > mean50ns
Definition: EGRegressionModifierV1.cc:34
reco::Photon::isEB
bool isEB() const
Definition: Photon.h:119
createfilelist.int
int
Definition: createfilelist.py:10
reco::GsfElectron::ecalDriven
bool ecalDriven() const
Definition: GsfElectron.cc:168
BPHMonitor_cfi.photons
photons
Definition: BPHMonitor_cfi.py:91
EGRegressionModifierV1::rhoToken_
edm::EDGetTokenT< double > rhoToken_
Definition: EGRegressionModifierV1.cc:50
reco::Photon::setCorrectedEnergy
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
get
#define get
cc
reco::Photon::e5x5
float e5x5() const
Definition: Photon.h:234
reco::GsfElectron::p4
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:211
reco::CaloCluster::seed
DetId seed() const
return DetId of seed
Definition: CaloCluster.h:219
edm::Ptr
Definition: AssociationVector.h:31
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
reco::Photon::hadronicOverEm
float hadronicOverEm() const
the total hadronic over electromagnetic fraction
Definition: Photon.h:208
EGRegressionModifierV1::phoCondNames_
CondNames phoCondNames_
Definition: EGRegressionModifierV1.cc:41
pwdgSkimBPark_cfi.electrons
electrons
Definition: pwdgSkimBPark_cfi.py:6
EGRegressionModifierV1::condNamesWeight50ns_
std::string condNamesWeight50ns_
Definition: EGRegressionModifierV1.cc:43
EGRegressionModifierV1::caloGeomH_
edm::ESHandle< CaloGeometry > caloGeomH_
Definition: EGRegressionModifierV1.cc:54
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
EGRegressionModifierV1::condNamesWeight25ns_
std::string condNamesWeight25ns_
Definition: EGRegressionModifierV1.cc:44
reco::GsfElectron::classification
Classification classification() const
Definition: GsfElectron.h:730
GBRWrapperRcd
Definition: GBRWrapperRcd.h:24
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
reco::GsfElectron::trackerDrivenSeed
bool trackerDrivenSeed() const
Definition: GsfElectron.h:167
reco::GsfElectron::superCluster
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:163
EGRegressionModifierV1::rhoValue_
float rhoValue_
Definition: EGRegressionModifierV1.cc:49
EGRegressionModifierV1::eleForestsMean_
std::vector< const GBRForestD * > eleForestsMean_
Definition: EGRegressionModifierV1.cc:59
L1TowerCalibrationProducer_cfi.iEta
iEta
Definition: L1TowerCalibrationProducer_cfi.py:60
reco::GsfElectron::trackMomentumError
float trackMomentumError() const
Definition: GsfElectron.h:808
EGRegressionModifierV1::CondNames::mean25ns
std::vector< std::string > mean25ns
Definition: EGRegressionModifierV1.cc:36
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
jets_cff.maxDR
maxDR
Definition: jets_cff.py:120
EGRegressionModifierV1::CondNames::sigma25ns
std::vector< std::string > sigma25ns
Definition: EGRegressionModifierV1.cc:37
dummy
Definition: DummySelector.h:38
reco::GsfElectron::setCorrectedEcalEnergy
void setCorrectedEcalEnergy(float newEnergy)
Definition: GsfElectron.cc:174
EGRegressionModifierV1::phoForestsSigma_
std::vector< const GBRForestD * > phoForestsSigma_
Definition: EGRegressionModifierV1.cc:58
EGRegressionModifierV1::applyExtraHighEnergyProtection_
const bool applyExtraHighEnergyProtection_
Definition: EGRegressionModifierV1.cc:55
reco::CaloCluster::energy
double energy() const
cluster energy
Definition: CaloCluster.h:149
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
edm::InputTag
Definition: InputTag.h:15
weight
Definition: weight.py:1