CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TrackFilterForPVFinding.cc
Go to the documentation of this file.
2 #include <cmath>
3 
5 {
6  maxD0Sig_ = conf.getParameter<double>("maxD0Significance");
7  minPt_ = conf.getParameter<double>("minPt");
8  maxNormChi2_ = conf.getParameter<double>("maxNormalizedChi2");
9  minSiLayers_ = conf.getParameter<int>("minSiliconLayersWithHits");
10  minPxLayers_ = conf.getParameter<int>("minPixelLayersWithHits");
11 
12  // the next few lines are taken from RecoBTag/SecondaryVertex/interface/TrackSelector.h"
13  std::string qualityClass =
14  conf.getParameter<std::string>("trackQuality");
15  if (qualityClass == "any" || qualityClass == "Any" ||
16  qualityClass == "ANY" || qualityClass == "") {
18  } else {
20  }
21 
22 }
23 
24 // select a single track
25 bool
27 {
28  if (!tk.stateAtBeamLine().isValid()) return false;
30  bool pTCut = tk.impactPointState().globalMomentum().transverse() > minPt_;
31  bool normChi2Cut = tk.normalizedChi2() < maxNormChi2_;
32  bool nPxLayCut = tk.hitPattern().pixelLayersWithMeasurement() >= minPxLayers_;
33  bool nSiLayCut = tk.hitPattern().trackerLayersWithMeasurement() >= minSiLayers_;
34  bool trackQualityCut = (quality_==reco::TrackBase::undefQuality)|| tk.track().quality(quality_);
35 
36  return IPSigCut && pTCut && normChi2Cut && nPxLayCut && nSiLayCut && trackQualityCut;
37 }
38 
39 
40 
41 // select the vector of tracks that pass the filter cuts
42 std::vector<reco::TransientTrack> TrackFilterForPVFinding::select(const std::vector<reco::TransientTrack>& tracks) const
43 {
44  std::vector <reco::TransientTrack> seltks;
45  for (std::vector<reco::TransientTrack>::const_iterator itk = tracks.begin();
46  itk != tracks.end(); itk++) {
47  if ( operator()(*itk) ) seltks.push_back(*itk); // calls the filter function for single tracks
48  }
49  return seltks;
50 }
T getParameter(std::string const &) const
std::vector< reco::TransientTrack > select(const std::vector< reco::TransientTrack > &tracks) const
const HitPattern & hitPattern() const
bool operator()(const reco::TransientTrack &tracks) const
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:497
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:516
TrajectoryStateClosestToBeamLine stateAtBeamLine() const
T transverse() const
Definition: PV3DBase.h:73
tuple conf
Definition: dbtoconf.py:185
double significance() const
Definition: Measurement1D.h:32
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:123
const Track & track() const
tuple tracks
Definition: testEve_cfg.py:39
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:497
double normalizedChi2() const
chi-squared divided by n.d.o.f.
GlobalVector globalMomentum() const
TrackFilterForPVFinding(const edm::ParameterSet &conf)
TrajectoryStateOnSurface impactPointState() const
reco::TrackBase::TrackQuality quality_