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

#include <GoodSeedProducer.h>

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
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

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_
 
float eP
 VARIABLES NEEDED FOR TMVA. More...
 
float eta
 
std::unique_ptr< TrajectoryFitterfitter_
 Fitter. More...
 
std::string fitterName_
 
double HcalIsolWindow_
 
TkClonerImpl hitCloner
 
double maxEp_
 
double maxEta_
 
double maxHoverP_
 
double maxPt_
 
std::string method_
 TMVA method. More...
 
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
 
int nHitsInSeed_
 Number of hits in the seed;. More...
 
edm::EDGetTokenT< reco::PFClusterCollectionpfCLusTagECLabel_
 
edm::EDGetTokenT< reco::PFClusterCollectionpfCLusTagHCLabel_
 
edm::EDGetTokenT< reco::PFClusterCollectionpfCLusTagPSLabel_
 
PFGeometry pfGeometry_
 
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_
 
float pt
 
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::unique_ptr< TrajectorySmoothersmoother_
 Smoother. More...
 
std::string smootherName_
 
float thr [150]
 vector of thresholds for different bins of eta and pt More...
 
std::string trackerRecHitBuilderName_
 
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 > >
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
 

Detailed Description

Definition at line 68 of file GoodSeedProducer.h.

Member Typedef Documentation

Definition at line 69 of file GoodSeedProducer.h.

Constructor & Destructor Documentation

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

Definition at line 42 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_, smootherName_, AlCaHLTBitMon_QueryRunRegistry::string, trackerRecHitBuilderName_, trackQuality_, tracksContainers_, trajContainers_, useQuality_, and useTmva_.

42  :
43  pfTransformer_(nullptr),
44  conf_(iConfig),
45  resMapEtaECAL_(nullptr),
46  resMapPhiECAL_(nullptr)
47 {
48  LogInfo("GoodSeedProducer")<<"Electron PreIdentification started ";
49 
50  //now do what ever initialization is needed
51  std::vector<edm::InputTag> tags = iConfig.getParameter< vector < InputTag > >("TkColList");
52  for(unsigned int i=0;i<tags.size();++i) {
53  trajContainers_.push_back(consumes<vector<Trajectory> >(tags[i]));
54  tracksContainers_.push_back(consumes<reco::TrackCollection>(tags[i]));
55  }
56 
57  minPt_=iConfig.getParameter<double>("MinPt");
58  maxPt_=iConfig.getParameter<double>("MaxPt");
59  maxEta_=iConfig.getParameter<double>("MaxEta");
60 
61  HcalIsolWindow_ =iConfig.getParameter<double>("HcalWindow");
62  EcalStripSumE_minClusEnergy_ = iConfig.getParameter<double>("EcalStripSumE_minClusEnergy");
63  EcalStripSumE_deltaEta_ = iConfig.getParameter<double>("EcalStripSumE_deltaEta");
64  EcalStripSumE_deltaPhiOverQ_minValue_ = iConfig.getParameter<double>("EcalStripSumE_deltaPhiOverQ_minValue");
65  EcalStripSumE_deltaPhiOverQ_maxValue_ = iConfig.getParameter<double>("EcalStripSumE_deltaPhiOverQ_maxValue");
66  minEoverP_= iConfig.getParameter<double>("EOverPLead_minValue");
67  maxHoverP_= iConfig.getParameter<double>("HOverPLead_maxValue");
68 
69  pfCLusTagECLabel_=consumes<reco::PFClusterCollection>(iConfig.getParameter<InputTag>("PFEcalClusterLabel"));
70 
71  pfCLusTagHCLabel_=consumes<reco::PFClusterCollection>(iConfig.getParameter<InputTag>("PFHcalClusterLabel"));
72 
73  pfCLusTagPSLabel_=consumes<reco::PFClusterCollection>(iConfig.getParameter<InputTag>("PFPSClusterLabel"));
74 
75  preidgsf_ = iConfig.getParameter<string>("PreGsfLabel");
76  preidckf_ = iConfig.getParameter<string>("PreCkfLabel");
77  preidname_= iConfig.getParameter<string>("PreIdLabel");
78 
79 
80  fitterName_ = iConfig.getParameter<string>("Fitter");
81  smootherName_ = iConfig.getParameter<string>("Smoother");
82 
83 
84  nHitsInSeed_=iConfig.getParameter<int>("NHitsInSeed");
85 
86  clusThreshold_=iConfig.getParameter<double>("ClusterThreshold");
87 
88  minEp_=iConfig.getParameter<double>("MinEOverP");
89  maxEp_=iConfig.getParameter<double>("MaxEOverP");
90 
91  //collection to produce
92  produceCkfseed_ = iConfig.getUntrackedParameter<bool>("ProduceCkfSeed",false);
93 
94  // to disable the electron part (for HI collisions for examples)
95  disablePreId_ = iConfig.getUntrackedParameter<bool>("DisablePreId",false);
96 
97  producePreId_ = iConfig.getUntrackedParameter<bool>("ProducePreId",true);
98  // if no electron, cannot produce the preid
99  if(disablePreId_)
100  producePreId_=false;
101  PtThresholdSavePredId_ = iConfig.getUntrackedParameter<double>("PtThresholdSavePreId",1.);
102 
103  LogDebug("GoodSeedProducer")<<"Seeds for GSF will be produced ";
104 
105  // no disablePreId_ switch here. The collection will be empty if it is true
106  produces<ElectronSeedCollection>(preidgsf_);
107 
108  if(produceCkfseed_){
109  LogDebug("GoodSeedProducer")<<"Seeds for CKF will be produced ";
110  produces<TrajectorySeedCollection>(preidckf_);
111  }
112 
113  if(producePreId_){
114  LogDebug("GoodSeedProducer")<<"PreId debugging information will be produced ";
115 
116  produces<PreIdCollection>(preidname_);
117  if(tracksContainers_.size()==1) // do not make a value map if more than one input track collection
118  produces<edm::ValueMap<reco::PreIdRef> >(preidname_);
119  }
120 
121  useQuality_ = iConfig.getParameter<bool>("UseQuality");
122  trackQuality_=TrackBase::qualityByName(iConfig.getParameter<std::string>("TrackQuality"));
123 
124  useTmva_= iConfig.getUntrackedParameter<bool>("UseTMVA",false);
125 
126  Min_dr_ = iConfig.getParameter<double>("Min_dr");
127 
128  trackerRecHitBuilderName_ = iConfig.getParameter<std::string>("TTRHBuilder");
129 
130 }
#define LogDebug(id)
int nHitsInSeed_
Number of hits in the seed;.
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::string preidckf_
Name of the Seed(Ckf) Collection.
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagPSLabel_
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
double EcalStripSumE_minClusEnergy_
edm::ParameterSet conf_
double EcalStripSumE_deltaEta_
double EcalStripSumE_deltaPhiOverQ_minValue_
double EcalStripSumE_deltaPhiOverQ_maxValue_
std::string preidname_
Name of the preid Collection (FB)
bool useQuality_
TRACK QUALITY.
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.
bool produceCkfseed_
Produce the Seed for Ckf tracks?
bool useTmva_
USE OF TMVA.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
std::vector< edm::EDGetTokenT< reco::TrackCollection > > tracksContainers_
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_
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.

Member Function Documentation

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

Definition at line 528 of file GoodSeedProducer.cc.

References B_, conf_, edm::FileInPath::fullPath(), edm::EventSetup::get(), edm::ParameterSet::getParameter(), MagneticField::inTesla(), seedCreatorFromRegionConsecutiveHitsEDProducer_cff::magneticField, pfTransformer_, resMapEtaECAL_, resMapPhiECAL_, and thr.

530 {
531  //Magnetic Field
533  es.get<IdealMagneticFieldRecord>().get(magneticField);
534  B_=magneticField->inTesla(GlobalPoint(0,0,0));
535 
536  pfTransformer_.reset( new PFTrackTransformer(B_) );
537  pfTransformer_->OnlyProp();
538 
539  //Resolution maps
540  FileInPath ecalEtaMap(conf_.getParameter<string>("EtaMap"));
541  FileInPath ecalPhiMap(conf_.getParameter<string>("PhiMap"));
542  resMapEtaECAL_.reset( new PFResolutionMap("ECAL_eta",ecalEtaMap.fullPath().c_str()) );
543  resMapPhiECAL_.reset( new PFResolutionMap("ECAL_phi",ecalPhiMap.fullPath().c_str()) );
544 
545  //read threshold
546  FileInPath parFile(conf_.getParameter<string>("ThresholdFile"));
547  ifstream ifs(parFile.fullPath().c_str());
548  for (int iy=0;iy<81;++iy) ifs >> thr[iy];
549 }
T getParameter(std::string const &) const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
float thr[150]
vector of thresholds for different bins of eta and pt
edm::ParameterSet conf_
math::XYZVector B_
B field.
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
T get() const
Definition: EventSetup.h:62
std::unique_ptr< PFTrackTransformer > pfTransformer_
PFTrackTransformer.
Resolution Map (resolution as a function of eta and E)
void GoodSeedProducer::fillPreIdRefValueMap ( edm::Handle< reco::TrackCollection tkhandle,
const edm::OrphanHandle< reco::PreIdCollection > &  preidhandle,
edm::ValueMap< reco::PreIdRef >::Filler &  filler 
)
private

Definition at line 568 of file GoodSeedProducer.cc.

References DEFINE_FWK_MODULE, edm::helper::Filler< Map >::insert(), refMap_, and MuonErrorMatrixValues_cff::values.

Referenced by produce().

571 {
572  std::vector<reco::PreIdRef> values;
573 
574  unsigned ntracks=tracks->size();
575  for(unsigned itrack=0;itrack<ntracks;++itrack)
576  {
577  reco::TrackRef theTrackRef(tracks,itrack);
578  std::map<reco::TrackRef,unsigned>::const_iterator itcheck=refMap_.find(theTrackRef);
579  if(itcheck==refMap_.end())
580  {
581  // the track has been early discarded
582  values.push_back(reco::PreIdRef());
583  }
584  else
585  {
586  edm::Ref<reco::PreIdCollection> preIdRef(preidhandle,itcheck->second);
587  values.push_back(preIdRef);
588  // std::cout << " Checking Refs " << (theTrackRef==preIdRef->trackRef()) << std::endl;
589  }
590  }
591  filler.insert(tracks,values.begin(),values.end());
592 }
void insert(const H &h, I begin, I end)
Definition: ValueMap.h:53
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 552 of file GoodSeedProducer.cc.

References LogDebug.

Referenced by produce().

552  {
553  int ie=0;
554  int ip=0;
555  if (fabs(eta)<0.8) ie=0;
556  else{ if (fabs(eta)<1.479) ie=1;
557  else ie=2;
558  }
559  if (pt<6) ip=0;
560  else { if (pt<12) ip=1;
561  else ip=2;
562  }
563  int iep= ie*3+ip;
564  LogDebug("GoodSeedProducer")<<"Track pt ="<<pt<<" eta="<<eta<<" bin="<<iep;
565  return iep;
566 }
#define LogDebug(id)
static void GoodSeedProducer::globalEndJob ( goodseedhelpers::HeavyObjectCache const *  )
inlinestatic

Definition at line 78 of file GoodSeedProducer.h.

References objects.autophobj::filler, getBin(), and findQualityFiles::run.

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

Definition at line 74 of file GoodSeedProducer.h.

74  {
75  return std::unique_ptr<goodseedhelpers::HeavyObjectCache>(new goodseedhelpers::HeavyObjectCache(conf));
76  }
void GoodSeedProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 139 of file GoodSeedProducer.cc.

References funct::abs(), B_, ALCARECOTkAlJpsiMuMu_cff::charge, chikfred, chiRatio, chired, Trajectory::chiSquared(), TrajectorySmoother::clone(), TrajectoryFitter::clone(), clusThreshold_, constexpr, disablePreId_, dpt, runTauDisplay::dr, EE, eP, eta, edm::EventID::event(), f, fillPreIdRefValueMap(), Trajectory::firstMeasurement(), fitter_, fitterName_, objects.autophobj::float, edm::EventSetup::get(), getBin(), edm::Event::getByToken(), runTauDisplay::gp, h, hcalSimParameters_cfi::hb, hitCloner, mps_fire::i, edm::EventBase::id(), createfilelist::int, Trajectory::isValid(), Trajectory::lastMeasurement(), LogDebug, mag2(), seedCreatorFromRegionConsecutiveHitsEDProducer_cff::magneticField, maxEp_, maxEta_, maxPt_, Min_dr_, minEp_, minPt_, eostools::move(), nhit, PV3DBase< T, PVType, FrameType >::perp2(), pfCLusTagECLabel_, pfCLusTagHCLabel_, pfCLusTagPSLabel_, Pi, funct::pow(), preidckf_, preidgsf_, preidname_, produceCkfseed_, producePreId_, edm::Handle< T >::product(), edm::ESHandle< T >::product(), reco::PreId::pt(), pt, PtThresholdSavePredId_, edm::Event::put(), jets_cff::quality, rpcPointValidation_cfi::recHit, refMap_, resMapEtaECAL_, resMapPhiECAL_, edm::EventID::run(), RawParticle::setCharge(), reco::ElectronSeed::setCtfTrack(), reco::PreId::setECALMatching(), reco::PreId::setECALMatchingProperties(), reco::PreId::setFinalDecision(), reco::PreId::setMVA(), reco::PreId::setTrack(), reco::PreId::setTrackFiltering(), reco::PreId::setTrackProperties(), smoother_, smootherName_, mathSSE::sqrt(), thr, tmp, trackerRecHitBuilderName_, trackQuality_, tracksContainers_, trk_ecalDeta, trk_ecalDphi, TwoPi, csvLumiCalc::unit, TrackInfoProducer_cfi::updatedState, useQuality_, useTmva_, x, PV3DBase< T, PVType, FrameType >::x(), y, PV3DBase< T, PVType, FrameType >::y(), z, and PV3DBase< T, PVType, FrameType >::z().

140 {
141 
142  LogDebug("GoodSeedProducer")<<"START event: "<<iEvent.id().event()
143  <<" in run "<<iEvent.id().run();
144  //Create empty output collections
145  auto output_preid = std::make_unique<ElectronSeedCollection>();
146  auto output_nopre = std::make_unique<TrajectorySeedCollection>();
147  auto output_preidinfo = std::make_unique<PreIdCollection>();
148  auto preIdMap_p = std::make_unique<edm::ValueMap<reco::PreIdRef>>();
149  edm::ValueMap<reco::PreIdRef>::Filler mapFiller(*preIdMap_p);
150 
151  //Tracking Tools
152  if(!disablePreId_)
153  {
156  iSetup.get<TrajectoryFitter::Record>().get(fitterName_, aFitter);
157  iSetup.get<TrajectoryFitter::Record>().get(smootherName_, aSmoother);
158  smoother_.reset(aSmoother->clone());
159  fitter_ = aFitter->clone();
160  edm::ESHandle<TransientTrackingRecHitBuilder> theTrackerRecHitBuilder;
161  iSetup.get<TransientRecHitRecord>().get(trackerRecHitBuilderName_,theTrackerRecHitBuilder);
162  hitCloner = static_cast<TkTransientTrackingRecHitBuilder const *>(theTrackerRecHitBuilder.product())->cloner();
163  fitter_->setHitCloner(&hitCloner);
164  smoother_->setHitCloner(&hitCloner);
165  }
166 
167  // clear temporary maps
168  refMap_.clear();
169 
170  //Magnetic Field
172  iSetup.get<IdealMagneticFieldRecord>().get(magneticField);
173 
174  //Handle input collections
175  //ECAL clusters
176  Handle<PFClusterCollection> theECPfClustCollection;
177  iEvent.getByToken(pfCLusTagECLabel_,theECPfClustCollection);
178 
179 
180  vector<PFCluster const *> basClus;
181  for ( auto const & klus : *theECPfClustCollection.product() ) {
182  if(klus.correctedEnergy()>clusThreshold_) basClus.push_back(&klus);
183  }
184 
185  //HCAL clusters
186  Handle<PFClusterCollection> theHCPfClustCollection;
187  iEvent.getByToken(pfCLusTagHCLabel_,theHCPfClustCollection);
188 
189  //PS clusters
190  Handle<PFClusterCollection> thePSPfClustCollection;
191  iEvent.getByToken(pfCLusTagPSLabel_,thePSPfClustCollection);
192 
193  //Vector of track collections
194  for (unsigned int istr=0; istr<tracksContainers_.size();++istr){
195 
196  //Track collection
197  Handle<TrackCollection> tkRefCollection;
198  iEvent.getByToken(tracksContainers_[istr], tkRefCollection);
199  const TrackCollection& Tk=*(tkRefCollection.product());
200 
201  LogDebug("GoodSeedProducer")<<"Number of tracks in collection "
202  <<"tracksContainers_[" << istr << "] to be analyzed "
203  <<Tk.size();
204 
205  //loop over the track collection
206  for(unsigned int i=0;i<Tk.size();++i){
207  if (useQuality_ &&
208  (!(Tk[i].quality(trackQuality_)))) continue;
209 
210  reco::PreId myPreId;
211  bool GoodPreId=false;
212 
213  TrackRef trackRef(tkRefCollection, i);
214  math::XYZVectorF tkmom(Tk[i].momentum());
215  auto tketa= tkmom.eta();
216  auto tkpt = std::sqrt(tkmom.perp2());
217  auto const & Seed=(*trackRef->seedRef());
218  if(!disablePreId_)
219  {
220  int ipteta=getBin(Tk[i].eta(),Tk[i].pt());
221  int ibin=ipteta*9;
222 
223  float oPTOB=1.f/std::sqrt(Tk[i].innerMomentum().mag2()); // FIXME the original code was buggy should be outerMomentum...
224  // float chikfred=Tk[i].normalizedChi2();
225  float nchi=Tk[i].normalizedChi2();
226 
227  int nhitpi=Tk[i].found();
228  float EP=0;
229 
230  // set track info
231  myPreId.setTrack(trackRef);
232  //CLUSTERS - TRACK matching
233 
234  auto pfmass= 0.0005;
235  auto pfoutenergy=sqrt((pfmass*pfmass)+Tk[i].outerMomentum().Mag2());
236 
237  XYZTLorentzVector mom =XYZTLorentzVector(Tk[i].outerMomentum().x(),
238  Tk[i].outerMomentum().y(),
239  Tk[i].outerMomentum().z(),
240  pfoutenergy);
241  XYZTLorentzVector pos = XYZTLorentzVector(Tk[i].outerPosition().x(),
242  Tk[i].outerPosition().y(),
243  Tk[i].outerPosition().z(),
244  0.);
245 
246  BaseParticlePropagator theOutParticle( RawParticle(mom,pos),
247  0,0,B_.z());
248  theOutParticle.setCharge(Tk[i].charge());
249 
250  theOutParticle.propagateToEcalEntrance(false);
251 
252 
253 
254  float toteta=1000.f;
255  float totphi=1000.f;
256  float dr=1000.f;
257  float EE=0.f;
258  float feta=0.f;
259  GlobalPoint ElecTrkEcalPos(0,0,0);
260 
261  PFClusterRef clusterRef;
262  math::XYZPoint meanShowerSaved;
263  if(theOutParticle.getSuccess()!=0){
264  ElecTrkEcalPos=GlobalPoint(theOutParticle.vertex().x(),
265  theOutParticle.vertex().y(),
266  theOutParticle.vertex().z()
267  );
268 
269  constexpr float psLim = 2.50746495928f; // std::sinh(1.65f);
270  bool isBelowPS= (ElecTrkEcalPos.z()*ElecTrkEcalPos.z()) > (psLim*psLim)*ElecTrkEcalPos.perp2();
271  // bool isBelowPS=(std::abs(ElecTrkEcalPos.eta())>1.65f);
272 
273  unsigned clusCounter=0;
274  float max_ee = 0;
275  for(auto aClus : basClus) {
276 
277  float tmp_ep=float(aClus->correctedEnergy())*oPTOB;
278  if ((tmp_ep<minEp_)|(tmp_ep>maxEp_)) { ++clusCounter; continue;}
279 
280  double ecalShowerDepth
281  = PFCluster::getDepthCorrection(aClus->correctedEnergy(),
282  isBelowPS,
283  false);
284  auto mom = theOutParticle.momentum().Vect();
285  auto meanShower = ElecTrkEcalPos +
286  GlobalVector(mom.x(),mom.y(),mom.z()).unit()*ecalShowerDepth;
287 
288  float etarec=meanShower.eta();
289  float phirec=meanShower.phi();
290 
291 
292  float tmp_phi=std::abs(aClus->positionREP().phi()-phirec);
293  if (tmp_phi>float(TMath::Pi())) tmp_phi-= float(TMath::TwoPi());
294 
295  float tmp_dr=std::sqrt(std::pow(tmp_phi,2.f)+
296  std::pow(aClus->positionREP().eta()-etarec,2.f));
297 
298  if (tmp_dr<dr){
299  dr=tmp_dr;
300  if(dr < Min_dr_){ // find the most closest and energetic ECAL cluster
301  if(aClus->correctedEnergy() > max_ee){
302 
303  toteta=aClus->positionREP().eta()-etarec;
304  totphi=tmp_phi;
305  EP=tmp_ep;
306  EE=aClus->correctedEnergy();
307  feta= aClus->positionREP().eta();
308  clusterRef = PFClusterRef(theECPfClustCollection,clusCounter);
309  meanShowerSaved = meanShower;
310 
311  }
312  }
313  }
314  ++clusCounter;
315  }
316  }
317  float trk_ecalDeta_ = fabs(toteta);
318  float trk_ecalDphi_ = fabs(totphi);
319 
320  //Resolution maps
321  auto ecaletares
322  = resMapEtaECAL_->GetBinContent(resMapEtaECAL_->FindBin(feta,EE));
323  auto ecalphires
324  = resMapPhiECAL_->GetBinContent(resMapPhiECAL_->FindBin(feta,EE));
325 
326  //geomatrical compatibility
327  float chieta=(toteta!=1000.f)? toteta/ecaletares : toteta;
328  float chiphi=(totphi!=1000.f)? totphi/ecalphires : totphi;
329  float chichi= sqrt(chieta*chieta + chiphi*chiphi);
330 
331  //Matching criteria
332  float eta_cut = thr[ibin+0];
333  float phi_cut = thr[ibin+1];
334  float ep_cutmin=thr[ibin+2];
335  bool GoodMatching= ((trk_ecalDeta_<eta_cut) && (trk_ecalDphi_<phi_cut) && (EP>ep_cutmin) && (nhitpi>10));
336 
337  bool EcalMatching=GoodMatching;
338 
339  if (tkpt>maxPt_) GoodMatching=true;
340  if (tkpt<minPt_) GoodMatching=false;
341 
342 
343 
344  math::XYZPoint myPoint(ElecTrkEcalPos.x(),ElecTrkEcalPos.y(),ElecTrkEcalPos.z());
345  myPreId.setECALMatchingProperties(clusterRef,myPoint,meanShowerSaved,std::abs(toteta),std::abs(totphi),chieta,
346  chiphi,chichi,EP);
347  myPreId.setECALMatching(EcalMatching);
348 
349 
350  bool GoodRange= ((std::abs(tketa)<maxEta_) &
351  (tkpt>minPt_));
352  //KF FILTERING FOR UNMATCHED EVENTS
353  int hit1max=int(thr[ibin+3]);
354  float chiredmin=thr[ibin+4];
355  bool GoodKFFiltering =
356  ((nchi>chiredmin) | (nhitpi<hit1max));
357 
358 
359  myPreId.setTrackFiltering(GoodKFFiltering);
360 
361  bool GoodTkId= false;
362 
363  if((!GoodMatching) &&(GoodKFFiltering) &&(GoodRange)){
364  chired=1000;
365  chiRatio=1000;
366  dpt=0;
367  nhit=nhitpi;
368  chikfred = nchi;
369  trk_ecalDeta = trk_ecalDeta_;
370  trk_ecalDphi = trk_ecalDphi_;
371 
373  auto hb = Tk[i].recHitsBegin();
374  for(unsigned int h=0;h<Tk[i].recHitsSize();h++){
375  auto recHit = *(hb+h); tmp.push_back(recHit->cloneSH());
376  }
377  auto const & theTrack = Tk[i];
378  GlobalVector gv(theTrack.innerMomentum().x(),theTrack.innerMomentum().y(),theTrack.innerMomentum().z());
379  GlobalPoint gp(theTrack.innerPosition().x(),theTrack.innerPosition().y(),theTrack.innerPosition().z());
380  GlobalTrajectoryParameters gtps(gp,gv,theTrack.charge(),&*magneticField);
381  TrajectoryStateOnSurface tsos(gtps,theTrack.innerStateCovariance(),*tmp[0]->surface());
382  Trajectory && FitTjs= fitter_->fitOne(Seed,tmp,tsos);
383 
384  if(FitTjs.isValid()){
385  Trajectory && SmooTjs= smoother_->trajectory(FitTjs);
386  if(SmooTjs.isValid()){
387 
388  //Track refitted with electron hypothesis
389 
390  float pt_out=SmooTjs.firstMeasurement().
391  updatedState().globalMomentum().perp();
392  float pt_in=SmooTjs.lastMeasurement().
393  updatedState().globalMomentum().perp();
394  dpt=(pt_in>0) ? fabs(pt_out-pt_in)/pt_in : 0.;
395  // the following is simply the number of degrees of freedom
396  chiRatio=SmooTjs.chiSquared()/Tk[i].chi2();
398 
399  }
400  }
401 
402 
403  //TMVA Analysis
404  if(useTmva_){
405 
406  eta=tketa;
407  pt=tkpt;
408  eP=EP;
409  float vars[10] = { nhit, chikfred, dpt, eP, chiRatio, chired, trk_ecalDeta, trk_ecalDphi, pt, eta};
410 
411  float Ytmva = globalCache()->gbr[ipteta]->GetClassifier( vars );
412 
413  float BDTcut=thr[ibin+5];
414  if ( Ytmva>BDTcut) GoodTkId=true;
415  myPreId.setMVA(GoodTkId,Ytmva);
417  }else{
418 
419  float chiratiocut=thr[ibin+6];
420  float gschicut=thr[ibin+7];
421  float gsptmin=thr[ibin+8];
422 
423  GoodTkId=((dpt>gsptmin)&(chired<gschicut)&(chiRatio<chiratiocut));
424 
425  }
426  }
427 
428  GoodPreId= GoodTkId | GoodMatching;
429 
430  myPreId.setFinalDecision(GoodPreId);
431 
432 #ifdef EDM_ML_DEBUG
433  if(GoodPreId)
434  LogDebug("GoodSeedProducer")<<"Track (pt= "<<Tk[i].pt()<<
435  "GeV/c, eta= "<<Tk[i].eta() <<
436  ") preidentified for agreement between track and ECAL cluster";
437  if(GoodPreId &&(!GoodMatching))
438  LogDebug("GoodSeedProducer")<<"Track (pt= "<<Tk[i].pt()<<
439  "GeV/c, eta= "<<Tk[i].eta() <<
440  ") preidentified only for track properties";
441 #endif
442 
443  } // end of !disablePreId_
444 
445 
446  if (GoodPreId){
447  //NEW SEED with n hits
448  ElectronSeed NewSeed(Seed);
449  NewSeed.setCtfTrack(trackRef);
450  output_preid->push_back(NewSeed);
451  }else{
452  if (produceCkfseed_){
453  output_nopre->push_back(Seed);
454  }
455  }
456  if(producePreId_ && myPreId.pt()>PtThresholdSavePredId_)
457  {
458  // save the index of the PreId object as to be able to create a Ref later
459  refMap_[trackRef] = output_preidinfo->size();
460  output_preidinfo->push_back(myPreId);
461  }
462  } //end loop on track collection
463  } //end loop on the vector of track collections
464 
465  // no disablePreId_ switch, it is simpler to have an empty collection rather than no collection
466  iEvent.put(std::move(output_preid),preidgsf_);
467  if (produceCkfseed_)
468  iEvent.put(std::move(output_nopre),preidckf_);
469  if(producePreId_)
470  {
471  const edm::OrphanHandle<reco::PreIdCollection> preIdRefProd = iEvent.put(std::move(output_preidinfo),preidname_);
472  // now make the Value Map, but only if one input collection
473  if(tracksContainers_.size()==1)
474  {
475  Handle<TrackCollection> tkRefCollection ;
476  iEvent.getByToken(tracksContainers_[0],tkRefCollection);
477  fillPreIdRefValueMap(tkRefCollection,preIdRefProd,mapFiller);
478  mapFiller.fill();
479  iEvent.put(std::move(preIdMap_p),preidname_);
480  }
481  }
482  // clear temporary maps
483  refMap_.clear();
484 }
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:39
const double TwoPi
const double Pi
void setCharge(float q)
set the MEASURED charge
Definition: RawParticle.cc:139
EventNumber_t event() const
Definition: EventID.h:41
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:137
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:38
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
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:579
float eP
VARIABLES NEEDED FOR TMVA.
std::unique_ptr< TrajectorySmoother > smoother_
Smoother.
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::unique_ptr< PFResolutionMap > resMapEtaECAL_
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
float thr[150]
vector of thresholds for different bins of eta and pt
#define constexpr
TkClonerImpl hitCloner
virtual TrajectorySmoother * clone() const =0
void setTrack(reco::TrackRef trackref)
Definition: PreId.h:34
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
virtual std::unique_ptr< TrajectoryFitter > clone() const =0
int getBin(float, float)
Find the bin in pt and eta.
std::unique_ptr< TrajectoryFitter > fitter_
Fitter.
void setMVA(bool accepted, float mva, unsigned n=0)
Definition: PreId.h:72
void setTrackFiltering(bool accepted, unsigned n=0)
Definition: PreId.h:68
T sqrt(T t)
Definition: SSEVec.h:18
edm::Ref< PFClusterCollection > PFClusterRef
persistent reference to PFCluster objects
Definition: PFClusterFwd.h:15
math::XYZVector B_
B field.
std::string preidname_
Name of the preid Collection (FB)
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:174
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
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]
double minPt_
Minimum transverse momentum and maximum pseudorapidity.
std::string fitterName_
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:17
reco::TrackBase::TrackQuality trackQuality_
double clusThreshold_
Cut on the energy of the clusters.
bool produceCkfseed_
Produce the Seed for Ckf tracks?
bool isValid() const
Definition: Trajectory.h:279
TrajectoryMeasurement const & firstMeasurement() const
Definition: Trajectory.h:187
float pt() const
Definition: PreId.h:92
T const * product() const
Definition: Handle.h:81
bool useTmva_
USE OF TMVA.
std::unique_ptr< PFResolutionMap > resMapPhiECAL_
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
float chiSquared() const
Definition: Trajectory.h:262
TrackingRecHit::ConstRecHitContainer ConstRecHitContainer
Definition: Trajectory.h:45
std::vector< edm::EDGetTokenT< reco::TrackCollection > > tracksContainers_
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
void setTrackProperties(float newchi2, float chi2ratio, float dpt)
Definition: PreId.h:50
edm::EventID id() const
Definition: EventBase.h:60
void setECALMatching(bool accepted, unsigned n=0)
Definition: PreId.h:60
std::map< reco::TrackRef, unsigned > refMap_
Map used to create the TrackRef, PreIdRef value map.
T get() const
Definition: EventSetup.h:62
bool producePreId_
Produce the pre-id debugging collection.
std::string trackerRecHitBuilderName_
std::string smootherName_
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagHCLabel_
std::string preidgsf_
Name of the Seed(Gsf) Collection.
T const * product() const
Definition: ESHandle.h:86
edm::EDGetTokenT< reco::PFClusterCollection > pfCLusTagECLabel_
double minEp_
Min and MAx allowed values forEoverP.
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
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:56

Member Data Documentation

math::XYZVector GoodSeedProducer::B_
private

B field.

Definition at line 184 of file GoodSeedProducer.h.

Referenced by beginRun(), and produce().

float GoodSeedProducer::chikfred
private
float GoodSeedProducer::chiRatio
private
float GoodSeedProducer::chired
private
double GoodSeedProducer::clusThreshold_
private

Cut on the energy of the clusters.

Definition at line 131 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

edm::ParameterSet GoodSeedProducer::conf_
private

Definition at line 153 of file GoodSeedProducer.h.

Referenced by beginRun().

bool GoodSeedProducer::disablePreId_
private

switch to disable the pre-id

Definition at line 141 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

float GoodSeedProducer::dpt
private
double GoodSeedProducer::EcalStripSumE_deltaEta_
private

Definition at line 124 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

double GoodSeedProducer::EcalStripSumE_deltaPhiOverQ_maxValue_
private

Definition at line 126 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

double GoodSeedProducer::EcalStripSumE_deltaPhiOverQ_minValue_
private

Definition at line 125 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

double GoodSeedProducer::EcalStripSumE_minClusEnergy_
private

Definition at line 123 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

float GoodSeedProducer::eP
private

VARIABLES NEEDED FOR TMVA.

Definition at line 173 of file GoodSeedProducer.h.

Referenced by goodseedhelpers::HeavyObjectCache::HeavyObjectCache(), and produce().

float GoodSeedProducer::eta
private
std::unique_ptr<TrajectoryFitter> GoodSeedProducer::fitter_
private

Fitter.

Definition at line 103 of file GoodSeedProducer.h.

Referenced by produce().

std::string GoodSeedProducer::fitterName_
private

Definition at line 160 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::HcalIsolWindow_
private

Definition at line 122 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

TkClonerImpl GoodSeedProducer::hitCloner
private

Definition at line 109 of file GoodSeedProducer.h.

Referenced by produce().

double GoodSeedProducer::maxEp_
private

Definition at line 135 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::maxEta_
private

Definition at line 120 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::maxHoverP_
private

Definition at line 128 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

double GoodSeedProducer::maxPt_
private

Definition at line 119 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

std::string GoodSeedProducer::method_
private

TMVA method.

Definition at line 181 of file GoodSeedProducer.h.

Referenced by goodseedhelpers::HeavyObjectCache::HeavyObjectCache().

double GoodSeedProducer::Min_dr_
private

Definition at line 175 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::minEoverP_
private

Definition at line 127 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

double GoodSeedProducer::minEp_
private

Min and MAx allowed values forEoverP.

Definition at line 134 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

double GoodSeedProducer::minPt_
private

Minimum transverse momentum and maximum pseudorapidity.

Definition at line 118 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

float GoodSeedProducer::nhit
private
int GoodSeedProducer::nHitsInSeed_
private

Number of hits in the seed;.

Definition at line 115 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

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

Definition at line 155 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 156 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 154 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

PFGeometry GoodSeedProducer::pfGeometry_
private

Definition at line 189 of file GoodSeedProducer.h.

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

PFTrackTransformer.

Definition at line 112 of file GoodSeedProducer.h.

Referenced by beginRun().

std::string GoodSeedProducer::preidckf_
private

Name of the Seed(Ckf) Collection.

Definition at line 94 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

std::string GoodSeedProducer::preidgsf_
private

Name of the Seed(Gsf) Collection.

Definition at line 97 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

std::string GoodSeedProducer::preidname_
private

Name of the preid Collection (FB)

Definition at line 100 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

bool GoodSeedProducer::produceCkfseed_
private

Produce the Seed for Ckf tracks?

Definition at line 138 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

bool GoodSeedProducer::producePreId_
private

Produce the pre-id debugging collection.

Definition at line 144 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

std::string GoodSeedProducer::propagatorName_
private

Definition at line 162 of file GoodSeedProducer.h.

float GoodSeedProducer::pt
private
double GoodSeedProducer::PtThresholdSavePredId_
private

Threshold to save Pre Idinfo.

Definition at line 147 of file GoodSeedProducer.h.

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 187 of file GoodSeedProducer.h.

Referenced by fillPreIdRefValueMap(), and produce().

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

Definition at line 165 of file GoodSeedProducer.h.

Referenced by beginRun(), and produce().

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

Definition at line 166 of file GoodSeedProducer.h.

Referenced by beginRun(), and produce().

std::unique_ptr<TrajectorySmoother> GoodSeedProducer::smoother_
private

Smoother.

Definition at line 106 of file GoodSeedProducer.h.

Referenced by produce().

std::string GoodSeedProducer::smootherName_
private

Definition at line 161 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

float GoodSeedProducer::thr[150]
private

vector of thresholds for different bins of eta and pt

Definition at line 150 of file GoodSeedProducer.h.

Referenced by beginRun(), and produce().

std::string GoodSeedProducer::trackerRecHitBuilderName_
private

Definition at line 163 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 170 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 158 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

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

Definition at line 157 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer().

float GoodSeedProducer::trk_ecalDeta
private
float GoodSeedProducer::trk_ecalDphi
private
bool GoodSeedProducer::useQuality_
private

TRACK QUALITY.

Definition at line 169 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().

bool GoodSeedProducer::useTmva_
private

USE OF TMVA.

Definition at line 178 of file GoodSeedProducer.h.

Referenced by GoodSeedProducer(), and produce().