CMS 3D CMS Logo

EGRegressionModifierV1.cc
Go to the documentation of this file.
15 
16 #include <vdt/vdtMath.h>
17 
19 public:
21 
22  void setEvent(const edm::Event&) final;
23  void setEventContent(const edm::EventSetup&) final;
24 
25  void modifyObject(reco::GsfElectron&) const final;
26  void modifyObject(reco::Photon&) const final;
27 
28  // just calls reco versions
29  void modifyObject(pat::Electron& ele) const final { modifyObject(static_cast<reco::GsfElectron&>(ele)); }
30  void modifyObject(pat::Photon& pho) const final { modifyObject(static_cast<reco::Photon&>(pho)); }
31 
32 private:
33  struct CondNames {
34  std::vector<std::string> mean50ns;
35  std::vector<std::string> sigma50ns;
36  std::vector<std::string> mean25ns;
37  std::vector<std::string> sigma25ns;
38  };
39 
42 
45 
49  float rhoValue_;
51  int nVtx_;
56 
57  std::vector<const GBRForestD*> phoForestsMean_;
58  std::vector<const GBRForestD*> phoForestsSigma_;
59  std::vector<const GBRForestD*> eleForestsMean_;
60  std::vector<const GBRForestD*> eleForestsSigma_;
62 };
63 
65 
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 }
90 
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 }
105 
108 
111 
114 
115  edm::ESHandle<GBRForest> forestEH;
116  const std::string ep_condnames_weight = (bunchspacing_ == 25) ? condNamesWeight25ns_ : condNamesWeight50ns_;
117  evs.get<GBRWrapperRcd>().get(ep_condnames_weight, forestEH);
118  epForest_ = forestEH.product();
119 }
120 
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 }
301 
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 }
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
Definition: EGRegressionModifierV1.cc:18
EGRegressionModifierV1::bunchSpacingToken_
edm::EDGetTokenT< unsigned int > bunchSpacingToken_
Definition: EGRegressionModifierV1.cc:48
electrons_cff.bool
bool
Definition: electrons_cff.py:372
EGRegressionModifierHelpers.h
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
edm::EDGetTokenT< unsigned int >
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
EBDetId
Definition: EBDetId.h:17
edm
HLT enums.
Definition: AlignableModifier.h:19
GBRWrapperRcd.h
mps_merge.weight
weight
Definition: mps_merge.py:88
GBRForest
Definition: GBRForest.h:25
pat::Photon
Analysis-level Photon class.
Definition: Photon.h:46
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
EBDetId.h
EEDetId.h
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::setEvent
void setEvent(const edm::Event &) final
Definition: EGRegressionModifierV1.cc:91
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
EGRegressionModifierV1::vtxToken_
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
Definition: EGRegressionModifierV1.cc:52
GBRForest.h
reco::GsfElectron::showerShape
const ShowerShape & showerShape() const
Definition: GsfElectron.h:439
edm::Handle< reco::VertexCollection >
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
Photon.h
EGRegressionModifierV1::vtxH_
edm::Handle< reco::VertexCollection > vtxH_
Definition: EGRegressionModifierV1.cc:53
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
ModifyObjectValueBase.h
EGRegressionModifierV1::modifyObject
void modifyObject(pat::Electron &ele) const final
Definition: EGRegressionModifierV1.cc:29
EGRegressionModifierV1::phoForestsMean_
std::vector< const GBRForestD * > phoForestsMean_
Definition: EGRegressionModifierV1.cc:57
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
EGRegressionModifierV1::EGRegressionModifierV1
EGRegressionModifierV1(const edm::ParameterSet &conf, edm::ConsumesCollector &cc)
Definition: EGRegressionModifierV1.cc:66
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< CaloGeometry >
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
reco::GsfElectron
Definition: GsfElectron.h:35
GsfElectron.h
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
EDGetToken.h
EGRegressionModifierV1::eleForestsSigma_
std::vector< const GBRForestD * > eleForestsSigma_
Definition: EGRegressionModifierV1.cc:60
EEDetId
Definition: EEDetId.h:14
CaloGeometryRecord.h
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
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
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
ModifyObjectValueBase
Definition: ModifyObjectValueBase.h:18
reco::CaloCluster::eta
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
EGRegressionModifierV1::CondNames
Definition: EGRegressionModifierV1.cc:33
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
edmplugin::PluginFactory
Definition: PluginFactory.h:34
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
edm::EventSetup
Definition: EventSetup.h:57
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
EGRegressionModifierV1::setEventContent
void setEventContent(const edm::EventSetup &) final
Definition: EGRegressionModifierV1.cc:106
InputTag.h
edm::Ptr
Definition: AssociationVector.h:31
ValueMap.h
EcalClusterLocal.h
reco::Photon
Definition: Photon.h:21
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::modifyObject
void modifyObject(pat::Photon &pho) const final
Definition: EGRegressionModifierV1.cc:30
EGRegressionModifierV1::condNamesWeight25ns_
std::string condNamesWeight25ns_
Definition: EGRegressionModifierV1.cc:44
CaloGeometry.h
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
pat::Electron
Analysis-level electron class.
Definition: Electron.h:51
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
edm::Event
Definition: Event.h:73
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
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
weight
Definition: weight.py:1