CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes
GoodSeedProducer Class Referencefinal
Inheritance diagram for GoodSeedProducer:
edm::stream::EDProducer< edm::GlobalCache< goodseedhelpers::HeavyObjectCache > >

Public Member Functions

 GoodSeedProducer (const edm::ParameterSet &, const goodseedhelpers::HeavyObjectCache *)
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< goodseedhelpers::HeavyObjectCache > >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

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

Private Types

typedef TrajectoryStateOnSurface TSOS
 

Private Member Functions

void beginRun (const edm::Run &run, const edm::EventSetup &) override
 
void fillPreIdRefValueMap (edm::Handle< reco::TrackCollection > tkhandle, const edm::OrphanHandle< reco::PreIdCollection > &, edm::ValueMap< reco::PreIdRef >::Filler &filler)
 
int getBin (float, float)
 Find the bin in pt and eta. More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

math::XYZVector B_
 B field. More...
 
float chikfred
 
float chiRatio
 
float chired
 
double clusThreshold_
 Cut on the energy of the clusters. More...
 
edm::ParameterSet conf_
 
bool disablePreId_
 switch to disable the pre-id More...
 
float dpt
 
double EcalStripSumE_deltaEta_
 
double EcalStripSumE_deltaPhiOverQ_maxValue_
 
double EcalStripSumE_deltaPhiOverQ_minValue_
 
double EcalStripSumE_minClusEnergy_
 
std::string fitterName_
 
const edm::ESGetToken< TrajectoryFitter, TrajectoryFitter::RecordfitterToken_
 
double HcalIsolWindow_
 
TkClonerImpl hitCloner
 
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecordmagneticFieldToken_
 
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecordmagneticFieldTokenBeginRun_
 
double maxEp_
 
double maxEta_
 
double maxHoverP_
 
double maxPt_
 
double Min_dr_
 
double minEoverP_
 
double minEp_
 Min and MAx allowed values forEoverP. More...
 
double minPt_
 Minimum transverse momentum and maximum pseudorapidity. More...
 
float nhit
 VARIABLES NEEDED FOR TMVA. More...
 
int nHitsInSeed_
 Number of hits in the seed;. More...
 
edm::EDGetTokenT< reco::PFClusterCollectionpfCLusTagECLabel_
 
edm::EDGetTokenT< reco::PFClusterCollectionpfCLusTagHCLabel_
 
edm::EDGetTokenT< reco::PFClusterCollectionpfCLusTagPSLabel_
 
std::unique_ptr< PFTrackTransformerpfTransformer_
 PFTrackTransformer. More...
 
std::string preidckf_
 Name of the Seed(Ckf) Collection. More...
 
std::string preidgsf_
 Name of the Seed(Gsf) Collection. More...
 
std::string preidname_
 Name of the preid Collection (FB) More...
 
bool produceCkfseed_
 Produce the Seed for Ckf tracks? More...
 
bool producePreId_
 Produce the pre-id debugging collection. More...
 
std::string propagatorName_
 
double PtThresholdSavePredId_
 Threshold to save Pre Idinfo. More...
 
std::map< reco::TrackRef, unsigned > refMap_
 Map used to create the TrackRef, PreIdRef value map. More...
 
std::unique_ptr< PFResolutionMapresMapEtaECAL_
 
std::unique_ptr< PFResolutionMapresMapPhiECAL_
 
std::string smootherName_
 
const edm::ESGetToken< TrajectorySmoother, TrajectoryFitter::RecordsmootherToken_
 
float thr [150]
 vector of thresholds for different bins of eta and pt More...
 
std::string trackerRecHitBuilderName_
 
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecordtrackerRecHitBuilderToken_
 
reco::TrackBase::TrackQuality trackQuality_
 
std::vector< edm::EDGetTokenT< reco::TrackCollection > > tracksContainers_
 
std::vector< edm::EDGetTokenT< std::vector< Trajectory > > > trajContainers_
 
float trk_ecalDeta
 
float trk_ecalDphi
 
bool useQuality_
 TRACK QUALITY. More...
 
bool useTmva_
 USE OF TMVA. More...
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< goodseedhelpers::HeavyObjectCache > >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 68 of file GoodSeedProducer.cc.

Member Typedef Documentation

◆ TSOS

Definition at line 69 of file GoodSeedProducer.cc.

Constructor & Destructor Documentation

◆ GoodSeedProducer()

GoodSeedProducer::GoodSeedProducer ( const edm::ParameterSet iConfig,
const goodseedhelpers::HeavyObjectCache  
)
explicit

Definition at line 190 of file GoodSeedProducer.cc.

References clusThreshold_, disablePreId_, EcalStripSumE_deltaEta_, EcalStripSumE_deltaPhiOverQ_maxValue_, EcalStripSumE_deltaPhiOverQ_minValue_, EcalStripSumE_minClusEnergy_, fitterName_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), HcalIsolWindow_, mps_fire::i, LogDebug, maxEp_, maxEta_, maxHoverP_, maxPt_, Min_dr_, minEoverP_, minEp_, minPt_, nHitsInSeed_, pfCLusTagECLabel_, pfCLusTagHCLabel_, pfCLusTagPSLabel_, preidckf_, preidgsf_, preidname_, produceCkfseed_, producePreId_, PtThresholdSavePredId_, pixelTrack::qualityByName(), smootherName_, AlCaHLTBitMon_QueryRunRegistry::string, triggerMatcherToHLTDebug_cfi::tags, trackerRecHitBuilderName_, trackQuality_, tracksContainers_, trajContainers_, useQuality_, and useTmva_.

191  : pfTransformer_(nullptr),
192  conf_(iConfig),
193  resMapEtaECAL_(nullptr),
194  resMapPhiECAL_(nullptr),
195  fitterToken_(esConsumes(edm::ESInputTag("", iConfig.getParameter<string>("Fitter")))),
196  smootherToken_(esConsumes(edm::ESInputTag("", iConfig.getParameter<string>("Smoother")))),
199  magneticFieldTokenBeginRun_(esConsumes<edm::Transition::BeginRun>()) {
200  LogInfo("GoodSeedProducer") << "Electron PreIdentification started ";
201 
202  //now do what ever initialization is needed
203  std::vector<edm::InputTag> tags = iConfig.getParameter<vector<InputTag>>("TkColList");
204  for (unsigned int i = 0; i < tags.size(); ++i) {
205  trajContainers_.push_back(consumes<vector<Trajectory>>(tags[i]));
206  tracksContainers_.push_back(consumes<reco::TrackCollection>(tags[i]));
207  }
208 
209  minPt_ = iConfig.getParameter<double>("MinPt");
210  maxPt_ = iConfig.getParameter<double>("MaxPt");
211  maxEta_ = iConfig.getParameter<double>("MaxEta");
212 
213  HcalIsolWindow_ = iConfig.getParameter<double>("HcalWindow");
214  EcalStripSumE_minClusEnergy_ = iConfig.getParameter<double>("EcalStripSumE_minClusEnergy");
215  EcalStripSumE_deltaEta_ = iConfig.getParameter<double>("EcalStripSumE_deltaEta");
216  EcalStripSumE_deltaPhiOverQ_minValue_ = iConfig.getParameter<double>("EcalStripSumE_deltaPhiOverQ_minValue");
217  EcalStripSumE_deltaPhiOverQ_maxValue_ = iConfig.getParameter<double>("EcalStripSumE_deltaPhiOverQ_maxValue");
218  minEoverP_ = iConfig.getParameter<double>("EOverPLead_minValue");
219  maxHoverP_ = iConfig.getParameter<double>("HOverPLead_maxValue");
220 
221  pfCLusTagECLabel_ = consumes<reco::PFClusterCollection>(iConfig.getParameter<InputTag>("PFEcalClusterLabel"));
222 
223  pfCLusTagHCLabel_ = consumes<reco::PFClusterCollection>(iConfig.getParameter<InputTag>("PFHcalClusterLabel"));
224 
225  pfCLusTagPSLabel_ = consumes<reco::PFClusterCollection>(iConfig.getParameter<InputTag>("PFPSClusterLabel"));
226 
227  preidgsf_ = iConfig.getParameter<string>("PreGsfLabel");
228  preidckf_ = iConfig.getParameter<string>("PreCkfLabel");
229  preidname_ = iConfig.getParameter<string>("PreIdLabel");
230 
231  fitterName_ = iConfig.getParameter<string>("Fitter");
232  smootherName_ = iConfig.getParameter<string>("Smoother");
233 
234  nHitsInSeed_ = iConfig.getParameter<int>("NHitsInSeed");
235 
236  clusThreshold_ = iConfig.getParameter<double>("ClusterThreshold");
237 
238  minEp_ = iConfig.getParameter<double>("MinEOverP");
239  maxEp_ = iConfig.getParameter<double>("MaxEOverP");
240 
241  //collection to produce
242  produceCkfseed_ = iConfig.getUntrackedParameter<bool>("ProduceCkfSeed", false);
243 
244  // to disable the electron part (for HI collisions for examples)
245  disablePreId_ = iConfig.getUntrackedParameter<bool>("DisablePreId", false);
246 
247  producePreId_ = iConfig.getUntrackedParameter<bool>("ProducePreId", true);
248  // if no electron, cannot produce the preid
249  if (disablePreId_)
250  producePreId_ = false;
251  PtThresholdSavePredId_ = iConfig.getUntrackedParameter<double>("PtThresholdSavePreId", 1.);
252 
253  LogDebug("GoodSeedProducer") << "Seeds for GSF will be produced ";
254 
255  // no disablePreId_ switch here. The collection will be empty if it is true
256  produces<ElectronSeedCollection>(preidgsf_);
257 
258  if (produceCkfseed_) {
259  LogDebug("GoodSeedProducer") << "Seeds for CKF will be produced ";
260  produces<TrajectorySeedCollection>(preidckf_);
261  }
262 
263  if (producePreId_) {
264  LogDebug("GoodSeedProducer") << "PreId debugging information will be produced ";
265 
266  produces<PreIdCollection>(preidname_);
267  if (tracksContainers_.size() == 1) // do not make a value map if more than one input track collection
269  }
270 
271  useQuality_ = iConfig.getParameter<bool>("UseQuality");
273 
274  useTmva_ = iConfig.getUntrackedParameter<bool>("UseTMVA", false);
275 
276  Min_dr_ = iConfig.getParameter<double>("Min_dr");
277 
278  trackerRecHitBuilderName_ = iConfig.getParameter<std::string>("TTRHBuilder");
279 }
int nHitsInSeed_
Number of hits in the seed;.
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::string preidckf_
Name of the Seed(Ckf) Collection.
Quality qualityByName(std::string const &name)
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagPSLabel_
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldTokenBeginRun_
double EcalStripSumE_minClusEnergy_
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet conf_
double EcalStripSumE_deltaPhiOverQ_minValue_
double EcalStripSumE_deltaPhiOverQ_maxValue_
std::string preidname_
Name of the preid Collection (FB)
bool useQuality_
TRACK QUALITY.
std::vector< edm::EDGetTokenT< reco::TrackCollection > > tracksContainers_
double minPt_
Minimum transverse momentum and maximum pseudorapidity.
std::string fitterName_
bool disablePreId_
switch to disable the pre-id
reco::TrackBase::TrackQuality trackQuality_
double clusThreshold_
Cut on the energy of the clusters.
Log< level::Info, false > LogInfo
bool produceCkfseed_
Produce the Seed for Ckf tracks?
const edm::ESGetToken< TrajectorySmoother, TrajectoryFitter::Record > smootherToken_
bool useTmva_
USE OF TMVA.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
const edm::ESGetToken< TrajectoryFitter, TrajectoryFitter::Record > fitterToken_
bool producePreId_
Produce the pre-id debugging collection.
std::unique_ptr< PFTrackTransformer > pfTransformer_
PFTrackTransformer.
std::string trackerRecHitBuilderName_
std::string smootherName_
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagHCLabel_
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > trackerRecHitBuilderToken_
std::string preidgsf_
Name of the Seed(Gsf) Collection.
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagECLabel_
double minEp_
Min and MAx allowed values forEoverP.
std::vector< edm::EDGetTokenT< std::vector< Trajectory > > > trajContainers_
double PtThresholdSavePredId_
Threshold to save Pre Idinfo.
#define LogDebug(id)

Member Function Documentation

◆ beginRun()

void GoodSeedProducer::beginRun ( const edm::Run run,
const edm::EventSetup es 
)
overrideprivate

Definition at line 616 of file GoodSeedProducer.cc.

References B_, conf_, edm::FileInPath::fullPath(), edm::EventSetup::getData(), edm::ParameterSet::getParameter(), ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::endcap::iy(), HLT_2024v11_cff::magneticField, magneticFieldTokenBeginRun_, pfTransformer_, resMapEtaECAL_, resMapPhiECAL_, and thr.

616  {
617  //Magnetic Field
619  B_ = magneticField->inTesla(GlobalPoint(0, 0, 0));
620 
621  pfTransformer_ = std::make_unique<PFTrackTransformer>(B_);
622  pfTransformer_->OnlyProp();
623 
624  //Resolution maps
625  FileInPath ecalEtaMap(conf_.getParameter<string>("EtaMap"));
626  FileInPath ecalPhiMap(conf_.getParameter<string>("PhiMap"));
627  resMapEtaECAL_ = std::make_unique<PFResolutionMap>("ECAL_eta", ecalEtaMap.fullPath().c_str());
628  resMapPhiECAL_ = std::make_unique<PFResolutionMap>("ECAL_phi", ecalPhiMap.fullPath().c_str());
629 
630  //read threshold
631  FileInPath parFile(conf_.getParameter<string>("ThresholdFile"));
632  ifstream ifs(parFile.fullPath().c_str());
633  for (int iy = 0; iy < 81; ++iy)
634  ifs >> thr[iy];
635 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldTokenBeginRun_
float thr[150]
vector of thresholds for different bins of eta and pt
edm::ParameterSet conf_
math::XYZVector B_
B field.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
std::unique_ptr< PFTrackTransformer > pfTransformer_
PFTrackTransformer.
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t iy(uint32_t id)

◆ fillPreIdRefValueMap()

void GoodSeedProducer::fillPreIdRefValueMap ( edm::Handle< reco::TrackCollection tkhandle,
const edm::OrphanHandle< reco::PreIdCollection > &  preidhandle,
edm::ValueMap< reco::PreIdRef >::Filler &  filler 
)
private

Definition at line 661 of file GoodSeedProducer.cc.

References trigObjTnPSource_cfi::filler, vertices_cff::ntracks, refMap_, DiMuonV_cfg::tracks, and contentValuesCheck::values.

Referenced by produce().

663  {
664  std::vector<reco::PreIdRef> values;
665 
666  unsigned ntracks = tracks->size();
667  for (unsigned itrack = 0; itrack < ntracks; ++itrack) {
668  reco::TrackRef theTrackRef(tracks, itrack);
669  std::map<reco::TrackRef, unsigned>::const_iterator itcheck = refMap_.find(theTrackRef);
670  if (itcheck == refMap_.end()) {
671  // the track has been early discarded
672  values.push_back(reco::PreIdRef());
673  } else {
674  edm::Ref<reco::PreIdCollection> preIdRef(preidhandle, itcheck->second);
675  values.push_back(preIdRef);
676  // std::cout << " Checking Refs " << (theTrackRef==preIdRef->trackRef()) << std::endl;
677  }
678  }
679  filler.insert(tracks, values.begin(), values.end());
680 }
std::map< reco::TrackRef, unsigned > refMap_
Map used to create the TrackRef, PreIdRef value map.

◆ getBin()

int GoodSeedProducer::getBin ( float  eta,
float  pt 
)
private

Find the bin in pt and eta.

Definition at line 637 of file GoodSeedProducer.cc.

References PVValHelper::eta, LogDebug, and DiDispStaMuonMonitor_cfi::pt.

Referenced by produce().

637  {
638  int ie = 0;
639  int ip = 0;
640  if (fabs(eta) < 0.8)
641  ie = 0;
642  else {
643  if (fabs(eta) < 1.479)
644  ie = 1;
645  else
646  ie = 2;
647  }
648  if (pt < 6)
649  ip = 0;
650  else {
651  if (pt < 12)
652  ip = 1;
653  else
654  ip = 2;
655  }
656  int iep = ie * 3 + ip;
657  LogDebug("GoodSeedProducer") << "Track pt =" << pt << " eta=" << eta << " bin=" << iep;
658  return iep;
659 }
#define LogDebug(id)

◆ globalEndJob()

static void GoodSeedProducer::globalEndJob ( goodseedhelpers::HeavyObjectCache const *  )
inlinestatic

Definition at line 78 of file GoodSeedProducer.cc.

78 {}

◆ initializeGlobalCache()

static std::unique_ptr<goodseedhelpers::HeavyObjectCache> GoodSeedProducer::initializeGlobalCache ( const edm::ParameterSet conf)
inlinestatic

Definition at line 74 of file GoodSeedProducer.cc.

74  {
75  return std::make_unique<goodseedhelpers::HeavyObjectCache>(conf);
76  }

◆ produce()

void GoodSeedProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 286 of file GoodSeedProducer.cc.

References funct::abs(), B_, ALCARECOTkAlJpsiMuMu_cff::charge, chikfred, chiRatio, chired, Trajectory::chiSquared(), clusThreshold_, runTheMatrix::const, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), disablePreId_, dpt, l1ctLayer1_cff::dr, EE, PVValHelper::eta, Basic3DVector< T >::eta(), f, JetMETHLTOfflineSource_cfi::feta, fillPreIdRefValueMap(), Trajectory::firstMeasurement(), fitterToken_, nano_mu_digi_cff::float, getBin(), edm::EventSetup::getData(), TrajectoryStateOnSurface::globalMomentum(), runTauDisplay::gp, hitCloner, mps_fire::i, iEvent, createfilelist::int, Trajectory::isValid(), Trajectory::lastMeasurement(), LogDebug, mag2(), HLT_2024v11_cff::magneticField, magneticFieldToken_, maxEp_, maxEta_, maxPt_, Min_dr_, minEp_, minPt_, eostools::move(), nhit, PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::perp2(), pfCLusTagECLabel_, pfCLusTagHCLabel_, pfCLusTagPSLabel_, Pi, funct::pow(), preidckf_, preidgsf_, preidname_, produceCkfseed_, producePreId_, edm::Handle< T >::product(), BaseParticlePropagator::propagateToEcalEntrance(), DiDispStaMuonMonitor_cfi::pt, reco::PreId::pt(), PtThresholdSavePredId_, quality, FastTrackerRecHitMaskProducer_cfi::recHits, refMap_, resMapEtaECAL_, resMapPhiECAL_, reco::ElectronSeed::setCtfTrack(), reco::PreId::setECALMatching(), reco::PreId::setECALMatchingProperties(), reco::PreId::setFinalDecision(), reco::PreId::setMVA(), reco::PreId::setTrack(), reco::PreId::setTrackFiltering(), reco::PreId::setTrackProperties(), smootherToken_, mathSSE::sqrt(), thr, createJobs::tmp, trackerRecHitBuilderToken_, trackQuality_, tracksContainers_, trk_ecalDeta, trk_ecalDphi, TwoPi, unit(), TrajectoryMeasurement::updatedState(), useQuality_, useTmva_, x, PV3DBase< T, PVType, FrameType >::x(), y, PV3DBase< T, PVType, FrameType >::y(), z, and PV3DBase< T, PVType, FrameType >::z().

286  {
287  LogDebug("GoodSeedProducer") << "START event: " << iEvent.id().event() << " in run " << iEvent.id().run();
288  //Create empty output collections
289  auto output_preid = std::make_unique<ElectronSeedCollection>();
290  auto output_nopre = std::make_unique<TrajectorySeedCollection>();
291  auto output_preidinfo = std::make_unique<PreIdCollection>();
292  auto preIdMap_p = std::make_unique<edm::ValueMap<reco::PreIdRef>>();
293  edm::ValueMap<reco::PreIdRef>::Filler mapFiller(*preIdMap_p);
294 
295  std::unique_ptr<TrajectoryFitter> fitter;
296  std::unique_ptr<TrajectorySmoother> smoother;
297 
298  //Tracking Tools
299  if (!disablePreId_) {
300  auto const& aFitter = &iSetup.getData(fitterToken_);
301  auto const& aSmoother = &iSetup.getData(smootherToken_);
302 
303  smoother.reset(aSmoother->clone());
304  fitter = aFitter->clone();
305  auto const& theTrackerRecHitBuilder = &iSetup.getData(trackerRecHitBuilderToken_);
306  hitCloner = static_cast<TkTransientTrackingRecHitBuilder const*>(theTrackerRecHitBuilder)->cloner();
307  fitter->setHitCloner(&hitCloner);
308  smoother->setHitCloner(&hitCloner);
309  }
310 
311  // clear temporary maps
312  refMap_.clear();
313 
314  //Magnetic Field
315  auto const& magneticField = &iSetup.getData(magneticFieldToken_);
316 
317  //Handle input collections
318  //ECAL clusters
319  Handle<PFClusterCollection> theECPfClustCollection;
320  iEvent.getByToken(pfCLusTagECLabel_, theECPfClustCollection);
321 
322  vector<PFCluster const*> basClus;
323  for (auto const& klus : *theECPfClustCollection.product()) {
324  if (klus.correctedEnergy() > clusThreshold_)
325  basClus.push_back(&klus);
326  }
327 
328  //HCAL clusters
329  Handle<PFClusterCollection> theHCPfClustCollection;
330  iEvent.getByToken(pfCLusTagHCLabel_, theHCPfClustCollection);
331 
332  //PS clusters
333  Handle<PFClusterCollection> thePSPfClustCollection;
334  iEvent.getByToken(pfCLusTagPSLabel_, thePSPfClustCollection);
335 
336  //Vector of track collections
337  for (unsigned int istr = 0; istr < tracksContainers_.size(); ++istr) {
338  //Track collection
339  Handle<TrackCollection> tkRefCollection;
340  iEvent.getByToken(tracksContainers_[istr], tkRefCollection);
341  const TrackCollection& Tk = *(tkRefCollection.product());
342 
343  LogDebug("GoodSeedProducer") << "Number of tracks in collection "
344  << "tracksContainers_[" << istr << "] to be analyzed " << Tk.size();
345 
346  //loop over the track collection
347  for (unsigned int i = 0; i < Tk.size(); ++i) {
348  if (useQuality_ && (!(Tk[i].quality(trackQuality_))))
349  continue;
350 
351  reco::PreId myPreId;
352  bool GoodPreId = false;
353 
354  TrackRef trackRef(tkRefCollection, i);
355  math::XYZVectorF tkmom(Tk[i].momentum());
356  auto tketa = tkmom.eta();
357  auto tkpt = std::sqrt(tkmom.perp2());
358  auto const& Seed = (*trackRef->seedRef());
359 
360  if (!disablePreId_) {
361  int ipteta = getBin(Tk[i].eta(), Tk[i].pt());
362  int ibin = ipteta * 9;
363 
364  // FIXME the original code was buggy should be outerMomentum...
365  float oPTOB = 1.f / std::sqrt(Tk[i].innerMomentum().mag2());
366  // float chikfred=Tk[i].normalizedChi2();
367  float nchi = Tk[i].normalizedChi2();
368 
369  int nhitpi = Tk[i].found();
370  float EP = 0;
371 
372  // set track info
373  myPreId.setTrack(trackRef);
374  //CLUSTERS - TRACK matching
375 
376  auto pfmass = 0.0005;
377  auto pfoutenergy = sqrt((pfmass * pfmass) + Tk[i].outerMomentum().Mag2());
378 
380  Tk[i].outerMomentum().x(), Tk[i].outerMomentum().y(), Tk[i].outerMomentum().z(), pfoutenergy);
382  XYZTLorentzVector(Tk[i].outerPosition().x(), Tk[i].outerPosition().y(), Tk[i].outerPosition().z(), 0.);
383 
384  BaseParticlePropagator theOutParticle(RawParticle(mom, pos, Tk[i].charge()), 0, 0, B_.z());
385 
386  theOutParticle.propagateToEcalEntrance(false);
387 
388  float toteta = 1000.f;
389  float totphi = 1000.f;
390  float dr = 1000.f;
391  float EE = 0.f;
392  float feta = 0.f;
393  GlobalPoint ElecTrkEcalPos(0, 0, 0);
394 
395  PFClusterRef clusterRef;
396  math::XYZPoint meanShowerSaved;
397  if (theOutParticle.getSuccess() != 0) {
398  ElecTrkEcalPos = GlobalPoint(theOutParticle.particle().vertex().x(),
399  theOutParticle.particle().vertex().y(),
400  theOutParticle.particle().vertex().z());
401 
402  constexpr float psLim = 2.50746495928f; // std::sinh(1.65f);
403  bool isBelowPS = (ElecTrkEcalPos.z() * ElecTrkEcalPos.z()) > (psLim * psLim) * ElecTrkEcalPos.perp2();
404  // bool isBelowPS=(std::abs(ElecTrkEcalPos.eta())>1.65f);
405 
406  unsigned clusCounter = 0;
407  float max_ee = 0;
408  for (auto aClus : basClus) {
409  float tmp_ep = float(aClus->correctedEnergy()) * oPTOB;
410  if ((tmp_ep < minEp_) | (tmp_ep > maxEp_)) {
411  ++clusCounter;
412  continue;
413  }
414 
415  double ecalShowerDepth = PFCluster::getDepthCorrection(aClus->correctedEnergy(), isBelowPS, false);
416  auto mom = theOutParticle.particle().momentum().Vect();
417  auto meanShower = ElecTrkEcalPos + GlobalVector(mom.x(), mom.y(), mom.z()).unit() * ecalShowerDepth;
418 
419  float etarec = meanShower.eta();
420  float phirec = meanShower.phi();
421 
422  float tmp_phi = std::abs(aClus->positionREP().phi() - phirec);
423  if (tmp_phi > float(TMath::Pi()))
424  tmp_phi -= float(TMath::TwoPi());
425 
426  float tmp_dr = std::sqrt(std::pow(tmp_phi, 2.f) + std::pow(aClus->positionREP().eta() - etarec, 2.f));
427 
428  if (tmp_dr < dr) {
429  dr = tmp_dr;
430  if (dr < Min_dr_) { // find the most closest and energetic ECAL cluster
431  if (aClus->correctedEnergy() > max_ee) {
432  toteta = aClus->positionREP().eta() - etarec;
433  totphi = tmp_phi;
434  EP = tmp_ep;
435  EE = aClus->correctedEnergy();
436  feta = aClus->positionREP().eta();
437  clusterRef = PFClusterRef(theECPfClustCollection, clusCounter);
438  meanShowerSaved = meanShower;
439  }
440  }
441  }
442  ++clusCounter;
443  }
444  }
445  float trk_ecalDeta_ = fabs(toteta);
446  float trk_ecalDphi_ = fabs(totphi);
447 
448  //Resolution maps
449  auto ecaletares = resMapEtaECAL_->GetBinContent(resMapEtaECAL_->FindBin(feta, EE));
450  auto ecalphires = resMapPhiECAL_->GetBinContent(resMapPhiECAL_->FindBin(feta, EE));
451 
452  //geomatrical compatibility
453  float chieta = (toteta != 1000.f) ? toteta / ecaletares : toteta;
454  float chiphi = (totphi != 1000.f) ? totphi / ecalphires : totphi;
455  float chichi = sqrt(chieta * chieta + chiphi * chiphi);
456 
457  //Matching criteria
458  float eta_cut = thr[ibin + 0];
459  float phi_cut = thr[ibin + 1];
460  float ep_cutmin = thr[ibin + 2];
461  bool GoodMatching =
462  ((trk_ecalDeta_ < eta_cut) && (trk_ecalDphi_ < phi_cut) && (EP > ep_cutmin) && (nhitpi > 10));
463 
464  bool EcalMatching = GoodMatching;
465 
466  if (tkpt > maxPt_)
467  GoodMatching = true;
468  if (tkpt < minPt_)
469  GoodMatching = false;
470 
471  math::XYZPoint myPoint(ElecTrkEcalPos.x(), ElecTrkEcalPos.y(), ElecTrkEcalPos.z());
473  clusterRef, myPoint, meanShowerSaved, std::abs(toteta), std::abs(totphi), chieta, chiphi, chichi, EP);
474  myPreId.setECALMatching(EcalMatching);
475 
476  bool GoodRange = ((std::abs(tketa) < maxEta_) & (tkpt > minPt_));
477  //KF FILTERING FOR UNMATCHED EVENTS
478  int hit1max = int(thr[ibin + 3]);
479  float chiredmin = thr[ibin + 4];
480  bool GoodKFFiltering = ((nchi > chiredmin) | (nhitpi < hit1max));
481 
482  myPreId.setTrackFiltering(GoodKFFiltering);
483 
484  bool GoodTkId = false;
485 
486  if ((!GoodMatching) && (GoodKFFiltering) && (GoodRange)) {
487  chired = 1000;
488  chiRatio = 1000;
489  dpt = 0;
490  nhit = nhitpi;
491  chikfred = nchi;
492  trk_ecalDeta = trk_ecalDeta_;
493  trk_ecalDphi = trk_ecalDphi_;
494 
496  for (auto const& hit : Tk[i].recHits())
497  tmp.push_back(hit->cloneSH());
498  auto const& theTrack = Tk[i];
499  GlobalVector gv(theTrack.innerMomentum().x(), theTrack.innerMomentum().y(), theTrack.innerMomentum().z());
500  GlobalPoint gp(theTrack.innerPosition().x(), theTrack.innerPosition().y(), theTrack.innerPosition().z());
501  GlobalTrajectoryParameters gtps(gp, gv, theTrack.charge(), &*magneticField);
502  TrajectoryStateOnSurface tsos(gtps, theTrack.innerStateCovariance(), *tmp[0]->surface());
503  Trajectory&& FitTjs = fitter->fitOne(Seed, tmp, tsos);
504 
505  if (FitTjs.isValid()) {
506  Trajectory&& SmooTjs = smoother->trajectory(FitTjs);
507  if (SmooTjs.isValid()) {
508  //Track refitted with electron hypothesis
509 
510  float pt_out = SmooTjs.firstMeasurement().updatedState().globalMomentum().perp();
511  float pt_in = SmooTjs.lastMeasurement().updatedState().globalMomentum().perp();
512  dpt = (pt_in > 0) ? fabs(pt_out - pt_in) / pt_in : 0.;
513  // the following is simply the number of degrees of freedom
514  chiRatio = SmooTjs.chiSquared() / Tk[i].chi2();
516  }
517  }
518 
519  //TMVA Analysis
520  if (useTmva_) {
521  float vars[10] = {nhit, chikfred, dpt, EP, chiRatio, chired, trk_ecalDeta, trk_ecalDphi, tkpt, tketa};
522 
523  float Ytmva = globalCache()->gbr[ipteta]->GetClassifier(vars);
524 
525  float BDTcut = thr[ibin + 5];
526  if (Ytmva > BDTcut)
527  GoodTkId = true;
528  myPreId.setMVA(GoodTkId, Ytmva);
530  } else {
531  float chiratiocut = thr[ibin + 6];
532  float gschicut = thr[ibin + 7];
533  float gsptmin = thr[ibin + 8];
534 
535  GoodTkId = ((dpt > gsptmin) & (chired < gschicut) & (chiRatio < chiratiocut));
536  }
537  }
538 
539  GoodPreId = GoodTkId | GoodMatching;
540 
541  myPreId.setFinalDecision(GoodPreId);
542 
543 #ifdef EDM_ML_DEBUG
544  if (GoodPreId)
545  LogDebug("GoodSeedProducer") << "Track (pt= " << Tk[i].pt() << "GeV/c, eta= " << Tk[i].eta()
546  << ") preidentified for agreement between track and ECAL cluster";
547  if (GoodPreId && (!GoodMatching))
548  LogDebug("GoodSeedProducer") << "Track (pt= " << Tk[i].pt() << "GeV/c, eta= " << Tk[i].eta()
549  << ") preidentified only for track properties";
550 #endif
551 
552  } // end of !disablePreId_
553 
554  if (GoodPreId) {
555  //NEW SEED with n hits
556  ElectronSeed NewSeed(Seed);
557  NewSeed.setCtfTrack(trackRef);
558  output_preid->push_back(NewSeed);
559  } else {
560  if (produceCkfseed_) {
561  output_nopre->push_back(Seed);
562  }
563  }
564  if (producePreId_ && myPreId.pt() > PtThresholdSavePredId_) {
565  // save the index of the PreId object as to be able to create a Ref later
566  refMap_[trackRef] = output_preidinfo->size();
567  output_preidinfo->push_back(myPreId);
568  }
569  } //end loop on track collection
570  } //end loop on the vector of track collections
571 
572  // no disablePreId_ switch, it is simpler to have an empty collection rather than no collection
573  iEvent.put(std::move(output_preid), preidgsf_);
574  if (produceCkfseed_)
575  iEvent.put(std::move(output_nopre), preidckf_);
576  if (producePreId_) {
577  const edm::OrphanHandle<reco::PreIdCollection> preIdRefProd = iEvent.put(std::move(output_preidinfo), preidname_);
578  // now make the Value Map, but only if one input collection
579  if (tracksContainers_.size() == 1) {
580  Handle<TrackCollection> tkRefCollection;
581  iEvent.getByToken(tracksContainers_[0], tkRefCollection);
582  fillPreIdRefValueMap(tkRefCollection, preIdRefProd, mapFiller);
583  mapFiller.fill();
584  iEvent.put(std::move(preIdMap_p), preidname_);
585  }
586  }
587  // clear temporary maps
588  refMap_.clear();
589 }
const double TwoPi
const double Pi
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
T perp() const
Definition: PV3DBase.h:69
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
bool isValid() const
Definition: Trajectory.h:257
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
std::string preidckf_
Name of the Seed(Ckf) Collection.
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagPSLabel_
vars
Definition: DeepTauIdBase.h:60
T const * product() const
Definition: Handle.h:70
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
float pt() const
Definition: PreId.h:80
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
float chiSquared() const
Definition: Trajectory.h:241
float thr[150]
vector of thresholds for different bins of eta and pt
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:150
TkClonerImpl hitCloner
void setTrack(reco::TrackRef trackref)
Definition: PreId.h:31
string quality
int getBin(float, float)
Find the bin in pt and eta.
int iEvent
Definition: GenABIO.cc:224
void setMVA(bool accepted, float mva, unsigned n=0)
Definition: PreId.h:63
void setTrackFiltering(bool accepted, unsigned n=0)
Definition: PreId.h:62
T sqrt(T t)
Definition: SSEVec.h:19
math::XYZVector B_
B field.
std::string preidname_
Name of the preid Collection (FB)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool useQuality_
TRACK QUALITY.
void fillPreIdRefValueMap(edm::Handle< reco::TrackCollection > tkhandle, const edm::OrphanHandle< reco::PreIdCollection > &, edm::ValueMap< reco::PreIdRef >::Filler &filler)
double f[11][100]
std::vector< edm::EDGetTokenT< reco::TrackCollection > > tracksContainers_
double minPt_
Minimum transverse momentum and maximum pseudorapidity.
bool disablePreId_
switch to disable the pre-id
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
Definition: Vector3D.h:16
reco::TrackBase::TrackQuality trackQuality_
Basic3DVector unit() const
double clusThreshold_
Cut on the energy of the clusters.
bool propagateToEcalEntrance(bool first=true)
bool produceCkfseed_
Produce the Seed for Ckf tracks?
const edm::ESGetToken< TrajectorySmoother, TrajectoryFitter::Record > smootherToken_
bool useTmva_
USE OF TMVA.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
const edm::ESGetToken< TrajectoryFitter, TrajectoryFitter::Record > fitterToken_
std::map< reco::TrackRef, unsigned > refMap_
Map used to create the TrackRef, PreIdRef value map.
GlobalVector globalMomentum() const
TrajectoryStateOnSurface const & updatedState() const
TrackingRecHit::ConstRecHitContainer ConstRecHitContainer
Definition: Trajectory.h:41
void setTrackProperties(float newchi2, float chi2ratio, float dpt)
Definition: PreId.h:53
void setECALMatching(bool accepted, unsigned n=0)
Definition: PreId.h:60
TrajectoryMeasurement const & firstMeasurement() const
Definition: Trajectory.h:166
bool producePreId_
Produce the pre-id debugging collection.
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagHCLabel_
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > trackerRecHitBuilderToken_
tmp
align.sh
Definition: createJobs.py:716
std::string preidgsf_
Name of the Seed(Gsf) Collection.
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagECLabel_
double minEp_
Min and MAx allowed values forEoverP.
float nhit
VARIABLES NEEDED FOR TMVA.
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
def move(src, dest)
Definition: eostools.py:511
double PtThresholdSavePredId_
Threshold to save Pre Idinfo.
Global3DVector GlobalVector
Definition: GlobalVector.h:10
void setFinalDecision(bool accepted, unsigned n=0)
Definition: PreId.h:59
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:25
edm::Ref< l1t::PFClusterCollection > PFClusterRef
Definition: PFCluster.h:88
#define LogDebug(id)

Member Data Documentation

◆ B_

math::XYZVector GoodSeedProducer::B_
private

B field.

Definition at line 180 of file GoodSeedProducer.cc.

Referenced by beginRun(), and produce().

◆ chikfred

float GoodSeedProducer::chikfred
private

Definition at line 173 of file GoodSeedProducer.cc.

Referenced by produce().

◆ chiRatio

float GoodSeedProducer::chiRatio
private

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

◆ chired

float GoodSeedProducer::chired
private

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

◆ clusThreshold_

double GoodSeedProducer::clusThreshold_
private

Cut on the energy of the clusters.

Definition at line 124 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ conf_

edm::ParameterSet GoodSeedProducer::conf_
private

Definition at line 146 of file GoodSeedProducer.cc.

Referenced by beginRun().

◆ disablePreId_

bool GoodSeedProducer::disablePreId_
private

switch to disable the pre-id

Definition at line 134 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ dpt

float GoodSeedProducer::dpt
private

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

◆ EcalStripSumE_deltaEta_

double GoodSeedProducer::EcalStripSumE_deltaEta_
private

Definition at line 117 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ EcalStripSumE_deltaPhiOverQ_maxValue_

double GoodSeedProducer::EcalStripSumE_deltaPhiOverQ_maxValue_
private

Definition at line 119 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ EcalStripSumE_deltaPhiOverQ_minValue_

double GoodSeedProducer::EcalStripSumE_deltaPhiOverQ_minValue_
private

Definition at line 118 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ EcalStripSumE_minClusEnergy_

double GoodSeedProducer::EcalStripSumE_minClusEnergy_
private

Definition at line 116 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ fitterName_

std::string GoodSeedProducer::fitterName_
private

Definition at line 153 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ fitterToken_

const edm::ESGetToken<TrajectoryFitter, TrajectoryFitter::Record> GoodSeedProducer::fitterToken_
private

Definition at line 161 of file GoodSeedProducer.cc.

Referenced by produce().

◆ HcalIsolWindow_

double GoodSeedProducer::HcalIsolWindow_
private

Definition at line 115 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ hitCloner

TkClonerImpl GoodSeedProducer::hitCloner
private

Definition at line 102 of file GoodSeedProducer.cc.

Referenced by produce().

◆ magneticFieldToken_

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

Definition at line 164 of file GoodSeedProducer.cc.

Referenced by produce().

◆ magneticFieldTokenBeginRun_

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> GoodSeedProducer::magneticFieldTokenBeginRun_
private

Definition at line 165 of file GoodSeedProducer.cc.

Referenced by beginRun().

◆ maxEp_

double GoodSeedProducer::maxEp_
private

Definition at line 128 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ maxEta_

double GoodSeedProducer::maxEta_
private

Definition at line 113 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ maxHoverP_

double GoodSeedProducer::maxHoverP_
private

Definition at line 121 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ maxPt_

double GoodSeedProducer::maxPt_
private

Definition at line 112 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ Min_dr_

double GoodSeedProducer::Min_dr_
private

Definition at line 174 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ minEoverP_

double GoodSeedProducer::minEoverP_
private

Definition at line 120 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ minEp_

double GoodSeedProducer::minEp_
private

Min and MAx allowed values forEoverP.

Definition at line 127 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ minPt_

double GoodSeedProducer::minPt_
private

Minimum transverse momentum and maximum pseudorapidity.

Definition at line 111 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ nhit

float GoodSeedProducer::nhit
private

VARIABLES NEEDED FOR TMVA.

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

◆ nHitsInSeed_

int GoodSeedProducer::nHitsInSeed_
private

Number of hits in the seed;.

Definition at line 108 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ pfCLusTagECLabel_

edm::EDGetTokenT<reco::PFClusterCollection> GoodSeedProducer::pfCLusTagECLabel_
private

Definition at line 148 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ pfCLusTagHCLabel_

edm::EDGetTokenT<reco::PFClusterCollection> GoodSeedProducer::pfCLusTagHCLabel_
private

Definition at line 149 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ pfCLusTagPSLabel_

edm::EDGetTokenT<reco::PFClusterCollection> GoodSeedProducer::pfCLusTagPSLabel_
private

Definition at line 147 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ pfTransformer_

std::unique_ptr<PFTrackTransformer> GoodSeedProducer::pfTransformer_
private

PFTrackTransformer.

Definition at line 105 of file GoodSeedProducer.cc.

Referenced by beginRun().

◆ preidckf_

std::string GoodSeedProducer::preidckf_
private

Name of the Seed(Ckf) Collection.

Definition at line 93 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ preidgsf_

std::string GoodSeedProducer::preidgsf_
private

Name of the Seed(Gsf) Collection.

Definition at line 96 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ preidname_

std::string GoodSeedProducer::preidname_
private

Name of the preid Collection (FB)

Definition at line 99 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ produceCkfseed_

bool GoodSeedProducer::produceCkfseed_
private

Produce the Seed for Ckf tracks?

Definition at line 131 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ producePreId_

bool GoodSeedProducer::producePreId_
private

Produce the pre-id debugging collection.

Definition at line 137 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ propagatorName_

std::string GoodSeedProducer::propagatorName_
private

Definition at line 155 of file GoodSeedProducer.cc.

◆ PtThresholdSavePredId_

double GoodSeedProducer::PtThresholdSavePredId_
private

Threshold to save Pre Idinfo.

Definition at line 140 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ refMap_

std::map<reco::TrackRef, unsigned> GoodSeedProducer::refMap_
private

Map used to create the TrackRef, PreIdRef value map.

Definition at line 183 of file GoodSeedProducer.cc.

Referenced by fillPreIdRefValueMap(), and produce().

◆ resMapEtaECAL_

std::unique_ptr<PFResolutionMap> GoodSeedProducer::resMapEtaECAL_
private

Definition at line 158 of file GoodSeedProducer.cc.

Referenced by beginRun(), and produce().

◆ resMapPhiECAL_

std::unique_ptr<PFResolutionMap> GoodSeedProducer::resMapPhiECAL_
private

Definition at line 159 of file GoodSeedProducer.cc.

Referenced by beginRun(), and produce().

◆ smootherName_

std::string GoodSeedProducer::smootherName_
private

Definition at line 154 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ smootherToken_

const edm::ESGetToken<TrajectorySmoother, TrajectoryFitter::Record> GoodSeedProducer::smootherToken_
private

Definition at line 162 of file GoodSeedProducer.cc.

Referenced by produce().

◆ thr

float GoodSeedProducer::thr[150]
private

vector of thresholds for different bins of eta and pt

Definition at line 143 of file GoodSeedProducer.cc.

Referenced by beginRun(), and produce().

◆ trackerRecHitBuilderName_

std::string GoodSeedProducer::trackerRecHitBuilderName_
private

Definition at line 156 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ trackerRecHitBuilderToken_

const edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> GoodSeedProducer::trackerRecHitBuilderToken_
private

Definition at line 163 of file GoodSeedProducer.cc.

Referenced by produce().

◆ trackQuality_

reco::TrackBase::TrackQuality GoodSeedProducer::trackQuality_
private

Definition at line 169 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ tracksContainers_

std::vector<edm::EDGetTokenT<reco::TrackCollection> > GoodSeedProducer::tracksContainers_
private

Definition at line 151 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ trajContainers_

std::vector<edm::EDGetTokenT<std::vector<Trajectory> > > GoodSeedProducer::trajContainers_
private

Definition at line 150 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

◆ trk_ecalDeta

float GoodSeedProducer::trk_ecalDeta
private

Definition at line 173 of file GoodSeedProducer.cc.

Referenced by produce().

◆ trk_ecalDphi

float GoodSeedProducer::trk_ecalDphi
private

Definition at line 173 of file GoodSeedProducer.cc.

Referenced by produce().

◆ useQuality_

bool GoodSeedProducer::useQuality_
private

TRACK QUALITY.

Definition at line 168 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

◆ useTmva_

bool GoodSeedProducer::useTmva_
private

USE OF TMVA.

Definition at line 177 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().