CMS 3D CMS Logo

ConvBremPFTrackFinder.cc
Go to the documentation of this file.
3 
13 #include "TMath.h"
15 #include "TMVA/MethodBDT.h"
16 
17 using namespace edm;
18 using namespace std;
19 using namespace reco;
20 
22  double mvaBremConvCutBarrelLowPt,
23  double mvaBremConvCutBarrelHighPt,
24  double mvaBremConvCutEndcapsLowPt,
25  double mvaBremConvCutEndcapsHighPt)
26  : builder_(builder),
27  mvaBremConvCutBarrelLowPt_(mvaBremConvCutBarrelLowPt),
28  mvaBremConvCutBarrelHighPt_(mvaBremConvCutBarrelHighPt),
29  mvaBremConvCutEndcapsLowPt_(mvaBremConvCutEndcapsLowPt),
30  mvaBremConvCutEndcapsHighPt_(mvaBremConvCutEndcapsHighPt) {}
32 
39  bool useNuclear,
40  bool useConversions,
41  bool useV0,
42  const reco::PFClusterCollection& theEClus,
43  const reco::GsfPFRecTrack& gsfpfrectk) {
44  found_ = false;
45  bool debug = false;
46  bool debugRef = false;
47 
48  if (debug)
49  cout << "runConvBremFinder:: Entering " << endl;
50 
51  const reco::GsfTrackRef& refGsf = gsfpfrectk.gsfTrackRef();
52  const reco::PFRecTrackRef& pfTrackRef = gsfpfrectk.kfPFRecTrackRef();
53  vector<PFBrem> primPFBrem = gsfpfrectk.PFRecBrem();
54 
55  const PFRecTrackCollection& PfRTkColl = *(thePfRecTrackCol.product());
56  reco::PFRecTrackCollection::const_iterator pft = PfRTkColl.begin();
57  reco::PFRecTrackCollection::const_iterator pftend = PfRTkColl.end();
58  //PFEnergyCalibration pfcalib_;
59 
60  vector<PFRecTrackRef> AllPFRecTracks;
61  AllPFRecTracks.clear();
62  unsigned int ipft = 0;
63 
64  for (; pft != pftend; ++pft, ipft++) {
65  // do not consider the kf track already associated to the seed
66  if (pfTrackRef.isNonnull())
67  if (pfTrackRef->trackRef() == pft->trackRef())
68  continue;
69 
70  PFRecTrackRef pfRecTrRef(thePfRecTrackCol, ipft);
71  TrackRef trackRef = pfRecTrRef->trackRef();
72  reco::TrackBaseRef selTrackBaseRef(trackRef);
73 
74  if (debug)
75  cout << "runConvBremFinder:: pushing_back High Purity " << pft->trackRef()->pt() << " eta,phi "
76  << pft->trackRef()->eta() << ", " << pft->trackRef()->phi() << " Memory Address Ref " << &*trackRef
77  << " Memory Address BaseRef " << &*selTrackBaseRef << endl;
78  AllPFRecTracks.push_back(pfRecTrRef);
79  }
80 
81  if (useConversions) {
82  const PFConversionCollection& PfConvColl = *(pfConversions.product());
83  for (unsigned i = 0; i < PfConvColl.size(); i++) {
85 
86  unsigned int trackSize = (convRef->pfTracks()).size();
87  if (convRef->pfTracks().size() < 2)
88  continue;
89  for (unsigned iTk = 0; iTk < trackSize; iTk++) {
90  PFRecTrackRef compPFTkRef = convRef->pfTracks()[iTk];
91  reco::TrackBaseRef newTrackBaseRef(compPFTkRef->trackRef());
92  // do not consider the kf track already associated to the seed
93  if (pfTrackRef.isNonnull()) {
94  reco::TrackBaseRef primaryTrackBaseRef(pfTrackRef->trackRef());
95  if (primaryTrackBaseRef == newTrackBaseRef)
96  continue;
97  }
98  bool notFound = true;
99  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
100  reco::TrackBaseRef selTrackBaseRef(AllPFRecTracks[iPF]->trackRef());
101 
102  if (debugRef)
103  cout << "## Track 1 HP pt " << AllPFRecTracks[iPF]->trackRef()->pt() << " eta, phi "
104  << AllPFRecTracks[iPF]->trackRef()->eta() << ", " << AllPFRecTracks[iPF]->trackRef()->phi()
105  << " Memory Address Ref " << &(*AllPFRecTracks[iPF]->trackRef()) << " Memory Address BaseRef "
106  << &*selTrackBaseRef << endl;
107  if (debugRef)
108  cout << "** Track 2 CONV pt " << compPFTkRef->trackRef()->pt() << " eta, phi "
109  << compPFTkRef->trackRef()->eta() << ", " << compPFTkRef->trackRef()->phi() << " Memory Address Ref "
110  << &*compPFTkRef->trackRef() << " Memory Address BaseRef " << &*newTrackBaseRef << endl;
111  //if(selTrackBaseRef == newTrackBaseRef || AllPFRecTracks[iPF]->trackRef()== compPFTkRef->trackRef()) {
112  if (AllPFRecTracks[iPF]->trackRef() == compPFTkRef->trackRef()) {
113  if (debugRef)
114  cout << " SAME BREM REF " << endl;
115  notFound = false;
116  }
117  }
118  if (notFound) {
119  if (debug)
120  cout << "runConvBremFinder:: pushing_back Conversions " << compPFTkRef->trackRef()->pt() << " eta,phi "
121  << compPFTkRef->trackRef()->eta() << " phi " << compPFTkRef->trackRef()->phi() << endl;
122  AllPFRecTracks.push_back(compPFTkRef);
123  }
124  }
125  }
126  }
127 
128  if (useNuclear) {
129  const PFDisplacedTrackerVertexCollection& PfNuclColl = *(pfNuclears.product());
130  for (unsigned i = 0; i < PfNuclColl.size(); i++) {
131  const reco::PFDisplacedTrackerVertexRef dispacedVertexRef(pfNuclears, i);
132  unsigned int trackSize = dispacedVertexRef->pfRecTracks().size();
133  for (unsigned iTk = 0; iTk < trackSize; iTk++) {
134  reco::PFRecTrackRef newPFRecTrackRef = dispacedVertexRef->pfRecTracks()[iTk];
135  reco::TrackBaseRef newTrackBaseRef(newPFRecTrackRef->trackRef());
136  // do not consider the kf track already associated to the seed
137  if (pfTrackRef.isNonnull()) {
138  reco::TrackBaseRef primaryTrackBaseRef(pfTrackRef->trackRef());
139  if (primaryTrackBaseRef == newTrackBaseRef)
140  continue;
141  }
142  bool notFound = true;
143  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
144  reco::TrackBaseRef selTrackBaseRef(AllPFRecTracks[iPF]->trackRef());
145  if (selTrackBaseRef == newTrackBaseRef)
146  notFound = false;
147  }
148  if (notFound) {
149  if (debug)
150  cout << "runConvBremFinder:: pushing_back displaced Vertex pt " << newPFRecTrackRef->trackRef()->pt()
151  << " eta,phi " << newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi()
152  << endl;
153  AllPFRecTracks.push_back(newPFRecTrackRef);
154  }
155  }
156  }
157  }
158 
159  if (useV0) {
160  const PFV0Collection& PfV0Coll = *(pfV0.product());
161  for (unsigned i = 0; i < PfV0Coll.size(); i++) {
162  reco::PFV0Ref v0Ref(pfV0, i);
163  unsigned int trackSize = (v0Ref->pfTracks()).size();
164  for (unsigned iTk = 0; iTk < trackSize; iTk++) {
165  reco::PFRecTrackRef newPFRecTrackRef = (v0Ref->pfTracks())[iTk];
166  reco::TrackBaseRef newTrackBaseRef(newPFRecTrackRef->trackRef());
167  // do not consider the kf track already associated to the seed
168  if (pfTrackRef.isNonnull()) {
169  reco::TrackBaseRef primaryTrackBaseRef(pfTrackRef->trackRef());
170  if (primaryTrackBaseRef == newTrackBaseRef)
171  continue;
172  }
173  bool notFound = true;
174  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
175  reco::TrackBaseRef selTrackBaseRef(AllPFRecTracks[iPF]->trackRef());
176  if (selTrackBaseRef == newTrackBaseRef)
177  notFound = false;
178  }
179  if (notFound) {
180  if (debug)
181  cout << "runConvBremFinder:: pushing_back V0 " << newPFRecTrackRef->trackRef()->pt() << " eta,phi "
182  << newPFRecTrackRef->trackRef()->eta() << ", " << newPFRecTrackRef->trackRef()->phi() << endl;
183  AllPFRecTracks.push_back(newPFRecTrackRef);
184  }
185  }
186  }
187  }
188 
189  pfRecTrRef_vec_.clear();
190 
191  for (unsigned iPF = 0; iPF < AllPFRecTracks.size(); iPF++) {
192  double dphi = fabs(AllPFRecTracks[iPF]->trackRef()->phi() - refGsf->phi());
193  if (dphi > TMath::Pi())
194  dphi -= TMath::TwoPi();
195  double deta = fabs(AllPFRecTracks[iPF]->trackRef()->eta() - refGsf->eta());
196 
197  // limiting the phase space (just for saving cpu-time)
198  if (fabs(dphi) > 1.0 || fabs(deta) > 0.4)
199  continue;
200 
201  double minDEtaBremKF = 1000.;
202  double minDPhiBremKF = 1000.;
203  double minDRBremKF = 1000.;
204  double minDEtaBremKFPos = 1000.;
205  double minDPhiBremKFPos = 1000.;
206  double minDRBremKFPos = 1000.;
207  reco::TrackRef trkRef = AllPFRecTracks[iPF]->trackRef();
208 
209  double secEta = trkRef->innerMomentum().eta();
210  double secPhi = trkRef->innerMomentum().phi();
211 
212  for (unsigned ipbrem = 0; ipbrem < primPFBrem.size(); ipbrem++) {
213  if (primPFBrem[ipbrem].indTrajPoint() == 99)
214  continue;
215  const reco::PFTrajectoryPoint& atPrimECAL =
216  primPFBrem[ipbrem].extrapolatedPoint(reco::PFTrajectoryPoint::ECALEntrance);
217  if (!atPrimECAL.isValid())
218  continue;
219  double bremEta = atPrimECAL.momentum().Eta();
220  double bremPhi = atPrimECAL.momentum().Phi();
221 
222  double deta = fabs(bremEta - secEta);
223  double dphi = fabs(bremPhi - secPhi);
224  if (dphi > TMath::Pi())
225  dphi -= TMath::TwoPi();
226  double DR = sqrt(deta * deta + dphi * dphi);
227 
228  double detaPos = fabs(bremEta - trkRef->innerPosition().eta());
229  double dphiPos = fabs(bremPhi - trkRef->innerPosition().phi());
230  if (dphiPos > TMath::Pi())
231  dphiPos -= TMath::TwoPi();
232  double DRPos = sqrt(detaPos * detaPos + dphiPos * dphiPos);
233 
234  // find the closest track tangent
235  if (DR < minDRBremKF) {
236  minDRBremKF = DR;
237  minDEtaBremKF = deta;
238  minDPhiBremKF = fabs(dphi);
239  }
240 
241  if (DRPos < minDRBremKFPos) {
242  minDRBremKFPos = DR;
243  minDEtaBremKFPos = detaPos;
244  minDPhiBremKFPos = fabs(dphiPos);
245  }
246  }
247 
248  //gsfR
249  float gsfR = sqrt(refGsf->innerPosition().x() * refGsf->innerPosition().x() +
250  refGsf->innerPosition().y() * refGsf->innerPosition().y());
251 
252  // secR
253  secR = sqrt(trkRef->innerPosition().x() * trkRef->innerPosition().x() +
254  trkRef->innerPosition().y() * trkRef->innerPosition().y());
255 
256  // apply loose selection (to be parallel) between the secondary track and brem-tangents.
257  // Moreover if the secR is internal with respect to the GSF track by two pixel layers discard it.
258  if ((minDPhiBremKF < 0.1 || minDPhiBremKFPos < 0.1) && (minDEtaBremKF < 0.02 || minDEtaBremKFPos < 0.02) &&
259  secR > (gsfR - 8)) {
260  if (debug)
261  cout << "runConvBremFinder:: OK Find track and BREM close "
262  << " MinDphi " << minDPhiBremKF << " MinDeta " << minDEtaBremKF << endl;
263 
264  float MinDist = 100000.;
265  float EE_calib = 0.;
266  PFRecTrack pfrectrack = *AllPFRecTracks[iPF];
267  pfrectrack.calculatePositionREP();
268  // Find and ECAL associated cluster
269  for (PFClusterCollection::const_iterator clus = theEClus.begin(); clus != theEClus.end(); clus++) {
270  // Removed unusd variable, left this in case it has side effects
271  clus->position();
272  double dist = -1.;
273  PFCluster clust = *clus;
274  clust.calculatePositionREP();
276  ? LinkByRecHit::testTrackAndClusterByRecHit(pfrectrack, clust)
277  : -1.;
278 
279  if (dist > 0. && dist < MinDist) {
280  MinDist = dist;
281  EE_calib = cache->pfcalib_->energyEm(*clus, 0.0, 0.0, false);
282  }
283  }
284  if (MinDist > 0. && MinDist < 100000.) {
285  // compute all the input variables for conv brem selection
286 
287  secPout = sqrt(trkRef->outerMomentum().x() * trkRef->outerMomentum().x() +
288  trkRef->outerMomentum().y() * trkRef->outerMomentum().y() +
289  trkRef->outerMomentum().z() * trkRef->outerMomentum().z());
290 
291  secPin = sqrt(trkRef->innerMomentum().x() * trkRef->innerMomentum().x() +
292  trkRef->innerMomentum().y() * trkRef->innerMomentum().y() +
293  trkRef->innerMomentum().z() * trkRef->innerMomentum().z());
294 
295  // maybe put innter momentum pt?
296  ptRatioGsfKF = trkRef->pt() / (refGsf->ptMode());
297 
298  Vertex dummy;
299  const Vertex* pv = &dummy;
301  if (!primaryVertex->empty()) {
302  pv = &*primaryVertex->begin();
303  // we always use the first vertex (at the moment)
305  } else { // create a dummy PV
307  e(0, 0) = 0.0015 * 0.0015;
308  e(1, 1) = 0.0015 * 0.0015;
309  e(2, 2) = 15. * 15.;
310  Vertex::Point p(0, 0, 0);
311  dummy = Vertex(p, e, 0, 0, 0);
312  }
313 
314  // direction of the Gsf track
315  GlobalVector direction(refGsf->innerMomentum().x(), refGsf->innerMomentum().y(), refGsf->innerMomentum().z());
316 
317  TransientTrack transientTrack = builder_.build(*trkRef);
318  sTIP = IPTools::signedTransverseImpactParameter(transientTrack, direction, *pv).second.significance();
319 
320  Epout = EE_calib / secPout;
321 
322  // eta distance brem-secondary kf track
323  detaBremKF = minDEtaBremKF;
324 
325  // Number of commont hits
326  unsigned int tmpSh = 0;
327  //uint ish=0;
328  int kfhitcounter = 0;
329  for (auto const& nhit : refGsf->recHits())
330  if (nhit->isValid()) {
331  kfhitcounter = 0;
332  for (auto const& ihit : trkRef->recHits())
333  if (ihit->isValid()) {
334  // method 1
335  if (nhit->sharesInput(ihit, TrackingRecHit::all))
336  tmpSh++;
337  kfhitcounter++;
338  // method 2 to switch in case of problem with rechit collections
339  // if((ihit->geographicalId()==nhit->geographicalId())&&
340  // ((nhit->localPosition()-ihit->localPosition()).mag()<0.01)) ish++;
341  }
342  }
343 
344  nHITS1 = tmpSh;
345 
346  TString weightfilepath = "";
347  double mvaValue = -10;
348  double cutvalue = -10;
349 
350  float vars[6] = {secR, sTIP, nHITS1, Epout, detaBremKF, ptRatioGsfKF};
351  if (refGsf->pt() < 20 && fabs(refGsf->eta()) < 1.479) {
352  mvaValue = cache->gbrBarrelLowPt_->GetClassifier(vars);
353  cutvalue = mvaBremConvCutBarrelLowPt_;
354  }
355  if (refGsf->pt() > 20 && fabs(refGsf->eta()) < 1.479) {
356  mvaValue = cache->gbrBarrelHighPt_->GetClassifier(vars);
357  cutvalue = mvaBremConvCutBarrelHighPt_;
358  }
359  if (refGsf->pt() < 20 && fabs(refGsf->eta()) > 1.479) {
360  mvaValue = cache->gbrEndcapsLowPt_->GetClassifier(vars);
361  cutvalue = mvaBremConvCutEndcapsLowPt_;
362  }
363  if (refGsf->pt() > 20 && fabs(refGsf->eta()) > 1.479) {
364  mvaValue = cache->gbrEndcapsHighPt_->GetClassifier(vars);
365  cutvalue = mvaBremConvCutEndcapsHighPt_;
366  }
367 
368  if (debug)
369  cout << "Gsf track Pt, Eta " << refGsf->pt() << " " << refGsf->eta() << endl;
370  if (debug)
371  cout << "Cutvalue " << cutvalue << endl;
372 
373  if ((kfhitcounter - nHITS1) <= 3 && nHITS1 > 3)
374  mvaValue = 2; // this means duplicates tracks, very likely not physical
375 
376  if (debug)
377  cout << " The input variables for conv brem tracks identification " << endl
378  << " secR " << secR << " gsfR " << gsfR << endl
379  << " N shared hits " << nHITS1 << endl
380  << " sTIP " << sTIP << endl
381  << " detaBremKF " << detaBremKF << endl
382  << " E/pout " << Epout << endl
383  << " ptRatioKFGsf " << ptRatioGsfKF << endl
384  << " ***** MVA ***** " << mvaValue << endl;
385 
386  if (mvaValue > cutvalue) {
387  found_ = true;
388  pfRecTrRef_vec_.push_back(AllPFRecTracks[iPF]);
389  }
390  } // end MinDIST
391  } // end selection kf - brem tangents
392  } // loop on the kf tracks
393 }
Vector3DBase
Definition: Vector3DBase.h:8
reco::PFClusterCollection
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
Definition: PFClusterFwd.h:9
RecoParticleFlow_conversion_cff.useConversions
useConversions
Definition: RecoParticleFlow_conversion_cff.py:8
reco::PFTrack::extrapolatedPoint
const reco::PFTrajectoryPoint & extrapolatedPoint(unsigned layerid) const
Definition: PFTrack.cc:58
mps_fire.i
i
Definition: mps_fire.py:355
ConvBremPFTrackFinder::ptRatioGsfKF
float ptRatioGsfKF
Definition: ConvBremPFTrackFinder.h:91
reco::PFTrack::calculatePositionREP
void calculatePositionREP()
Definition: PFTrack.cc:52
MessageLogger.h
TwoPi
const double TwoPi
Definition: CosmicMuonParameters.h:19
reco::PFDisplacedTrackerVertexCollection
std::vector< PFDisplacedTrackerVertex > PFDisplacedTrackerVertexCollection
collection of DisplacedTrackerVertexs
Definition: PFDisplacedTrackerVertex.h:44
reco::PFTrajectoryPoint::momentum
const math::XYZTLorentzVector & momentum() const
4-momenta quadrivector
Definition: PFTrajectoryPoint.h:109
edm::Handle::product
T const * product() const
Definition: Handle.h:70
ESHandle.h
ConvBremPFTrackFinder::detaBremKF
float detaBremKF
Definition: ConvBremPFTrackFinder.h:91
edm
HLT enums.
Definition: AlignableModifier.h:19
reco::Vertex::Error
math::Error< dimension >::type Error
covariance error matrix (3x3)
Definition: Vertex.h:44
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
ConvBremPFTrackFinder::pfRecTrRef_vec_
std::vector< reco::PFRecTrackRef > pfRecTrRef_vec_
Definition: ConvBremPFTrackFinder.h:90
reco::GsfPFRecTrack::PFRecBrem
const std::vector< reco::PFBrem > & PFRecBrem() const
Definition: GsfPFRecTrack.h:45
gather_cfg.cout
cout
Definition: gather_cfg.py:144
ConvBremPFTrackFinder::mvaBremConvCutEndcapsHighPt_
double mvaBremConvCutEndcapsHighPt_
Definition: ConvBremPFTrackFinder.h:87
LinkByRecHit::testTrackAndClusterByRecHit
static double testTrackAndClusterByRecHit(const reco::PFRecTrack &track, const reco::PFCluster &cluster, bool isBrem=false, bool debug=false)
Definition: LinkByRecHit.cc:16
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
IPTools::signedTransverseImpactParameter
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:57
edm::Handle
Definition: AssociativeIterator.h:50
ConvBremPFTrackFinder::runConvBremFinder
void runConvBremFinder(const edm::Handle< reco::PFRecTrackCollection > &thePfRecTrackCol, const edm::Handle< reco::VertexCollection > &primaryVertex, const edm::Handle< reco::PFDisplacedTrackerVertexCollection > &pfNuclears, const edm::Handle< reco::PFConversionCollection > &pfConversions, const edm::Handle< reco::PFV0Collection > &pfV0, const convbremhelpers::HeavyObjectCache *cache, bool useNuclear, bool useConversions, bool useV0, const reco::PFClusterCollection &theEClus, const reco::GsfPFRecTrack &gsfpfrectk)
Definition: ConvBremPFTrackFinder.cc:33
RecoParticleFlow_cff.useNuclear
useNuclear
Definition: RecoParticleFlow_cff.py:81
PFRecHit.h
reco::GsfPFRecTrack
Definition: GsfPFRecTrack.h:24
ElectronSeedFwd.h
edm::Ref< GsfTrackCollection >
BeamMonitor_cff.primaryVertex
primaryVertex
hltOfflineBeamSpot for HLTMON
Definition: BeamMonitor_cff.py:7
reco::PFConversionCollection
std::vector< PFConversion > PFConversionCollection
collection of PFConversion objects
Definition: PFConversionFwd.h:9
ConvBremPFTrackFinder::ConvBremPFTrackFinder
ConvBremPFTrackFinder(const TransientTrackBuilder &builder, double mvaBremConvCutBarrelLowPt, double mvaBremConvCutBarrelHighPt, double mvaBremConvCutEndcapsLowPt, double mvaBremConvCutEndcapsHighPt)
Definition: ConvBremPFTrackFinder.cc:21
PFEnergyCalibration.h
debug
#define debug
Definition: HDRShower.cc:19
reco::GsfPFRecTrack::gsfTrackRef
const reco::GsfTrackRef & gsfTrackRef() const
Definition: GsfPFRecTrack.h:34
vars
vars
Definition: DeepTauId.cc:158
PVValHelper::eta
Definition: PVValidationHelpers.h:69
ConvBremPFTrackFinder::mvaBremConvCutBarrelLowPt_
double mvaBremConvCutBarrelLowPt_
Definition: ConvBremPFTrackFinder.h:87
reco::PFTrajectoryPoint::ECALShowerMax
Definition: PFTrajectoryPoint.h:46
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
ConvBremPFTrackFinder::nHITS1
float nHITS1
Definition: ConvBremPFTrackFinder.h:93
utilities.cache
def cache(function)
Definition: utilities.py:3
TrackingRecHit::all
Definition: TrackingRecHit.h:59
pfV0_cfi.pfV0
pfV0
Definition: pfV0_cfi.py:3
ConvBremPFTrackFinder.h
ConvBremPFTrackFinder::secPin
float secPin
Definition: ConvBremPFTrackFinder.h:91
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
ConvBremPFTrackFinder::sTIP
float sTIP
Definition: ConvBremPFTrackFinder.h:91
LinkByRecHit.h
reco::PFCluster::calculatePositionREP
void calculatePositionREP()
computes posrep_ once and for all
Definition: PFCluster.h:99
notFound
static const GlobalPoint notFound(0, 0, 0)
MetAnalyzer.pv
def pv(vc)
Definition: MetAnalyzer.py:7
ConvBremPFTrackFinder::mvaBremConvCutBarrelHighPt_
double mvaBremConvCutBarrelHighPt_
Definition: ConvBremPFTrackFinder.h:87
GsfTrack.h
ConvBremPFTrackFinder::builder_
TransientTrackBuilder builder_
Definition: ConvBremPFTrackFinder.h:86
TransientTrackBuilder
Definition: TransientTrackBuilder.h:16
convbremhelpers::HeavyObjectCache
Definition: ConvBremHeavyObjectCache.h:10
pfConversions_cfi.pfConversions
pfConversions
Definition: pfConversions_cfi.py:6
pfTrackElec_cfi.useV0
useV0
Definition: pfTrackElec_cfi.py:29
TransientTrackRecord.h
ConvBremPFTrackFinder::found_
bool found_
Definition: ConvBremPFTrackFinder.h:85
reco::PFTrajectoryPoint::isValid
bool isValid() const
is this point valid ?
Definition: PFTrajectoryPoint.h:84
reco::PFV0Collection
std::vector< PFV0 > PFV0Collection
collection of PFV0 objects
Definition: PFV0Fwd.h:9
DDAxes::phi
reco::PFTrajectoryPoint::ECALEntrance
ECAL front face.
Definition: PFTrajectoryPoint.h:43
reco::Vertex::Point
math::XYZPoint Point
point in the space
Definition: Vertex.h:40
std
Definition: JetResolutionObject.h:76
IPTools.h
GsfTrackFwd.h
HltBtagValidation_cff.Vertex
Vertex
Definition: HltBtagValidation_cff.py:32
reco::TransientTrack
Definition: TransientTrack.h:19
reco::PFRecTrack
reconstructed track used as an input to particle flow
Definition: PFRecTrack.h:22
reco::PFTrajectoryPoint
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
Definition: PFTrajectoryPoint.h:26
reco::PFCluster
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
Definition: PFCluster.h:46
ConvBremPFTrackFinder::mvaBremConvCutEndcapsLowPt_
double mvaBremConvCutEndcapsLowPt_
Definition: ConvBremPFTrackFinder.h:87
edm::RefToBase< reco::Track >
ConvBremPFTrackFinder::secPout
float secPout
Definition: ConvBremPFTrackFinder.h:91
Pi
const double Pi
Definition: CosmicMuonParameters.h:18
reco::PFRecTrackCollection
std::vector< PFRecTrack > PFRecTrackCollection
collection of PFRecTrack objects
Definition: PFRecTrackFwd.h:9
ConvBremPFTrackFinder::Epout
float Epout
Definition: ConvBremPFTrackFinder.h:91
TransientTrackBuilder::build
reco::TransientTrack build(const reco::Track *p) const
Definition: TransientTrackBuilder.cc:20
ConvBremPFTrackFinder::~ConvBremPFTrackFinder
~ConvBremPFTrackFinder()
Definition: ConvBremPFTrackFinder.cc:31
reco::GsfPFRecTrack::kfPFRecTrackRef
const edm::Ref< std::vector< PFRecTrack > > & kfPFRecTrackRef() const
Definition: GsfPFRecTrack.h:37
dummy
Definition: DummySelector.h:38
reco::Vertex
Definition: Vertex.h:35
ElectronSeed.h
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
ConvBremPFTrackFinder::secR
float secR
Definition: ConvBremPFTrackFinder.h:91