CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
LowPtGsfElectronSeedProducer Class Referencefinal

#include <RecoEgamma/EgammaElectronProducers/plugins/LowPtGsfElectronSeedProducer.cc>

Inheritance diagram for LowPtGsfElectronSeedProducer:
edm::stream::EDProducer< edm::GlobalCache< lowptgsfeleseed::HeavyObjectCache > >

Public Types

using TrackIndxMap = std::unordered_map< reco::TrackRef::key_type, size_t >
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< lowptgsfeleseed::HeavyObjectCache > >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Public Member Functions

void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
 LowPtGsfElectronSeedProducer (const edm::ParameterSet &, const lowptgsfeleseed::HeavyObjectCache *)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< lowptgsfeleseed::HeavyObjectCache > >
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &)
 
static void globalEndJob (lowptgsfeleseed::HeavyObjectCache const *)
 
static std::unique_ptr< lowptgsfeleseed::HeavyObjectCacheinitializeGlobalCache (const edm::ParameterSet &conf)
 

Private Member Functions

bool decision (const reco::PFRecTrackRef &pfTrackRef, reco::PreId &ecal, reco::PreId &hcal, double rho, const reco::BeamSpot &spot, noZS::EcalClusterLazyTools &ecalTools)
 
bool decision (const reco::TrackRef &kfTrackRef, reco::PreId &ecal, reco::PreId &hcal, double rho, const reco::BeamSpot &spot, noZS::EcalClusterLazyTools &ecalTools)
 
template<typename CollType >
void fillPreIdRefValueMap (edm::Handle< CollType > tracksHandle, const TrackIndxMap &trksToPreIdIndx, const edm::OrphanHandle< reco::PreIdCollection > &preIdHandle, edm::ValueMap< reco::PreIdRef >::Filler &filler)
 
reco::TrackRef getBaseRef (edm::Handle< std::vector< reco::PFRecTrack > > handle, int idx) const
 
reco::TrackRef getBaseRef (edm::Handle< std::vector< reco::Track > > handle, int idx) const
 
bool lightGsfTracking (reco::PreId &, const reco::TrackRef &, const reco::ElectronSeed &)
 
template<typename T >
void loop (const edm::Handle< std::vector< T > > &handle, edm::Handle< reco::PFClusterCollection > &hcalClusters, reco::ElectronSeedCollection &seeds, reco::PreIdCollection &ecalPreIds, reco::PreIdCollection &hcalPreIds, TrackIndxMap &trksToPreIdIndx, edm::Event &, const edm::EventSetup &)
 
void propagateTrackToCalo (const reco::PFRecTrackRef &pfTrackRef, const edm::Handle< reco::PFClusterCollection > &clusters, std::vector< int > &matchedClusters, reco::PreId &preId, bool ecal)
 
void propagateTrackToCalo (const reco::PFRecTrackRef &pfTrackRef, const edm::Handle< reco::PFClusterCollection > &ecalClusters, const edm::Handle< reco::PFClusterCollection > &hcalClusters, std::vector< int > &matchedEcalClusters, std::vector< int > &matchedHcalClusters, reco::PreId &ecalPreId, reco::PreId &hcalPreId)
 
void propagateTrackToCalo (const reco::TrackRef &pfTrack, const edm::Handle< reco::PFClusterCollection > &ecalClusters, const edm::Handle< reco::PFClusterCollection > &hcalClusters, std::vector< int > &matchedEcalClusters, std::vector< int > &matchedHcalClusters, reco::PreId &ecalPreId, reco::PreId &hcalPreId)
 

Private Attributes

const edm::EDGetTokenT< reco::BeamSpotbeamSpot_
 
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecordbuilderToken_
 
const edm::EDGetTokenT< EcalRecHitCollectionebRecHits_
 
const edm::EDGetTokenT< reco::PFClusterCollectionecalClusters_
 
const noZS::EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
 
const edm::EDGetTokenT< EcalRecHitCollectioneeRecHits_
 
edm::ESHandle< MagneticFieldfield_
 
std::unique_ptr< TrajectoryFitterfitterPtr_
 
edm::EDGetTokenT< reco::PFClusterCollectionhcalClusters_
 
edm::EDGetTokenT< reco::TrackCollectionkfTracks_
 
const double maxPtThreshold_
 
const double minPtThreshold_
 
const bool passThrough_
 
edm::EDGetTokenT< reco::PFRecTrackCollectionpfTracks_
 
const edm::EDGetTokenT< double > rho_
 
std::unique_ptr< TrajectorySmoothersmootherPtr_
 
const edm::ESGetToken< TrajectoryFitter, TrajectoryFitter::RecordtrajectoryFitterToken_
 
const edm::ESGetToken< TrajectorySmoother, TrajectoryFitter::RecordtrajectorySmootherToken_
 
const bool usePfTracks_
 

Static Private Attributes

static constexpr double boundary_ = 2.50746495928 * 2.50746495928
 
static constexpr double mass_ = 0.000511 * 0.000511
 

Detailed Description

Description: EDProducer of ElectronSeed objects Implementation: <Notes on="" implementation>="">

Definition at line 57 of file LowPtGsfElectronSeedProducer.cc.

Member Typedef Documentation

◆ TrackIndxMap

Definition at line 60 of file LowPtGsfElectronSeedProducer.cc.

Constructor & Destructor Documentation

◆ LowPtGsfElectronSeedProducer()

LowPtGsfElectronSeedProducer::LowPtGsfElectronSeedProducer ( const edm::ParameterSet conf,
const lowptgsfeleseed::HeavyObjectCache  
)
explicit

Definition at line 170 of file LowPtGsfElectronSeedProducer.cc.

172  : field_(),
173  fitterPtr_(),
174  smootherPtr_(),
175  kfTracks_(),
176  pfTracks_(),
177  ecalClusters_{consumes(conf.getParameter<edm::InputTag>("ecalClusters"))},
178  hcalClusters_(),
179  ebRecHits_{consumes(conf.getParameter<edm::InputTag>("EBRecHits"))},
180  eeRecHits_{consumes(conf.getParameter<edm::InputTag>("EERecHits"))},
181  rho_(consumes(conf.getParameter<edm::InputTag>("rho"))),
182  beamSpot_(consumes(conf.getParameter<edm::InputTag>("BeamSpot"))),
185  builderToken_{esConsumes(conf.getParameter<edm::ESInputTag>("TTRHBuilder"))},
186  ecalClusterToolsESGetTokens_{consumesCollector()},
187  passThrough_(conf.getParameter<bool>("PassThrough")),
188  usePfTracks_(conf.getParameter<bool>("UsePfTracks")),
189  minPtThreshold_(conf.getParameter<double>("MinPtThreshold")),
190  maxPtThreshold_(conf.getParameter<double>("MaxPtThreshold")) {
191  if (usePfTracks_) {
192  pfTracks_ = consumes(conf.getParameter<edm::InputTag>("pfTracks"));
193  hcalClusters_ = consumes(conf.getParameter<edm::InputTag>("hcalClusters"));
194  }
195  kfTracks_ = consumes(conf.getParameter<edm::InputTag>("tracks"));
196 
197  produces<reco::ElectronSeedCollection>();
198  produces<reco::PreIdCollection>();
199  produces<reco::PreIdCollection>("HCAL");
200  produces<edm::ValueMap<reco::PreIdRef> >(); // indexed by edm::Ref<ElectronSeed>.index()
201 }

References edm::ParameterSet::getParameter().

Member Function Documentation

◆ beginLuminosityBlock()

void LowPtGsfElectronSeedProducer::beginLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &  setup 
)
override

Definition at line 205 of file LowPtGsfElectronSeedProducer.cc.

205  {
207 }

References field_, get, and singleTopDQM_cfi::setup.

◆ decision() [1/2]

bool LowPtGsfElectronSeedProducer::decision ( const reco::PFRecTrackRef pfTrackRef,
reco::PreId ecal,
reco::PreId hcal,
double  rho,
const reco::BeamSpot spot,
noZS::EcalClusterLazyTools ecalTools 
)
private

Definition at line 598 of file LowPtGsfElectronSeedProducer.cc.

603  {
604  bool result = false;
605  for (auto& name : globalCache()->modelNames()) {
606  result |= globalCache()->eval(name, ecalPreId, hcalPreId, rho, spot, ecalTools);
607  }
608  return passThrough_ || (pfTrackRef->trackRef()->pt() > maxPtThreshold_) || result;
609 }

References maxPtThreshold_, Skims_PA_cff::name, passThrough_, mps_fire::result, and rho.

Referenced by loop().

◆ decision() [2/2]

bool LowPtGsfElectronSeedProducer::decision ( const reco::TrackRef kfTrackRef,
reco::PreId ecal,
reco::PreId hcal,
double  rho,
const reco::BeamSpot spot,
noZS::EcalClusterLazyTools ecalTools 
)
private

Definition at line 613 of file LowPtGsfElectronSeedProducer.cc.

618  {
619  // No implementation currently
620  return passThrough_;
621 }

References passThrough_.

◆ fillDescriptions()

void LowPtGsfElectronSeedProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 646 of file LowPtGsfElectronSeedProducer.cc.

646  {
648  desc.add<edm::InputTag>("tracks", edm::InputTag("generalTracks"));
649  desc.add<edm::InputTag>("pfTracks", edm::InputTag("lowPtGsfElePfTracks"));
650  desc.add<edm::InputTag>("ecalClusters", edm::InputTag("particleFlowClusterECAL"));
651  desc.add<edm::InputTag>("hcalClusters", edm::InputTag("particleFlowClusterHCAL"));
652  desc.add<edm::InputTag>("EBRecHits", edm::InputTag("ecalRecHit", "EcalRecHitsEB"));
653  desc.add<edm::InputTag>("EERecHits", edm::InputTag("ecalRecHit", "EcalRecHitsEE"));
654  desc.add<edm::InputTag>("rho", edm::InputTag("fixedGridRhoFastjetAllTmp"));
655  desc.add<edm::InputTag>("BeamSpot", edm::InputTag("offlineBeamSpot"));
656  desc.add<edm::ESInputTag>("Fitter", edm::ESInputTag{"", "GsfTrajectoryFitter_forPreId"});
657  desc.add<edm::ESInputTag>("Smoother", edm::ESInputTag{"", "GsfTrajectorySmoother_forPreId"});
658  desc.add<edm::ESInputTag>("TTRHBuilder", edm::ESInputTag{"", "WithAngleAndTemplate"});
659  desc.add<std::vector<std::string> >("ModelNames", {});
660  desc.add<std::vector<std::string> >("ModelWeights", {});
661  desc.add<std::vector<double> >("ModelThresholds", {});
662  desc.add<bool>("PassThrough", false);
663  desc.add<bool>("UsePfTracks", true);
664  desc.add<double>("MinPtThreshold", 1.0);
665  desc.add<double>("MaxPtThreshold", 15.);
666  descriptions.add("lowPtGsfElectronSeeds", desc);
667 }

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and HLT_FULL_cff::InputTag.

◆ fillPreIdRefValueMap()

template<typename CollType >
void LowPtGsfElectronSeedProducer::fillPreIdRefValueMap ( edm::Handle< CollType >  tracksHandle,
const TrackIndxMap trksToPreIdIndx,
const edm::OrphanHandle< reco::PreIdCollection > &  preIdHandle,
edm::ValueMap< reco::PreIdRef >::Filler &  filler 
)
private

Definition at line 624 of file LowPtGsfElectronSeedProducer.cc.

627  {
628  std::vector<reco::PreIdRef> values;
629 
630  unsigned ntracks = tracksHandle->size();
631  for (unsigned itrack = 0; itrack < ntracks; ++itrack) {
632  edm::Ref<CollType> trackRef(tracksHandle, itrack);
633  auto preIdRefIt = trksToPreIdIndx.find(trackRef.index());
634  if (preIdRefIt == trksToPreIdIndx.end()) {
635  values.push_back(reco::PreIdRef());
636  } else {
637  edm::Ref<reco::PreIdCollection> preIdRef(preIdHandle, preIdRefIt->second);
638  values.push_back(preIdRef);
639  }
640  }
641  filler.insert(tracksHandle, values.begin(), values.end());
642 }

References trigObjTnPSource_cfi::filler, edm::Ref< C, T, F >::index(), vertices_cff::ntracks, and contentValuesCheck::values.

Referenced by produce().

◆ getBaseRef() [1/2]

reco::TrackRef LowPtGsfElectronSeedProducer::getBaseRef ( edm::Handle< std::vector< reco::PFRecTrack > >  handle,
int  idx 
) const
private

Definition at line 281 of file LowPtGsfElectronSeedProducer.cc.

282  {
283  return reco::PFRecTrackRef(handle, idx)->trackRef();
284 }

References patZpeak::handle, and heavyIonCSV_trainingSettings::idx.

◆ getBaseRef() [2/2]

reco::TrackRef LowPtGsfElectronSeedProducer::getBaseRef ( edm::Handle< std::vector< reco::Track > >  handle,
int  idx 
) const
private

Definition at line 277 of file LowPtGsfElectronSeedProducer.cc.

277  {
278  return reco::TrackRef(handle, idx);
279 }

References patZpeak::handle, and heavyIonCSV_trainingSettings::idx.

Referenced by loop().

◆ globalEndJob()

static void LowPtGsfElectronSeedProducer::globalEndJob ( lowptgsfeleseed::HeavyObjectCache const *  )
inlinestatic

Definition at line 67 of file LowPtGsfElectronSeedProducer.cc.

67 {}

◆ initializeGlobalCache()

static std::unique_ptr<lowptgsfeleseed::HeavyObjectCache> LowPtGsfElectronSeedProducer::initializeGlobalCache ( const edm::ParameterSet conf)
inlinestatic

Definition at line 63 of file LowPtGsfElectronSeedProducer.cc.

63  {
64  return std::make_unique<lowptgsfeleseed::HeavyObjectCache>(lowptgsfeleseed::HeavyObjectCache(conf));
65  }

◆ lightGsfTracking()

bool LowPtGsfElectronSeedProducer::lightGsfTracking ( reco::PreId preId,
const reco::TrackRef trackRef,
const reco::ElectronSeed seed 
)
private

Definition at line 560 of file LowPtGsfElectronSeedProducer.cc.

562  {
564  for (unsigned int ihit = 0; ihit < trackRef->recHitsSize(); ++ihit) {
565  hits.push_back(trackRef->recHit(ihit)->cloneSH());
566  }
567 
568  GlobalVector gv(trackRef->innerMomentum().x(), trackRef->innerMomentum().y(), trackRef->innerMomentum().z());
569  GlobalPoint gp(trackRef->innerPosition().x(), trackRef->innerPosition().y(), trackRef->innerPosition().z());
570 
571  GlobalTrajectoryParameters gtps(gp, gv, trackRef->charge(), &*field_);
572 
573  TrajectoryStateOnSurface tsos(gtps, trackRef->innerStateCovariance(), *hits[0]->surface());
574 
575  // Track fitted and smoothed under electron hypothesis
576  Trajectory traj1 = fitterPtr_->fitOne(seed, hits, tsos);
577  if (!traj1.isValid()) {
578  return false;
579  }
580  Trajectory traj2 = smootherPtr_->trajectory(traj1);
581  if (!traj2.isValid()) {
582  return false;
583  }
584 
585  // Set PreId content
586  float chi2Ratio = trackRef->chi2() > 0. ? traj2.chiSquared() / trackRef->chi2() : -1.;
587  float gsfReducedChi2 = chi2Ratio > -1. ? chi2Ratio * trackRef->normalizedChi2() : -1.;
588  float ptOut = traj2.firstMeasurement().updatedState().globalMomentum().perp();
589  float ptIn = traj2.lastMeasurement().updatedState().globalMomentum().perp();
590  float gsfDpt = (ptIn > 0) ? fabs(ptOut - ptIn) / ptIn : 0.;
591  preId.setTrackProperties(gsfReducedChi2, chi2Ratio, gsfDpt);
592 
593  return true;
594 }

References Trajectory::chiSquared(), field_, Trajectory::firstMeasurement(), fitterPtr_, TrajectoryStateOnSurface::globalMomentum(), runTauDisplay::gp, hfClusterShapes_cfi::hits, Trajectory::isValid(), Trajectory::lastMeasurement(), PV3DBase< T, PVType, FrameType >::perp(), fileCollector::seed, reco::PreId::setTrackProperties(), smootherPtr_, and TrajectoryMeasurement::updatedState().

Referenced by loop().

◆ loop()

template<typename T >
void LowPtGsfElectronSeedProducer::loop ( const edm::Handle< std::vector< T > > &  handle,
edm::Handle< reco::PFClusterCollection > &  hcalClusters,
reco::ElectronSeedCollection seeds,
reco::PreIdCollection ecalPreIds,
reco::PreIdCollection hcalPreIds,
TrackIndxMap trksToPreIdIndx,
edm::Event event,
const edm::EventSetup setup 
)
private

Definition at line 289 of file LowPtGsfElectronSeedProducer.cc.

296  {
297  // Pileup
298  auto const& rho = event.get(rho_);
299 
300  // Beam spot
301  auto const& spot = event.get(beamSpot_);
302 
303  // Track fitter
304  fitterPtr_ = setup.getData(trajectoryFitterToken_).clone();
305 
306  // Track smoother
307  smootherPtr_.reset(setup.getData(trajectorySmootherToken_).clone());
308 
309  // RecHit cloner
310  TkClonerImpl hitCloner = static_cast<TkTransientTrackingRecHitBuilder const&>(setup.getData(builderToken_)).cloner();
311  fitterPtr_->setHitCloner(&hitCloner);
312  smootherPtr_->setHitCloner(&hitCloner);
313 
314  // ECAL clusters
315  auto ecalClusters = event.getHandle(ecalClusters_);
316 
317  // Utility to access to shower shape vars
319 
320  // Ensure each cluster is only matched once to a track
321  std::vector<int> matchedEcalClusters;
322  std::vector<int> matchedHcalClusters;
323 
324  // Reserve
325  seeds.reserve(handle->size());
326  ecalPreIds.reserve(handle->size());
327  hcalPreIds.reserve(handle->size());
328 
329  // Iterate through (PF or KF) tracks
330  for (unsigned int itrk = 0; itrk < handle.product()->size(); itrk++) {
331  edm::Ref<std::vector<T> > templatedRef(handle, itrk); // TrackRef or PFRecTrackRef
332  reco::TrackRef trackRef = getBaseRef(handle, itrk);
333 
334  if (!(trackRef->quality(reco::TrackBase::qualityByName("highPurity")))) {
335  continue;
336  }
337  if (!passThrough_ && (trackRef->pt() < minPtThreshold_)) {
338  continue;
339  }
340 
341  // Create ElectronSeed
342  reco::ElectronSeed seed(*(trackRef->seedRef()));
343  if (seed.nHits() == 0) { //if DeepCore is used in jetCore iteration the seed are hitless, in case skip
344  continue;
345  }
346  seed.setCtfTrack(trackRef);
347 
348  // Create PreIds
349  unsigned int nModels = globalCache()->modelNames().size();
350  reco::PreId ecalPreId(nModels);
351  reco::PreId hcalPreId(nModels);
352 
353  // Add track ref to PreId
354  ecalPreId.setTrack(trackRef);
355  hcalPreId.setTrack(trackRef);
356 
357  // Add Track-Calo matching variables to PreIds
359  templatedRef, ecalClusters, hcalClusters, matchedEcalClusters, matchedHcalClusters, ecalPreId, hcalPreId);
360 
361  // Add variables related to GSF tracks to PreId
362  lightGsfTracking(ecalPreId, trackRef, seed);
363 
364  // Decision based on BDT
365  bool result = decision(templatedRef, ecalPreId, hcalPreId, rho, spot, ecalTools);
366 
367  // If fails BDT, do not store seed
368  if (!result) {
369  continue;
370  }
371 
372  // Store PreId
373  ecalPreIds.push_back(ecalPreId);
374  hcalPreIds.push_back(hcalPreId);
375  trksToPreIdIndx[trackRef.index()] = ecalPreIds.size() - 1;
376 
377  // Store ElectronSeed and corresponding edm::Ref<PreId>.index()
378  seeds.push_back(seed);
379  }
380 }

References beamSpot_, builderToken_, decision(), ebRecHits_, RecoEcal_cff::ecalClusters, ecalClusters_, ecalClusterToolsESGetTokens_, eeRecHits_, fitterPtr_, EcalClusterLazyToolsBase::ESGetTokens::get(), getBaseRef(), patZpeak::handle, lowPtGsfElectronSeeds_cfi::hcalClusters, edm::Ref< C, T, F >::index(), lightGsfTracking(), minPtThreshold_, passThrough_, propagateTrackToCalo(), reco::TrackBase::qualityByName(), mps_fire::result, rho, rho_, fileCollector::seed, InitialStep_cff::seeds, reco::PreId::setTrack(), singleTopDQM_cfi::setup, smootherPtr_, trajectoryFitterToken_, and trajectorySmootherToken_.

Referenced by produce().

◆ produce()

void LowPtGsfElectronSeedProducer::produce ( edm::Event event,
const edm::EventSetup setup 
)
override

Definition at line 211 of file LowPtGsfElectronSeedProducer.cc.

211  {
212  // Products
213  auto seeds = std::make_unique<reco::ElectronSeedCollection>();
214  auto ecalPreIds = std::make_unique<reco::PreIdCollection>();
215  auto hcalPreIds = std::make_unique<reco::PreIdCollection>();
216 
217  const edm::RefProd<reco::PreIdCollection> preIdsRefProd = event.getRefBeforePut<reco::PreIdCollection>();
218 
219  // HCAL clusters (only used with PF tracks)
221 
222  //we always need kftracks as we link the preids to them
224  event.getByToken(kfTracks_, kfTracks);
225 
226  TrackIndxMap trksToPreIdIndx;
227  if (usePfTracks_) {
229  event.getByToken(pfTracks_, pfTracks);
230  event.getByToken(hcalClusters_, hcalClusters);
231 
232  //check consistency between kfTracks and pfTracks collection
233  for (auto& trk : *pfTracks) {
234  if (trk.trackRef().isNonnull()) {
235  if (trk.trackRef().id() != kfTracks.id()) {
236  throw cms::Exception("ConfigError")
237  << "kfTracks is not the collection that pfTracks was built from, please fix this";
238  }
239  break; //we only need one valid track ref to check this so end the loop
240  }
241  }
242 
243  loop(pfTracks, // PF tracks
244  hcalClusters,
245  *seeds,
246  *ecalPreIds,
247  *hcalPreIds,
248  trksToPreIdIndx,
249  event,
250  setup);
251 
252  } else {
253  loop(kfTracks, // KF tracks
254  hcalClusters,
255  *seeds,
256  *ecalPreIds,
257  *hcalPreIds,
258  trksToPreIdIndx,
259  event,
260  setup);
261  }
262 
263  auto ecalPreIdsHandle = event.put(std::move(ecalPreIds));
264  event.put(std::move(hcalPreIds), "HCAL");
265  event.put(std::move(seeds));
266 
267  auto preIdVMOut = std::make_unique<edm::ValueMap<reco::PreIdRef> >();
268  edm::ValueMap<reco::PreIdRef>::Filler mapFiller(*preIdVMOut);
269  fillPreIdRefValueMap(kfTracks, trksToPreIdIndx, ecalPreIdsHandle, mapFiller);
270  mapFiller.fill();
271  event.put(std::move(preIdVMOut));
272 }

References Exception, fillPreIdRefValueMap(), lowPtGsfElectronSeeds_cfi::hcalClusters, hcalClusters_, edm::HandleBase::id(), kfTracks_, loop(), eostools::move(), lowPtGsfElectronSeeds_cfi::pfTracks, pfTracks_, InitialStep_cff::seeds, singleTopDQM_cfi::setup, and usePfTracks_.

◆ propagateTrackToCalo() [1/3]

void LowPtGsfElectronSeedProducer::propagateTrackToCalo ( const reco::PFRecTrackRef pfTrackRef,
const edm::Handle< reco::PFClusterCollection > &  clusters,
std::vector< int > &  matchedClusters,
reco::PreId preId,
bool  ecal 
)
private

Definition at line 419 of file LowPtGsfElectronSeedProducer.cc.

423  {
424  // Store info for PreId
425  struct Info {
427  float dr2min = 1.e6;
428  float deta = 1.e6;
429  float dphi = 1.e6;
430  math::XYZPoint showerPos = math::XYZPoint(0., 0., 0.);
431  } info;
432 
433  // Find closest "seed cluster" to KF track extrapolated to ECAL (or HCAL)
435  if (ecal) {
436  point = pfTrackRef->extrapolatedPoint(reco::PFTrajectoryPoint::LayerType::ECALShowerMax);
437  } else {
438  point = pfTrackRef->extrapolatedPoint(reco::PFTrajectoryPoint::LayerType::HCALEntrance);
439  }
440 
441  if (point.isValid()) {
442  Info info;
443  for (unsigned int iclu = 0; iclu < clusters.product()->size(); iclu++) {
444  if (std::find(matched.begin(), matched.end(), iclu) == matched.end()) {
445  reco::PFClusterRef cluRef(clusters, iclu);
446 
447  // Determine dR squared
448  float dr2 = reco::deltaR2(cluRef->positionREP(), point.positionREP());
449 
450  if (dr2 < info.dr2min) {
451  info.dr2min = dr2;
452  info.cluRef = cluRef;
453  info.deta = cluRef->positionREP().eta() - point.positionREP().eta();
454  info.dphi =
455  reco::deltaPhi(cluRef->positionREP().phi(), point.positionREP().phi()) * pfTrackRef->trackRef()->charge();
456  info.showerPos = point.position();
457  }
458  }
459  }
460 
461  // Set PreId content if match found
462  if (info.dr2min < 1.e5) {
463  float ep = info.cluRef->correctedEnergy() / std::sqrt(pfTrackRef->trackRef()->innerMomentum().mag2());
464  preId.setECALMatchingProperties(info.cluRef,
465  point.position(), // ECAL or HCAL surface
466  info.showerPos, //
467  info.deta,
468  info.dphi,
469  0.f, // chieta
470  0.f, // chiphi
471  pfTrackRef->trackRef()->normalizedChi2(), // chi2
472  ep);
473  }
474 
475  } // clusters
476 }

References bsc_activity_cfg::clusters, reco::deltaPhi(), reco::deltaR2(), SiStripBadComponentsDQMServiceTemplate_cfg::ep, spr::find(), info(), muonTagProbeFilters_cff::matched, point, reco::PreId::setECALMatchingProperties(), and mathSSE::sqrt().

◆ propagateTrackToCalo() [2/3]

void LowPtGsfElectronSeedProducer::propagateTrackToCalo ( const reco::PFRecTrackRef pfTrackRef,
const edm::Handle< reco::PFClusterCollection > &  ecalClusters,
const edm::Handle< reco::PFClusterCollection > &  hcalClusters,
std::vector< int > &  matchedEcalClusters,
std::vector< int > &  matchedHcalClusters,
reco::PreId ecalPreId,
reco::PreId hcalPreId 
)
private

Definition at line 406 of file LowPtGsfElectronSeedProducer.cc.

412  {
413  propagateTrackToCalo(pfTrackRef, ecalClusters, matchedEcalClusters, ecalPreId, true);
414  propagateTrackToCalo(pfTrackRef, hcalClusters, matchedHcalClusters, hcalPreId, false);
415 }

References RecoEcal_cff::ecalClusters, and lowPtGsfElectronSeeds_cfi::hcalClusters.

Referenced by loop().

◆ propagateTrackToCalo() [3/3]

void LowPtGsfElectronSeedProducer::propagateTrackToCalo ( const reco::TrackRef pfTrack,
const edm::Handle< reco::PFClusterCollection > &  ecalClusters,
const edm::Handle< reco::PFClusterCollection > &  hcalClusters,
std::vector< int > &  matchedEcalClusters,
std::vector< int > &  matchedHcalClusters,
reco::PreId ecalPreId,
reco::PreId hcalPreId 
)
private

Definition at line 480 of file LowPtGsfElectronSeedProducer.cc.

487  {
488  // Store info for PreId
489  struct Info {
491  float dr2min = 1.e6;
492  float deta = 1.e6;
493  float dphi = 1.e6;
494  math::XYZPoint showerPos = math::XYZPoint(0., 0., 0.);
495  } info;
496 
497  // Propagate 'electron' to ECAL surface
498  float energy = sqrt(mass_ + kfTrackRef->outerMomentum().Mag2());
500  kfTrackRef->outerMomentum().x(), kfTrackRef->outerMomentum().y(), kfTrackRef->outerMomentum().z(), energy);
502  kfTrackRef->outerPosition().x(), kfTrackRef->outerPosition().y(), kfTrackRef->outerPosition().z(), 0.);
503  math::XYZVector field(field_->inTesla(GlobalPoint(0, 0, 0)));
504  BaseParticlePropagator particle(RawParticle(mom, pos, kfTrackRef->charge()), 0, 0, field.z());
505  particle.propagateToEcalEntrance(false);
506  if (particle.getSuccess() == 0) {
507  return;
508  }
509 
510  // ECAL entry point for track
511  GlobalPoint ecal_pos(
512  particle.particle().vertex().x(), particle.particle().vertex().y(), particle.particle().vertex().z());
513 
514  // Preshower limit
515  bool below_ps = pow(ecal_pos.z(), 2.) > boundary_ * ecal_pos.perp2();
516 
517  // Iterate through ECAL clusters
518  for (unsigned int iclu = 0; iclu < ecalClusters.product()->size(); iclu++) {
519  reco::PFClusterRef cluRef(ecalClusters, iclu);
520 
521  // Correct ecal_pos for shower depth
522  double shower_depth = reco::PFCluster::getDepthCorrection(cluRef->correctedEnergy(), below_ps, false);
523  GlobalPoint showerPos = ecal_pos + GlobalVector(particle.particle().momentum().x(),
524  particle.particle().momentum().y(),
525  particle.particle().momentum().z())
526  .unit() *
527  shower_depth;
528 
529  // Determine dR squared
530  float dr2 = reco::deltaR2(cluRef->positionREP(), showerPos);
531 
532  // Find nearest ECAL cluster
533  if (dr2 < info.dr2min) {
534  info.dr2min = dr2;
535  info.cluRef = cluRef;
536  info.deta = std::abs(cluRef->positionREP().eta() - showerPos.eta());
537  info.dphi = std::abs(reco::deltaPhi(cluRef->positionREP().phi(), showerPos.phi())) * kfTrackRef->charge();
538  info.showerPos = showerPos;
539  }
540  }
541 
542  // Populate PreId object
543  math::XYZPoint point(ecal_pos.x(), ecal_pos.y(), ecal_pos.z());
544 
545  // Set PreId content
546  ecalPreId.setECALMatchingProperties(
547  info.cluRef,
548  point,
549  info.showerPos,
550  info.deta,
551  info.dphi,
552  0.f, // chieta
553  0.f, // chiphi
554  kfTrackRef->normalizedChi2(), // chi2
555  info.cluRef->correctedEnergy() / std::sqrt(kfTrackRef->innerMomentum().mag2())); // E/p
556 }

References funct::abs(), boundary_, reco::deltaPhi(), reco::deltaR2(), RecoEcal_cff::ecalClusters, HCALHighEnergyHPDFilter_cfi::energy, field_, reco::PFCluster::getDepthCorrection(), info(), MagneticField::inTesla(), mass_, point, funct::pow(), BaseParticlePropagator::propagateToEcalEntrance(), reco::PreId::setECALMatchingProperties(), mathSSE::sqrt(), unit(), and RawParticle::z().

Member Data Documentation

◆ beamSpot_

const edm::EDGetTokenT<reco::BeamSpot> LowPtGsfElectronSeedProducer::beamSpot_
private

Definition at line 150 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ boundary_

constexpr double LowPtGsfElectronSeedProducer::boundary_ = 2.50746495928 * 2.50746495928
staticconstexprprivate

Definition at line 163 of file LowPtGsfElectronSeedProducer.cc.

Referenced by propagateTrackToCalo().

◆ builderToken_

const edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> LowPtGsfElectronSeedProducer::builderToken_
private

Definition at line 154 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ ebRecHits_

const edm::EDGetTokenT<EcalRecHitCollection> LowPtGsfElectronSeedProducer::ebRecHits_
private

Definition at line 147 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ ecalClusters_

const edm::EDGetTokenT<reco::PFClusterCollection> LowPtGsfElectronSeedProducer::ecalClusters_
private

Definition at line 145 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ ecalClusterToolsESGetTokens_

const noZS::EcalClusterLazyTools::ESGetTokens LowPtGsfElectronSeedProducer::ecalClusterToolsESGetTokens_
private

Definition at line 155 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ eeRecHits_

const edm::EDGetTokenT<EcalRecHitCollection> LowPtGsfElectronSeedProducer::eeRecHits_
private

Definition at line 148 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ field_

edm::ESHandle<MagneticField> LowPtGsfElectronSeedProducer::field_
private

◆ fitterPtr_

std::unique_ptr<TrajectoryFitter> LowPtGsfElectronSeedProducer::fitterPtr_
private

Definition at line 141 of file LowPtGsfElectronSeedProducer.cc.

Referenced by lightGsfTracking(), and loop().

◆ hcalClusters_

edm::EDGetTokenT<reco::PFClusterCollection> LowPtGsfElectronSeedProducer::hcalClusters_
private

Definition at line 146 of file LowPtGsfElectronSeedProducer.cc.

Referenced by produce().

◆ kfTracks_

edm::EDGetTokenT<reco::TrackCollection> LowPtGsfElectronSeedProducer::kfTracks_
private

Definition at line 143 of file LowPtGsfElectronSeedProducer.cc.

Referenced by produce().

◆ mass_

constexpr double LowPtGsfElectronSeedProducer::mass_ = 0.000511 * 0.000511
staticconstexprprivate

Definition at line 165 of file LowPtGsfElectronSeedProducer.cc.

Referenced by propagateTrackToCalo().

◆ maxPtThreshold_

const double LowPtGsfElectronSeedProducer::maxPtThreshold_
private

Definition at line 160 of file LowPtGsfElectronSeedProducer.cc.

Referenced by decision().

◆ minPtThreshold_

const double LowPtGsfElectronSeedProducer::minPtThreshold_
private

Definition at line 159 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ passThrough_

const bool LowPtGsfElectronSeedProducer::passThrough_
private

Definition at line 157 of file LowPtGsfElectronSeedProducer.cc.

Referenced by decision(), and loop().

◆ pfTracks_

edm::EDGetTokenT<reco::PFRecTrackCollection> LowPtGsfElectronSeedProducer::pfTracks_
private

Definition at line 144 of file LowPtGsfElectronSeedProducer.cc.

Referenced by produce().

◆ rho_

const edm::EDGetTokenT<double> LowPtGsfElectronSeedProducer::rho_
private

Definition at line 149 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ smootherPtr_

std::unique_ptr<TrajectorySmoother> LowPtGsfElectronSeedProducer::smootherPtr_
private

Definition at line 142 of file LowPtGsfElectronSeedProducer.cc.

Referenced by lightGsfTracking(), and loop().

◆ trajectoryFitterToken_

const edm::ESGetToken<TrajectoryFitter, TrajectoryFitter::Record> LowPtGsfElectronSeedProducer::trajectoryFitterToken_
private

Definition at line 152 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ trajectorySmootherToken_

const edm::ESGetToken<TrajectorySmoother, TrajectoryFitter::Record> LowPtGsfElectronSeedProducer::trajectorySmootherToken_
private

Definition at line 153 of file LowPtGsfElectronSeedProducer.cc.

Referenced by loop().

◆ usePfTracks_

const bool LowPtGsfElectronSeedProducer::usePfTracks_
private

Definition at line 158 of file LowPtGsfElectronSeedProducer.cc.

Referenced by produce().

Vector3DBase
Definition: Vector3DBase.h:8
muonTagProbeFilters_cff.matched
matched
Definition: muonTagProbeFilters_cff.py:62
edm::RefProd
Definition: EDProductfwd.h:25
LowPtGsfElectronSeedProducer::pfTracks_
edm::EDGetTokenT< reco::PFRecTrackCollection > pfTracks_
Definition: LowPtGsfElectronSeedProducer.cc:144
lowPtGsfElectronSeeds_cfi.pfTracks
pfTracks
Definition: lowPtGsfElectronSeeds_cfi.py:10
LowPtGsfElectronSeedProducer::rho_
const edm::EDGetTokenT< double > rho_
Definition: LowPtGsfElectronSeedProducer.cc:149
LowPtGsfElectronSeedProducer::usePfTracks_
const bool usePfTracks_
Definition: LowPtGsfElectronSeedProducer.cc:158
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
RawParticle
Definition: RawParticle.h:37
edm::ESInputTag
Definition: ESInputTag.h:87
BaseParticlePropagator::propagateToEcalEntrance
bool propagateToEcalEntrance(bool first=true)
Definition: BaseParticlePropagator.cc:450
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
lowPtGsfElectronSeeds_cfi.hcalClusters
hcalClusters
Definition: lowPtGsfElectronSeeds_cfi.py:12
Trajectory::chiSquared
float chiSquared() const
Definition: Trajectory.h:241
patZpeak.handle
handle
Definition: patZpeak.py:23
LowPtGsfElectronSeedProducer::eeRecHits_
const edm::EDGetTokenT< EcalRecHitCollection > eeRecHits_
Definition: LowPtGsfElectronSeedProducer.cc:148
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
pos
Definition: PixelAliasList.h:18
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
TrajectoryMeasurement::updatedState
TrajectoryStateOnSurface const & updatedState() const
Definition: TrajectoryMeasurement.h:184
XYZTLorentzVector
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:25
LowPtGsfElectronSeedProducer::boundary_
static constexpr double boundary_
Definition: LowPtGsfElectronSeedProducer.cc:163
vertices_cff.ntracks
ntracks
Definition: vertices_cff.py:34
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
reco::PreId
Definition: PreId.h:13
ecal
Definition: ElectronicsMappingGPU.h:13
edm::Ref::index
key_type index() const
Definition: Ref.h:253
edm::Handle
Definition: AssociativeIterator.h:50
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
BaseParticlePropagator
Definition: BaseParticlePropagator.h:82
edm::Ref
Definition: AssociativeIterator.h:58
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
reco::PFClusterRef
edm::Ref< PFClusterCollection > PFClusterRef
persistent reference to PFCluster objects
Definition: PFClusterFwd.h:15
fileCollector.seed
seed
Definition: fileCollector.py:127
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
reco::ElectronSeed
Definition: ElectronSeed.h:51
LowPtGsfElectronSeedProducer::maxPtThreshold_
const double maxPtThreshold_
Definition: LowPtGsfElectronSeedProducer.cc:160
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
LowPtGsfElectronSeedProducer::builderToken_
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > builderToken_
Definition: LowPtGsfElectronSeedProducer.cc:154
contentValuesCheck.values
values
Definition: contentValuesCheck.py:38
LowPtGsfElectronSeedProducer::getBaseRef
reco::TrackRef getBaseRef(edm::Handle< std::vector< reco::Track > > handle, int idx) const
Definition: LowPtGsfElectronSeedProducer.cc:277
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::PFRecTrackRef
edm::Ref< PFRecTrackCollection > PFRecTrackRef
persistent reference to PFRecTrack objects
Definition: PFRecTrackFwd.h:15
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
Point3DBase< float, GlobalTag >
RawParticle::z
double z() const
z of vertex
Definition: RawParticle.h:284
LowPtGsfElectronSeedProducer::fitterPtr_
std::unique_ptr< TrajectoryFitter > fitterPtr_
Definition: LowPtGsfElectronSeedProducer.cc:141
reco::TrackRef
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
DDAxes::rho
Trajectory::ConstRecHitContainer
TrackingRecHit::ConstRecHitContainer ConstRecHitContainer
Definition: Trajectory.h:41
bsc_activity_cfg.clusters
clusters
Definition: bsc_activity_cfg.py:36
InitialStep_cff.seeds
seeds
Definition: InitialStep_cff.py:231
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
EcalClusterLazyToolsT
Definition: EcalClusterLazyTools.h:137
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
RecoEcal_cff.ecalClusters
ecalClusters
Definition: RecoEcal_cff.py:26
Trajectory::lastMeasurement
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:150
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
reco::deltaR2
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
LowPtGsfElectronSeedProducer::field_
edm::ESHandle< MagneticField > field_
Definition: LowPtGsfElectronSeedProducer.cc:140
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
reco::PFCluster::getDepthCorrection
static double getDepthCorrection(double energy, bool isBelowPS=false, bool isHadron=false)
Definition: PFCluster.cc:39
LowPtGsfElectronSeedProducer::ecalClusters_
const edm::EDGetTokenT< reco::PFClusterCollection > ecalClusters_
Definition: LowPtGsfElectronSeedProducer.cc:145
LowPtGsfElectronSeedProducer::smootherPtr_
std::unique_ptr< TrajectorySmoother > smootherPtr_
Definition: LowPtGsfElectronSeedProducer.cc:142
LowPtGsfElectronSeedProducer::hcalClusters_
edm::EDGetTokenT< reco::PFClusterCollection > hcalClusters_
Definition: LowPtGsfElectronSeedProducer.cc:146
LowPtGsfElectronSeedProducer::decision
bool decision(const reco::PFRecTrackRef &pfTrackRef, reco::PreId &ecal, reco::PreId &hcal, double rho, const reco::BeamSpot &spot, noZS::EcalClusterLazyTools &ecalTools)
Definition: LowPtGsfElectronSeedProducer.cc:598
LowPtGsfElectronSeedProducer::propagateTrackToCalo
void propagateTrackToCalo(const reco::PFRecTrackRef &pfTrackRef, const edm::Handle< reco::PFClusterCollection > &ecalClusters, const edm::Handle< reco::PFClusterCollection > &hcalClusters, std::vector< int > &matchedEcalClusters, std::vector< int > &matchedHcalClusters, reco::PreId &ecalPreId, reco::PreId &hcalPreId)
Definition: LowPtGsfElectronSeedProducer.cc:406
get
#define get
LowPtGsfElectronSeedProducer::trajectorySmootherToken_
const edm::ESGetToken< TrajectorySmoother, TrajectoryFitter::Record > trajectorySmootherToken_
Definition: LowPtGsfElectronSeedProducer.cc:153
EcalClusterLazyToolsBase::ESGetTokens::get
ESData get(edm::EventSetup const &eventSetup) const
Definition: EcalClusterLazyTools.h:64
unit
Basic3DVector unit() const
Definition: Basic3DVectorLD.h:162
LowPtGsfElectronSeedProducer::lightGsfTracking
bool lightGsfTracking(reco::PreId &, const reco::TrackRef &, const reco::ElectronSeed &)
Definition: LowPtGsfElectronSeedProducer.cc:560
reco::TrackBase::qualityByName
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:126
LowPtGsfElectronSeedProducer::beamSpot_
const edm::EDGetTokenT< reco::BeamSpot > beamSpot_
Definition: LowPtGsfElectronSeedProducer.cc:150
LowPtGsfElectronSeedProducer::passThrough_
const bool passThrough_
Definition: LowPtGsfElectronSeedProducer.cc:157
TrajectoryStateOnSurface::globalMomentum
GlobalVector globalMomentum() const
Definition: TrajectoryStateOnSurface.h:66
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
TkClonerImpl
Definition: TkClonerImpl.h:12
Trajectory::firstMeasurement
TrajectoryMeasurement const & firstMeasurement() const
Definition: Trajectory.h:166
LowPtGsfElectronSeedProducer::TrackIndxMap
std::unordered_map< reco::TrackRef::key_type, size_t > TrackIndxMap
Definition: LowPtGsfElectronSeedProducer.cc:60
Trajectory
Definition: Trajectory.h:38
LowPtGsfElectronSeedProducer::trajectoryFitterToken_
const edm::ESGetToken< TrajectoryFitter, TrajectoryFitter::Record > trajectoryFitterToken_
Definition: LowPtGsfElectronSeedProducer.cc:152
LowPtGsfElectronSeedProducer::ecalClusterToolsESGetTokens_
const noZS::EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
Definition: LowPtGsfElectronSeedProducer.cc:155
lowptgsfeleseed::HeavyObjectCache
Definition: LowPtGsfElectronSeedHeavyObjectCache.h:16
reco::PFTrajectoryPoint
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
Definition: PFTrajectoryPoint.h:26
Exception
Definition: hltDiff.cc:245
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
mps_fire.result
result
Definition: mps_fire.py:311
edm::helper::Filler
Definition: ValueMap.h:22
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LowPtGsfElectronSeedProducer::fillPreIdRefValueMap
void fillPreIdRefValueMap(edm::Handle< CollType > tracksHandle, const TrackIndxMap &trksToPreIdIndx, const edm::OrphanHandle< reco::PreIdCollection > &preIdHandle, edm::ValueMap< reco::PreIdRef >::Filler &filler)
Definition: LowPtGsfElectronSeedProducer.cc:624
reco::PreId::setTrackProperties
void setTrackProperties(float newchi2, float chi2ratio, float dpt)
Definition: PreId.h:53
point
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
LowPtGsfElectronSeedProducer::loop
void loop(const edm::Handle< std::vector< T > > &handle, edm::Handle< reco::PFClusterCollection > &hcalClusters, reco::ElectronSeedCollection &seeds, reco::PreIdCollection &ecalPreIds, reco::PreIdCollection &hcalPreIds, TrackIndxMap &trksToPreIdIndx, edm::Event &, const edm::EventSetup &)
Definition: LowPtGsfElectronSeedProducer.cc:289
event
Definition: event.py:1
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
LowPtGsfElectronSeedProducer::mass_
static constexpr double mass_
Definition: LowPtGsfElectronSeedProducer.cc:165
edm::HandleBase::id
ProductID id() const
Definition: HandleBase.cc:29
reco::PreId::setECALMatchingProperties
void setECALMatchingProperties(PFClusterRef clusterRef, const math::XYZPoint &ecalpos, const math::XYZPoint &meanShower, float deta, float dphi, float chieta, float chiphi, float chi2, float eop)
Definition: PreId.h:33
LowPtGsfElectronSeedProducer::kfTracks_
edm::EDGetTokenT< reco::TrackCollection > kfTracks_
Definition: LowPtGsfElectronSeedProducer.cc:143
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
LowPtGsfElectronSeedProducer::minPtThreshold_
const double minPtThreshold_
Definition: LowPtGsfElectronSeedProducer.cc:159
edm::InputTag
Definition: InputTag.h:15
reco::PreIdCollection
std::vector< reco::PreId > PreIdCollection
Definition: PreIdFwd.h:6
Trajectory::isValid
bool isValid() const
Definition: Trajectory.h:257
LowPtGsfElectronSeedProducer::ebRecHits_
const edm::EDGetTokenT< EcalRecHitCollection > ebRecHits_
Definition: LowPtGsfElectronSeedProducer.cc:147