CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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::HeavyObjectCache
initializeGlobalCache (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::Record
fitterToken_
 
double HcalIsolWindow_
 
TkClonerImpl hitCloner
 
const edm::ESGetToken
< MagneticField,
IdealMagneticFieldRecord
magneticFieldToken_
 
const edm::ESGetToken
< MagneticField,
IdealMagneticFieldRecord
magneticFieldTokenBeginRun_
 
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::PFClusterCollection
pfCLusTagECLabel_
 
edm::EDGetTokenT
< reco::PFClusterCollection
pfCLusTagHCLabel_
 
edm::EDGetTokenT
< reco::PFClusterCollection
pfCLusTagPSLabel_
 
std::unique_ptr
< PFTrackTransformer
pfTransformer_
 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::Record
smootherToken_
 
float thr [150]
 vector of thresholds for different bins of eta and pt More...
 
std::string trackerRecHitBuilderName_
 
const edm::ESGetToken
< TransientTrackingRecHitBuilder,
TransientRecHitRecord
trackerRecHitBuilderToken_
 
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

Definition at line 69 of file GoodSeedProducer.cc.

Constructor & Destructor Documentation

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_, produces< ElectronSeedCollection >(), PtThresholdSavePredId_, pixelTrack::qualityByName(), smootherName_, AlCaHLTBitMon_QueryRunRegistry::string, getPayloadData::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
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
268  produces<edm::ValueMap<reco::PreIdRef>>(preidname_);
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_
T getUntrackedParameter(std::string const &, T const &) const
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_
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_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ESGetToken< TrajectoryFitter, TrajectoryFitter::Record > fitterToken_
produces< ElectronSeedCollection >()
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.
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
std::vector< edm::EDGetTokenT< std::vector< Trajectory > > > trajContainers_
double PtThresholdSavePredId_
Threshold to save Pre Idinfo.
#define LogDebug(id)

Member Function Documentation

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(), HLT_FULL_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 }
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldTokenBeginRun_
tuple magneticField
float thr[150]
vector of thresholds for different bins of eta and pt
bool getData(T &iHolder) const
Definition: EventSetup.h:122
edm::ParameterSet conf_
math::XYZVector B_
B field.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::unique_ptr< PFTrackTransformer > pfTransformer_
PFTrackTransformer.
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 edm::helper::Filler< Map >::insert(), ntracks, refMap_, and makeHLTPrescaleTable::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 }
void insert(const H &h, I begin, I end)
Definition: ValueMap.h:53
auto const & tracks
cannot be loose
std::map< reco::TrackRef, unsigned > refMap_
Map used to create the TrackRef, PreIdRef value map.
int GoodSeedProducer::getBin ( float  eta,
float  pt 
)
private

Find the bin in pt and eta.

Definition at line 637 of file GoodSeedProducer.cc.

References LogDebug.

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)
static void GoodSeedProducer::globalEndJob ( goodseedhelpers::HeavyObjectCache const *  )
inlinestatic

Definition at line 78 of file GoodSeedProducer.cc.

78 {}
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  }
void GoodSeedProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 286 of file GoodSeedProducer.cc.

References funct::abs(), B_, RecoTauCleanerPlugins::charge, chikfred, chiRatio, chired, Trajectory::chiSquared(), clusThreshold_, runTheMatrix::const, disablePreId_, dpt, runTauDisplay::dr, EE, PVValHelper::eta, Basic3DVector< T >::eta(), edm::EventID::event(), validate-o2o-wbm::f, fillPreIdRefValueMap(), Trajectory::firstMeasurement(), fitterToken_, getBin(), edm::Event::getByToken(), edm::EventSetup::getData(), TrajectoryStateOnSurface::globalMomentum(), runTauDisplay::gp, hitCloner, mps_fire::i, edm::EventBase::id(), Trajectory::isValid(), Trajectory::lastMeasurement(), LogDebug, mag2(), HLT_FULL_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_, edm::Event::put(), quality, HLT_FULL_cff::recHits, refMap_, resMapEtaECAL_, resMapPhiECAL_, edm::EventID::run(), 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);
381  XYZTLorentzVector pos =
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 }
RunNumber_t run() const
Definition: EventID.h:38
const double TwoPi
const double Pi
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
EventNumber_t event() const
Definition: EventID.h:40
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
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
T perp() const
Definition: PV3DBase.h:69
std::string preidckf_
Name of the Seed(Ckf) Collection.
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagPSLabel_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
uint32_t const *__restrict__ Quality * quality
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
tuple magneticField
float thr[150]
vector of thresholds for different bins of eta and pt
T perp2() const
Definition: PV3DBase.h:68
TkClonerImpl hitCloner
void setTrack(reco::TrackRef trackref)
Definition: PreId.h:31
bool getData(T &iHolder) const
Definition: EventSetup.h:122
int getBin(float, float)
Find the bin in pt and eta.
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)
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:150
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
def move
Definition: eostools.py:511
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)
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_
double clusThreshold_
Cut on the energy of the clusters.
bool propagateToEcalEntrance(bool first=true)
bool produceCkfseed_
Produce the Seed for Ckf tracks?
bool isValid() const
Definition: Trajectory.h:257
const edm::ESGetToken< TrajectorySmoother, TrajectoryFitter::Record > smootherToken_
TrajectoryMeasurement const & firstMeasurement() const
Definition: Trajectory.h:166
float pt() const
Definition: PreId.h:80
T const * product() const
Definition: Handle.h:70
bool useTmva_
USE OF TMVA.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
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.
float chiSquared() const
Definition: Trajectory.h:241
TrackingRecHit::ConstRecHitContainer ConstRecHitContainer
Definition: Trajectory.h:41
void setTrackProperties(float newchi2, float chi2ratio, float dpt)
Definition: PreId.h:53
edm::EventID id() const
Definition: EventBase.h:59
void setECALMatching(bool accepted, unsigned n=0)
Definition: PreId.h:60
GlobalVector globalMomentum() const
bool producePreId_
Produce the pre-id debugging collection.
TrajectoryStateOnSurface const & updatedState() const
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagHCLabel_
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > trackerRecHitBuilderToken_
vars
Definition: DeepTauId.cc:164
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
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:74
Basic3DVector unit() const
#define LogDebug(id)

Member Data Documentation

math::XYZVector GoodSeedProducer::B_
private

B field.

Definition at line 180 of file GoodSeedProducer.cc.

Referenced by beginRun(), and produce().

float GoodSeedProducer::chikfred
private

Definition at line 173 of file GoodSeedProducer.cc.

Referenced by produce().

float GoodSeedProducer::chiRatio
private

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

float GoodSeedProducer::chired
private

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

double GoodSeedProducer::clusThreshold_
private

Cut on the energy of the clusters.

Definition at line 124 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

edm::ParameterSet GoodSeedProducer::conf_
private

Definition at line 146 of file GoodSeedProducer.cc.

Referenced by beginRun().

bool GoodSeedProducer::disablePreId_
private

switch to disable the pre-id

Definition at line 134 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

float GoodSeedProducer::dpt
private

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

double GoodSeedProducer::EcalStripSumE_deltaEta_
private

Definition at line 117 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

double GoodSeedProducer::EcalStripSumE_deltaPhiOverQ_maxValue_
private

Definition at line 119 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

double GoodSeedProducer::EcalStripSumE_deltaPhiOverQ_minValue_
private

Definition at line 118 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

double GoodSeedProducer::EcalStripSumE_minClusEnergy_
private

Definition at line 116 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

std::string GoodSeedProducer::fitterName_
private

Definition at line 153 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

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

Definition at line 161 of file GoodSeedProducer.cc.

Referenced by produce().

double GoodSeedProducer::HcalIsolWindow_
private

Definition at line 115 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

TkClonerImpl GoodSeedProducer::hitCloner
private

Definition at line 102 of file GoodSeedProducer.cc.

Referenced by produce().

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

Definition at line 164 of file GoodSeedProducer.cc.

Referenced by produce().

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

Definition at line 165 of file GoodSeedProducer.cc.

Referenced by beginRun().

double GoodSeedProducer::maxEp_
private

Definition at line 128 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::maxEta_
private

Definition at line 113 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::maxHoverP_
private

Definition at line 121 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

double GoodSeedProducer::maxPt_
private

Definition at line 112 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::Min_dr_
private

Definition at line 174 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::minEoverP_
private

Definition at line 120 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

double GoodSeedProducer::minEp_
private

Min and MAx allowed values forEoverP.

Definition at line 127 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::minPt_
private

Minimum transverse momentum and maximum pseudorapidity.

Definition at line 111 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

float GoodSeedProducer::nhit
private

VARIABLES NEEDED FOR TMVA.

Definition at line 172 of file GoodSeedProducer.cc.

Referenced by produce().

int GoodSeedProducer::nHitsInSeed_
private

Number of hits in the seed;.

Definition at line 108 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

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

Definition at line 148 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 149 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 147 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

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

PFTrackTransformer.

Definition at line 105 of file GoodSeedProducer.cc.

Referenced by beginRun().

std::string GoodSeedProducer::preidckf_
private

Name of the Seed(Ckf) Collection.

Definition at line 93 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

std::string GoodSeedProducer::preidgsf_
private

Name of the Seed(Gsf) Collection.

Definition at line 96 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

std::string GoodSeedProducer::preidname_
private

Name of the preid Collection (FB)

Definition at line 99 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

bool GoodSeedProducer::produceCkfseed_
private

Produce the Seed for Ckf tracks?

Definition at line 131 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

bool GoodSeedProducer::producePreId_
private

Produce the pre-id debugging collection.

Definition at line 137 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

std::string GoodSeedProducer::propagatorName_
private

Definition at line 155 of file GoodSeedProducer.cc.

double GoodSeedProducer::PtThresholdSavePredId_
private

Threshold to save Pre Idinfo.

Definition at line 140 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

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().

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

Definition at line 158 of file GoodSeedProducer.cc.

Referenced by beginRun(), and produce().

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

Definition at line 159 of file GoodSeedProducer.cc.

Referenced by beginRun(), and produce().

std::string GoodSeedProducer::smootherName_
private

Definition at line 154 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

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

Definition at line 162 of file GoodSeedProducer.cc.

Referenced by produce().

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().

std::string GoodSeedProducer::trackerRecHitBuilderName_
private

Definition at line 156 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

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

Definition at line 163 of file GoodSeedProducer.cc.

Referenced by produce().

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

Definition at line 169 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 151 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 150 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer().

float GoodSeedProducer::trk_ecalDeta
private

Definition at line 173 of file GoodSeedProducer.cc.

Referenced by produce().

float GoodSeedProducer::trk_ecalDphi
private

Definition at line 173 of file GoodSeedProducer.cc.

Referenced by produce().

bool GoodSeedProducer::useQuality_
private

TRACK QUALITY.

Definition at line 168 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().

bool GoodSeedProducer::useTmva_
private

USE OF TMVA.

Definition at line 177 of file GoodSeedProducer.cc.

Referenced by GoodSeedProducer(), and produce().