CMS 3D CMS Logo

GsfElectronAlgo.cc
Go to the documentation of this file.
29 
30 #include <Math/Point3D.h>
31 #include <memory>
32 
33 #include <algorithm>
34 #include <sstream>
35 
36 using namespace edm;
37 using namespace reco;
38 
40  // soft electron MVA
42  sconfig.vweightsfiles = conf.getParameter<std::vector<std::string>>("SoftElecMVAFilesString");
43  sElectronMVAEstimator = std::make_unique<SoftElectronMVAEstimator>(sconfig);
44  // isolated electron MVA
46  iconfig.vweightsfiles = conf.getParameter<std::vector<std::string>>("ElecMVAFilesString");
47  iElectronMVAEstimator = std::make_unique<ElectronMVAEstimator>(iconfig);
48 }
49 
50 //===================================================================
51 // GsfElectronAlgo::EventData
52 //===================================================================
53 
55  // utilities
56  void retreiveOriginalTrackCollections(const reco::TrackRef&, const reco::GsfTrackRef&);
57 
58  // general
59  edm::Event const* event;
61 
62  // input collections
70 
71  // isolation helpers
78 
83 
86 
87  bool originalCtfTrackCollectionRetreived = false;
88  bool originalGsfTrackCollectionRetreived = false;
89 };
90 
91 //===================================================================
92 // GsfElectronAlgo::ElectronData
93 //===================================================================
94 
96  // Refs to subproducts
103 
104  // constructors
106 
107  // utilities
108  void computeCharge(int& charge, reco::GsfElectron::ChargeInfo& info);
109  reco::CaloClusterPtr getEleBasicCluster(MultiTrajectoryStateTransform const&);
110  bool calculateTSOS(MultiTrajectoryStateTransform const&, GsfConstraintAtVertex const&);
111  void calculateMode();
112  reco::Candidate::LorentzVector calculateMomentum();
113 
114  // TSOS
122 
123  // mode
124  GlobalVector innMom, seedMom, eleMom, sclMom, vtxMom, outMom;
125  GlobalPoint innPos, seedPos, elePos, sclPos, vtxPos, outPos;
127 };
128 
130  const reco::GsfTrackRef& gsfTrack) {
131  if ((!originalCtfTrackCollectionRetreived) && (ctfTrack.isNonnull())) {
132  event->get(ctfTrack.id(), originalCtfTracks);
133  originalCtfTrackCollectionRetreived = true;
134  }
135  if ((!originalGsfTrackCollectionRetreived) && (gsfTrack.isNonnull())) {
136  event->get(gsfTrack.id(), originalGsfTracks);
137  originalGsfTrackCollectionRetreived = true;
138  }
139 }
140 
142  : coreRef(core),
143  gsfTrackRef(coreRef->gsfTrack()),
144  superClusterRef(coreRef->superCluster()),
145  ctfTrackRef(coreRef->ctfTrack()),
146  shFracInnerHits(coreRef->ctfGsfOverlap()),
147  beamSpot(bs) {}
148 
150  // determine charge from SC
151  GlobalPoint orig, scpos;
152  ele_convert(beamSpot.position(), orig);
153  ele_convert(superClusterRef->position(), scpos);
154  GlobalVector scvect(scpos - orig);
155  GlobalPoint inntkpos = innTSOS.globalPosition();
156  GlobalVector inntkvect = GlobalVector(inntkpos - orig);
157  float dPhiInnEle = normalizedPhi(scvect.barePhi() - inntkvect.barePhi());
158  if (dPhiInnEle > 0)
159  info.scPixCharge = -1;
160  else
161  info.scPixCharge = 1;
162 
163  // flags
164  int chargeGsf = gsfTrackRef->charge();
165  info.isGsfScPixConsistent = ((chargeGsf * info.scPixCharge) > 0);
166  info.isGsfCtfConsistent = (ctfTrackRef.isNonnull() && ((chargeGsf * ctfTrackRef->charge()) > 0));
167  info.isGsfCtfScPixConsistent = (info.isGsfScPixConsistent && info.isGsfCtfConsistent);
168 
169  // default charge
170  if (info.isGsfScPixConsistent || ctfTrackRef.isNull()) {
171  charge = info.scPixCharge;
172  } else {
173  charge = ctfTrackRef->charge();
174  }
175 }
176 
178  CaloClusterPtr eleRef;
179  TrajectoryStateOnSurface tempTSOS;
180  TrajectoryStateOnSurface outTSOS = mtsTransform.outerStateOnSurface(*gsfTrackRef);
181  float dphimin = 1.e30;
182  for (auto const& bc : superClusterRef->clusters()) {
183  GlobalPoint posclu(bc->position().x(), bc->position().y(), bc->position().z());
184  tempTSOS = mtsTransform.extrapolatedState(outTSOS, posclu);
185  if (!tempTSOS.isValid())
186  tempTSOS = outTSOS;
187  GlobalPoint extrap = tempTSOS.globalPosition();
188  float dphi = EleRelPointPair(posclu, extrap, beamSpot.position()).dPhi();
189  if (std::abs(dphi) < dphimin) {
190  dphimin = std::abs(dphi);
191  eleRef = bc;
192  eleTSOS = tempTSOS;
193  }
194  }
195  return eleRef;
196 }
197 
199  GsfConstraintAtVertex const& constraintAtVtx) {
200  //at innermost point
201  innTSOS = mtsTransform.innerStateOnSurface(*gsfTrackRef);
202  if (!innTSOS.isValid())
203  return false;
204 
205  //at vertex
206  // innermost state propagation to the beam spot position
208  ele_convert(beamSpot.position(), bsPos);
209  vtxTSOS = mtsTransform.extrapolatedState(innTSOS, bsPos);
210  if (!vtxTSOS.isValid())
211  vtxTSOS = innTSOS;
212 
213  //at seed
214  outTSOS = mtsTransform.outerStateOnSurface(*gsfTrackRef);
215  if (!outTSOS.isValid())
216  return false;
217 
218  // TrajectoryStateOnSurface seedTSOS
219  seedTSOS = mtsTransform.extrapolatedState(outTSOS,
220  GlobalPoint(superClusterRef->seed()->position().x(),
221  superClusterRef->seed()->position().y(),
222  superClusterRef->seed()->position().z()));
223  if (!seedTSOS.isValid())
224  seedTSOS = outTSOS;
225 
226  // at scl
227  sclTSOS = mtsTransform.extrapolatedState(
228  innTSOS, GlobalPoint(superClusterRef->x(), superClusterRef->y(), superClusterRef->z()));
229  if (!sclTSOS.isValid())
230  sclTSOS = outTSOS;
231 
232  // constrained momentum
233  constrainedVtxTSOS = constraintAtVtx.constrainAtBeamSpot(*gsfTrackRef, beamSpot);
234 
235  return true;
236 }
237 
251  multiTrajectoryStateMode::momentumFromModeCartesian(constrainedVtxTSOS, vtxMomWithConstraint);
252 }
253 
255  double scale = superClusterRef->energy() / vtxMom.mag();
257  vtxMom.x() * scale, vtxMom.y() * scale, vtxMom.z() * scale, superClusterRef->energy());
258 }
259 
261  EventData const& eventData) const {
263 
264  const reco::CaloCluster& seedCluster = *(theClus->seed());
265  DetId seedXtalId = seedCluster.seed();
266  int detector = seedXtalId.subdetId();
267  const EcalRecHitCollection* ecalRecHits = nullptr;
268  if (detector == EcalBarrel)
269  ecalRecHits = eventData.barrelRecHits.product();
270  else
271  ecalRecHits = eventData.endcapRecHits.product();
272 
273  int nSaturatedXtals = 0;
274  bool isSeedSaturated = false;
275  for (auto&& hitFractionPair : theClus->hitsAndFractions()) {
276  auto&& ecalRecHit = ecalRecHits->find(hitFractionPair.first);
277  if (ecalRecHit == ecalRecHits->end())
278  continue;
279  if (ecalRecHit->checkFlag(EcalRecHit::Flags::kSaturated)) {
280  nSaturatedXtals++;
281  if (seedXtalId == ecalRecHit->detid())
282  isSeedSaturated = true;
283  }
284  }
285  si.nSaturatedXtals = nSaturatedXtals;
286  si.isSeedSaturated = isSeedSaturated;
287 
288  return si;
289 }
290 
291 template <bool full5x5>
293  ElectronHcalHelper const& hcalHelper,
294  EventData const& eventData,
295  CaloTopology const& topology,
296  CaloGeometry const& geometry,
297  EcalPFRecHitThresholds const& thresholds) const {
298  using ClusterTools = EcalClusterToolsT<full5x5>;
299  reco::GsfElectron::ShowerShape showerShape;
300 
301  const reco::CaloCluster& seedCluster = *(theClus->seed());
302  // temporary, till CaloCluster->seed() is made available
303  DetId seedXtalId = seedCluster.hitsAndFractions()[0].first;
304  int detector = seedXtalId.subdetId();
305 
306  const EcalRecHitCollection* recHits = nullptr;
307  std::vector<int> recHitFlagsToBeExcluded;
308  std::vector<int> recHitSeverityToBeExcluded;
309  if (detector == EcalBarrel) {
310  recHits = eventData.barrelRecHits.product();
311  recHitFlagsToBeExcluded = cfg_.recHits.recHitFlagsToBeExcludedBarrel;
312  recHitSeverityToBeExcluded = cfg_.recHits.recHitSeverityToBeExcludedBarrel;
313  } else {
314  recHits = eventData.endcapRecHits.product();
315  recHitFlagsToBeExcluded = cfg_.recHits.recHitFlagsToBeExcludedEndcaps;
316  recHitSeverityToBeExcluded = cfg_.recHits.recHitSeverityToBeExcludedEndcaps;
317  }
318 
319  const auto& covariances = ClusterTools::covariances(seedCluster, recHits, &topology, &geometry);
320 
321  // do noise-cleaning for full5x5, by passing per crystal PF recHit thresholds and mult values
322  // mult values for EB and EE were obtained by dedicated studies
323  const auto& localCovariances = full5x5 ? ClusterTools::localCovariances(seedCluster,
324  recHits,
325  &topology,
327  &thresholds,
330  : ClusterTools::localCovariances(seedCluster, recHits, &topology);
331 
332  showerShape.sigmaEtaEta = sqrt(covariances[0]);
333  showerShape.sigmaIetaIeta = sqrt(localCovariances[0]);
334  if (!edm::isNotFinite(localCovariances[2]))
335  showerShape.sigmaIphiIphi = sqrt(localCovariances[2]);
336  showerShape.e1x5 = ClusterTools::e1x5(seedCluster, recHits, &topology);
337  showerShape.e2x5Max = ClusterTools::e2x5Max(seedCluster, recHits, &topology);
338  showerShape.e5x5 = ClusterTools::e5x5(seedCluster, recHits, &topology);
339  showerShape.r9 = ClusterTools::e3x3(seedCluster, recHits, &topology) / theClus->rawEnergy();
340 
341  const float scale = full5x5 ? showerShape.e5x5 : theClus->energy();
342 
343  showerShape.hcalDepth1OverEcal = hcalHelper.hcalESumDepth1(*theClus) / theClus->energy();
344  showerShape.hcalDepth2OverEcal = hcalHelper.hcalESumDepth2(*theClus) / theClus->energy();
345  showerShape.hcalTowersBehindClusters = hcalHelper.hcalTowersBehindClusters(*theClus);
346  showerShape.hcalDepth1OverEcalBc =
348  showerShape.hcalDepth2OverEcalBc =
350  showerShape.invalidHcal = (showerShape.hcalDepth1OverEcalBc == 0 && showerShape.hcalDepth2OverEcalBc == 0 &&
351  !hcalHelper.hasActiveHcal(*theClus));
352 
353  // extra shower shapes
354  const float see_by_spp = showerShape.sigmaIetaIeta * showerShape.sigmaIphiIphi;
355  if (see_by_spp > 0) {
356  showerShape.sigmaIetaIphi = localCovariances[1] / see_by_spp;
357  } else if (localCovariances[1] > 0) {
358  showerShape.sigmaIetaIphi = 1.f;
359  } else {
360  showerShape.sigmaIetaIphi = -1.f;
361  }
362  showerShape.eMax = ClusterTools::eMax(seedCluster, recHits);
363  showerShape.e2nd = ClusterTools::e2nd(seedCluster, recHits);
364  showerShape.eTop = ClusterTools::eTop(seedCluster, recHits, &topology);
365  showerShape.eLeft = ClusterTools::eLeft(seedCluster, recHits, &topology);
366  showerShape.eRight = ClusterTools::eRight(seedCluster, recHits, &topology);
367  showerShape.eBottom = ClusterTools::eBottom(seedCluster, recHits, &topology);
368 
369  showerShape.e2x5Left = ClusterTools::e2x5Left(seedCluster, recHits, &topology);
370  showerShape.e2x5Right = ClusterTools::e2x5Right(seedCluster, recHits, &topology);
371  showerShape.e2x5Top = ClusterTools::e2x5Top(seedCluster, recHits, &topology);
372  showerShape.e2x5Bottom = ClusterTools::e2x5Bottom(seedCluster, recHits, &topology);
373 
374  return showerShape;
375 }
376 
377 //===================================================================
378 // GsfElectronAlgo
379 //===================================================================
380 
382  const StrategyConfiguration& strategy,
383  const CutsConfiguration& cuts,
385  const IsolationConfiguration& iso,
387  std::unique_ptr<EcalClusterFunctionBaseClass>&& crackCorrectionFunction,
389  const edm::ParameterSet& tkIsol03,
390  const edm::ParameterSet& tkIsol04,
391  const edm::ParameterSet& tkIsolHEEP03,
392  const edm::ParameterSet& tkIsolHEEP04,
394  : cfg_{input, strategy, cuts, iso, recHits},
395  tkIsol03CalcCfg_(tkIsol03),
396  tkIsol04CalcCfg_(tkIsol04),
397  tkIsolHEEP03CalcCfg_(tkIsolHEEP03),
398  tkIsolHEEP04CalcCfg_(tkIsolHEEP04),
399  magneticFieldToken_{cc.esConsumes()},
400  caloGeometryToken_{cc.esConsumes()},
401  caloTopologyToken_{cc.esConsumes()},
402  trackerGeometryToken_{cc.esConsumes()},
403  ecalSeveretyLevelAlgoToken_{cc.esConsumes()},
404  ecalPFRechitThresholdsToken_{cc.esConsumes()},
405  hcalHelper_{hcal, std::move(cc)},
406  crackCorrectionFunction_{std::forward<std::unique_ptr<EcalClusterFunctionBaseClass>>(crackCorrectionFunction)},
407  regHelper_{reg, cfg_.strategy.useEcalRegression, cfg_.strategy.useCombinationRegression, cc}
408 
409 {}
410 
414 
416  crackCorrectionFunction_->init(es);
417  }
418 }
419 
421  CaloGeometry const& caloGeometry,
422  EcalSeverityLevelAlgo const& ecalSeveretyLevelAlgo) {
423  auto const& towers = event.get(cfg_.tokens.hcalTowersTag);
424 
425  // Isolation algos
426  float egHcalIsoConeSizeOutSmall = 0.3, egHcalIsoConeSizeOutLarge = 0.4;
427  float egHcalIsoConeSizeIn = cfg_.iso.intRadiusHcal, egHcalIsoPtMin = cfg_.iso.etMinHcal;
428  int egHcalDepth1 = 1, egHcalDepth2 = 2;
429 
430  float egIsoConeSizeOutSmall = 0.3, egIsoConeSizeOutLarge = 0.4, egIsoJurassicWidth = cfg_.iso.jurassicWidth;
431  float egIsoPtMinBarrel = cfg_.iso.etMinBarrel, egIsoEMinBarrel = cfg_.iso.eMinBarrel,
432  egIsoConeSizeInBarrel = cfg_.iso.intRadiusEcalBarrel;
433  float egIsoPtMinEndcap = cfg_.iso.etMinEndcaps, egIsoEMinEndcap = cfg_.iso.eMinEndcaps,
434  egIsoConeSizeInEndcap = cfg_.iso.intRadiusEcalEndcaps;
435 
436  auto barrelRecHits = event.getHandle(cfg_.tokens.barrelRecHitCollection);
437  auto endcapRecHits = event.getHandle(cfg_.tokens.endcapRecHitCollection);
438 
439  auto ctfTracks = event.getHandle(cfg_.tokens.ctfTracks);
440 
441  EventData eventData{
442  .event = &event,
443  .beamspot = &event.get(cfg_.tokens.beamSpotTag),
444  .coreElectrons = event.getHandle(cfg_.tokens.gsfElectronCores),
445  .barrelRecHits = barrelRecHits,
446  .endcapRecHits = endcapRecHits,
447  .currentCtfTracks = ctfTracks,
448  .seeds = event.getHandle(cfg_.tokens.seedsTag),
449  .vertices = event.getHandle(cfg_.tokens.vtxCollectionTag),
450  .conversions = cfg_.strategy.fillConvVtxFitProb ? event.getHandle(cfg_.tokens.conversions)
452  .hadDepth1Isolation03 =
453  EgammaTowerIsolation(egHcalIsoConeSizeOutSmall, egHcalIsoConeSizeIn, egHcalIsoPtMin, egHcalDepth1, &towers),
454  .hadDepth1Isolation04 =
455  EgammaTowerIsolation(egHcalIsoConeSizeOutLarge, egHcalIsoConeSizeIn, egHcalIsoPtMin, egHcalDepth1, &towers),
456  .hadDepth2Isolation03 =
457  EgammaTowerIsolation(egHcalIsoConeSizeOutSmall, egHcalIsoConeSizeIn, egHcalIsoPtMin, egHcalDepth2, &towers),
458  .hadDepth2Isolation04 =
459  EgammaTowerIsolation(egHcalIsoConeSizeOutLarge, egHcalIsoConeSizeIn, egHcalIsoPtMin, egHcalDepth2, &towers),
460  .hadDepth1Isolation03Bc =
461  EgammaTowerIsolation(egHcalIsoConeSizeOutSmall, 0., egHcalIsoPtMin, egHcalDepth1, &towers),
462  .hadDepth1Isolation04Bc =
463  EgammaTowerIsolation(egHcalIsoConeSizeOutLarge, 0., egHcalIsoPtMin, egHcalDepth1, &towers),
464  .hadDepth2Isolation03Bc =
465  EgammaTowerIsolation(egHcalIsoConeSizeOutSmall, 0., egHcalIsoPtMin, egHcalDepth2, &towers),
466  .hadDepth2Isolation04Bc =
467  EgammaTowerIsolation(egHcalIsoConeSizeOutLarge, 0., egHcalIsoPtMin, egHcalDepth2, &towers),
468  .ecalBarrelIsol03 = EgammaRecHitIsolation(egIsoConeSizeOutSmall,
469  egIsoConeSizeInBarrel,
470  egIsoJurassicWidth,
471  egIsoPtMinBarrel,
472  egIsoEMinBarrel,
473  &caloGeometry,
474  *barrelRecHits,
475  &ecalSeveretyLevelAlgo,
476  DetId::Ecal),
477  .ecalBarrelIsol04 = EgammaRecHitIsolation(egIsoConeSizeOutLarge,
478  egIsoConeSizeInBarrel,
479  egIsoJurassicWidth,
480  egIsoPtMinBarrel,
481  egIsoEMinBarrel,
482  &caloGeometry,
483  *barrelRecHits,
484  &ecalSeveretyLevelAlgo,
485  DetId::Ecal),
486  .ecalEndcapIsol03 = EgammaRecHitIsolation(egIsoConeSizeOutSmall,
487  egIsoConeSizeInEndcap,
488  egIsoJurassicWidth,
489  egIsoPtMinEndcap,
490  egIsoEMinEndcap,
491  &caloGeometry,
492  *endcapRecHits,
493  &ecalSeveretyLevelAlgo,
494  DetId::Ecal),
495  .ecalEndcapIsol04 = EgammaRecHitIsolation(egIsoConeSizeOutLarge,
496  egIsoConeSizeInEndcap,
497  egIsoJurassicWidth,
498  egIsoPtMinEndcap,
499  egIsoEMinEndcap,
500  &caloGeometry,
501  *endcapRecHits,
502  &ecalSeveretyLevelAlgo,
503  DetId::Ecal),
504  .tkIsol03Calc = EleTkIsolFromCands(tkIsol03CalcCfg_, *ctfTracks),
505  .tkIsol04Calc = EleTkIsolFromCands(tkIsol04CalcCfg_, *ctfTracks),
506  .tkIsolHEEP03Calc = EleTkIsolFromCands(tkIsolHEEP03CalcCfg_, *ctfTracks),
507  .tkIsolHEEP04Calc = EleTkIsolFromCands(tkIsolHEEP04CalcCfg_, *ctfTracks),
508  .originalCtfTracks = {},
509  .originalGsfTracks = {}};
510 
511  eventData.ecalBarrelIsol03.setUseNumCrystals(cfg_.iso.useNumCrystals);
512  eventData.ecalBarrelIsol03.setVetoClustered(cfg_.iso.vetoClustered);
513  eventData.ecalBarrelIsol03.doSeverityChecks(eventData.barrelRecHits.product(),
515  eventData.ecalBarrelIsol03.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedBarrel);
516  eventData.ecalBarrelIsol04.setUseNumCrystals(cfg_.iso.useNumCrystals);
517  eventData.ecalBarrelIsol04.setVetoClustered(cfg_.iso.vetoClustered);
518  eventData.ecalBarrelIsol04.doSeverityChecks(eventData.barrelRecHits.product(),
520  eventData.ecalBarrelIsol04.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedBarrel);
521  eventData.ecalEndcapIsol03.setUseNumCrystals(cfg_.iso.useNumCrystals);
522  eventData.ecalEndcapIsol03.setVetoClustered(cfg_.iso.vetoClustered);
523  eventData.ecalEndcapIsol03.doSeverityChecks(eventData.endcapRecHits.product(),
525  eventData.ecalEndcapIsol03.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedEndcaps);
526  eventData.ecalEndcapIsol04.setUseNumCrystals(cfg_.iso.useNumCrystals);
527  eventData.ecalEndcapIsol04.setVetoClustered(cfg_.iso.vetoClustered);
528  eventData.ecalEndcapIsol04.doSeverityChecks(eventData.endcapRecHits.product(),
530  eventData.ecalEndcapIsol04.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedEndcaps);
531 
532  return eventData;
533 }
534 
536  edm::EventSetup const& eventSetup,
539 
540  auto const& magneticField = eventSetup.getData(magneticFieldToken_);
541  auto const& caloGeometry = eventSetup.getData(caloGeometryToken_);
542  auto const& caloTopology = eventSetup.getData(caloTopologyToken_);
543  auto const& trackerGeometry = eventSetup.getData(trackerGeometryToken_);
544  auto const& ecalSeveretyLevelAlgo = eventSetup.getData(ecalSeveretyLevelAlgoToken_);
545  auto const& thresholds = eventSetup.getData(ecalPFRechitThresholdsToken_);
546 
547  // prepare access to hcal data
548  hcalHelper_.beginEvent(event, eventSetup);
549 
550  checkSetup(eventSetup);
551  auto eventData = beginEvent(event, caloGeometry, ecalSeveretyLevelAlgo);
552  double magneticFieldInTesla = magneticField.inTesla(GlobalPoint(0., 0., 0.)).z();
553 
554  MultiTrajectoryStateTransform mtsTransform(&trackerGeometry, &magneticField);
555  GsfConstraintAtVertex constraintAtVtx(eventSetup);
556 
557  std::optional<egamma::conv::TrackTable> ctfTrackTable = std::nullopt;
558  std::optional<egamma::conv::TrackTable> gsfTrackTable = std::nullopt;
559 
560  const GsfElectronCoreCollection* coreCollection = eventData.coreElectrons.product();
561  for (unsigned int i = 0; i < coreCollection->size(); ++i) {
562  // check there is no existing electron with this core
563  const GsfElectronCoreRef coreRef = edm::Ref<GsfElectronCoreCollection>(eventData.coreElectrons, i);
564 
565  // check there is a super-cluster
566  if (coreRef->superCluster().isNull())
567  continue;
568 
569  // prepare internal structure for electron specific data
570  ElectronData electronData(coreRef, *eventData.beamspot);
571 
572  // calculate and check Trajectory StatesOnSurface....
573  if (!electronData.calculateTSOS(mtsTransform, constraintAtVtx))
574  continue;
575 
576  eventData.retreiveOriginalTrackCollections(electronData.ctfTrackRef, electronData.coreRef->gsfTrack());
577 
578  if (!eventData.originalCtfTracks.isValid()) {
579  eventData.originalCtfTracks = eventData.currentCtfTracks;
580  }
581 
582  if (ctfTrackTable == std::nullopt) {
583  ctfTrackTable = egamma::conv::TrackTable(*eventData.originalCtfTracks);
584  }
585  if (gsfTrackTable == std::nullopt) {
586  gsfTrackTable = egamma::conv::TrackTable(*eventData.originalGsfTracks);
587  }
588 
590  electronData,
591  eventData,
592  caloTopology,
593  caloGeometry,
594  mtsTransform,
595  magneticFieldInTesla,
596  hoc,
597  ctfTrackTable.value(),
598  gsfTrackTable.value(),
599  thresholds);
600 
601  } // loop over tracks
602  return electrons;
603 }
604 
606  // default value
607  ele.setPassCutBasedPreselection(false);
608 
609  // kind of seeding
610  bool eg = ele.core()->ecalDrivenSeed();
611  bool pf = ele.core()->trackerDrivenSeed() && !ele.core()->ecalDrivenSeed();
612  if (eg && pf) {
613  throw cms::Exception("GsfElectronAlgo|BothEcalAndPureTrackerDriven")
614  << "An electron cannot be both egamma and purely pflow";
615  }
616  if ((!eg) && (!pf)) {
617  throw cms::Exception("GsfElectronAlgo|NeitherEcalNorPureTrackerDriven")
618  << "An electron cannot be neither egamma nor purely pflow";
619  }
620 
621  CutsConfiguration const& cfg = cfg_.cuts;
622 
623  // Et cut
624  double etaValue = EleRelPoint(ele.superCluster()->position(), bs.position()).eta();
625  double etValue = ele.superCluster()->energy() / cosh(etaValue);
626  LogTrace("GsfElectronAlgo") << "Et : " << etValue;
627  if (ele.isEB() && (etValue < cfg.minSCEtBarrel))
628  return;
629  if (ele.isEE() && (etValue < cfg.minSCEtEndcaps))
630  return;
631  LogTrace("GsfElectronAlgo") << "Et criteria are satisfied";
632 
633  // E/p cut
634  double eopValue = ele.eSuperClusterOverP();
635  LogTrace("GsfElectronAlgo") << "E/p : " << eopValue;
636  if (ele.isEB() && (eopValue > cfg.maxEOverPBarrel))
637  return;
638  if (ele.isEE() && (eopValue > cfg.maxEOverPEndcaps))
639  return;
640  if (ele.isEB() && (eopValue < cfg.minEOverPBarrel))
641  return;
642  if (ele.isEE() && (eopValue < cfg.minEOverPEndcaps))
643  return;
644  LogTrace("GsfElectronAlgo") << "E/p criteria are satisfied";
645 
646  // HoE cuts
647  LogTrace("GsfElectronAlgo") << "HoE1 : " << ele.hcalDepth1OverEcal() << ", HoE2 : " << ele.hcalDepth2OverEcal();
648  double hoeCone = ele.hcalOverEcal();
649  double hoeTower = ele.hcalOverEcalBc();
650  const reco::CaloCluster& seedCluster = *(ele.superCluster()->seed());
651  int detector = seedCluster.hitsAndFractions()[0].first.subdetId();
652  bool HoEveto = false;
653  double scle = ele.superCluster()->energy();
654 
655  if (detector == EcalBarrel)
656  HoEveto = hoeCone * scle < cfg.maxHBarrelCone || hoeTower * scle < cfg.maxHBarrelTower ||
657  hoeCone < cfg.maxHOverEBarrelCone || hoeTower < cfg.maxHOverEBarrelTower;
658  else if (detector == EcalEndcap)
659  HoEveto = hoeCone * scle < cfg.maxHEndcapsCone || hoeTower * scle < cfg.maxHEndcapsTower ||
660  hoeCone < cfg.maxHOverEEndcapsCone || hoeTower < cfg.maxHOverEEndcapsTower;
661 
662  if (!HoEveto)
663  return;
664  LogTrace("GsfElectronAlgo") << "H/E criteria are satisfied";
665 
666  // delta eta criteria
667  double deta = ele.deltaEtaSuperClusterTrackAtVtx();
668  LogTrace("GsfElectronAlgo") << "delta eta : " << deta;
669  if (ele.isEB() && (std::abs(deta) > cfg.maxDeltaEtaBarrel))
670  return;
671  if (ele.isEE() && (std::abs(deta) > cfg.maxDeltaEtaEndcaps))
672  return;
673  LogTrace("GsfElectronAlgo") << "Delta eta criteria are satisfied";
674 
675  // delta phi criteria
676  double dphi = ele.deltaPhiSuperClusterTrackAtVtx();
677  LogTrace("GsfElectronAlgo") << "delta phi : " << dphi;
678  if (ele.isEB() && (std::abs(dphi) > cfg.maxDeltaPhiBarrel))
679  return;
680  if (ele.isEE() && (std::abs(dphi) > cfg.maxDeltaPhiEndcaps))
681  return;
682  LogTrace("GsfElectronAlgo") << "Delta phi criteria are satisfied";
683 
684  // sigma ieta ieta
685  LogTrace("GsfElectronAlgo") << "sigma ieta ieta : " << ele.sigmaIetaIeta();
686  if (ele.isEB() && (ele.sigmaIetaIeta() > cfg.maxSigmaIetaIetaBarrel))
687  return;
688  if (ele.isEE() && (ele.sigmaIetaIeta() > cfg.maxSigmaIetaIetaEndcaps))
689  return;
690  LogTrace("GsfElectronAlgo") << "Sigma ieta ieta criteria are satisfied";
691 
692  // fiducial
693  if (!ele.isEB() && cfg.isBarrel)
694  return;
695  if (!ele.isEE() && cfg.isEndcaps)
696  return;
697  if (cfg.isFiducial &&
698  (ele.isEBEEGap() || ele.isEBEtaGap() || ele.isEBPhiGap() || ele.isEERingGap() || ele.isEEDeeGap()))
699  return;
700  LogTrace("GsfElectronAlgo") << "Fiducial flags criteria are satisfied";
701 
702  // seed in TEC
703  edm::RefToBase<TrajectorySeed> seed = ele.gsfTrack()->extra()->seedRef();
704  ElectronSeedRef elseed = seed.castTo<ElectronSeedRef>();
705  if (eg && !cfg_.cuts.seedFromTEC) {
706  if (elseed.isNull()) {
707  throw cms::Exception("GsfElectronAlgo|NotElectronSeed") << "The GsfTrack seed is not an ElectronSeed ?!";
708  } else {
709  if (elseed->subDet(1) == 6)
710  return;
711  }
712  }
713 
714  // transverse impact parameter
715  if (std::abs(ele.gsfTrack()->dxy(bs.position())) > cfg.maxTIP)
716  return;
717  LogTrace("GsfElectronAlgo") << "TIP criterion is satisfied";
718 
719  LogTrace("GsfElectronAlgo") << "All cut based criteria are satisfied";
720  ele.setPassCutBasedPreselection(true);
721 }
722 
724  ElectronData& electronData,
725  EventData& eventData,
726  CaloTopology const& topology,
727  CaloGeometry const& geometry,
728  MultiTrajectoryStateTransform const& mtsTransform,
729  double magneticFieldInTesla,
734  // charge ID
735  int eleCharge;
736  GsfElectron::ChargeInfo eleChargeInfo;
737  electronData.computeCharge(eleCharge, eleChargeInfo);
738 
739  // electron basic cluster
740  CaloClusterPtr elbcRef = electronData.getEleBasicCluster(mtsTransform);
741 
742  // Seed cluster
743  const reco::CaloCluster& seedCluster = *(electronData.superClusterRef->seed());
744 
745  // seed Xtal
746  // temporary, till CaloCluster->seed() is made available
747  DetId seedXtalId = seedCluster.hitsAndFractions()[0].first;
748 
749  electronData.calculateMode();
750 
751  //====================================================
752  // Candidate attributes
753  //====================================================
754 
755  Candidate::LorentzVector momentum = electronData.calculateMomentum();
756 
757  //====================================================
758  // Track-Cluster Matching
759  //====================================================
760 
762  tcMatching.electronCluster = elbcRef;
763  tcMatching.eSuperClusterOverP =
764  (electronData.vtxMom.mag() > 0) ? (electronData.superClusterRef->energy() / electronData.vtxMom.mag()) : (-1.);
765  tcMatching.eSeedClusterOverP =
766  (electronData.vtxMom.mag() > 0.) ? (seedCluster.energy() / electronData.vtxMom.mag()) : (-1);
767  tcMatching.eSeedClusterOverPout =
768  (electronData.seedMom.mag() > 0.) ? (seedCluster.energy() / electronData.seedMom.mag()) : (-1.);
769  tcMatching.eEleClusterOverPout =
770  (electronData.eleMom.mag() > 0.) ? (elbcRef->energy() / electronData.eleMom.mag()) : (-1.);
771 
772  EleRelPointPair scAtVtx(
773  electronData.superClusterRef->position(), electronData.sclPos, eventData.beamspot->position());
774  tcMatching.deltaEtaSuperClusterAtVtx = scAtVtx.dEta();
775  tcMatching.deltaPhiSuperClusterAtVtx = scAtVtx.dPhi();
776 
777  EleRelPointPair seedAtCalo(seedCluster.position(), electronData.seedPos, eventData.beamspot->position());
778  tcMatching.deltaEtaSeedClusterAtCalo = seedAtCalo.dEta();
779  tcMatching.deltaPhiSeedClusterAtCalo = seedAtCalo.dPhi();
780 
781  EleRelPointPair ecAtCalo(elbcRef->position(), electronData.elePos, eventData.beamspot->position());
782  tcMatching.deltaEtaEleClusterAtCalo = ecAtCalo.dEta();
783  tcMatching.deltaPhiEleClusterAtCalo = ecAtCalo.dPhi();
784 
785  //=======================================================
786  // Track extrapolations
787  //=======================================================
788 
790  ele_convert(electronData.vtxPos, tkExtra.positionAtVtx);
791  ele_convert(electronData.sclPos, tkExtra.positionAtCalo);
792  ele_convert(electronData.vtxMom, tkExtra.momentumAtVtx);
793  ele_convert(electronData.sclMom, tkExtra.momentumAtCalo);
794  ele_convert(electronData.seedMom, tkExtra.momentumOut);
795  ele_convert(electronData.eleMom, tkExtra.momentumAtEleClus);
797 
798  //=======================================================
799  // Closest Ctf Track
800  //=======================================================
801 
803  ctfInfo.ctfTrack = electronData.ctfTrackRef;
804  ctfInfo.shFracInnerHits = electronData.shFracInnerHits;
805 
806  //====================================================
807  // FiducialFlags, using nextToBoundary definition of gaps
808  //====================================================
809 
810  reco::GsfElectron::FiducialFlags fiducialFlags;
811  int region = seedXtalId.det();
812  int detector = seedXtalId.subdetId();
813  double feta = std::abs(electronData.superClusterRef->position().eta());
814  if (detector == EcalBarrel) {
815  fiducialFlags.isEB = true;
816  EBDetId ebdetid(seedXtalId);
817  if (EBDetId::isNextToEtaBoundary(ebdetid)) {
818  if (ebdetid.ietaAbs() == 85) {
819  fiducialFlags.isEBEEGap = true;
820  } else {
821  fiducialFlags.isEBEtaGap = true;
822  }
823  }
824  if (EBDetId::isNextToPhiBoundary(ebdetid)) {
825  fiducialFlags.isEBPhiGap = true;
826  }
827  } else if (detector == EcalEndcap) {
828  fiducialFlags.isEE = true;
829  EEDetId eedetid(seedXtalId);
830  if (EEDetId::isNextToRingBoundary(eedetid)) {
831  if (std::abs(feta) < 2.) {
832  fiducialFlags.isEBEEGap = true;
833  } else {
834  fiducialFlags.isEERingGap = true;
835  }
836  }
837  if (EEDetId::isNextToDBoundary(eedetid)) {
838  fiducialFlags.isEEDeeGap = true;
839  }
841  fiducialFlags.isEE = true;
842  //HGCalDetId eeDetid(seedXtalId);
843  // fill in fiducial information when we know how to use it...
844  } else {
845  throw cms::Exception("GsfElectronAlgo|UnknownXtalRegion")
846  << "createElectron(): do not know if it is a barrel or endcap seed cluster !!!!";
847  }
848 
849  //====================================================
850  // SaturationInfo
851  //====================================================
852 
853  auto saturationInfo = calculateSaturationInfo(electronData.superClusterRef, eventData);
854 
855  //====================================================
856  // ShowerShape
857  //====================================================
858 
859  reco::GsfElectron::ShowerShape showerShape;
860  reco::GsfElectron::ShowerShape full5x5_showerShape;
862  showerShape = calculateShowerShape<false>(
863  electronData.superClusterRef, hcalHelper_, eventData, topology, geometry, thresholds);
864  full5x5_showerShape = calculateShowerShape<true>(
865  electronData.superClusterRef, hcalHelper_, eventData, topology, geometry, thresholds);
866  }
867 
868  //====================================================
869  // ConversionRejection
870  //====================================================
871 
873  if (!ctfTracks.isValid()) {
874  ctfTracks = eventData.currentCtfTracks;
875  }
876 
877  {
878  //get the references to the gsf and ctf tracks that are made
879  //by the electron
880  const reco::TrackRef el_ctftrack = electronData.coreRef->ctfTrack();
881  const reco::GsfTrackRef& el_gsftrack = electronData.coreRef->gsfTrack();
882 
883  //protect against the wrong collection being passed to the function
884  if (el_ctftrack.isNonnull() && el_ctftrack.id() != ctfTracks.id())
885  throw cms::Exception("ConversionFinderError")
886  << "ProductID of ctf track collection does not match ProductID of electron's CTF track! \n";
887  if (el_gsftrack.isNonnull() && el_gsftrack.id() != eventData.originalGsfTracks.id())
888  throw cms::Exception("ConversionFinderError")
889  << "ProductID of gsf track collection does not match ProductID of electron's GSF track! \n";
890  }
891 
892  // values of conversionInfo.flag
893  // -9999 : Partner track was not found
894  // 0 : Partner track found in the CTF collection using
895  // 1 : Partner track found in the CTF collection using
896  // 2 : Partner track found in the GSF collection using
897  // 3 : Partner track found in the GSF collection using the electron's GSF track
898  auto conversionInfo = egamma::conv::findConversion(*electronData.coreRef, ctfTable, gsfTable, magneticFieldInTesla);
899 
901  conversionVars.flags = conversionInfo.flag;
902  conversionVars.dist = conversionInfo.dist;
903  conversionVars.dcot = conversionInfo.dcot;
904  conversionVars.radius = conversionInfo.radiusOfConversion;
906  //this is an intentionally bugged version which ignores the GsfTrack
907  //this is a bug which was introduced in reduced e/gamma where the GsfTrack gets
908  //relinked to a new collection which means it can no longer match the conversion
909  //as it matches based on product/id
910  //we keep this defination for the MVAs
911  const auto matchedConv = ConversionTools::matchedConversion(
912  electronData.coreRef->ctfTrack(), *eventData.conversions, eventData.beamspot->position(), 2.0, 1e-6, 0);
913  conversionVars.vtxFitProb = ConversionTools::getVtxFitProb(matchedConv);
914  }
915  if (conversionInfo.conversionPartnerCtfTkIdx) {
916  conversionVars.partner = TrackBaseRef(reco::TrackRef(ctfTracks, conversionInfo.conversionPartnerCtfTkIdx.value()));
917  } else if (conversionInfo.conversionPartnerGsfTkIdx) {
918  conversionVars.partner =
919  TrackBaseRef(reco::GsfTrackRef(eventData.originalGsfTracks, conversionInfo.conversionPartnerGsfTkIdx.value()));
920  }
921 
922  //====================================================
923  // Go !
924  //====================================================
925 
926  electrons.emplace_back(eleCharge,
927  eleChargeInfo,
928  electronData.coreRef,
929  tcMatching,
930  tkExtra,
931  ctfInfo,
932  fiducialFlags,
933  showerShape,
934  full5x5_showerShape,
935  conversionVars,
936  saturationInfo);
937  auto& ele = electrons.back();
938  // Will be overwritten later in the case of the regression
939  ele.setCorrectedEcalEnergyError(egamma::ecalClusterEnergyUncertaintyElectronSpecific(*(ele.superCluster())));
940  ele.setP4(GsfElectron::P4_FROM_SUPER_CLUSTER, momentum, 0, true);
941 
942  //====================================================
943  // brems fractions
944  //====================================================
945 
946  if (electronData.innMom.mag() > 0.) {
947  ele.setTrackFbrem((electronData.innMom.mag() - electronData.outMom.mag()) / electronData.innMom.mag());
948  }
949 
950  // the supercluster is the refined one The seed is not necessarily the first cluster
951  // hence the use of the electronCluster
952  SuperClusterRef sc = ele.superCluster();
953  if (!(sc.isNull())) {
954  CaloClusterPtr cl = ele.electronCluster();
955  if (sc->clustersSize() > 1) {
956  float pf_fbrem = (sc->energy() - cl->energy()) / sc->energy();
957  ele.setSuperClusterFbrem(pf_fbrem);
958  } else {
959  ele.setSuperClusterFbrem(0);
960  }
961  }
962 
963  //====================================================
964  // classification and corrections
965  //====================================================
966  // classification
967  const auto elClass = egamma::classifyElectron(ele);
968  ele.setClassification(elClass);
969 
970  bool unexpectedClassification = elClass == GsfElectron::UNKNOWN || elClass > GsfElectron::GAP;
971  if (unexpectedClassification) {
972  edm::LogWarning("GsfElectronAlgo") << "unexpected classification";
973  }
974 
975  // ecal energy
976  if (cfg_.strategy.useEcalRegression) // new
977  {
978  regHelper_.applyEcalRegression(ele, *eventData.vertices, *eventData.barrelRecHits, *eventData.endcapRecHits);
979  } else // original implementation
980  {
982  if (ele.core()->ecalDrivenSeed()) {
983  if (cfg_.strategy.ecalDrivenEcalEnergyFromClassBasedParameterization && !unexpectedClassification) {
984  if (ele.isEcalEnergyCorrected()) {
985  edm::LogWarning("ElectronEnergyCorrector::classBasedElectronEnergy") << "already done";
986  } else {
987  ele.setCorrectedEcalEnergy(
989  }
990  }
992  ele.setCorrectedEcalEnergyError(egamma::classBasedElectronEnergyUncertainty(ele));
993  }
994  } else {
996  ele.setCorrectedEcalEnergyError(egamma::simpleElectronEnergyUncertainty(ele));
997  }
998  }
999  }
1000  }
1001 
1002  // momentum
1003  // Keep the default correction running first. The track momentum error is computed in there
1004  if (cfg_.strategy.useDefaultEnergyCorrection && ele.core()->ecalDrivenSeed() && !unexpectedClassification) {
1005  if (ele.p4Error(reco::GsfElectron::P4_COMBINATION) != 999.) {
1006  edm::LogWarning("ElectronMomentumCorrector::correct") << "already done";
1007  } else {
1008  auto p = egamma::correctElectronMomentum(ele, electronData.vtxTSOS);
1009  ele.correctMomentum(p.momentum, p.trackError, p.finalError);
1010  }
1011  }
1013  {
1015  }
1016 
1017  //====================================================
1018  // now isolation variables
1019  //====================================================
1021  dr03.tkSumPt = eventData.tkIsol03Calc(*ele.gsfTrack()).ptSum;
1022  dr04.tkSumPt = eventData.tkIsol04Calc(*ele.gsfTrack()).ptSum;
1023  dr03.tkSumPtHEEP = eventData.tkIsolHEEP03Calc(*ele.gsfTrack()).ptSum;
1024  dr04.tkSumPtHEEP = eventData.tkIsolHEEP04Calc(*ele.gsfTrack()).ptSum;
1025 
1029  dr03.hcalDepth1TowerSumEtBc =
1030  eventData.hadDepth1Isolation03Bc.getTowerEtSum(&ele, &(showerShape.hcalTowersBehindClusters));
1031  dr03.hcalDepth2TowerSumEtBc =
1032  eventData.hadDepth2Isolation03Bc.getTowerEtSum(&ele, &(showerShape.hcalTowersBehindClusters));
1033  dr03.ecalRecHitSumEt = eventData.ecalBarrelIsol03.getEtSum(&ele);
1034  dr03.ecalRecHitSumEt += eventData.ecalEndcapIsol03.getEtSum(&ele);
1037  dr04.hcalDepth1TowerSumEtBc =
1038  eventData.hadDepth1Isolation04Bc.getTowerEtSum(&ele, &(showerShape.hcalTowersBehindClusters));
1039  dr04.hcalDepth2TowerSumEtBc =
1040  eventData.hadDepth2Isolation04Bc.getTowerEtSum(&ele, &(showerShape.hcalTowersBehindClusters));
1041  dr04.ecalRecHitSumEt = eventData.ecalBarrelIsol04.getEtSum(&ele);
1042  dr04.ecalRecHitSumEt += eventData.ecalEndcapIsol04.getEtSum(&ele);
1043  }
1044  ele.setIsolation03(dr03);
1045  ele.setIsolation04(dr04);
1046 
1047  //====================================================
1048  // preselection flag
1049  //====================================================
1050 
1051  setCutBasedPreselectionFlag(ele, *eventData.beamspot);
1052  //setting mva flag, currently GedGsfElectron and GsfElectron pre-selection flags have desynced
1053  //this is for GedGsfElectrons, GsfElectrons (ie old pre 7X std reco) resets this later on
1054  //in the function "addPfInfo"
1055  //yes this is awful, we'll fix it once we work out how to...
1056  float mvaValue = hoc->sElectronMVAEstimator->mva(ele, *(eventData.vertices));
1057  ele.setPassMvaPreselection(mvaValue > cfg_.strategy.PreSelectMVA);
1058 
1059  //====================================================
1060  // Pixel match variables
1061  //====================================================
1063 
1064  LogTrace("GsfElectronAlgo") << "Constructed new electron with energy " << ele.p4().e();
1065 }
1066 
1067 // Pixel match variables
1069  int sd1 = 0;
1070  int sd2 = 0;
1071  float dPhi1 = 0;
1072  float dPhi2 = 0;
1073  float dRz1 = 0;
1074  float dRz2 = 0;
1075  edm::RefToBase<TrajectorySeed> seed = ele.gsfTrack()->extra()->seedRef();
1076  ElectronSeedRef elseed = seed.castTo<ElectronSeedRef>();
1077  if (seed.isNull()) {
1078  } else {
1079  if (elseed.isNull()) {
1080  } else {
1081  sd1 = elseed->subDet(0);
1082  sd2 = elseed->subDet(1);
1083  dPhi1 = (ele.charge() > 0) ? elseed->dPhiPos(0) : elseed->dPhiNeg(0);
1084  dPhi2 = (ele.charge() > 0) ? elseed->dPhiPos(1) : elseed->dPhiNeg(1);
1085  dRz1 = (ele.charge() > 0) ? elseed->dRZPos(0) : elseed->dRZNeg(0);
1086  dRz2 = (ele.charge() > 0) ? elseed->dRZPos(1) : elseed->dRZNeg(1);
1087  }
1088  }
1089  ele.setPixelMatchSubdetectors(sd1, sd2);
1090  ele.setPixelMatchDPhi1(dPhi1);
1091  ele.setPixelMatchDPhi2(dPhi2);
1092  ele.setPixelMatchDRz1(dRz1);
1093  ele.setPixelMatchDRz2(dRz2);
1094 }
reco::GsfElectron::ClosestCtfTrack::shFracInnerHits
float shFracInnerHits
Definition: GsfElectron.h:182
Vector3DBase
Definition: Vector3DBase.h:8
EgHLTOffHistBins_cfi.e1x5
e1x5
Definition: EgHLTOffHistBins_cfi.py:22
GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedEndcaps
std::vector< int > recHitFlagsToBeExcludedEndcaps
Definition: GsfElectronAlgo.h:158
ElectronHcalHelper::hcalTowersBehindClusters
auto hcalTowersBehindClusters(const reco::SuperCluster &sc) const
Definition: ElectronHcalHelper.h:52
GsfConstraintAtVertex::constrainAtBeamSpot
TrajectoryStateOnSurface constrainAtBeamSpot(const reco::GsfTrack &, const reco::BeamSpot &) const
(multi)TSOS after including the beamspot
Definition: GsfConstraintAtVertex.cc:41
EcalSeverityLevelAlgo
Definition: EcalSeverityLevelAlgo.h:33
GsfElectronAlgo::EventData::ecalEndcapIsol03
EgammaRecHitIsolation ecalEndcapIsol03
Definition: GsfElectronAlgo.cc:77
HLT_FULL_cff.towers
towers
Definition: HLT_FULL_cff.py:36362
reco::GsfElectron::ShowerShape::e2x5Right
float e2x5Right
Definition: GsfElectron.h:388
reco::GsfElectron::isEE
bool isEE() const
Definition: GsfElectron.h:336
GsfElectronAlgo::ElectronData::seedMom
GlobalVector seedMom
Definition: GsfElectronAlgo.cc:124
EBDetId::isNextToEtaBoundary
static bool isNextToEtaBoundary(EBDetId id)
Definition: EBDetId.cc:108
ElectronEnergyCorrector.h
reco::GsfElectron::ShowerShape::r9
float r9
Definition: GsfElectron.h:372
GsfElectronAlgo::magneticFieldToken_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
Definition: GsfElectronAlgo.h:253
GsfElectronAlgo::EventData::hadDepth1Isolation03
EgammaTowerIsolation hadDepth1Isolation03
Definition: GsfElectronAlgo.cc:72
reco::GsfElectron::ShowerShape::sigmaIetaIeta
float sigmaIetaIeta
Definition: GsfElectron.h:367
reco::GsfElectron::ClosestCtfTrack
Definition: GsfElectron.h:180
reco::GsfElectron::TrackClusterMatching::electronCluster
CaloClusterPtr electronCluster
Definition: GsfElectron.h:202
GsfElectronAlgo::EventData::hadDepth1Isolation04Bc
EgammaTowerIsolation hadDepth1Isolation04Bc
Definition: GsfElectronAlgo.cc:74
GsfElectronAlgo::EventData::hadDepth2Isolation03
EgammaTowerIsolation hadDepth2Isolation03
Definition: GsfElectronAlgo.cc:73
mps_fire.i
i
Definition: mps_fire.py:428
reco::GsfElectron::isEB
bool isEB() const
Definition: GsfElectron.h:335
pwdgSkimBPark_cfi.beamSpot
beamSpot
Definition: pwdgSkimBPark_cfi.py:5
input
static const std::string input
Definition: EdmProvDump.cc:48
GsfElectronAlgo::EventData::seeds
edm::Handle< reco::ElectronSeedCollection > seeds
Definition: GsfElectronAlgo.cc:67
reco::GsfElectron::gsfTrack
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
Definition: GsfElectron.h:163
MessageLogger.h
ele_convert
void ele_convert(const Type1 &obj1, Type2 &obj2)
Definition: ElectronUtilities.h:16
TrackerGeometry.h
MultiTrajectoryStateTransform::extrapolatedState
TrajectoryStateOnSurface extrapolatedState(const TrajectoryStateOnSurface tsos, const GlobalPoint &point) const
Definition: MultiTrajectoryStateTransform.cc:104
cuts
const TkSoA *__restrict__ CAHitNtupletGeneratorKernelsGPU::QualityCuts cuts
Definition: CAHitNtupletGeneratorKernelsImpl.h:338
GsfElectronAlgo::IsolationConfiguration::eMinEndcaps
double eMinEndcaps
Definition: GsfElectronAlgo.h:174
L1EGammaCrystalsEmulatorProducer_cfi.scale
scale
Definition: L1EGammaCrystalsEmulatorProducer_cfi.py:10
GsfElectronAlgo::ElectronData
Definition: GsfElectronAlgo.cc:95
particleFlowZeroSuppressionECAL_cff.thresholds
thresholds
Definition: particleFlowZeroSuppressionECAL_cff.py:31
GsfElectronAlgo::EventData::coreElectrons
edm::Handle< reco::GsfElectronCoreCollection > coreElectrons
Definition: GsfElectronAlgo.cc:63
GsfElectronAlgo::Configuration::iso
const IsolationConfiguration iso
Definition: GsfElectronAlgo.h:206
GsfElectronAlgo::CutsConfiguration::multThresEB
double multThresEB
Definition: GsfElectronAlgo.h:151
SoftElectronMVAEstimator::Configuration
Definition: SoftElectronMVAEstimator.h:16
reco::GsfElectron::FiducialFlags::isEBEEGap
bool isEBEEGap
Definition: GsfElectron.h:319
egamma::conv::findConversion
ConversionInfo findConversion(const reco::GsfElectronCore &gsfElectron, TrackTableView ctfTable, TrackTableView gsfTable, float bFieldAtOrigin, float minFracSharedHits=0.45f)
Definition: ConversionFinder.h:71
egamma::conv::TrackTable
edm::soa::AddColumns< edm::soa::PtEtaPhiTable, TrackTableSpecificColumns >::type TrackTable
Definition: ConversionFinder.h:56
reco::GsfElectron::deltaPhiSuperClusterTrackAtVtx
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:235
EcalTools::isHGCalDet
static bool isHGCalDet(DetId::Detector thedet)
identify HGCal cells
Definition: EcalTools.h:49
reco::GsfElectron::ShowerShape::hcalDepth1OverEcal
float hcalDepth1OverEcal
Definition: GsfElectron.h:373
reco::GsfElectron::ChargeInfo
Definition: GsfElectron.h:122
GsfElectronAlgo::StrategyConfiguration
Definition: GsfElectronAlgo.h:75
GsfElectronAlgo::GsfElectronAlgo
GsfElectronAlgo(const Tokens &, const StrategyConfiguration &, const CutsConfiguration &cutsCfg, const ElectronHcalHelper::Configuration &hcalCfg, const IsolationConfiguration &, const EcalRecHitsConfiguration &, std::unique_ptr< EcalClusterFunctionBaseClass > &&crackCorrectionFunction, const RegressionHelper::Configuration &regCfg, const edm::ParameterSet &tkIsol03Cfg, const edm::ParameterSet &tkIsol04Cfg, const edm::ParameterSet &tkIsolHEEP03Cfg, const edm::ParameterSet &tkIsolHEEP04Cfg, edm::ConsumesCollector &&cc)
Definition: GsfElectronAlgo.cc:381
edm::isNotFinite
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
GsfElectronAlgo::IsolationConfiguration::intRadiusEcalBarrel
double intRadiusEcalBarrel
Definition: GsfElectronAlgo.h:168
GsfElectronAlgo::IsolationConfiguration::etMinHcal
double etMinHcal
Definition: GsfElectronAlgo.h:167
ElectronHcalHelper::hcalESumDepth1
double hcalESumDepth1(const reco::SuperCluster &, const std::vector< CaloTowerDetId > *excludeTowers=nullptr) const
Definition: ElectronHcalHelper.cc:62
reco::GsfElectron::FiducialFlags::isEE
bool isEE
Definition: GsfElectron.h:318
GsfElectronAlgo::ElectronData::shFracInnerHits
float shFracInnerHits
Definition: GsfElectronAlgo.cc:101
reco::GsfElectron::setPixelMatchDPhi2
void setPixelMatchDPhi2(float dPhi2)
Definition: GsfElectron.h:853
reco::GsfElectron::isEERingGap
bool isEERingGap() const
Definition: GsfElectron.h:344
BasicCluster.h
HLT_FULL_cff.endcapRecHits
endcapRecHits
Definition: HLT_FULL_cff.py:14920
hcal
Definition: ConfigurationDatabase.cc:13
edm::Ref::isNull
bool isNull() const
Checks for null.
Definition: Ref.h:235
EBDetId
Definition: EBDetId.h:17
edm
HLT enums.
Definition: AlignableModifier.h:19
GsfElectronAlgo::trackerGeometryToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
Definition: GsfElectronAlgo.h:256
reco::GsfElectron::FiducialFlags::isEEDeeGap
bool isEEDeeGap
Definition: GsfElectron.h:322
GsfElectronAlgo::Tokens::gsfElectronCores
edm::EDGetTokenT< reco::GsfElectronCoreCollection > gsfElectronCores
Definition: GsfElectronAlgo.h:62
reco::GsfElectron::ClosestCtfTrack::ctfTrack
TrackRef ctfTrack
Definition: GsfElectron.h:181
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
GsfElectronAlgo::StrategyConfiguration::useCombinationRegression
bool useCombinationRegression
Definition: GsfElectronAlgo.h:95
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
GsfElectronAlgo::IsolationConfiguration::vetoClustered
bool vetoClustered
Definition: GsfElectronAlgo.h:175
geometry
Definition: geometry.py:1
GsfElectronAlgo::EventData::ecalBarrelIsol03
EgammaRecHitIsolation ecalBarrelIsol03
Definition: GsfElectronAlgo.cc:76
GsfElectronAlgo::ElectronData::vtxMomWithConstraint
GlobalVector vtxMomWithConstraint
Definition: GsfElectronAlgo.cc:126
GsfElectronAlgo::EventData::retreiveOriginalTrackCollections
void retreiveOriginalTrackCollections(const reco::TrackRef &, const reco::GsfTrackRef &)
Definition: GsfElectronAlgo.cc:129
EBDetId.h
EEDetId.h
ConversionTools::getVtxFitProb
static float getVtxFitProb(const reco::Conversion *conv)
Definition: ConversionTools.cc:438
reco::GsfElectron::P4_COMBINATION
Definition: GsfElectron.h:767
reco::GsfElectron::TrackClusterMatching::eSeedClusterOverP
float eSeedClusterOverP
Definition: GsfElectron.h:204
HLT_FULL_cff.barrelRecHits
barrelRecHits
Definition: HLT_FULL_cff.py:14923
GsfElectronAlgo::ElectronData::sclMom
GlobalVector sclMom
Definition: GsfElectronAlgo.cc:124
GsfElectronAlgo::hcalHelper_
ElectronHcalHelper hcalHelper_
Definition: GsfElectronAlgo.h:261
GsfElectronAlgo::ElectronData::vtxPos
GlobalPoint vtxPos
Definition: GsfElectronAlgo.cc:125
lowPtGsfElectronCores_cff.ctfTracks
ctfTracks
Definition: lowPtGsfElectronCores_cff.py:6
reco::GsfElectron::ShowerShape::eMax
float eMax
Definition: GsfElectron.h:380
GsfElectronAlgo::tkIsol03CalcCfg_
const EleTkIsolFromCands::Configuration tkIsol03CalcCfg_
Definition: GsfElectronAlgo.h:248
reco::GsfElectron::setPixelMatchSubdetectors
void setPixelMatchSubdetectors(int sd1, int sd2)
Definition: GsfElectron.h:851
GsfElectronAlgo::EventData
Definition: GsfElectronAlgo.cc:54
reco::GsfElectron::ConversionRejection::dcot
float dcot
Definition: GsfElectron.h:575
edm::SortedCollection< EcalRecHit >
ElectronHcalHelper::hcalESumDepth1BehindClusters
auto hcalESumDepth1BehindClusters(const std::vector< CaloTowerDetId > &towers) const
Definition: ElectronHcalHelper.h:53
reco::GsfElectron::ShowerShape::sigmaIetaIphi
float sigmaIetaIphi
Definition: GsfElectron.h:379
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
TrackingRecHitFwd.h
GsfElectronAlgo::setCutBasedPreselectionFlag
void setCutBasedPreselectionFlag(reco::GsfElectron &ele, const reco::BeamSpot &) const
Definition: GsfElectronAlgo.cc:605
GsfElectronAlgo::ElectronData::ctfTrackRef
reco::TrackRef ctfTrackRef
Definition: GsfElectronAlgo.cc:100
reco::TrackBaseRef
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:35
GsfElectronAlgo::IsolationConfiguration::useNumCrystals
bool useNumCrystals
Definition: GsfElectronAlgo.h:176
GsfElectronAlgo::ElectronData::calculateMomentum
reco::Candidate::LorentzVector calculateMomentum()
Definition: GsfElectronAlgo.cc:254
GsfElectronAlgo::IsolationConfiguration::eMinBarrel
double eMinBarrel
Definition: GsfElectronAlgo.h:172
reco::GsfElectronCollection
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
Definition: GsfElectronFwd.h:14
GsfElectronAlgo::ElectronData::innTSOS
TrajectoryStateOnSurface innTSOS
Definition: GsfElectronAlgo.cc:115
multiTrajectoryStateMode::momentumFromModeCartesian
bool momentumFromModeCartesian(TrajectoryStateOnSurface const &tsos, GlobalVector &momentum)
Definition: MultiTrajectoryStateMode.cc:16
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
ElectronUtilities.h
reco::GsfElectron::SaturationInfo::nSaturatedXtals
int nSaturatedXtals
Definition: GsfElectron.h:490
EgammaRecHitIsolation
Definition: EgammaRecHitIsolation.h:26
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
reco::GsfElectron::TrackClusterMatching::eEleClusterOverPout
float eEleClusterOverPout
Definition: GsfElectron.h:206
reco::GsfElectron::TrackExtrapolations::momentumAtCalo
math::XYZVectorF momentumAtCalo
Definition: GsfElectron.h:264
HLT_FULL_cff.magneticField
magneticField
Definition: HLT_FULL_cff.py:348
GsfElectronAlgo::EventData::hadDepth1Isolation04
EgammaTowerIsolation hadDepth1Isolation04
Definition: GsfElectronAlgo.cc:72
GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedBarrel
std::vector< int > recHitFlagsToBeExcludedBarrel
Definition: GsfElectronAlgo.h:157
HLT_FULL_cff.dPhi
dPhi
Definition: HLT_FULL_cff.py:13703
reco::GsfElectron::TrackExtrapolations::momentumOut
math::XYZVectorF momentumOut
Definition: GsfElectron.h:266
GsfElectronAlgo::Tokens::seedsTag
edm::EDGetTokenT< reco::ElectronSeedCollection > seedsTag
Definition: GsfElectronAlgo.h:68
reco::GsfElectron::ShowerShape::e2x5Max
float e2x5Max
Definition: GsfElectron.h:370
EcalCondObjectContainer
Definition: EcalCondObjectContainer.h:13
reco::GsfElectron::TrackClusterMatching::deltaEtaEleClusterAtCalo
float deltaEtaEleClusterAtCalo
Definition: GsfElectron.h:209
GsfElectronAlgo::EventData::hadDepth1Isolation03Bc
EgammaTowerIsolation hadDepth1Isolation03Bc
Definition: GsfElectronAlgo.cc:74
edm::Handle< reco::GsfElectronCoreCollection >
GsfElectronAlgo::Tokens::beamSpotTag
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag
Definition: GsfElectronAlgo.h:70
GsfElectronAlgo::Tokens::barrelRecHitCollection
edm::EDGetTokenT< EcalRecHitCollection > barrelRecHitCollection
Definition: GsfElectronAlgo.h:66
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
CaloTopology
Definition: CaloTopology.h:19
GsfElectronAlgo::StrategyConfiguration::ecalDrivenEcalErrorFromClassBasedParameterization
bool ecalDrivenEcalErrorFromClassBasedParameterization
Definition: GsfElectronAlgo.h:81
ElectronClassification.h
reco::GsfElectron::hcalDepth2OverEcal
float hcalDepth2OverEcal() const
Definition: GsfElectron.h:425
EcalBarrel
Definition: EcalSubdetector.h:10
reco::GsfElectron::ShowerShape::eBottom
float eBottom
Definition: GsfElectron.h:385
edm::Ref< TrackCollection >
ForwardSubdetector.h
hltEgammaHLTExtra_cfi.hcal
hcal
Definition: hltEgammaHLTExtra_cfi.py:42
MultiTrajectoryStateTransform::outerStateOnSurface
TrajectoryStateOnSurface outerStateOnSurface(const reco::GsfTrack &tk) const
Definition: MultiTrajectoryStateTransform.cc:19
reco::GsfElectron::FiducialFlags::isEBPhiGap
bool isEBPhiGap
Definition: GsfElectron.h:321
RegressionHelper::applyCombinationRegression
void applyCombinationRegression(reco::GsfElectron &ele) const
Definition: RegressionHelper.cc:114
GsfElectronAlgo::ElectronData::getEleBasicCluster
reco::CaloClusterPtr getEleBasicCluster(MultiTrajectoryStateTransform const &)
Definition: GsfElectronAlgo.cc:177
cc
reco::GsfElectron::hcalDepth1OverEcal
float hcalDepth1OverEcal() const
Definition: GsfElectron.h:424
reco::GsfElectron::ShowerShape::sigmaEtaEta
float sigmaEtaEta
Definition: GsfElectron.h:366
egamma::ecalClusterEnergyUncertaintyElectronSpecific
float ecalClusterEnergyUncertaintyElectronSpecific(reco::SuperCluster const &superCluster)
Definition: ecalClusterEnergyUncertaintyElectronSpecific.cc:4
reco::GsfElectron::core
virtual GsfElectronCoreRef core() const
Definition: GsfElectron.cc:8
reco::GsfElectron::TrackClusterMatching::deltaPhiSuperClusterAtVtx
float deltaPhiSuperClusterAtVtx
Definition: GsfElectron.h:211
fileCollector.seed
seed
Definition: fileCollector.py:127
reco::GsfElectron::IsolationVariables::tkSumPtHEEP
float tkSumPtHEEP
Definition: GsfElectron.h:511
GetRecoTauVFromDQM_MC_cff.cl
cl
Definition: GetRecoTauVFromDQM_MC_cff.py:38
DetId
Definition: DetId.h:17
GsfElectronAlgo::ElectronData::outTSOS
TrajectoryStateOnSurface outTSOS
Definition: GsfElectronAlgo.cc:116
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedBarrel
std::vector< int > recHitSeverityToBeExcludedBarrel
Definition: GsfElectronAlgo.h:159
EleRelPoint
Definition: ElectronUtilities.h:25
CaloGeometry
Definition: CaloGeometry.h:21
cms::cuda::bs
bs
Definition: HistoContainer.h:127
GsfElectronAlgo::HeavyObjectCache
Definition: GsfElectronAlgo.h:54
reco::GsfElectron::IsolationVariables::tkSumPt
float tkSumPt
Definition: GsfElectron.h:510
reco::GsfElectron::FiducialFlags::isEERingGap
bool isEERingGap
Definition: GsfElectron.h:323
GsfElectronAlgo::caloTopologyToken_
const edm::ESGetToken< CaloTopology, CaloTopologyRecord > caloTopologyToken_
Definition: GsfElectronAlgo.h:255
SoftElectronMVAEstimator::Configuration::vweightsfiles
std::vector< std::string > vweightsfiles
Definition: SoftElectronMVAEstimator.h:17
EgAmbiguityTools.h
EgammaRecHitIsolation::getEtSum
double getEtSum(const reco::Candidate *emObject) const
Definition: EgammaRecHitIsolation.h:39
ElectronHcalHelper::hcalESumDepth2BehindClusters
auto hcalESumDepth2BehindClusters(const std::vector< CaloTowerDetId > &towers) const
Definition: ElectronHcalHelper.h:56
GsfElectronAlgo::StrategyConfiguration::pureTrackerDrivenEcalErrorFromSimpleParameterization
bool pureTrackerDrivenEcalErrorFromSimpleParameterization
Definition: GsfElectronAlgo.h:82
GsfElectronAlgo::regHelper_
RegressionHelper regHelper_
Definition: GsfElectronAlgo.h:263
GsfElectronAlgo::EventData::endcapRecHits
edm::Handle< EcalRecHitCollection > endcapRecHits
Definition: GsfElectronAlgo.cc:65
GsfElectronAlgo::EventData::event
edm::Event const * event
Definition: GsfElectronAlgo.cc:59
reco::GsfElectron::setPixelMatchDRz2
void setPixelMatchDRz2(float dRz2)
Definition: GsfElectron.h:855
reco::GsfElectron::ConversionRejection
Definition: GsfElectron.h:571
GsfConstraintAtVertex
Definition: GsfConstraintAtVertex.h:21
reco::GsfElectron::ShowerShape
Definition: GsfElectron.h:365
PVValHelper::eta
Definition: PVValidationHelpers.h:70
ecalClusterEnergyUncertaintyElectronSpecific.h
reco::GsfElectronCoreCollection
std::vector< GsfElectronCore > GsfElectronCoreCollection
Definition: GsfElectronCoreFwd.h:12
reco::CaloCluster
Definition: CaloCluster.h:31
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
GsfElectronAlgo::setPixelMatchInfomation
void setPixelMatchInfomation(reco::GsfElectron &) const
Definition: GsfElectronAlgo.cc:1068
reco::BeamSpot
Definition: BeamSpot.h:21
GsfElectronAlgo::ElectronData::innMom
GlobalVector innMom
Definition: GsfElectronAlgo.cc:124
GsfElectronAlgo::ElectronData::beamSpot
const reco::BeamSpot beamSpot
Definition: GsfElectronAlgo.cc:102
normalizedPhi
constexpr T normalizedPhi(T phi)
Definition: normalizedPhi.h:8
reco::GsfElectron::isEEDeeGap
bool isEEDeeGap() const
Definition: GsfElectron.h:343
reco::GsfElectron::IsolationVariables::hcalDepth1TowerSumEt
float hcalDepth1TowerSumEt
Definition: GsfElectron.h:513
reco::GsfElectron::ShowerShape::eTop
float eTop
Definition: GsfElectron.h:382
reco::GsfElectron::FiducialFlags
Definition: GsfElectron.h:316
reco::GsfElectron::setPixelMatchDRz1
void setPixelMatchDRz1(float dRz1)
Definition: GsfElectron.h:854
ElectronHcalHelper::hasActiveHcal
bool hasActiveHcal(const reco::SuperCluster &sc) const
Definition: ElectronHcalHelper.cc:86
reco::GsfElectron
Definition: GsfElectron.h:34
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
reco::BeamSpot::position
const Point & position() const
position
Definition: BeamSpot.h:59
GsfElectronAlgo::HeavyObjectCache::HeavyObjectCache
HeavyObjectCache(const edm::ParameterSet &)
Definition: GsfElectronAlgo.cc:39
Point3DBase< float, GlobalTag >
GsfElectron.h
reco::GsfElectron::IsolationVariables
Definition: GsfElectron.h:509
reco::GsfElectron::ShowerShape::hcalTowersBehindClusters
std::vector< CaloTowerDetId > hcalTowersBehindClusters
Definition: GsfElectron.h:375
GsfElectronAlgo::tkIsolHEEP03CalcCfg_
const EleTkIsolFromCands::Configuration tkIsolHEEP03CalcCfg_
Definition: GsfElectronAlgo.h:250
ElectronHcalHelper::Configuration
Definition: ElectronHcalHelper.h:25
reco::GsfElectron::ShowerShape::sigmaIphiIphi
float sigmaIphiIphi
Definition: GsfElectron.h:368
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
qcdUeDQM_cfi.bsPos
bsPos
Definition: qcdUeDQM_cfi.py:39
EEDetId
Definition: EEDetId.h:14
GsfElectronAlgo::ElectronData::elePos
GlobalPoint elePos
Definition: GsfElectronAlgo.cc:125
GsfElectronAlgo::EventData::hadDepth2Isolation04Bc
EgammaTowerIsolation hadDepth2Isolation04Bc
Definition: GsfElectronAlgo.cc:75
GsfElectronAlgo::createElectron
void createElectron(reco::GsfElectronCollection &electrons, ElectronData &electronData, EventData &eventData, CaloTopology const &topology, CaloGeometry const &geometry, MultiTrajectoryStateTransform const &mtsTransform, double magneticFieldInTesla, const HeavyObjectCache *, egamma::conv::TrackTableView ctfTable, egamma::conv::TrackTableView gsfTable, EcalPFRecHitThresholds const &thresholds)
Definition: GsfElectronAlgo.cc:723
GsfElectronAlgo::beginEvent
EventData beginEvent(edm::Event const &event, CaloGeometry const &caloGeometry, EcalSeverityLevelAlgo const &ecalSeveretyLevelAlgo)
Definition: GsfElectronAlgo.cc:420
egamma::conv::TrackTableView
edm::soa::ViewFromTable_t< TrackTable > TrackTableView
Definition: ConversionFinder.h:57
GsfElectronAlgo::ElectronData::ElectronData
ElectronData(const reco::GsfElectronCoreRef &core, const reco::BeamSpot &bs)
Definition: GsfElectronAlgo.cc:141
GsfElectronAlgo::ElectronData::constrainedVtxTSOS
TrajectoryStateOnSurface constrainedVtxTSOS
Definition: GsfElectronAlgo.cc:121
GsfElectronAlgo::Tokens::endcapRecHitCollection
edm::EDGetTokenT< EcalRecHitCollection > endcapRecHitCollection
Definition: GsfElectronAlgo.h:67
EcalSubdetector.h
egamma::classBasedElectronEnergy
float classBasedElectronEnergy(reco::GsfElectron const &, reco::BeamSpot const &, EcalClusterFunctionBaseClass const &crackCorrectionFunction)
Definition: ElectronEnergyCorrector.cc:296
EcalEndcap
Definition: EcalSubdetector.h:10
reco::GsfElectron::IsolationVariables::hcalDepth1TowerSumEtBc
float hcalDepth1TowerSumEtBc
Definition: GsfElectron.h:515
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
EgammaLocalCovParamDefaults::kRelEnCut
static constexpr float kRelEnCut
Definition: EgammaLocalCovParamDefaults.h:5
GsfElectronAlgo::EventData::vertices
edm::Handle< reco::VertexCollection > vertices
Definition: GsfElectronAlgo.cc:68
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
GsfElectronAlgo::EventData::barrelRecHits
edm::Handle< EcalRecHitCollection > barrelRecHits
Definition: GsfElectronAlgo.cc:64
reco::GsfElectron::TrackClusterMatching::eSeedClusterOverPout
float eSeedClusterOverPout
Definition: GsfElectron.h:205
GsfElectronAlgo::Tokens
Definition: GsfElectronAlgo.h:61
GsfElectronAlgo::EventData::tkIsolHEEP04Calc
EleTkIsolFromCands tkIsolHEEP04Calc
Definition: GsfElectronAlgo.cc:82
reco::GsfElectron::IsolationVariables::hcalDepth2TowerSumEtBc
float hcalDepth2TowerSumEtBc
Definition: GsfElectron.h:516
IOMC_cff.ecalRecHit
ecalRecHit
Definition: IOMC_cff.py:103
JetMETHLTOfflineSource_cfi.feta
feta
Definition: JetMETHLTOfflineSource_cfi.py:30
GsfElectronFwd.h
core
Definition: __init__.py:1
ElectronMomentumCorrector.h
reco::GsfElectron::TrackClusterMatching
Definition: GsfElectron.h:201
reco::GsfElectron::TrackClusterMatching::eSuperClusterOverP
float eSuperClusterOverP
Definition: GsfElectron.h:203
edm::ParameterSet
Definition: ParameterSet.h:47
reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:232
PV3DBase::barePhi
T barePhi() const
Definition: PV3DBase.h:65
reco::CaloCluster::hitsAndFractions
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
Definition: CaloCluster.h:210
GsfElectronAlgo::ecalSeveretyLevelAlgoToken_
const edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > ecalSeveretyLevelAlgoToken_
Definition: GsfElectronAlgo.h:257
GsfElectronAlgo::tkIsol04CalcCfg_
const EleTkIsolFromCands::Configuration tkIsol04CalcCfg_
Definition: GsfElectronAlgo.h:249
GsfElectronAlgo::checkSetup
void checkSetup(edm::EventSetup const &eventSetup)
Definition: GsfElectronAlgo.cc:411
EEDetId::isNextToRingBoundary
static bool isNextToRingBoundary(EEDetId id)
Definition: EEDetId.cc:284
cosmicPhotonAnalyzer_cfi.eMax
eMax
Definition: cosmicPhotonAnalyzer_cfi.py:10
GsfElectronAlgo::Tokens::conversions
edm::EDGetTokenT< reco::ConversionCollection > conversions
Definition: GsfElectronAlgo.h:72
reco::GsfElectron::TrackExtrapolations::momentumAtVtxWithConstraint
math::XYZVectorF momentumAtVtxWithConstraint
Definition: GsfElectron.h:269
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
EcalClusterTools.h
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
reco::GsfElectron::TrackExtrapolations
Definition: GsfElectron.h:259
GsfElectronAlgo::CutsConfiguration::multThresEE
double multThresEE
Definition: GsfElectronAlgo.h:152
edmPickEvents.event
event
Definition: edmPickEvents.py:273
GsfElectronAlgo::ElectronData::vtxMom
GlobalVector vtxMom
Definition: GsfElectronAlgo.cc:124
GsfElectronAlgo::EventData::conversions
edm::Handle< reco::ConversionCollection > conversions
Definition: GsfElectronAlgo.cc:69
egamma::correctElectronMomentum
ElectronMomentum correctElectronMomentum(reco::GsfElectron const &, TrajectoryStateOnSurface const &)
Definition: ElectronMomentumCorrector.cc:22
reco::GsfElectron::ShowerShape::e2x5Left
float e2x5Left
Definition: GsfElectron.h:387
EgammaTowerIsolation
Definition: EgammaTowerIsolation.h:197
LorentzVector.h
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:88271
GsfElectronAlgo::ElectronData::eleTSOS
TrajectoryStateOnSurface eleTSOS
Definition: GsfElectronAlgo.cc:120
GsfElectronAlgo::Configuration::strategy
const StrategyConfiguration strategy
Definition: GsfElectronAlgo.h:204
GsfElectronAlgo::EventData::ecalBarrelIsol04
EgammaRecHitIsolation ecalBarrelIsol04
Definition: GsfElectronAlgo.cc:76
reco::GsfElectron::hcalOverEcalBc
float hcalOverEcalBc() const
Definition: GsfElectron.h:432
reco::GsfElectron::TrackClusterMatching::deltaPhiEleClusterAtCalo
float deltaPhiEleClusterAtCalo
Definition: GsfElectron.h:210
multiTrajectoryStateMode::positionFromModeCartesian
bool positionFromModeCartesian(TrajectoryStateOnSurface const &tsos, GlobalPoint &position)
Definition: MultiTrajectoryStateMode.cc:63
GsfElectronAlgo::ElectronData::sclTSOS
TrajectoryStateOnSurface sclTSOS
Definition: GsfElectronAlgo.cc:118
GsfElectronAlgo::EventData::originalGsfTracks
edm::Handle< reco::GsfTrackCollection > originalGsfTracks
Definition: GsfElectronAlgo.cc:85
GsfElectronAlgo::ElectronData::outMom
GlobalVector outMom
Definition: GsfElectronAlgo.cc:124
reco::GsfElectron::ShowerShape::e2x5Top
float e2x5Top
Definition: GsfElectron.h:386
ElectronHcalHelper::beginEvent
void beginEvent(const edm::Event &, const edm::EventSetup &)
Definition: ElectronHcalHelper.cc:23
GsfElectronAlgo::IsolationConfiguration::etMinEndcaps
double etMinEndcaps
Definition: GsfElectronAlgo.h:173
GsfElectronAlgo::CutsConfiguration
Definition: GsfElectronAlgo.h:101
GsfElectronAlgo::ElectronData::seedTSOS
TrajectoryStateOnSurface seedTSOS
Definition: GsfElectronAlgo.cc:119
reco::GsfElectron::setPixelMatchDPhi1
void setPixelMatchDPhi1(float dPhi1)
Definition: GsfElectron.h:852
reco::LeafCandidate::charge
int charge() const final
electric charge
Definition: LeafCandidate.h:106
GsfElectronAlgo::CutsConfiguration::seedFromTEC
bool seedFromTEC
Definition: GsfElectronAlgo.h:148
GsfElectronAlgo::EventData::currentCtfTracks
edm::Handle< reco::TrackCollection > currentCtfTracks
Definition: GsfElectronAlgo.cc:66
reco::GsfElectron::isEBEtaGap
bool isEBEtaGap() const
Definition: GsfElectron.h:340
DetId::Detector
Detector
Definition: DetId.h:24
edm::EventSetup
Definition: EventSetup.h:58
EleRelPointPair
Definition: ElectronUtilities.h:43
DetId::Ecal
Definition: DetId.h:27
reco::GsfElectron::TrackExtrapolations::momentumAtEleClus
math::XYZVectorF momentumAtEleClus
Definition: GsfElectron.h:268
reco::GsfElectron::SaturationInfo::isSeedSaturated
bool isSeedSaturated
Definition: GsfElectron.h:491
GsfElectronAlgo::ElectronData::calculateMode
void calculateMode()
Definition: GsfElectronAlgo.cc:238
GsfElectronAlgo::ElectronData::gsfTrackRef
const reco::GsfTrackRef gsfTrackRef
Definition: GsfElectronAlgo.cc:98
egamma::classifyElectron
reco::GsfElectron::Classification classifyElectron(reco::GsfElectron const &)
EcalTools.h
GsfElectronAlgo::EventData::hadDepth2Isolation03Bc
EgammaTowerIsolation hadDepth2Isolation03Bc
Definition: GsfElectronAlgo.cc:75
reco::CaloCluster::seed
DetId seed() const
return DetId of seed
Definition: CaloCluster.h:219
GsfElectronAlgo::StrategyConfiguration::fillConvVtxFitProb
bool fillConvVtxFitProb
Definition: GsfElectronAlgo.h:98
reco::GsfElectron::hcalOverEcal
float hcalOverEcal() const
Definition: GsfElectron.h:426
RegressionHelper::checkSetup
void checkSetup(const edm::EventSetup &)
Definition: RegressionHelper.cc:43
reco::GsfElectron::TrackClusterMatching::deltaPhiSeedClusterAtCalo
float deltaPhiSeedClusterAtCalo
Definition: GsfElectron.h:212
GsfElectronAlgo::ElectronData::eleMom
GlobalVector eleMom
Definition: GsfElectronAlgo.cc:124
EcalClusterToolsT
Definition: EcalClusterTools.h:76
GsfElectronAlgo::ElectronData::computeCharge
void computeCharge(int &charge, reco::GsfElectron::ChargeInfo &info)
Definition: GsfElectronAlgo.cc:149
reco::CaloCluster::position
const math::XYZPoint & position() const
cluster centroid position
Definition: CaloCluster.h:154
edm::Ptr< CaloCluster >
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
looper.cfg
cfg
Definition: looper.py:297
MultiTrajectoryStateTransform
Definition: MultiTrajectoryStateTransform.h:18
ElectronMVAEstimator::Configuration
Definition: ElectronMVAEstimator.h:12
reco::GsfElectron::sigmaIetaIeta
float sigmaIetaIeta() const
Definition: GsfElectron.h:418
GsfElectronAlgo::HeavyObjectCache::sElectronMVAEstimator
std::unique_ptr< const SoftElectronMVAEstimator > sElectronMVAEstimator
Definition: GsfElectronAlgo.h:57
GsfElectronAlgo::ElectronData::superClusterRef
const reco::SuperClusterRef superClusterRef
Definition: GsfElectronAlgo.cc:99
reco::JetExtendedAssociation::LorentzVector
math::PtEtaPhiELorentzVectorF LorentzVector
Definition: JetExtendedAssociation.h:25
EBDetId::isNextToPhiBoundary
static bool isNextToPhiBoundary(EBDetId id)
Definition: EBDetId.cc:113
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
GsfElectronAlgo::EventData::beamspot
const reco::BeamSpot * beamspot
Definition: GsfElectronAlgo.cc:60
ElectronMVAEstimator::Configuration::vweightsfiles
std::vector< std::string > vweightsfiles
Definition: ElectronMVAEstimator.h:13
SiStripSubdetector::UNKNOWN
Definition: SiStripEnums.h:5
reco::GsfElectron::ConversionRejection::partner
TrackBaseRef partner
Definition: GsfElectron.h:573
edm::SortedCollection::find
iterator find(key_type k)
Definition: SortedCollection.h:240
edm::Ref::id
ProductID id() const
Accessor for product ID.
Definition: Ref.h:244
GsfElectronAlgo::calculateSaturationInfo
reco::GsfElectron::SaturationInfo calculateSaturationInfo(const reco::SuperClusterRef &, EventData const &eventData) const
Definition: GsfElectronAlgo.cc:260
reco::GsfElectron::ShowerShape::eRight
float eRight
Definition: GsfElectron.h:384
reco::GsfElectron::ShowerShape::e2nd
float e2nd
Definition: GsfElectron.h:381
GsfElectronAlgo::completeElectrons
reco::GsfElectronCollection completeElectrons(edm::Event const &event, edm::EventSetup const &eventSetup, const HeavyObjectCache *hoc)
Definition: GsfElectronAlgo.cc:535
HGCalDetId.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
GsfElectronAlgo::ElectronData::coreRef
const reco::GsfElectronCoreRef coreRef
Definition: GsfElectronAlgo.cc:97
GsfElectronAlgo::ElectronData::sclPos
GlobalPoint sclPos
Definition: GsfElectronAlgo.cc:125
GsfElectronAlgo::Configuration::tokens
const Tokens tokens
Definition: GsfElectronAlgo.h:203
reco::GsfElectron::ShowerShape::invalidHcal
bool invalidHcal
Definition: GsfElectron.h:378
GsfElectronAlgo::cfg_
const Configuration cfg_
Definition: GsfElectronAlgo.h:246
reco::GsfElectron::ShowerShape::e1x5
float e1x5
Definition: GsfElectron.h:369
GsfElectronAlgo::StrategyConfiguration::PreSelectMVA
float PreSelectMVA
Definition: GsfElectronAlgo.h:90
reco::GsfElectron::setPassCutBasedPreselection
void setPassCutBasedPreselection(bool flag)
Definition: GsfElectron.h:693
isFinite.h
pwdgSkimBPark_cfi.electrons
electrons
Definition: pwdgSkimBPark_cfi.py:6
reco::GsfElectron::ConversionRejection::dist
float dist
Definition: GsfElectron.h:574
GsfElectronAlgo::calculateShowerShape
reco::GsfElectron::ShowerShape calculateShowerShape(const reco::SuperClusterRef &, ElectronHcalHelper const &hcalHelper, EventData const &eventData, CaloTopology const &topology, CaloGeometry const &geometry, EcalPFRecHitThresholds const &thresholds) const
Definition: GsfElectronAlgo.cc:292
reco::GsfElectron::TrackClusterMatching::deltaEtaSuperClusterAtVtx
float deltaEtaSuperClusterAtVtx
Definition: GsfElectron.h:207
reco::GsfElectron::isEBEEGap
bool isEBEEGap() const
Definition: GsfElectron.h:338
packedPFCandidateRefMixer_cfi.pf
pf
Definition: packedPFCandidateRefMixer_cfi.py:4
reco::GsfElectron::ShowerShape::hcalDepth2OverEcalBc
float hcalDepth2OverEcalBc
Definition: GsfElectron.h:377
GsfElectronAlgo::IsolationConfiguration::jurassicWidth
double jurassicWidth
Definition: GsfElectronAlgo.h:170
EEDetId::isNextToDBoundary
static bool isNextToDBoundary(EEDetId id)
Definition: EEDetId.cc:279
GsfElectronAlgo::IsolationConfiguration::etMinBarrel
double etMinBarrel
Definition: GsfElectronAlgo.h:171
GsfElectronAlgo::IsolationConfiguration::intRadiusEcalEndcaps
double intRadiusEcalEndcaps
Definition: GsfElectronAlgo.h:169
GsfElectronAlgo::ElectronData::seedPos
GlobalPoint seedPos
Definition: GsfElectronAlgo.cc:125
Exception
Definition: hltDiff.cc:245
ConversionTools::matchedConversion
static const reco::Conversion * matchedConversion(const reco::GsfElectron &ele, const reco::ConversionCollection &convCol, const math::XYZPoint &beamspot, bool allowCkfMatch=true, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
Definition: ConversionTools.cc:255
reco::GsfElectron::TrackExtrapolations::positionAtCalo
math::XYZPointF positionAtCalo
Definition: GsfElectron.h:261
EBDetId::ietaAbs
int ietaAbs() const
get the absolute value of the crystal ieta
Definition: EBDetId.h:47
reco::GsfElectron::ShowerShape::hcalDepth1OverEcalBc
float hcalDepth1OverEcalBc
Definition: GsfElectron.h:376
reco::GsfElectron::eSuperClusterOverP
float eSuperClusterOverP() const
Definition: GsfElectron.h:228
GsfElectronAlgo::Tokens::vtxCollectionTag
edm::EDGetTokenT< reco::VertexCollection > vtxCollectionTag
Definition: GsfElectronAlgo.h:71
GsfElectronAlgo::EventData::tkIsolHEEP03Calc
EleTkIsolFromCands tkIsolHEEP03Calc
Definition: GsfElectronAlgo.cc:81
reco::GsfElectron::ConversionRejection::radius
float radius
Definition: GsfElectron.h:576
reco::GsfElectron::ConversionRejection::flags
int flags
Definition: GsfElectron.h:572
GlobalVector.h
reco::GsfElectron::IsolationVariables::hcalDepth2TowerSumEt
float hcalDepth2TowerSumEt
Definition: GsfElectron.h:514
GsfElectronAlgo::StrategyConfiguration::useDefaultEnergyCorrection
bool useDefaultEnergyCorrection
Definition: GsfElectronAlgo.h:92
ElectronHcalHelper
Definition: ElectronHcalHelper.h:23
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::RefToBase< TrajectorySeed >
EgammaTowerIsolation::getTowerEtSum
double getTowerEtSum(const reco::Candidate *cand, const std::vector< CaloTowerDetId > *detIdToExclude=nullptr) const
Definition: EgammaTowerIsolation.h:205
reco::GsfElectron::isEBPhiGap
bool isEBPhiGap() const
Definition: GsfElectron.h:341
MultiTrajectoryStateTransform::innerStateOnSurface
TrajectoryStateOnSurface innerStateOnSurface(const reco::GsfTrack &tk) const
Definition: MultiTrajectoryStateTransform.cc:23
reco::GsfElectron::ShowerShape::eLeft
float eLeft
Definition: GsfElectron.h:383
reco::GsfElectron::superCluster
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:162
egamma::classBasedElectronEnergyUncertainty
double classBasedElectronEnergyUncertainty(reco::GsfElectron const &)
Definition: ElectronEnergyCorrector.cc:271
GsfElectronAlgo::EventData::originalCtfTracks
edm::Handle< reco::TrackCollection > originalCtfTracks
Definition: GsfElectronAlgo.cc:84
GsfElectronAlgo::EventData::ecalEndcapIsol04
EgammaRecHitIsolation ecalEndcapIsol04
Definition: GsfElectronAlgo.cc:77
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
EgammaLocalCovParamDefaults.h
GsfElectronAlgo::Tokens::ctfTracks
edm::EDGetTokenT< reco::TrackCollection > ctfTracks
Definition: GsfElectronAlgo.h:69
GsfElectronAlgo::StrategyConfiguration::useEcalRegression
bool useEcalRegression
Definition: GsfElectronAlgo.h:94
reco::GsfElectron::IsolationVariables::ecalRecHitSumEt
float ecalRecHitSumEt
Definition: GsfElectron.h:512
GsfElectronAlgo::Tokens::hcalTowersTag
edm::EDGetTokenT< CaloTowerCollection > hcalTowersTag
Definition: GsfElectronAlgo.h:63
GsfElectronAlgo::IsolationConfiguration::intRadiusHcal
double intRadiusHcal
Definition: GsfElectronAlgo.h:166
GsfElectronAlgo::StrategyConfiguration::ecalDrivenEcalEnergyFromClassBasedParameterization
bool ecalDrivenEcalEnergyFromClassBasedParameterization
Definition: GsfElectronAlgo.h:80
GsfElectronAlgo::EventData::tkIsol04Calc
EleTkIsolFromCands tkIsol04Calc
Definition: GsfElectronAlgo.cc:80
reco::GsfElectron::FiducialFlags::isEBEtaGap
bool isEBEtaGap
Definition: GsfElectron.h:320
cms::Exception
Definition: Exception.h:70
reco::GsfElectron::FiducialFlags::isEB
bool isEB
Definition: GsfElectron.h:317
EleTkIsolFromCands
Definition: EleTkIsolFromCands.h:46
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
reco::GsfElectron::TrackExtrapolations::momentumAtVtx
math::XYZVectorF momentumAtVtx
Definition: GsfElectron.h:262
RegressionHelper::applyEcalRegression
void applyEcalRegression(reco::GsfElectron &electron, const reco::VertexCollection &vertices, const EcalRecHitCollection &rechitsEB, const EcalRecHitCollection &rechitsEE) const
Definition: RegressionHelper.cc:33
GsfElectronAlgo::EventData::hadDepth2Isolation04
EgammaTowerIsolation hadDepth2Isolation04
Definition: GsfElectronAlgo.cc:73
reco::Candidate::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
GsfPFRecTrack.h
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
GsfElectronAlgo::IsolationConfiguration
Definition: GsfElectronAlgo.h:165
GsfElectronAlgo::ElectronData::vtxTSOS
TrajectoryStateOnSurface vtxTSOS
Definition: GsfElectronAlgo.cc:117
reco::GsfElectron::SaturationInfo
Definition: GsfElectron.h:489
GsfElectronAlgo::crackCorrectionFunction_
std::unique_ptr< EcalClusterFunctionBaseClass > crackCorrectionFunction_
Definition: GsfElectronAlgo.h:262
GsfElectronAlgo::Configuration::cuts
const CutsConfiguration cuts
Definition: GsfElectronAlgo.h:205
egamma::simpleElectronEnergyUncertainty
double simpleElectronEnergyUncertainty(reco::GsfElectron const &)
Definition: ElectronEnergyCorrector.cc:278
edm::HandleBase::id
ProductID id() const
Definition: HandleBase.cc:29
GlobalPoint.h
reco::CaloCluster::energy
double energy() const
cluster energy
Definition: CaloCluster.h:149
reco::GsfElectron::ShowerShape::e5x5
float e5x5
Definition: GsfElectron.h:371
GsfElectronAlgo::Configuration::recHits
const EcalRecHitsConfiguration recHits
Definition: GsfElectronAlgo.h:207
GsfElectronAlgo::EventData::tkIsol03Calc
EleTkIsolFromCands tkIsol03Calc
Definition: GsfElectronAlgo.cc:79
GsfElectronAlgo::ecalPFRechitThresholdsToken_
const edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd > ecalPFRechitThresholdsToken_
Definition: GsfElectronAlgo.h:258
GsfElectronAlgo::tkIsolHEEP04CalcCfg_
const EleTkIsolFromCands::Configuration tkIsolHEEP04CalcCfg_
Definition: GsfElectronAlgo.h:251
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
reco::GsfElectron::ShowerShape::e2x5Bottom
float e2x5Bottom
Definition: GsfElectron.h:389
ElectronHcalHelper::hcalESumDepth2
double hcalESumDepth2(const reco::SuperCluster &, const std::vector< CaloTowerDetId > *excludeTowers=nullptr) const
Definition: ElectronHcalHelper.cc:74
GsfElectronAlgo::caloGeometryToken_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
Definition: GsfElectronAlgo.h:254
RegressionHelper::Configuration
Definition: RegressionHelper.h:27
reco::GsfElectron::ConversionRejection::vtxFitProb
float vtxFitProb
Definition: GsfElectron.h:577
reco::GsfElectron::TrackClusterMatching::deltaEtaSeedClusterAtCalo
float deltaEtaSeedClusterAtCalo
Definition: GsfElectron.h:208
GsfElectronAlgo::ElectronData::calculateTSOS
bool calculateTSOS(MultiTrajectoryStateTransform const &, GsfConstraintAtVertex const &)
Definition: GsfElectronAlgo.cc:198
ElectronSeed.h
reco::GsfElectron::TrackExtrapolations::positionAtVtx
math::XYZPointF positionAtVtx
Definition: GsfElectron.h:260
ConversionTools.h
GsfElectronAlgo::EcalRecHitsConfiguration
Definition: GsfElectronAlgo.h:156
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
GsfElectronAlgo.h
GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedEndcaps
std::vector< int > recHitSeverityToBeExcludedEndcaps
Definition: GsfElectronAlgo.h:160
reco::GsfElectron::ShowerShape::hcalDepth2OverEcal
float hcalDepth2OverEcal
Definition: GsfElectron.h:374