CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
GsfElectronAlgo Class Reference

#include <GsfElectronAlgo.h>

Classes

struct  Configuration
 
struct  CutsConfiguration
 
struct  EcalRecHitsConfiguration
 
struct  ElectronData
 
struct  EventData
 
class  HeavyObjectCache
 
struct  IsolationConfiguration
 
struct  StrategyConfiguration
 
struct  Tokens
 

Public Member Functions

reco::GsfElectronCollection completeElectrons (edm::Event const &event, edm::EventSetup const &eventSetup, const HeavyObjectCache *hoc)
 
 GsfElectronAlgo (const Tokens &, const StrategyConfiguration &, const CutsConfiguration &cutsCfg, const ElectronHcalHelper::Configuration &hcalCone, const ElectronHcalHelper::Configuration &hcalBc, 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)
 

Private Member Functions

EventData beginEvent (edm::Event const &event, CaloGeometry const &caloGeometry, EcalSeverityLevelAlgo const &ecalSeveretyLevelAlgo)
 
reco::GsfElectron::SaturationInfo calculateSaturationInfo (const reco::SuperClusterRef &, EventData const &eventData) const
 
template<bool full5x5>
reco::GsfElectron::ShowerShape calculateShowerShape (const reco::SuperClusterRef &, ElectronHcalHelper const &hcalHelperCone, ElectronHcalHelper const &hcalHelperBc, EventData const &eventData, CaloTopology const &topology, CaloGeometry const &geometry, EcalPFRecHitThresholds const &thresholds) const
 
void checkSetup (edm::EventSetup const &eventSetup)
 
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)
 
void setCutBasedPreselectionFlag (reco::GsfElectron &ele, const reco::BeamSpot &) const
 
void setPixelMatchInfomation (reco::GsfElectron &) const
 

Private Attributes

const edm::ESGetToken< CaloGeometry, CaloGeometryRecordcaloGeometryToken_
 
const edm::ESGetToken< CaloTopology, CaloTopologyRecordcaloTopologyToken_
 
const Configuration cfg_
 
std::unique_ptr< EcalClusterFunctionBaseClasscrackCorrectionFunction_
 
const edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcdecalPFRechitThresholdsToken_
 
const edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcdecalSeveretyLevelAlgoToken_
 
ElectronHcalHelper hcalHelperBc_
 
ElectronHcalHelper hcalHelperCone_
 
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecordmagneticFieldToken_
 
RegressionHelper regHelper_
 
const EleTkIsolFromCands::Configuration tkIsol03CalcCfg_
 
const EleTkIsolFromCands::Configuration tkIsol04CalcCfg_
 
const EleTkIsolFromCands::Configuration tkIsolHEEP03CalcCfg_
 
const EleTkIsolFromCands::Configuration tkIsolHEEP04CalcCfg_
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtrackerGeometryToken_
 

Detailed Description

Definition at line 51 of file GsfElectronAlgo.h.

Constructor & Destructor Documentation

◆ GsfElectronAlgo()

GsfElectronAlgo::GsfElectronAlgo ( const Tokens input,
const StrategyConfiguration strategy,
const CutsConfiguration cutsCfg,
const ElectronHcalHelper::Configuration hcalCone,
const ElectronHcalHelper::Configuration hcalBc,
const IsolationConfiguration iso,
const EcalRecHitsConfiguration recHits,
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 at line 378 of file GsfElectronAlgo.cc.

392  : cfg_{input, strategy, cuts, iso, recHits},
393  tkIsol03CalcCfg_(tkIsol03),
394  tkIsol04CalcCfg_(tkIsol04),
395  tkIsolHEEP03CalcCfg_(tkIsolHEEP03),
396  tkIsolHEEP04CalcCfg_(tkIsolHEEP04),
397  magneticFieldToken_{cc.esConsumes()},
398  caloGeometryToken_{cc.esConsumes()},
399  caloTopologyToken_{cc.esConsumes()},
400  trackerGeometryToken_{cc.esConsumes()},
401  ecalSeveretyLevelAlgoToken_{cc.esConsumes()},
402  ecalPFRechitThresholdsToken_{cc.esConsumes()},
403  hcalHelperCone_{hcalCone, std::move(cc)},
404  hcalHelperBc_{hcalBc, std::move(cc)},
405  crackCorrectionFunction_{std::forward<std::unique_ptr<EcalClusterFunctionBaseClass>>(crackCorrectionFunction)},
407 
408 {}

References cuts, input, and FastTrackerRecHitMaskProducer_cfi::recHits.

Member Function Documentation

◆ beginEvent()

GsfElectronAlgo::EventData GsfElectronAlgo::beginEvent ( edm::Event const &  event,
CaloGeometry const &  caloGeometry,
EcalSeverityLevelAlgo const &  ecalSeveretyLevelAlgo 
)
private

Definition at line 419 of file GsfElectronAlgo.cc.

421  {
422  auto const& hbheRecHits = event.get(cfg_.tokens.hbheRecHitsTag);
423 
424  // Isolation algos
425  float egHcalIsoConeSizeOutSmall = 0.3, egHcalIsoConeSizeOutLarge = 0.4;
426  float egHcalIsoConeSizeIn = cfg_.iso.intRadiusHcal, egHcalIsoPtMin = cfg_.iso.etMinHcal;
427 
428  float egIsoConeSizeOutSmall = 0.3, egIsoConeSizeOutLarge = 0.4, egIsoJurassicWidth = cfg_.iso.jurassicWidth;
429  float egIsoPtMinBarrel = cfg_.iso.etMinBarrel, egIsoEMinBarrel = cfg_.iso.eMinBarrel,
430  egIsoConeSizeInBarrel = cfg_.iso.intRadiusEcalBarrel;
431  float egIsoPtMinEndcap = cfg_.iso.etMinEndcaps, egIsoEMinEndcap = cfg_.iso.eMinEndcaps,
432  egIsoConeSizeInEndcap = cfg_.iso.intRadiusEcalEndcaps;
433 
434  auto barrelRecHits = event.getHandle(cfg_.tokens.barrelRecHitCollection);
435  auto endcapRecHits = event.getHandle(cfg_.tokens.endcapRecHitCollection);
436 
437  auto ctfTracks = event.getHandle(cfg_.tokens.ctfTracks);
438 
439  EventData eventData{
440  .event = &event,
441  .beamspot = &event.get(cfg_.tokens.beamSpotTag),
442  .coreElectrons = event.getHandle(cfg_.tokens.gsfElectronCores),
443  .barrelRecHits = barrelRecHits,
444  .endcapRecHits = endcapRecHits,
445  .currentCtfTracks = ctfTracks,
446  .seeds = event.getHandle(cfg_.tokens.seedsTag),
447  .vertices = event.getHandle(cfg_.tokens.vtxCollectionTag),
448  .conversions = cfg_.strategy.fillConvVtxFitProb ? event.getHandle(cfg_.tokens.conversions)
450 
451  .hadIsolation03 = EgammaHcalIsolation(
453  egHcalIsoConeSizeOutSmall,
455  egHcalIsoConeSizeIn,
456  EgammaHcalIsolation::arrayHB{{0., 0., 0., 0.}},
457  EgammaHcalIsolation::arrayHB{{egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin}},
459  EgammaHcalIsolation::arrayHE{{0., 0., 0., 0., 0., 0., 0.}},
460  EgammaHcalIsolation::arrayHE{{egHcalIsoPtMin,
461  egHcalIsoPtMin,
462  egHcalIsoPtMin,
463  egHcalIsoPtMin,
464  egHcalIsoPtMin,
465  egHcalIsoPtMin,
466  egHcalIsoPtMin}},
468  hbheRecHits,
469  caloGeometry,
474  .hadIsolation04 = EgammaHcalIsolation(
476  egHcalIsoConeSizeOutLarge,
478  egHcalIsoConeSizeIn,
479  EgammaHcalIsolation::arrayHB{{0., 0., 0., 0.}},
480  EgammaHcalIsolation::arrayHB{{egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin}},
482  EgammaHcalIsolation::arrayHE{{0., 0., 0., 0., 0., 0., 0.}},
483  EgammaHcalIsolation::arrayHE{{egHcalIsoPtMin,
484  egHcalIsoPtMin,
485  egHcalIsoPtMin,
486  egHcalIsoPtMin,
487  egHcalIsoPtMin,
488  egHcalIsoPtMin,
489  egHcalIsoPtMin}},
491  hbheRecHits,
492  caloGeometry,
497  .hadIsolation03Bc = EgammaHcalIsolation(
499  egHcalIsoConeSizeOutSmall,
501  0.,
502  EgammaHcalIsolation::arrayHB{{0., 0., 0., 0.}},
503  EgammaHcalIsolation::arrayHB{{egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin}},
505  EgammaHcalIsolation::arrayHE{{0., 0., 0., 0., 0., 0., 0.}},
506  EgammaHcalIsolation::arrayHE{{egHcalIsoPtMin,
507  egHcalIsoPtMin,
508  egHcalIsoPtMin,
509  egHcalIsoPtMin,
510  egHcalIsoPtMin,
511  egHcalIsoPtMin,
512  egHcalIsoPtMin}},
514  hbheRecHits,
515  caloGeometry,
520  .hadIsolation04Bc = EgammaHcalIsolation(
522  egHcalIsoConeSizeOutLarge,
524  0.,
525  EgammaHcalIsolation::arrayHB{{0., 0., 0., 0.}},
526  EgammaHcalIsolation::arrayHB{{egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin, egHcalIsoPtMin}},
528  EgammaHcalIsolation::arrayHE{{0., 0., 0., 0., 0., 0., 0.}},
529  EgammaHcalIsolation::arrayHE{{egHcalIsoPtMin,
530  egHcalIsoPtMin,
531  egHcalIsoPtMin,
532  egHcalIsoPtMin,
533  egHcalIsoPtMin,
534  egHcalIsoPtMin,
535  egHcalIsoPtMin}},
537  hbheRecHits,
538  caloGeometry,
543 
544  .ecalBarrelIsol03 = EgammaRecHitIsolation(egIsoConeSizeOutSmall,
545  egIsoConeSizeInBarrel,
546  egIsoJurassicWidth,
547  egIsoPtMinBarrel,
548  egIsoEMinBarrel,
549  &caloGeometry,
550  *barrelRecHits,
551  &ecalSeveretyLevelAlgo,
552  DetId::Ecal),
553  .ecalBarrelIsol04 = EgammaRecHitIsolation(egIsoConeSizeOutLarge,
554  egIsoConeSizeInBarrel,
555  egIsoJurassicWidth,
556  egIsoPtMinBarrel,
557  egIsoEMinBarrel,
558  &caloGeometry,
559  *barrelRecHits,
560  &ecalSeveretyLevelAlgo,
561  DetId::Ecal),
562  .ecalEndcapIsol03 = EgammaRecHitIsolation(egIsoConeSizeOutSmall,
563  egIsoConeSizeInEndcap,
564  egIsoJurassicWidth,
565  egIsoPtMinEndcap,
566  egIsoEMinEndcap,
567  &caloGeometry,
568  *endcapRecHits,
569  &ecalSeveretyLevelAlgo,
570  DetId::Ecal),
571  .ecalEndcapIsol04 = EgammaRecHitIsolation(egIsoConeSizeOutLarge,
572  egIsoConeSizeInEndcap,
573  egIsoJurassicWidth,
574  egIsoPtMinEndcap,
575  egIsoEMinEndcap,
576  &caloGeometry,
577  *endcapRecHits,
578  &ecalSeveretyLevelAlgo,
579  DetId::Ecal),
580  .tkIsol03Calc = EleTkIsolFromCands(tkIsol03CalcCfg_, *ctfTracks),
581  .tkIsol04Calc = EleTkIsolFromCands(tkIsol04CalcCfg_, *ctfTracks),
582  .tkIsolHEEP03Calc = EleTkIsolFromCands(tkIsolHEEP03CalcCfg_, *ctfTracks),
583  .tkIsolHEEP04Calc = EleTkIsolFromCands(tkIsolHEEP04CalcCfg_, *ctfTracks),
584  .originalCtfTracks = {},
585  .originalGsfTracks = {}};
586 
587  eventData.ecalBarrelIsol03.setUseNumCrystals(cfg_.iso.useNumCrystals);
588  eventData.ecalBarrelIsol03.setVetoClustered(cfg_.iso.vetoClustered);
589  eventData.ecalBarrelIsol03.doSeverityChecks(eventData.barrelRecHits.product(),
591  eventData.ecalBarrelIsol03.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedBarrel);
592  eventData.ecalBarrelIsol04.setUseNumCrystals(cfg_.iso.useNumCrystals);
593  eventData.ecalBarrelIsol04.setVetoClustered(cfg_.iso.vetoClustered);
594  eventData.ecalBarrelIsol04.doSeverityChecks(eventData.barrelRecHits.product(),
596  eventData.ecalBarrelIsol04.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedBarrel);
597  eventData.ecalEndcapIsol03.setUseNumCrystals(cfg_.iso.useNumCrystals);
598  eventData.ecalEndcapIsol03.setVetoClustered(cfg_.iso.vetoClustered);
599  eventData.ecalEndcapIsol03.doSeverityChecks(eventData.endcapRecHits.product(),
601  eventData.ecalEndcapIsol03.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedEndcaps);
602  eventData.ecalEndcapIsol04.setUseNumCrystals(cfg_.iso.useNumCrystals);
603  eventData.ecalEndcapIsol04.setVetoClustered(cfg_.iso.vetoClustered);
604  eventData.ecalEndcapIsol04.doSeverityChecks(eventData.endcapRecHits.product(),
606  eventData.ecalEndcapIsol04.doFlagChecks(cfg_.recHits.recHitFlagsToBeExcludedEndcaps);
607 
608  return eventData;
609 }

References GsfElectronAlgo::Tokens::barrelRecHitCollection, HLT_FULL_cff::barrelRecHits, GsfElectronAlgo::Tokens::beamSpotTag, cfg_, GsfElectronAlgo::Tokens::conversions, lowPtGsfElectronCores_cff::ctfTracks, GsfElectronAlgo::Tokens::ctfTracks, DetId::Ecal, GsfElectronAlgo::IsolationConfiguration::eMinBarrel, GsfElectronAlgo::IsolationConfiguration::eMinEndcaps, GsfElectronAlgo::Tokens::endcapRecHitCollection, HLT_FULL_cff::endcapRecHits, GsfElectronAlgo::IsolationConfiguration::etMinBarrel, GsfElectronAlgo::IsolationConfiguration::etMinEndcaps, GsfElectronAlgo::IsolationConfiguration::etMinHcal, GsfElectronAlgo::EventData::event, edmPickEvents::event, GsfElectronAlgo::StrategyConfiguration::fillConvVtxFitProb, GsfElectronAlgo::Tokens::gsfElectronCores, ecalDrivenElectronSeeds_cfi::hbheRecHits, GsfElectronAlgo::Tokens::hbheRecHitsTag, ElectronHcalHelper::hcalChannelQuality(), hcalHelperCone_, ElectronHcalHelper::hcalSevLvlComputer(), ElectronHcalHelper::hcalTopology(), GsfElectronAlgo::IsolationConfiguration::intRadiusEcalBarrel, GsfElectronAlgo::IsolationConfiguration::intRadiusEcalEndcaps, GsfElectronAlgo::IsolationConfiguration::intRadiusHcal, EgammaHcalIsolation::isBehindClusterSeed, GsfElectronAlgo::Configuration::iso, GsfElectronAlgo::IsolationConfiguration::jurassicWidth, ElectronHcalHelper::maxSeverityHB(), ElectronHcalHelper::maxSeverityHE(), GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedBarrel, GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedEndcaps, GsfElectronAlgo::Configuration::recHits, GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedBarrel, GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedEndcaps, GsfElectronAlgo::Tokens::seedsTag, GsfElectronAlgo::Configuration::strategy, tkIsol03CalcCfg_, tkIsol04CalcCfg_, tkIsolHEEP03CalcCfg_, tkIsolHEEP04CalcCfg_, GsfElectronAlgo::Configuration::tokens, ElectronHcalHelper::towerMap(), GsfElectronAlgo::IsolationConfiguration::useNumCrystals, GsfElectronAlgo::IsolationConfiguration::vetoClustered, GsfElectronAlgo::Tokens::vtxCollectionTag, and EgammaHcalIsolation::withinConeAroundCluster.

Referenced by completeElectrons().

◆ calculateSaturationInfo()

reco::GsfElectron::SaturationInfo GsfElectronAlgo::calculateSaturationInfo ( const reco::SuperClusterRef theClus,
EventData const &  eventData 
) const
private

Definition at line 258 of file GsfElectronAlgo.cc.

259  {
261 
262  const reco::CaloCluster& seedCluster = *(theClus->seed());
263  DetId seedXtalId = seedCluster.seed();
264  int detector = seedXtalId.subdetId();
265  const EcalRecHitCollection* ecalRecHits = nullptr;
266  if (detector == EcalBarrel)
267  ecalRecHits = eventData.barrelRecHits.product();
268  else
269  ecalRecHits = eventData.endcapRecHits.product();
270 
271  int nSaturatedXtals = 0;
272  bool isSeedSaturated = false;
273  for (auto&& hitFractionPair : theClus->hitsAndFractions()) {
274  auto&& ecalRecHit = ecalRecHits->find(hitFractionPair.first);
275  if (ecalRecHit == ecalRecHits->end())
276  continue;
277  if (ecalRecHit->checkFlag(EcalRecHit::Flags::kSaturated)) {
278  nSaturatedXtals++;
279  if (seedXtalId == ecalRecHit->detid())
280  isSeedSaturated = true;
281  }
282  }
283  si.nSaturatedXtals = nSaturatedXtals;
284  si.isSeedSaturated = isSeedSaturated;
285 
286  return si;
287 }

References GsfElectronAlgo::EventData::barrelRecHits, hgcalTestNeighbor_cfi::detector, EcalBarrel, IOMC_cff::ecalRecHit, edm::SortedCollection< T, SORT >::end(), GsfElectronAlgo::EventData::endcapRecHits, edm::SortedCollection< T, SORT >::find(), reco::GsfElectron::SaturationInfo::isSeedSaturated, reco::GsfElectron::SaturationInfo::nSaturatedXtals, reco::CaloCluster::seed(), and DetId::subdetId().

Referenced by createElectron().

◆ calculateShowerShape()

template<bool full5x5>
reco::GsfElectron::ShowerShape GsfElectronAlgo::calculateShowerShape ( const reco::SuperClusterRef theClus,
ElectronHcalHelper const &  hcalHelperCone,
ElectronHcalHelper const &  hcalHelperBc,
EventData const &  eventData,
CaloTopology const &  topology,
CaloGeometry const &  geometry,
EcalPFRecHitThresholds const &  thresholds 
) const
private

Definition at line 290 of file GsfElectronAlgo.cc.

296  {
297  using ClusterTools = EcalClusterToolsT<full5x5>;
298  reco::GsfElectron::ShowerShape showerShape;
299 
300  const reco::CaloCluster& seedCluster = *(theClus->seed());
301  // temporary, till CaloCluster->seed() is made available
302  DetId seedXtalId = seedCluster.hitsAndFractions()[0].first;
303  int detector = seedXtalId.subdetId();
304 
305  const EcalRecHitCollection* recHits = nullptr;
306  std::vector<int> recHitFlagsToBeExcluded;
307  std::vector<int> recHitSeverityToBeExcluded;
308  if (detector == EcalBarrel) {
309  recHits = eventData.barrelRecHits.product();
310  recHitFlagsToBeExcluded = cfg_.recHits.recHitFlagsToBeExcludedBarrel;
311  recHitSeverityToBeExcluded = cfg_.recHits.recHitSeverityToBeExcludedBarrel;
312  } else {
313  recHits = eventData.endcapRecHits.product();
314  recHitFlagsToBeExcluded = cfg_.recHits.recHitFlagsToBeExcludedEndcaps;
315  recHitSeverityToBeExcluded = cfg_.recHits.recHitSeverityToBeExcludedEndcaps;
316  }
317 
318  const auto& covariances = ClusterTools::covariances(seedCluster, recHits, &topology, &geometry);
319 
320  // do noise-cleaning for full5x5, by passing per crystal PF recHit thresholds and mult values
321  // mult values for EB and EE were obtained by dedicated studies
322  const auto& localCovariances = full5x5 ? ClusterTools::localCovariances(seedCluster,
323  recHits,
324  &topology,
326  &thresholds,
329  : ClusterTools::localCovariances(seedCluster, recHits, &topology);
330 
331  showerShape.sigmaEtaEta = sqrt(covariances[0]);
332  showerShape.sigmaIetaIeta = sqrt(localCovariances[0]);
333  if (!edm::isNotFinite(localCovariances[2]))
334  showerShape.sigmaIphiIphi = sqrt(localCovariances[2]);
335  showerShape.e1x5 = ClusterTools::e1x5(seedCluster, recHits, &topology);
336  showerShape.e2x5Max = ClusterTools::e2x5Max(seedCluster, recHits, &topology);
337  showerShape.e5x5 = ClusterTools::e5x5(seedCluster, recHits, &topology);
338  showerShape.r9 = ClusterTools::e3x3(seedCluster, recHits, &topology) / theClus->rawEnergy();
339 
340  const float scale = full5x5 ? showerShape.e5x5 : theClus->energy();
341 
342  for (uint id = 0; id < showerShape.hcalOverEcal.size(); ++id) {
343  showerShape.hcalOverEcal[id] = hcalHelperCone.hcalESum(*theClus, id + 1) / scale;
344  showerShape.hcalOverEcalBc[id] = hcalHelperBc.hcalESum(*theClus, id + 1) / scale;
345  }
346  showerShape.invalidHcal = !hcalHelperBc.hasActiveHcal(*theClus);
347  showerShape.hcalTowersBehindClusters = hcalHelperBc.hcalTowersBehindClusters(*theClus);
348  showerShape.pre7DepthHcal = false;
349 
350  // extra shower shapes
351  const float see_by_spp = showerShape.sigmaIetaIeta * showerShape.sigmaIphiIphi;
352  if (see_by_spp > 0) {
353  showerShape.sigmaIetaIphi = localCovariances[1] / see_by_spp;
354  } else if (localCovariances[1] > 0) {
355  showerShape.sigmaIetaIphi = 1.f;
356  } else {
357  showerShape.sigmaIetaIphi = -1.f;
358  }
359  showerShape.eMax = ClusterTools::eMax(seedCluster, recHits);
360  showerShape.e2nd = ClusterTools::e2nd(seedCluster, recHits);
361  showerShape.eTop = ClusterTools::eTop(seedCluster, recHits, &topology);
362  showerShape.eLeft = ClusterTools::eLeft(seedCluster, recHits, &topology);
363  showerShape.eRight = ClusterTools::eRight(seedCluster, recHits, &topology);
364  showerShape.eBottom = ClusterTools::eBottom(seedCluster, recHits, &topology);
365 
366  showerShape.e2x5Left = ClusterTools::e2x5Left(seedCluster, recHits, &topology);
367  showerShape.e2x5Right = ClusterTools::e2x5Right(seedCluster, recHits, &topology);
368  showerShape.e2x5Top = ClusterTools::e2x5Top(seedCluster, recHits, &topology);
369  showerShape.e2x5Bottom = ClusterTools::e2x5Bottom(seedCluster, recHits, &topology);
370 
371  return showerShape;
372 }

References GsfElectronAlgo::EventData::barrelRecHits, cfg_, GsfElectronAlgo::Configuration::cuts, hgcalTestNeighbor_cfi::detector, EgHLTOffHistBins_cfi::e1x5, reco::GsfElectron::ShowerShape::e1x5, reco::GsfElectron::ShowerShape::e2nd, reco::GsfElectron::ShowerShape::e2x5Bottom, reco::GsfElectron::ShowerShape::e2x5Left, reco::GsfElectron::ShowerShape::e2x5Max, reco::GsfElectron::ShowerShape::e2x5Right, reco::GsfElectron::ShowerShape::e2x5Top, reco::GsfElectron::ShowerShape::e5x5, reco::GsfElectron::ShowerShape::eBottom, EcalBarrel, reco::GsfElectron::ShowerShape::eLeft, cosmicPhotonAnalyzer_cfi::eMax, reco::GsfElectron::ShowerShape::eMax, GsfElectronAlgo::EventData::endcapRecHits, reco::GsfElectron::ShowerShape::eRight, reco::GsfElectron::ShowerShape::eTop, ElectronHcalHelper::hasActiveHcal(), ElectronHcalHelper::hcalESum(), reco::GsfElectron::ShowerShape::hcalOverEcal, reco::GsfElectron::ShowerShape::hcalOverEcalBc, ElectronHcalHelper::hcalTowersBehindClusters(), reco::GsfElectron::ShowerShape::hcalTowersBehindClusters, reco::CaloCluster::hitsAndFractions(), triggerObjects_cff::id, reco::GsfElectron::ShowerShape::invalidHcal, edm::isNotFinite(), EgammaLocalCovParamDefaults::kRelEnCut, GsfElectronAlgo::CutsConfiguration::multThresEB, GsfElectronAlgo::CutsConfiguration::multThresEE, reco::GsfElectron::ShowerShape::pre7DepthHcal, reco::GsfElectron::ShowerShape::r9, GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedBarrel, GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedEndcaps, FastTrackerRecHitMaskProducer_cfi::recHits, GsfElectronAlgo::Configuration::recHits, GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedBarrel, GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedEndcaps, L1EGammaCrystalsEmulatorProducer_cfi::scale, reco::GsfElectron::ShowerShape::sigmaEtaEta, reco::GsfElectron::ShowerShape::sigmaIetaIeta, reco::GsfElectron::ShowerShape::sigmaIetaIphi, reco::GsfElectron::ShowerShape::sigmaIphiIphi, mathSSE::sqrt(), DetId::subdetId(), particleFlowZeroSuppressionECAL_cff::thresholds, and parallelization::uint.

◆ checkSetup()

void GsfElectronAlgo::checkSetup ( edm::EventSetup const &  eventSetup)
private

◆ completeElectrons()

reco::GsfElectronCollection GsfElectronAlgo::completeElectrons ( edm::Event const &  event,
edm::EventSetup const &  eventSetup,
const HeavyObjectCache hoc 
)

Definition at line 611 of file GsfElectronAlgo.cc.

613  {
615 
616  auto const& magneticField = eventSetup.getData(magneticFieldToken_);
617  auto const& caloGeometry = eventSetup.getData(caloGeometryToken_);
618  auto const& caloTopology = eventSetup.getData(caloTopologyToken_);
619  auto const& trackerGeometry = eventSetup.getData(trackerGeometryToken_);
620  auto const& ecalSeveretyLevelAlgo = eventSetup.getData(ecalSeveretyLevelAlgoToken_);
621  auto const& thresholds = eventSetup.getData(ecalPFRechitThresholdsToken_);
622 
623  // prepare access to hcal data
624  hcalHelperCone_.beginEvent(event, eventSetup);
625  hcalHelperBc_.beginEvent(event, eventSetup);
626 
627  checkSetup(eventSetup);
628  auto eventData = beginEvent(event, caloGeometry, ecalSeveretyLevelAlgo);
629  double magneticFieldInTesla = magneticField.inTesla(GlobalPoint(0., 0., 0.)).z();
630 
631  MultiTrajectoryStateTransform mtsTransform(&trackerGeometry, &magneticField);
632  GsfConstraintAtVertex constraintAtVtx(eventSetup);
633 
634  std::optional<egamma::conv::TrackTable> ctfTrackTable = std::nullopt;
635  std::optional<egamma::conv::TrackTable> gsfTrackTable = std::nullopt;
636 
637  const GsfElectronCoreCollection* coreCollection = eventData.coreElectrons.product();
638  for (unsigned int i = 0; i < coreCollection->size(); ++i) {
639  // check there is no existing electron with this core
640  const GsfElectronCoreRef coreRef = edm::Ref<GsfElectronCoreCollection>(eventData.coreElectrons, i);
641 
642  // check there is a super-cluster
643  if (coreRef->superCluster().isNull())
644  continue;
645 
646  // prepare internal structure for electron specific data
647  ElectronData electronData(coreRef, *eventData.beamspot);
648 
649  // calculate and check Trajectory StatesOnSurface....
650  if (!electronData.calculateTSOS(mtsTransform, constraintAtVtx))
651  continue;
652 
653  eventData.retreiveOriginalTrackCollections(electronData.ctfTrackRef, electronData.coreRef->gsfTrack());
654 
655  if (!eventData.originalCtfTracks.isValid()) {
656  eventData.originalCtfTracks = eventData.currentCtfTracks;
657  }
658 
659  if (ctfTrackTable == std::nullopt) {
660  ctfTrackTable = egamma::conv::TrackTable(*eventData.originalCtfTracks);
661  }
662  if (gsfTrackTable == std::nullopt) {
663  gsfTrackTable = egamma::conv::TrackTable(*eventData.originalGsfTracks);
664  }
665 
667  electronData,
668  eventData,
669  caloTopology,
670  caloGeometry,
671  mtsTransform,
672  magneticFieldInTesla,
673  hoc,
674  ctfTrackTable.value(),
675  gsfTrackTable.value(),
676  thresholds);
677 
678  } // loop over tracks
679  return electrons;
680 }

References ElectronHcalHelper::beginEvent(), beginEvent(), GsfElectronAlgo::ElectronData::calculateTSOS(), caloGeometryToken_, caloTopologyToken_, checkSetup(), GsfElectronAlgo::ElectronData::coreRef, createElectron(), GsfElectronAlgo::ElectronData::ctfTrackRef, ecalPFRechitThresholdsToken_, ecalSeveretyLevelAlgoToken_, pwdgSkimBPark_cfi::electrons, edm::EventSetup::getData(), hcalHelperBc_, hcalHelperCone_, mps_fire::i, edm::Ref< C, T, F >::isNull(), HLT_FULL_cff::magneticField, magneticFieldToken_, particleFlowZeroSuppressionECAL_cff::thresholds, and trackerGeometryToken_.

◆ createElectron()

void GsfElectronAlgo::createElectron ( reco::GsfElectronCollection electrons,
ElectronData electronData,
EventData eventData,
CaloTopology const &  topology,
CaloGeometry const &  geometry,
MultiTrajectoryStateTransform const &  mtsTransform,
double  magneticFieldInTesla,
const HeavyObjectCache hoc,
egamma::conv::TrackTableView  ctfTable,
egamma::conv::TrackTableView  gsfTable,
EcalPFRecHitThresholds const &  thresholds 
)
private

Definition at line 800 of file GsfElectronAlgo.cc.

810  {
811  // charge ID
812  int eleCharge;
813  GsfElectron::ChargeInfo eleChargeInfo;
814  electronData.computeCharge(eleCharge, eleChargeInfo);
815 
816  // electron basic cluster
817  CaloClusterPtr elbcRef = electronData.getEleBasicCluster(mtsTransform);
818 
819  // Seed cluster
820  const reco::CaloCluster& seedCluster = *(electronData.superClusterRef->seed());
821 
822  // seed Xtal
823  // temporary, till CaloCluster->seed() is made available
824  DetId seedXtalId = seedCluster.hitsAndFractions()[0].first;
825 
826  electronData.calculateMode();
827 
828  //====================================================
829  // Candidate attributes
830  //====================================================
831 
832  Candidate::LorentzVector momentum = electronData.calculateMomentum();
833 
834  //====================================================
835  // Track-Cluster Matching
836  //====================================================
837 
839  tcMatching.electronCluster = elbcRef;
840  tcMatching.eSuperClusterOverP =
841  (electronData.vtxMom.mag() > 0) ? (electronData.superClusterRef->energy() / electronData.vtxMom.mag()) : (-1.);
842  tcMatching.eSeedClusterOverP =
843  (electronData.vtxMom.mag() > 0.) ? (seedCluster.energy() / electronData.vtxMom.mag()) : (-1);
844  tcMatching.eSeedClusterOverPout =
845  (electronData.seedMom.mag() > 0.) ? (seedCluster.energy() / electronData.seedMom.mag()) : (-1.);
846  tcMatching.eEleClusterOverPout =
847  (electronData.eleMom.mag() > 0.) ? (elbcRef->energy() / electronData.eleMom.mag()) : (-1.);
848 
849  EleRelPointPair scAtVtx(
850  electronData.superClusterRef->position(), electronData.sclPos, eventData.beamspot->position());
851  tcMatching.deltaEtaSuperClusterAtVtx = scAtVtx.dEta();
852  tcMatching.deltaPhiSuperClusterAtVtx = scAtVtx.dPhi();
853 
854  EleRelPointPair seedAtCalo(seedCluster.position(), electronData.seedPos, eventData.beamspot->position());
855  tcMatching.deltaEtaSeedClusterAtCalo = seedAtCalo.dEta();
856  tcMatching.deltaPhiSeedClusterAtCalo = seedAtCalo.dPhi();
857 
858  EleRelPointPair ecAtCalo(elbcRef->position(), electronData.elePos, eventData.beamspot->position());
859  tcMatching.deltaEtaEleClusterAtCalo = ecAtCalo.dEta();
860  tcMatching.deltaPhiEleClusterAtCalo = ecAtCalo.dPhi();
861 
862  //=======================================================
863  // Track extrapolations
864  //=======================================================
865 
867  ele_convert(electronData.vtxPos, tkExtra.positionAtVtx);
868  ele_convert(electronData.sclPos, tkExtra.positionAtCalo);
869  ele_convert(electronData.vtxMom, tkExtra.momentumAtVtx);
870  ele_convert(electronData.sclMom, tkExtra.momentumAtCalo);
871  ele_convert(electronData.seedMom, tkExtra.momentumOut);
872  ele_convert(electronData.eleMom, tkExtra.momentumAtEleClus);
873  ele_convert(electronData.vtxMomWithConstraint, tkExtra.momentumAtVtxWithConstraint);
874 
875  //=======================================================
876  // Closest Ctf Track
877  //=======================================================
878 
880  ctfInfo.ctfTrack = electronData.ctfTrackRef;
881  ctfInfo.shFracInnerHits = electronData.shFracInnerHits;
882 
883  //====================================================
884  // FiducialFlags, using nextToBoundary definition of gaps
885  //====================================================
886 
887  reco::GsfElectron::FiducialFlags fiducialFlags;
888  int region = seedXtalId.det();
889  int detector = seedXtalId.subdetId();
890  double feta = std::abs(electronData.superClusterRef->position().eta());
891  if (detector == EcalBarrel) {
892  fiducialFlags.isEB = true;
893  EBDetId ebdetid(seedXtalId);
894  if (EBDetId::isNextToEtaBoundary(ebdetid)) {
895  if (ebdetid.ietaAbs() == 85) {
896  fiducialFlags.isEBEEGap = true;
897  } else {
898  fiducialFlags.isEBEtaGap = true;
899  }
900  }
901  if (EBDetId::isNextToPhiBoundary(ebdetid)) {
902  fiducialFlags.isEBPhiGap = true;
903  }
904  } else if (detector == EcalEndcap) {
905  fiducialFlags.isEE = true;
906  EEDetId eedetid(seedXtalId);
907  if (EEDetId::isNextToRingBoundary(eedetid)) {
908  if (std::abs(feta) < 2.) {
909  fiducialFlags.isEBEEGap = true;
910  } else {
911  fiducialFlags.isEERingGap = true;
912  }
913  }
914  if (EEDetId::isNextToDBoundary(eedetid)) {
915  fiducialFlags.isEEDeeGap = true;
916  }
918  fiducialFlags.isEE = true;
919  //HGCalDetId eeDetid(seedXtalId);
920  // fill in fiducial information when we know how to use it...
921  } else {
922  throw cms::Exception("GsfElectronAlgo|UnknownXtalRegion")
923  << "createElectron(): do not know if it is a barrel or endcap seed cluster !!!!";
924  }
925 
926  //====================================================
927  // SaturationInfo
928  //====================================================
929 
930  auto saturationInfo = calculateSaturationInfo(electronData.superClusterRef, eventData);
931 
932  //====================================================
933  // ShowerShape
934  //====================================================
935 
936  reco::GsfElectron::ShowerShape showerShape;
937  reco::GsfElectron::ShowerShape full5x5_showerShape;
939  showerShape = calculateShowerShape<false>(
940  electronData.superClusterRef, hcalHelperCone_, hcalHelperBc_, eventData, topology, geometry, thresholds);
941  full5x5_showerShape = calculateShowerShape<true>(
942  electronData.superClusterRef, hcalHelperCone_, hcalHelperBc_, eventData, topology, geometry, thresholds);
943  }
944 
945  //====================================================
946  // ConversionRejection
947  //====================================================
948 
949  edm::Handle<reco::TrackCollection> ctfTracks = eventData.originalCtfTracks;
950  if (!ctfTracks.isValid()) {
951  ctfTracks = eventData.currentCtfTracks;
952  }
953 
954  {
955  //get the references to the gsf and ctf tracks that are made
956  //by the electron
957  const reco::TrackRef el_ctftrack = electronData.coreRef->ctfTrack();
958  const reco::GsfTrackRef& el_gsftrack = electronData.coreRef->gsfTrack();
959 
960  //protect against the wrong collection being passed to the function
961  if (el_ctftrack.isNonnull() && el_ctftrack.id() != ctfTracks.id())
962  throw cms::Exception("ConversionFinderError")
963  << "ProductID of ctf track collection does not match ProductID of electron's CTF track! \n";
964  if (el_gsftrack.isNonnull() && el_gsftrack.id() != eventData.originalGsfTracks.id())
965  throw cms::Exception("ConversionFinderError")
966  << "ProductID of gsf track collection does not match ProductID of electron's GSF track! \n";
967  }
968 
969  // values of conversionInfo.flag
970  // -9999 : Partner track was not found
971  // 0 : Partner track found in the CTF collection using
972  // 1 : Partner track found in the CTF collection using
973  // 2 : Partner track found in the GSF collection using
974  // 3 : Partner track found in the GSF collection using the electron's GSF track
975  auto conversionInfo = egamma::conv::findConversion(*electronData.coreRef, ctfTable, gsfTable, magneticFieldInTesla);
976 
978  conversionVars.flags = conversionInfo.flag;
979  conversionVars.dist = conversionInfo.dist;
980  conversionVars.dcot = conversionInfo.dcot;
981  conversionVars.radius = conversionInfo.radiusOfConversion;
983  //this is an intentionally bugged version which ignores the GsfTrack
984  //this is a bug which was introduced in reduced e/gamma where the GsfTrack gets
985  //relinked to a new collection which means it can no longer match the conversion
986  //as it matches based on product/id
987  //we keep this defination for the MVAs
988  const auto matchedConv = ConversionTools::matchedConversion(
989  electronData.coreRef->ctfTrack(), *eventData.conversions, eventData.beamspot->position(), 2.0, 1e-6, 0);
990  conversionVars.vtxFitProb = ConversionTools::getVtxFitProb(matchedConv);
991  }
992  if (conversionInfo.conversionPartnerCtfTkIdx) {
993  conversionVars.partner = TrackBaseRef(reco::TrackRef(ctfTracks, conversionInfo.conversionPartnerCtfTkIdx.value()));
994  } else if (conversionInfo.conversionPartnerGsfTkIdx) {
995  conversionVars.partner =
996  TrackBaseRef(reco::GsfTrackRef(eventData.originalGsfTracks, conversionInfo.conversionPartnerGsfTkIdx.value()));
997  }
998 
999  //====================================================
1000  // Go !
1001  //====================================================
1002 
1003  electrons.emplace_back(eleCharge,
1004  eleChargeInfo,
1005  electronData.coreRef,
1006  tcMatching,
1007  tkExtra,
1008  ctfInfo,
1009  fiducialFlags,
1010  showerShape,
1011  full5x5_showerShape,
1012  conversionVars,
1013  saturationInfo);
1014  auto& ele = electrons.back();
1015  // Will be overwritten later in the case of the regression
1016  ele.setCorrectedEcalEnergyError(egamma::ecalClusterEnergyUncertaintyElectronSpecific(*(ele.superCluster())));
1017  ele.setP4(GsfElectron::P4_FROM_SUPER_CLUSTER, momentum, 0, true);
1018 
1019  //====================================================
1020  // brems fractions
1021  //====================================================
1022 
1023  if (electronData.innMom.mag() > 0.) {
1024  ele.setTrackFbrem((electronData.innMom.mag() - electronData.outMom.mag()) / electronData.innMom.mag());
1025  }
1026 
1027  // the supercluster is the refined one The seed is not necessarily the first cluster
1028  // hence the use of the electronCluster
1029  SuperClusterRef sc = ele.superCluster();
1030  if (!(sc.isNull())) {
1031  CaloClusterPtr cl = ele.electronCluster();
1032  if (sc->clustersSize() > 1) {
1033  float pf_fbrem = (sc->energy() - cl->energy()) / sc->energy();
1034  ele.setSuperClusterFbrem(pf_fbrem);
1035  } else {
1036  ele.setSuperClusterFbrem(0);
1037  }
1038  }
1039 
1040  //====================================================
1041  // classification and corrections
1042  //====================================================
1043  // classification
1044  const auto elClass = egamma::classifyElectron(ele);
1045  ele.setClassification(elClass);
1046 
1047  bool unexpectedClassification = elClass == GsfElectron::UNKNOWN || elClass > GsfElectron::GAP;
1048  if (unexpectedClassification) {
1049  edm::LogWarning("GsfElectronAlgo") << "unexpected classification";
1050  }
1051 
1052  // ecal energy
1053  if (cfg_.strategy.useEcalRegression) // new
1054  {
1055  regHelper_.applyEcalRegression(ele, *eventData.vertices, *eventData.barrelRecHits, *eventData.endcapRecHits);
1056  } else // original implementation
1057  {
1059  if (ele.core()->ecalDrivenSeed()) {
1060  if (cfg_.strategy.ecalDrivenEcalEnergyFromClassBasedParameterization && !unexpectedClassification) {
1061  if (ele.isEcalEnergyCorrected()) {
1062  edm::LogWarning("ElectronEnergyCorrector::classBasedElectronEnergy") << "already done";
1063  } else {
1064  ele.setCorrectedEcalEnergy(
1065  egamma::classBasedElectronEnergy(ele, *eventData.beamspot, *crackCorrectionFunction_));
1066  }
1067  }
1069  ele.setCorrectedEcalEnergyError(egamma::classBasedElectronEnergyUncertainty(ele));
1070  }
1071  } else {
1073  ele.setCorrectedEcalEnergyError(egamma::simpleElectronEnergyUncertainty(ele));
1074  }
1075  }
1076  }
1077  }
1078 
1079  // momentum
1080  // Keep the default correction running first. The track momentum error is computed in there
1081  if (cfg_.strategy.useDefaultEnergyCorrection && ele.core()->ecalDrivenSeed() && !unexpectedClassification) {
1082  if (ele.p4Error(reco::GsfElectron::P4_COMBINATION) != 999.) {
1083  edm::LogWarning("ElectronMomentumCorrector::correct") << "already done";
1084  } else {
1085  auto p = egamma::correctElectronMomentum(ele, electronData.vtxTSOS);
1086  ele.correctMomentum(p.momentum, p.trackError, p.finalError);
1087  }
1088  }
1090  {
1092  }
1093 
1094  //====================================================
1095  // now isolation variables
1096  //====================================================
1098  dr03.tkSumPt = eventData.tkIsol03Calc(*ele.gsfTrack()).ptSum;
1099  dr04.tkSumPt = eventData.tkIsol04Calc(*ele.gsfTrack()).ptSum;
1100  dr03.tkSumPtHEEP = eventData.tkIsolHEEP03Calc(*ele.gsfTrack()).ptSum;
1101  dr04.tkSumPtHEEP = eventData.tkIsolHEEP04Calc(*ele.gsfTrack()).ptSum;
1102 
1104  for (uint id = 0; id < dr03.hcalRecHitSumEt.size(); ++id) {
1105  dr03.hcalRecHitSumEt[id] = eventData.hadIsolation03.getHcalEtSum(&ele, id + 1);
1106  dr03.hcalRecHitSumEtBc[id] = eventData.hadIsolation03Bc.getHcalEtSumBc(&ele, id + 1);
1107 
1108  dr04.hcalRecHitSumEt[id] = eventData.hadIsolation04.getHcalEtSum(&ele, id + 1);
1109  dr04.hcalRecHitSumEtBc[id] = eventData.hadIsolation04Bc.getHcalEtSumBc(&ele, id + 1);
1110  }
1111 
1112  dr03.ecalRecHitSumEt = eventData.ecalBarrelIsol03.getEtSum(&ele);
1113  dr03.ecalRecHitSumEt += eventData.ecalEndcapIsol03.getEtSum(&ele);
1114 
1115  dr04.ecalRecHitSumEt = eventData.ecalBarrelIsol04.getEtSum(&ele);
1116  dr04.ecalRecHitSumEt += eventData.ecalEndcapIsol04.getEtSum(&ele);
1117  }
1118 
1119  dr03.pre7DepthHcal = false;
1120  dr04.pre7DepthHcal = false;
1121 
1122  ele.setIsolation03(dr03);
1123  ele.setIsolation04(dr04);
1124 
1125  //====================================================
1126  // preselection flag
1127  //====================================================
1128 
1129  setCutBasedPreselectionFlag(ele, *eventData.beamspot);
1130  //setting mva flag, currently GedGsfElectron and GsfElectron pre-selection flags have desynced
1131  //this is for GedGsfElectrons, GsfElectrons (ie old pre 7X std reco) resets this later on
1132  //in the function "addPfInfo"
1133  //yes this is awful, we'll fix it once we work out how to...
1134  float mvaValue = hoc->sElectronMVAEstimator->mva(ele, *(eventData.vertices));
1135  ele.setPassMvaPreselection(mvaValue > cfg_.strategy.PreSelectMVA);
1136 
1137  //====================================================
1138  // Pixel match variables
1139  //====================================================
1141 
1142  LogTrace("GsfElectronAlgo") << "Constructed new electron with energy " << ele.p4().e();
1143 }

References funct::abs(), RegressionHelper::applyCombinationRegression(), RegressionHelper::applyEcalRegression(), GsfElectronAlgo::EventData::barrelRecHits, GsfElectronAlgo::EventData::beamspot, GsfElectronAlgo::ElectronData::calculateMode(), GsfElectronAlgo::ElectronData::calculateMomentum(), calculateSaturationInfo(), cfg_, GetRecoTauVFromDQM_MC_cff::cl, egamma::classBasedElectronEnergy(), egamma::classBasedElectronEnergyUncertainty(), egamma::classifyElectron(), GsfElectronAlgo::ElectronData::computeCharge(), GsfElectronAlgo::EventData::conversions, GsfElectronAlgo::ElectronData::coreRef, egamma::correctElectronMomentum(), crackCorrectionFunction_, reco::GsfElectron::ClosestCtfTrack::ctfTrack, GsfElectronAlgo::ElectronData::ctfTrackRef, lowPtGsfElectronCores_cff::ctfTracks, GsfElectronAlgo::EventData::currentCtfTracks, reco::GsfElectron::ConversionRejection::dcot, reco::GsfElectron::TrackClusterMatching::deltaEtaEleClusterAtCalo, reco::GsfElectron::TrackClusterMatching::deltaEtaSeedClusterAtCalo, reco::GsfElectron::TrackClusterMatching::deltaEtaSuperClusterAtVtx, reco::GsfElectron::TrackClusterMatching::deltaPhiEleClusterAtCalo, reco::GsfElectron::TrackClusterMatching::deltaPhiSeedClusterAtCalo, reco::GsfElectron::TrackClusterMatching::deltaPhiSuperClusterAtVtx, DetId::det(), hgcalTestNeighbor_cfi::detector, reco::GsfElectron::ConversionRejection::dist, MillePedeFileConverter_cfg::e, EcalBarrel, GsfElectronAlgo::EventData::ecalBarrelIsol03, GsfElectronAlgo::EventData::ecalBarrelIsol04, egamma::ecalClusterEnergyUncertaintyElectronSpecific(), GsfElectronAlgo::StrategyConfiguration::ecalDrivenEcalEnergyFromClassBasedParameterization, GsfElectronAlgo::StrategyConfiguration::ecalDrivenEcalErrorFromClassBasedParameterization, EcalEndcap, GsfElectronAlgo::EventData::ecalEndcapIsol03, GsfElectronAlgo::EventData::ecalEndcapIsol04, reco::GsfElectron::IsolationVariables::ecalRecHitSumEt, reco::GsfElectron::TrackClusterMatching::eEleClusterOverPout, ele_convert(), reco::GsfElectron::TrackClusterMatching::electronCluster, pwdgSkimBPark_cfi::electrons, GsfElectronAlgo::ElectronData::eleMom, GsfElectronAlgo::ElectronData::elePos, GsfElectronAlgo::EventData::endcapRecHits, reco::CaloCluster::energy(), reco::GsfElectron::TrackClusterMatching::eSeedClusterOverP, reco::GsfElectron::TrackClusterMatching::eSeedClusterOverPout, reco::GsfElectron::TrackClusterMatching::eSuperClusterOverP, Exception, JetMETHLTOfflineSource_cfi::feta, GsfElectronAlgo::StrategyConfiguration::fillConvVtxFitProb, egamma::conv::findConversion(), reco::GsfElectron::ConversionRejection::flags, GsfElectronAlgo::ElectronData::getEleBasicCluster(), EgammaRecHitIsolation::getEtSum(), EgammaHcalIsolation::getHcalEtSum(), EgammaHcalIsolation::getHcalEtSumBc(), ConversionTools::getVtxFitProb(), GsfElectronAlgo::EventData::hadIsolation03, GsfElectronAlgo::EventData::hadIsolation03Bc, GsfElectronAlgo::EventData::hadIsolation04, GsfElectronAlgo::EventData::hadIsolation04Bc, hcalHelperBc_, hcalHelperCone_, reco::GsfElectron::IsolationVariables::hcalRecHitSumEt, reco::GsfElectron::IsolationVariables::hcalRecHitSumEtBc, reco::CaloCluster::hitsAndFractions(), triggerObjects_cff::id, edm::HandleBase::id(), edm::Ref< C, T, F >::id(), EBDetId::ietaAbs(), GsfElectronAlgo::ElectronData::innMom, reco::GsfElectron::FiducialFlags::isEB, reco::GsfElectron::FiducialFlags::isEBEEGap, reco::GsfElectron::FiducialFlags::isEBEtaGap, reco::GsfElectron::FiducialFlags::isEBPhiGap, reco::GsfElectron::FiducialFlags::isEE, reco::GsfElectron::FiducialFlags::isEEDeeGap, reco::GsfElectron::FiducialFlags::isEERingGap, EcalTools::isHGCalDet(), EEDetId::isNextToDBoundary(), EBDetId::isNextToEtaBoundary(), EBDetId::isNextToPhiBoundary(), EEDetId::isNextToRingBoundary(), edm::Ref< C, T, F >::isNonnull(), edm::Ref< C, T, F >::isNull(), LogTrace, PV3DBase< T, PVType, FrameType >::mag(), ConversionTools::matchedConversion(), reco::GsfElectron::TrackExtrapolations::momentumAtCalo, reco::GsfElectron::TrackExtrapolations::momentumAtEleClus, reco::GsfElectron::TrackExtrapolations::momentumAtVtx, reco::GsfElectron::TrackExtrapolations::momentumAtVtxWithConstraint, reco::GsfElectron::TrackExtrapolations::momentumOut, GsfElectronAlgo::EventData::originalCtfTracks, GsfElectronAlgo::EventData::originalGsfTracks, GsfElectronAlgo::ElectronData::outMom, AlCaHLTBitMon_ParallelJobs::p, reco::GsfElectron::P4_COMBINATION, reco::GsfElectron::ConversionRejection::partner, reco::BeamSpot::position(), reco::CaloCluster::position(), reco::GsfElectron::TrackExtrapolations::positionAtCalo, reco::GsfElectron::TrackExtrapolations::positionAtVtx, reco::GsfElectron::IsolationVariables::pre7DepthHcal, GsfElectronAlgo::StrategyConfiguration::PreSelectMVA, GsfElectronAlgo::StrategyConfiguration::pureTrackerDrivenEcalErrorFromSimpleParameterization, reco::GsfElectron::ConversionRejection::radius, regHelper_, HLT_FULL_cff::region, GsfElectronAlgo::ElectronData::sclMom, GsfElectronAlgo::ElectronData::sclPos, GsfElectronAlgo::ElectronData::seedMom, GsfElectronAlgo::ElectronData::seedPos, GsfElectronAlgo::HeavyObjectCache::sElectronMVAEstimator, setCutBasedPreselectionFlag(), setPixelMatchInfomation(), GsfElectronAlgo::ElectronData::shFracInnerHits, reco::GsfElectron::ClosestCtfTrack::shFracInnerHits, egamma::simpleElectronEnergyUncertainty(), GsfElectronAlgo::Configuration::strategy, DetId::subdetId(), GsfElectronAlgo::ElectronData::superClusterRef, particleFlowZeroSuppressionECAL_cff::thresholds, GsfElectronAlgo::EventData::tkIsol03Calc, GsfElectronAlgo::EventData::tkIsol04Calc, GsfElectronAlgo::EventData::tkIsolHEEP03Calc, GsfElectronAlgo::EventData::tkIsolHEEP04Calc, reco::GsfElectron::IsolationVariables::tkSumPt, reco::GsfElectron::IsolationVariables::tkSumPtHEEP, parallelization::uint, SiStripSubdetector::UNKNOWN, GsfElectronAlgo::StrategyConfiguration::useCombinationRegression, GsfElectronAlgo::StrategyConfiguration::useDefaultEnergyCorrection, GsfElectronAlgo::StrategyConfiguration::useEcalRegression, GsfElectronAlgo::EventData::vertices, reco::GsfElectron::ConversionRejection::vtxFitProb, GsfElectronAlgo::ElectronData::vtxMom, GsfElectronAlgo::ElectronData::vtxMomWithConstraint, GsfElectronAlgo::ElectronData::vtxPos, and GsfElectronAlgo::ElectronData::vtxTSOS.

Referenced by completeElectrons().

◆ setCutBasedPreselectionFlag()

void GsfElectronAlgo::setCutBasedPreselectionFlag ( reco::GsfElectron ele,
const reco::BeamSpot bs 
) const
private

Definition at line 682 of file GsfElectronAlgo.cc.

682  {
683  // default value
684  ele.setPassCutBasedPreselection(false);
685 
686  // kind of seeding
687  bool eg = ele.core()->ecalDrivenSeed();
688  bool pf = ele.core()->trackerDrivenSeed() && !ele.core()->ecalDrivenSeed();
689  if (eg && pf) {
690  throw cms::Exception("GsfElectronAlgo|BothEcalAndPureTrackerDriven")
691  << "An electron cannot be both egamma and purely pflow";
692  }
693  if ((!eg) && (!pf)) {
694  throw cms::Exception("GsfElectronAlgo|NeitherEcalNorPureTrackerDriven")
695  << "An electron cannot be neither egamma nor purely pflow";
696  }
697 
698  CutsConfiguration const& cfg = cfg_.cuts;
699 
700  // Et cut
701  double etaValue = EleRelPoint(ele.superCluster()->position(), bs.position()).eta();
702  double etValue = ele.superCluster()->energy() / cosh(etaValue);
703  LogTrace("GsfElectronAlgo") << "Et : " << etValue;
704  if (ele.isEB() && (etValue < cfg.minSCEtBarrel))
705  return;
706  if (ele.isEE() && (etValue < cfg.minSCEtEndcaps))
707  return;
708  LogTrace("GsfElectronAlgo") << "Et criteria are satisfied";
709 
710  // E/p cut
711  double eopValue = ele.eSuperClusterOverP();
712  LogTrace("GsfElectronAlgo") << "E/p : " << eopValue;
713  if (ele.isEB() && (eopValue > cfg.maxEOverPBarrel))
714  return;
715  if (ele.isEE() && (eopValue > cfg.maxEOverPEndcaps))
716  return;
717  if (ele.isEB() && (eopValue < cfg.minEOverPBarrel))
718  return;
719  if (ele.isEE() && (eopValue < cfg.minEOverPEndcaps))
720  return;
721  LogTrace("GsfElectronAlgo") << "E/p criteria are satisfied";
722 
723  // HoE cuts
724  LogTrace("GsfElectronAlgo") << "HoE : " << ele.hcalOverEcal();
725  double hoeCone = ele.hcalOverEcal();
726  double hoeBc = ele.hcalOverEcalBc();
727  const reco::CaloCluster& seedCluster = *(ele.superCluster()->seed());
728  int detector = seedCluster.hitsAndFractions()[0].first.subdetId();
729  bool HoEveto = false;
730  double scle = ele.superCluster()->energy();
731 
732  if (detector == EcalBarrel)
733  HoEveto = hoeCone * scle < cfg.maxHBarrelCone || hoeBc * scle < cfg.maxHBarrelBc ||
734  hoeCone < cfg.maxHOverEBarrelCone || hoeBc < cfg.maxHOverEBarrelBc;
735  else if (detector == EcalEndcap)
736  HoEveto = hoeCone * scle < cfg.maxHEndcapsCone || hoeBc * scle < cfg.maxHEndcapsBc ||
737  hoeCone < cfg.maxHOverEEndcapsCone || hoeBc < cfg.maxHOverEEndcapsBc;
738 
739  if (!HoEveto)
740  return;
741  LogTrace("GsfElectronAlgo") << "H/E criteria are satisfied";
742 
743  // delta eta criteria
744  double deta = ele.deltaEtaSuperClusterTrackAtVtx();
745  LogTrace("GsfElectronAlgo") << "delta eta : " << deta;
746  if (ele.isEB() && (std::abs(deta) > cfg.maxDeltaEtaBarrel))
747  return;
748  if (ele.isEE() && (std::abs(deta) > cfg.maxDeltaEtaEndcaps))
749  return;
750  LogTrace("GsfElectronAlgo") << "Delta eta criteria are satisfied";
751 
752  // delta phi criteria
753  double dphi = ele.deltaPhiSuperClusterTrackAtVtx();
754  LogTrace("GsfElectronAlgo") << "delta phi : " << dphi;
755  if (ele.isEB() && (std::abs(dphi) > cfg.maxDeltaPhiBarrel))
756  return;
757  if (ele.isEE() && (std::abs(dphi) > cfg.maxDeltaPhiEndcaps))
758  return;
759  LogTrace("GsfElectronAlgo") << "Delta phi criteria are satisfied";
760 
761  // sigma ieta ieta
762  LogTrace("GsfElectronAlgo") << "sigma ieta ieta : " << ele.sigmaIetaIeta();
763  if (ele.isEB() && (ele.sigmaIetaIeta() > cfg.maxSigmaIetaIetaBarrel))
764  return;
765  if (ele.isEE() && (ele.sigmaIetaIeta() > cfg.maxSigmaIetaIetaEndcaps))
766  return;
767  LogTrace("GsfElectronAlgo") << "Sigma ieta ieta criteria are satisfied";
768 
769  // fiducial
770  if (!ele.isEB() && cfg.isBarrel)
771  return;
772  if (!ele.isEE() && cfg.isEndcaps)
773  return;
774  if (cfg.isFiducial &&
775  (ele.isEBEEGap() || ele.isEBEtaGap() || ele.isEBPhiGap() || ele.isEERingGap() || ele.isEEDeeGap()))
776  return;
777  LogTrace("GsfElectronAlgo") << "Fiducial flags criteria are satisfied";
778 
779  // seed in TEC
780  edm::RefToBase<TrajectorySeed> seed = ele.gsfTrack()->extra()->seedRef();
781  ElectronSeedRef elseed = seed.castTo<ElectronSeedRef>();
782  if (eg && !cfg_.cuts.seedFromTEC) {
783  if (elseed.isNull()) {
784  throw cms::Exception("GsfElectronAlgo|NotElectronSeed") << "The GsfTrack seed is not an ElectronSeed ?!";
785  } else {
786  if (elseed->subDet(1) == 6)
787  return;
788  }
789  }
790 
791  // transverse impact parameter
792  if (std::abs(ele.gsfTrack()->dxy(bs.position())) > cfg.maxTIP)
793  return;
794  LogTrace("GsfElectronAlgo") << "TIP criterion is satisfied";
795 
796  LogTrace("GsfElectronAlgo") << "All cut based criteria are satisfied";
797  ele.setPassCutBasedPreselection(true);
798 }

References funct::abs(), cms::cuda::bs, looper::cfg, cfg_, reco::GsfElectron::core(), GsfElectronAlgo::Configuration::cuts, reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx(), reco::GsfElectron::deltaPhiSuperClusterTrackAtVtx(), hgcalTestNeighbor_cfi::detector, EcalBarrel, EcalEndcap, reco::GsfElectron::eSuperClusterOverP(), PVValHelper::eta, Exception, reco::GsfElectron::gsfTrack(), reco::GsfElectron::hcalOverEcal(), reco::GsfElectron::hcalOverEcalBc(), reco::CaloCluster::hitsAndFractions(), reco::GsfElectron::isEB(), reco::GsfElectron::isEBEEGap(), reco::GsfElectron::isEBEtaGap(), reco::GsfElectron::isEBPhiGap(), reco::GsfElectron::isEE(), reco::GsfElectron::isEEDeeGap(), reco::GsfElectron::isEERingGap(), edm::Ref< C, T, F >::isNull(), LogTrace, packedPFCandidateRefMixer_cfi::pf, fileCollector::seed, GsfElectronAlgo::CutsConfiguration::seedFromTEC, reco::GsfElectron::setPassCutBasedPreselection(), reco::GsfElectron::sigmaIetaIeta(), and reco::GsfElectron::superCluster().

Referenced by createElectron().

◆ setPixelMatchInfomation()

void GsfElectronAlgo::setPixelMatchInfomation ( reco::GsfElectron ele) const
private

Definition at line 1146 of file GsfElectronAlgo.cc.

1146  {
1147  int sd1 = 0;
1148  int sd2 = 0;
1149  float dPhi1 = 0;
1150  float dPhi2 = 0;
1151  float dRz1 = 0;
1152  float dRz2 = 0;
1153  edm::RefToBase<TrajectorySeed> seed = ele.gsfTrack()->extra()->seedRef();
1154  ElectronSeedRef elseed = seed.castTo<ElectronSeedRef>();
1155  if (seed.isNull()) {
1156  } else {
1157  if (elseed.isNull()) {
1158  } else {
1159  sd1 = elseed->subDet(0);
1160  sd2 = elseed->subDet(1);
1161  dPhi1 = (ele.charge() > 0) ? elseed->dPhiPos(0) : elseed->dPhiNeg(0);
1162  dPhi2 = (ele.charge() > 0) ? elseed->dPhiPos(1) : elseed->dPhiNeg(1);
1163  dRz1 = (ele.charge() > 0) ? elseed->dRZPos(0) : elseed->dRZNeg(0);
1164  dRz2 = (ele.charge() > 0) ? elseed->dRZPos(1) : elseed->dRZNeg(1);
1165  }
1166  }
1167  ele.setPixelMatchSubdetectors(sd1, sd2);
1168  ele.setPixelMatchDPhi1(dPhi1);
1169  ele.setPixelMatchDPhi2(dPhi2);
1170  ele.setPixelMatchDRz1(dRz1);
1171  ele.setPixelMatchDRz2(dRz2);
1172 }

References reco::LeafCandidate::charge(), reco::GsfElectron::gsfTrack(), edm::Ref< C, T, F >::isNull(), fileCollector::seed, reco::GsfElectron::setPixelMatchDPhi1(), reco::GsfElectron::setPixelMatchDPhi2(), reco::GsfElectron::setPixelMatchDRz1(), reco::GsfElectron::setPixelMatchDRz2(), and reco::GsfElectron::setPixelMatchSubdetectors().

Referenced by createElectron().

Member Data Documentation

◆ caloGeometryToken_

const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> GsfElectronAlgo::caloGeometryToken_
private

Definition at line 255 of file GsfElectronAlgo.h.

Referenced by completeElectrons().

◆ caloTopologyToken_

const edm::ESGetToken<CaloTopology, CaloTopologyRecord> GsfElectronAlgo::caloTopologyToken_
private

Definition at line 256 of file GsfElectronAlgo.h.

Referenced by completeElectrons().

◆ cfg_

const Configuration GsfElectronAlgo::cfg_
private

◆ crackCorrectionFunction_

std::unique_ptr<EcalClusterFunctionBaseClass> GsfElectronAlgo::crackCorrectionFunction_
private

Definition at line 264 of file GsfElectronAlgo.h.

Referenced by checkSetup(), and createElectron().

◆ ecalPFRechitThresholdsToken_

const edm::ESGetToken<EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd> GsfElectronAlgo::ecalPFRechitThresholdsToken_
private

Definition at line 259 of file GsfElectronAlgo.h.

Referenced by completeElectrons().

◆ ecalSeveretyLevelAlgoToken_

const edm::ESGetToken<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd> GsfElectronAlgo::ecalSeveretyLevelAlgoToken_
private

Definition at line 258 of file GsfElectronAlgo.h.

Referenced by completeElectrons().

◆ hcalHelperBc_

ElectronHcalHelper GsfElectronAlgo::hcalHelperBc_
private

Definition at line 263 of file GsfElectronAlgo.h.

Referenced by completeElectrons(), and createElectron().

◆ hcalHelperCone_

ElectronHcalHelper GsfElectronAlgo::hcalHelperCone_
private

Definition at line 262 of file GsfElectronAlgo.h.

Referenced by beginEvent(), completeElectrons(), and createElectron().

◆ magneticFieldToken_

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> GsfElectronAlgo::magneticFieldToken_
private

Definition at line 254 of file GsfElectronAlgo.h.

Referenced by completeElectrons().

◆ regHelper_

RegressionHelper GsfElectronAlgo::regHelper_
private

Definition at line 265 of file GsfElectronAlgo.h.

Referenced by checkSetup(), and createElectron().

◆ tkIsol03CalcCfg_

const EleTkIsolFromCands::Configuration GsfElectronAlgo::tkIsol03CalcCfg_
private

Definition at line 249 of file GsfElectronAlgo.h.

Referenced by beginEvent().

◆ tkIsol04CalcCfg_

const EleTkIsolFromCands::Configuration GsfElectronAlgo::tkIsol04CalcCfg_
private

Definition at line 250 of file GsfElectronAlgo.h.

Referenced by beginEvent().

◆ tkIsolHEEP03CalcCfg_

const EleTkIsolFromCands::Configuration GsfElectronAlgo::tkIsolHEEP03CalcCfg_
private

Definition at line 251 of file GsfElectronAlgo.h.

Referenced by beginEvent().

◆ tkIsolHEEP04CalcCfg_

const EleTkIsolFromCands::Configuration GsfElectronAlgo::tkIsolHEEP04CalcCfg_
private

Definition at line 252 of file GsfElectronAlgo.h.

Referenced by beginEvent().

◆ trackerGeometryToken_

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> GsfElectronAlgo::trackerGeometryToken_
private

Definition at line 257 of file GsfElectronAlgo.h.

Referenced by completeElectrons().

reco::GsfElectron::ClosestCtfTrack::shFracInnerHits
float shFracInnerHits
Definition: GsfElectron.h:183
EgHLTOffHistBins_cfi.e1x5
e1x5
Definition: EgHLTOffHistBins_cfi.py:22
GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedEndcaps
std::vector< int > recHitFlagsToBeExcludedEndcaps
Definition: GsfElectronAlgo.h:157
reco::GsfElectron::ShowerShape::e2x5Right
float e2x5Right
Definition: GsfElectron.h:394
reco::GsfElectron::isEE
bool isEE() const
Definition: GsfElectron.h:337
EBDetId::isNextToEtaBoundary
static bool isNextToEtaBoundary(EBDetId id)
Definition: EBDetId.cc:108
reco::GsfElectron::ShowerShape::r9
float r9
Definition: GsfElectron.h:373
reco::GsfElectron::ShowerShape::pre7DepthHcal
bool pre7DepthHcal
Definition: GsfElectron.h:384
GsfElectronAlgo::magneticFieldToken_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
Definition: GsfElectronAlgo.h:254
reco::GsfElectron::ShowerShape::sigmaIetaIeta
float sigmaIetaIeta
Definition: GsfElectron.h:368
reco::GsfElectron::ClosestCtfTrack
Definition: GsfElectron.h:181
reco::GsfElectron::TrackClusterMatching::electronCluster
CaloClusterPtr electronCluster
Definition: GsfElectron.h:203
mps_fire.i
i
Definition: mps_fire.py:428
reco::GsfElectron::isEB
bool isEB() const
Definition: GsfElectron.h:336
input
static const std::string input
Definition: EdmProvDump.cc:48
reco::GsfElectron::gsfTrack
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
Definition: GsfElectron.h:164
ele_convert
void ele_convert(const Type1 &obj1, Type2 &obj2)
Definition: ElectronUtilities.h:16
cuts
const TkSoA *__restrict__ CAHitNtupletGeneratorKernelsGPU::QualityCuts cuts
Definition: CAHitNtupletGeneratorKernelsImpl.h:416
GsfElectronAlgo::IsolationConfiguration::eMinEndcaps
double eMinEndcaps
Definition: GsfElectronAlgo.h:173
L1EGammaCrystalsEmulatorProducer_cfi.scale
scale
Definition: L1EGammaCrystalsEmulatorProducer_cfi.py:10
particleFlowZeroSuppressionECAL_cff.thresholds
thresholds
Definition: particleFlowZeroSuppressionECAL_cff.py:31
GsfElectronAlgo::Configuration::iso
const IsolationConfiguration iso
Definition: GsfElectronAlgo.h:206
GsfElectronAlgo::CutsConfiguration::multThresEB
double multThresEB
Definition: GsfElectronAlgo.h:150
reco::GsfElectron::FiducialFlags::isEBEEGap
bool isEBEEGap
Definition: GsfElectron.h:320
egamma::conv::findConversion
ConversionInfo findConversion(const reco::GsfElectronCore &gsfElectron, TrackTableView ctfTable, TrackTableView gsfTable, float bFieldAtOrigin, float minFracSharedHits=0.45f)
Definition: ConversionFinder.h:71
ElectronHcalHelper::beginEvent
void beginEvent(const edm::Event &evt, const edm::EventSetup &eventSetup)
Definition: ElectronHcalHelper.cc:20
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:236
EcalTools::isHGCalDet
static bool isHGCalDet(DetId::Detector thedet)
identify HGCal cells
Definition: EcalTools.h:49
reco::GsfElectron::ChargeInfo
Definition: GsfElectron.h:123
edm::isNotFinite
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
EgammaHcalIsolation::InclusionRule::withinConeAroundCluster
GsfElectronAlgo::IsolationConfiguration::intRadiusEcalBarrel
double intRadiusEcalBarrel
Definition: GsfElectronAlgo.h:167
GsfElectronAlgo::IsolationConfiguration::etMinHcal
double etMinHcal
Definition: GsfElectronAlgo.h:166
reco::GsfElectron::FiducialFlags::isEE
bool isEE
Definition: GsfElectron.h:319
reco::GsfElectron::setPixelMatchDPhi2
void setPixelMatchDPhi2(float dPhi2)
Definition: GsfElectron.h:918
reco::GsfElectron::isEERingGap
bool isEERingGap() const
Definition: GsfElectron.h:345
EgammaHcalIsolation::arrayHB
std::array< double, 4 > arrayHB
Definition: EgammaHcalIsolation.h:41
HLT_FULL_cff.endcapRecHits
endcapRecHits
Definition: HLT_FULL_cff.py:14947
edm::Ref::isNull
bool isNull() const
Checks for null.
Definition: Ref.h:235
EBDetId
Definition: EBDetId.h:17
GsfElectronAlgo::trackerGeometryToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
Definition: GsfElectronAlgo.h:257
reco::GsfElectron::FiducialFlags::isEEDeeGap
bool isEEDeeGap
Definition: GsfElectron.h:323
GsfElectronAlgo::Tokens::gsfElectronCores
edm::EDGetTokenT< reco::GsfElectronCoreCollection > gsfElectronCores
Definition: GsfElectronAlgo.h:61
reco::GsfElectron::ClosestCtfTrack::ctfTrack
TrackRef ctfTrack
Definition: GsfElectron.h:182
GsfElectronAlgo::StrategyConfiguration::useCombinationRegression
bool useCombinationRegression
Definition: GsfElectronAlgo.h:94
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:174
geometry
Definition: geometry.py:1
ConversionTools::getVtxFitProb
static float getVtxFitProb(const reco::Conversion *conv)
Definition: ConversionTools.cc:438
reco::GsfElectron::P4_COMBINATION
Definition: GsfElectron.h:831
reco::GsfElectron::TrackClusterMatching::eSeedClusterOverP
float eSeedClusterOverP
Definition: GsfElectron.h:205
HLT_FULL_cff.barrelRecHits
barrelRecHits
Definition: HLT_FULL_cff.py:14946
reco::GsfElectron::IsolationVariables::hcalRecHitSumEtBc
std::array< float, 7 > hcalRecHitSumEtBc
Definition: GsfElectron.h:549
reco::GsfElectron::ShowerShape::eMax
float eMax
Definition: GsfElectron.h:386
lowPtGsfElectronCores_cff.ctfTracks
ctfTracks
Definition: lowPtGsfElectronCores_cff.py:6
GsfElectronAlgo::tkIsol03CalcCfg_
const EleTkIsolFromCands::Configuration tkIsol03CalcCfg_
Definition: GsfElectronAlgo.h:249
reco::GsfElectron::setPixelMatchSubdetectors
void setPixelMatchSubdetectors(int sd1, int sd2)
Definition: GsfElectron.h:916
reco::GsfElectron::ConversionRejection::dcot
float dcot
Definition: GsfElectron.h:639
edm::SortedCollection< EcalRecHit >
GsfElectronAlgo::hcalHelperBc_
ElectronHcalHelper hcalHelperBc_
Definition: GsfElectronAlgo.h:263
reco::GsfElectron::ShowerShape::sigmaIetaIphi
float sigmaIetaIphi
Definition: GsfElectron.h:385
GsfElectronAlgo::hcalHelperCone_
ElectronHcalHelper hcalHelperCone_
Definition: GsfElectronAlgo.h:262
GsfElectronAlgo::setCutBasedPreselectionFlag
void setCutBasedPreselectionFlag(reco::GsfElectron &ele, const reco::BeamSpot &) const
Definition: GsfElectronAlgo.cc:682
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:175
reco::GsfElectron::ShowerShape::hcalOverEcal
std::array< float, 7 > hcalOverEcal
Definition: GsfElectron.h:379
GsfElectronAlgo::IsolationConfiguration::eMinBarrel
double eMinBarrel
Definition: GsfElectronAlgo.h:171
reco::GsfElectronCollection
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
Definition: GsfElectronFwd.h:14
reco::GsfElectron::SaturationInfo::nSaturatedXtals
int nSaturatedXtals
Definition: GsfElectron.h:521
EgammaRecHitIsolation
Definition: EgammaRecHitIsolation.h:26
reco::GsfElectron::TrackClusterMatching::eEleClusterOverPout
float eEleClusterOverPout
Definition: GsfElectron.h:207
reco::GsfElectron::TrackExtrapolations::momentumAtCalo
math::XYZVectorF momentumAtCalo
Definition: GsfElectron.h:265
HLT_FULL_cff.magneticField
magneticField
Definition: HLT_FULL_cff.py:348
GsfElectronAlgo::EcalRecHitsConfiguration::recHitFlagsToBeExcludedBarrel
std::vector< int > recHitFlagsToBeExcludedBarrel
Definition: GsfElectronAlgo.h:156
reco::GsfElectron::TrackExtrapolations::momentumOut
math::XYZVectorF momentumOut
Definition: GsfElectron.h:267
GsfElectronAlgo::Tokens::seedsTag
edm::EDGetTokenT< reco::ElectronSeedCollection > seedsTag
Definition: GsfElectronAlgo.h:67
reco::GsfElectron::ShowerShape::e2x5Max
float e2x5Max
Definition: GsfElectron.h:371
reco::GsfElectron::TrackClusterMatching::deltaEtaEleClusterAtCalo
float deltaEtaEleClusterAtCalo
Definition: GsfElectron.h:210
edm::Handle< reco::ConversionCollection >
GsfElectronAlgo::Tokens::beamSpotTag
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag
Definition: GsfElectronAlgo.h:69
parallelization.uint
uint
Definition: parallelization.py:124
GsfElectronAlgo::Tokens::barrelRecHitCollection
edm::EDGetTokenT< EcalRecHitCollection > barrelRecHitCollection
Definition: GsfElectronAlgo.h:65
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
GsfElectronAlgo::StrategyConfiguration::ecalDrivenEcalErrorFromClassBasedParameterization
bool ecalDrivenEcalErrorFromClassBasedParameterization
Definition: GsfElectronAlgo.h:80
EcalBarrel
Definition: EcalSubdetector.h:10
reco::GsfElectron::ShowerShape::eBottom
float eBottom
Definition: GsfElectron.h:391
edm::Ref< GsfElectronCoreCollection >
reco::GsfElectron::FiducialFlags::isEBPhiGap
bool isEBPhiGap
Definition: GsfElectron.h:322
RegressionHelper::applyCombinationRegression
void applyCombinationRegression(reco::GsfElectron &ele) const
Definition: RegressionHelper.cc:114
cc
reco::GsfElectron::ShowerShape::sigmaEtaEta
float sigmaEtaEta
Definition: GsfElectron.h:367
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:212
reco::GsfElectron::hcalOverEcalBc
float hcalOverEcalBc(const ShowerShape &ss, int depth) const
Definition: GsfElectron.h:450
fileCollector.seed
seed
Definition: fileCollector.py:127
reco::GsfElectron::IsolationVariables::tkSumPtHEEP
float tkSumPtHEEP
Definition: GsfElectron.h:542
GetRecoTauVFromDQM_MC_cff.cl
cl
Definition: GetRecoTauVFromDQM_MC_cff.py:38
DetId
Definition: DetId.h:17
EgammaHcalIsolation
Definition: EgammaHcalIsolation.h:38
GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedBarrel
std::vector< int > recHitSeverityToBeExcludedBarrel
Definition: GsfElectronAlgo.h:158
EleRelPoint
Definition: ElectronUtilities.h:25
cms::cuda::bs
bs
Definition: HistoContainer.h:76
reco::GsfElectron::IsolationVariables::tkSumPt
float tkSumPt
Definition: GsfElectron.h:541
reco::GsfElectron::FiducialFlags::isEERingGap
bool isEERingGap
Definition: GsfElectron.h:324
GsfElectronAlgo::caloTopologyToken_
const edm::ESGetToken< CaloTopology, CaloTopologyRecord > caloTopologyToken_
Definition: GsfElectronAlgo.h:256
GsfElectronAlgo::StrategyConfiguration::pureTrackerDrivenEcalErrorFromSimpleParameterization
bool pureTrackerDrivenEcalErrorFromSimpleParameterization
Definition: GsfElectronAlgo.h:81
GsfElectronAlgo::regHelper_
RegressionHelper regHelper_
Definition: GsfElectronAlgo.h:265
reco::GsfElectron::setPixelMatchDRz2
void setPixelMatchDRz2(float dRz2)
Definition: GsfElectron.h:920
reco::GsfElectron::ConversionRejection
Definition: GsfElectron.h:635
GsfConstraintAtVertex
Definition: GsfConstraintAtVertex.h:21
reco::GsfElectron::ShowerShape
Definition: GsfElectron.h:366
PVValHelper::eta
Definition: PVValidationHelpers.h:70
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:1146
reco::GsfElectron::isEEDeeGap
bool isEEDeeGap() const
Definition: GsfElectron.h:344
reco::GsfElectron::ShowerShape::eTop
float eTop
Definition: GsfElectron.h:388
reco::GsfElectron::FiducialFlags
Definition: GsfElectron.h:317
reco::GsfElectron::setPixelMatchDRz1
void setPixelMatchDRz1(float dRz1)
Definition: GsfElectron.h:919
reco::GsfElectron::IsolationVariables::pre7DepthHcal
bool pre7DepthHcal
Definition: GsfElectron.h:550
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
reco::GsfElectron::IsolationVariables
Definition: GsfElectron.h:540
reco::GsfElectron::ShowerShape::hcalTowersBehindClusters
std::vector< CaloTowerDetId > hcalTowersBehindClusters
Definition: GsfElectron.h:382
GsfElectronAlgo::tkIsolHEEP03CalcCfg_
const EleTkIsolFromCands::Configuration tkIsolHEEP03CalcCfg_
Definition: GsfElectronAlgo.h:251
reco::GsfElectron::ShowerShape::sigmaIphiIphi
float sigmaIphiIphi
Definition: GsfElectron.h:369
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
EEDetId
Definition: EEDetId.h:14
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:800
GsfElectronAlgo::beginEvent
EventData beginEvent(edm::Event const &event, CaloGeometry const &caloGeometry, EcalSeverityLevelAlgo const &ecalSeveretyLevelAlgo)
Definition: GsfElectronAlgo.cc:419
GsfElectronAlgo::Tokens::endcapRecHitCollection
edm::EDGetTokenT< EcalRecHitCollection > endcapRecHitCollection
Definition: GsfElectronAlgo.h:66
egamma::classBasedElectronEnergy
float classBasedElectronEnergy(reco::GsfElectron const &, reco::BeamSpot const &, EcalClusterFunctionBaseClass const &crackCorrectionFunction)
Definition: ElectronEnergyCorrector.cc:295
EcalEndcap
Definition: EcalSubdetector.h:10
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
EgammaLocalCovParamDefaults::kRelEnCut
static constexpr float kRelEnCut
Definition: EgammaLocalCovParamDefaults.h:5
reco::GsfElectron::TrackClusterMatching::eSeedClusterOverPout
float eSeedClusterOverPout
Definition: GsfElectron.h:206
IOMC_cff.ecalRecHit
ecalRecHit
Definition: IOMC_cff.py:103
JetMETHLTOfflineSource_cfi.feta
feta
Definition: JetMETHLTOfflineSource_cfi.py:30
reco::GsfElectron::TrackClusterMatching
Definition: GsfElectron.h:202
reco::GsfElectron::TrackClusterMatching::eSuperClusterOverP
float eSuperClusterOverP
Definition: GsfElectron.h:204
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
EgammaHcalIsolation::InclusionRule::isBehindClusterSeed
reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:233
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:258
GsfElectronAlgo::tkIsol04CalcCfg_
const EleTkIsolFromCands::Configuration tkIsol04CalcCfg_
Definition: GsfElectronAlgo.h:250
GsfElectronAlgo::checkSetup
void checkSetup(edm::EventSetup const &eventSetup)
Definition: GsfElectronAlgo.cc:410
EEDetId::isNextToRingBoundary
static bool isNextToRingBoundary(EEDetId id)
Definition: EEDetId.cc:284
reco::GsfElectron::IsolationVariables::hcalRecHitSumEt
std::array< float, 7 > hcalRecHitSumEt
Definition: GsfElectron.h:548
cosmicPhotonAnalyzer_cfi.eMax
eMax
Definition: cosmicPhotonAnalyzer_cfi.py:10
GsfElectronAlgo::Tokens::conversions
edm::EDGetTokenT< reco::ConversionCollection > conversions
Definition: GsfElectronAlgo.h:71
reco::GsfElectron::TrackExtrapolations::momentumAtVtxWithConstraint
math::XYZVectorF momentumAtVtxWithConstraint
Definition: GsfElectron.h:270
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
ElectronHcalHelper::hcalSevLvlComputer
const auto hcalSevLvlComputer() const
Definition: ElectronHcalHelper.h:57
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
reco::GsfElectron::TrackExtrapolations
Definition: GsfElectron.h:260
GsfElectronAlgo::CutsConfiguration::multThresEE
double multThresEE
Definition: GsfElectronAlgo.h:151
edmPickEvents.event
event
Definition: edmPickEvents.py:273
egamma::correctElectronMomentum
ElectronMomentum correctElectronMomentum(reco::GsfElectron const &, TrajectoryStateOnSurface const &)
Definition: ElectronMomentumCorrector.cc:22
reco::GsfElectron::ShowerShape::e2x5Left
float e2x5Left
Definition: GsfElectron.h:393
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:88286
GsfElectronAlgo::Configuration::strategy
const StrategyConfiguration strategy
Definition: GsfElectronAlgo.h:204
reco::GsfElectron::TrackClusterMatching::deltaPhiEleClusterAtCalo
float deltaPhiEleClusterAtCalo
Definition: GsfElectron.h:211
ElectronHcalHelper::maxSeverityHE
int maxSeverityHE() const
Definition: ElectronHcalHelper.h:49
reco::GsfElectron::ShowerShape::e2x5Top
float e2x5Top
Definition: GsfElectron.h:392
GsfElectronAlgo::IsolationConfiguration::etMinEndcaps
double etMinEndcaps
Definition: GsfElectronAlgo.h:172
reco::GsfElectron::setPixelMatchDPhi1
void setPixelMatchDPhi1(float dPhi1)
Definition: GsfElectron.h:917
reco::LeafCandidate::charge
int charge() const final
electric charge
Definition: LeafCandidate.h:106
GsfElectronAlgo::CutsConfiguration::seedFromTEC
bool seedFromTEC
Definition: GsfElectronAlgo.h:147
reco::GsfElectron::isEBEtaGap
bool isEBEtaGap() const
Definition: GsfElectron.h:341
DetId::Detector
Detector
Definition: DetId.h:24
EleRelPointPair
Definition: ElectronUtilities.h:43
DetId::Ecal
Definition: DetId.h:27
reco::GsfElectron::TrackExtrapolations::momentumAtEleClus
math::XYZVectorF momentumAtEleClus
Definition: GsfElectron.h:269
reco::GsfElectron::SaturationInfo::isSeedSaturated
bool isSeedSaturated
Definition: GsfElectron.h:522
egamma::classifyElectron
reco::GsfElectron::Classification classifyElectron(reco::GsfElectron const &)
reco::CaloCluster::seed
DetId seed() const
return DetId of seed
Definition: CaloCluster.h:219
GsfElectronAlgo::StrategyConfiguration::fillConvVtxFitProb
bool fillConvVtxFitProb
Definition: GsfElectronAlgo.h:97
RegressionHelper::checkSetup
void checkSetup(const edm::EventSetup &)
Definition: RegressionHelper.cc:43
reco::GsfElectron::TrackClusterMatching::deltaPhiSeedClusterAtCalo
float deltaPhiSeedClusterAtCalo
Definition: GsfElectron.h:213
EcalClusterToolsT
Definition: EcalClusterTools.h:76
reco::CaloCluster::position
const math::XYZPoint & position() const
cluster centroid position
Definition: CaloCluster.h:154
edm::Ptr< CaloCluster >
looper.cfg
cfg
Definition: looper.py:296
MultiTrajectoryStateTransform
Definition: MultiTrajectoryStateTransform.h:18
ElectronHcalHelper::maxSeverityHB
int maxSeverityHB() const
Definition: ElectronHcalHelper.h:48
reco::GsfElectron::sigmaIetaIeta
float sigmaIetaIeta() const
Definition: GsfElectron.h:427
EBDetId::isNextToPhiBoundary
static bool isNextToPhiBoundary(EBDetId id)
Definition: EBDetId.cc:113
ElectronHcalHelper::hcalChannelQuality
const auto hcalChannelQuality() const
Definition: ElectronHcalHelper.h:56
SiStripSubdetector::UNKNOWN
Definition: SiStripEnums.h:5
reco::GsfElectron::ConversionRejection::partner
TrackBaseRef partner
Definition: GsfElectron.h:637
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:258
reco::GsfElectron::ShowerShape::eRight
float eRight
Definition: GsfElectron.h:390
reco::GsfElectron::ShowerShape::e2nd
float e2nd
Definition: GsfElectron.h:387
eostools.move
def move(src, dest)
Definition: eostools.py:511
GsfElectronAlgo::Configuration::tokens
const Tokens tokens
Definition: GsfElectronAlgo.h:203
reco::GsfElectron::ShowerShape::invalidHcal
bool invalidHcal
Definition: GsfElectron.h:383
GsfElectronAlgo::cfg_
const Configuration cfg_
Definition: GsfElectronAlgo.h:247
reco::GsfElectron::ShowerShape::e1x5
float e1x5
Definition: GsfElectron.h:370
GsfElectronAlgo::StrategyConfiguration::PreSelectMVA
float PreSelectMVA
Definition: GsfElectronAlgo.h:89
reco::GsfElectron::setPassCutBasedPreselection
void setPassCutBasedPreselection(bool flag)
Definition: GsfElectron.h:757
pwdgSkimBPark_cfi.electrons
electrons
Definition: pwdgSkimBPark_cfi.py:6
reco::GsfElectron::ConversionRejection::dist
float dist
Definition: GsfElectron.h:638
reco::GsfElectron::TrackClusterMatching::deltaEtaSuperClusterAtVtx
float deltaEtaSuperClusterAtVtx
Definition: GsfElectron.h:208
reco::GsfElectron::isEBEEGap
bool isEBEEGap() const
Definition: GsfElectron.h:339
packedPFCandidateRefMixer_cfi.pf
pf
Definition: packedPFCandidateRefMixer_cfi.py:4
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
GsfElectronAlgo::IsolationConfiguration::jurassicWidth
double jurassicWidth
Definition: GsfElectronAlgo.h:169
EEDetId::isNextToDBoundary
static bool isNextToDBoundary(EEDetId id)
Definition: EEDetId.cc:279
GsfElectronAlgo::IsolationConfiguration::etMinBarrel
double etMinBarrel
Definition: GsfElectronAlgo.h:170
GsfElectronAlgo::IsolationConfiguration::intRadiusEcalEndcaps
double intRadiusEcalEndcaps
Definition: GsfElectronAlgo.h:168
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:262
reco::GsfElectron::eSuperClusterOverP
float eSuperClusterOverP() const
Definition: GsfElectron.h:229
GsfElectronAlgo::Tokens::vtxCollectionTag
edm::EDGetTokenT< reco::VertexCollection > vtxCollectionTag
Definition: GsfElectronAlgo.h:70
reco::GsfElectron::ConversionRejection::radius
float radius
Definition: GsfElectron.h:640
reco::GsfElectron::ConversionRejection::flags
int flags
Definition: GsfElectron.h:636
GsfElectronAlgo::StrategyConfiguration::useDefaultEnergyCorrection
bool useDefaultEnergyCorrection
Definition: GsfElectronAlgo.h:91
edm::RefToBase< TrajectorySeed >
reco::GsfElectron::isEBPhiGap
bool isEBPhiGap() const
Definition: GsfElectron.h:342
reco::GsfElectron::ShowerShape::eLeft
float eLeft
Definition: GsfElectron.h:389
reco::GsfElectron::superCluster
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:163
egamma::classBasedElectronEnergyUncertainty
double classBasedElectronEnergyUncertainty(reco::GsfElectron const &)
Definition: ElectronEnergyCorrector.cc:270
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
GsfElectronAlgo::Tokens::ctfTracks
edm::EDGetTokenT< reco::TrackCollection > ctfTracks
Definition: GsfElectronAlgo.h:68
GsfElectronAlgo::Tokens::hbheRecHitsTag
edm::EDGetTokenT< HBHERecHitCollection > hbheRecHitsTag
Definition: GsfElectronAlgo.h:62
GsfElectronAlgo::StrategyConfiguration::useEcalRegression
bool useEcalRegression
Definition: GsfElectronAlgo.h:93
reco::GsfElectron::IsolationVariables::ecalRecHitSumEt
float ecalRecHitSumEt
Definition: GsfElectron.h:543
GsfElectronAlgo::IsolationConfiguration::intRadiusHcal
double intRadiusHcal
Definition: GsfElectronAlgo.h:165
GsfElectronAlgo::StrategyConfiguration::ecalDrivenEcalEnergyFromClassBasedParameterization
bool ecalDrivenEcalEnergyFromClassBasedParameterization
Definition: GsfElectronAlgo.h:79
reco::GsfElectron::FiducialFlags::isEBEtaGap
bool isEBEtaGap
Definition: GsfElectron.h:321
cms::Exception
Definition: Exception.h:70
reco::GsfElectron::FiducialFlags::isEB
bool isEB
Definition: GsfElectron.h:318
reco::GsfElectron::hcalOverEcal
float hcalOverEcal(const ShowerShape &ss, int depth) const
Definition: GsfElectron.h:433
ElectronHcalHelper::towerMap
const auto towerMap() const
Definition: ElectronHcalHelper.h:58
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:263
reco::GsfElectron::ShowerShape::hcalOverEcalBc
std::array< float, 7 > hcalOverEcalBc
Definition: GsfElectron.h:381
RegressionHelper::applyEcalRegression
void applyEcalRegression(reco::GsfElectron &electron, const reco::VertexCollection &vertices, const EcalRecHitCollection &rechitsEB, const EcalRecHitCollection &rechitsEE) const
Definition: RegressionHelper.cc:33
reco::Candidate::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
event
Definition: event.py:1
reco::GsfElectron::SaturationInfo
Definition: GsfElectron.h:520
GsfElectronAlgo::crackCorrectionFunction_
std::unique_ptr< EcalClusterFunctionBaseClass > crackCorrectionFunction_
Definition: GsfElectronAlgo.h:264
GsfElectronAlgo::Configuration::cuts
const CutsConfiguration cuts
Definition: GsfElectronAlgo.h:205
egamma::simpleElectronEnergyUncertainty
double simpleElectronEnergyUncertainty(reco::GsfElectron const &)
Definition: ElectronEnergyCorrector.cc:277
reco::CaloCluster::energy
double energy() const
cluster energy
Definition: CaloCluster.h:149
reco::GsfElectron::ShowerShape::e5x5
float e5x5
Definition: GsfElectron.h:372
GsfElectronAlgo::Configuration::recHits
const EcalRecHitsConfiguration recHits
Definition: GsfElectronAlgo.h:207
GsfElectronAlgo::ecalPFRechitThresholdsToken_
const edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd > ecalPFRechitThresholdsToken_
Definition: GsfElectronAlgo.h:259
GsfElectronAlgo::tkIsolHEEP04CalcCfg_
const EleTkIsolFromCands::Configuration tkIsolHEEP04CalcCfg_
Definition: GsfElectronAlgo.h:252
reco::GsfElectron::ShowerShape::e2x5Bottom
float e2x5Bottom
Definition: GsfElectron.h:395
EgammaHcalIsolation::arrayHE
std::array< double, 7 > arrayHE
Definition: EgammaHcalIsolation.h:42
GsfElectronAlgo::caloGeometryToken_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
Definition: GsfElectronAlgo.h:255
reco::GsfElectron::ConversionRejection::vtxFitProb
float vtxFitProb
Definition: GsfElectron.h:641
reco::GsfElectron::TrackClusterMatching::deltaEtaSeedClusterAtCalo
float deltaEtaSeedClusterAtCalo
Definition: GsfElectron.h:209
ecalDrivenElectronSeeds_cfi.hbheRecHits
hbheRecHits
Definition: ecalDrivenElectronSeeds_cfi.py:7
reco::GsfElectron::TrackExtrapolations::positionAtVtx
math::XYZPointF positionAtVtx
Definition: GsfElectron.h:261
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
edm::ProductID::id
ProductIndex id() const
Definition: ProductID.h:35
ElectronHcalHelper::hcalTopology
const auto hcalTopology() const
Definition: ElectronHcalHelper.h:55
GsfElectronAlgo::EcalRecHitsConfiguration::recHitSeverityToBeExcludedEndcaps
std::vector< int > recHitSeverityToBeExcludedEndcaps
Definition: GsfElectronAlgo.h:159