CMS 3D CMS Logo

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  maxEta_ = conf.getParameter<double>("maxEta");
9  maxNormChi2_ = conf.getParameter<double>("maxNormalizedChi2");
10  minSiLayers_ = conf.getParameter<int>("minSiliconLayersWithHits");
11  minPxLayers_ = conf.getParameter<int>("minPixelLayersWithHits");
12 
13  // the next few lines are taken from RecoBTag/SecondaryVertex/interface/TrackSelector.h"
15  conf.getParameter<std::string>("trackQuality");
16  if (qualityClass == "any" || qualityClass == "Any" ||
17  qualityClass == "ANY" || qualityClass == "") {
19  } else {
21  }
22 
23 }
24 
25 // select a single track
26 bool
28 {
29  if (!tk.stateAtBeamLine().isValid()) return false;
30  bool IPSigCut = ( tk.stateAtBeamLine().transverseImpactParameter().significance() < maxD0Sig_ )
32  && (tk.track().dzError() < 1.0);
33  bool pTCut = tk.impactPointState().globalMomentum().transverse() > minPt_;
34  bool etaCut = std::fabs( tk.impactPointState().globalMomentum().eta() ) < maxEta_;
35  bool normChi2Cut = tk.normalizedChi2() < maxNormChi2_;
36  bool nPxLayCut = tk.hitPattern().pixelLayersWithMeasurement() >= minPxLayers_;
37  bool nSiLayCut = tk.hitPattern().trackerLayersWithMeasurement() >= minSiLayers_;
38  bool trackQualityCut = (quality_==reco::TrackBase::undefQuality)|| tk.track().quality(quality_);
39 
40  return IPSigCut && pTCut && etaCut && normChi2Cut && nPxLayCut && nSiLayCut && trackQualityCut;
41 }
42 
43 
44 
45 // select the vector of tracks that pass the filter cuts
46 std::vector<reco::TransientTrack> TrackFilterForPVFinding::select(const std::vector<reco::TransientTrack>& tracks) const
47 {
48  std::vector <reco::TransientTrack> seltks;
49  for (std::vector<reco::TransientTrack>::const_iterator itk = tracks.begin();
50  itk != tracks.end(); itk++) {
51  if ( operator()(*itk) ) seltks.push_back(*itk); // calls the filter function for single tracks
52  }
53  return seltks;
54 }
T getParameter(std::string const &) const
const HitPattern & hitPattern() const
double error() const
Definition: Measurement1D.h:27
bool operator()(const reco::TransientTrack &tracks) const
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:538
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:557
TrajectoryStateClosestToBeamLine stateAtBeamLine() const
T transverse() const
Definition: PV3DBase.h:73
std::vector< reco::TransientTrack > select(const std::vector< reco::TransientTrack > &tracks) const override
double dzError() const
error on dz
Definition: TrackBase.h:865
double significance() const
Definition: Measurement1D.h:29
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:134
const Track & track() const
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:549
double normalizedChi2() const
chi-squared divided by n.d.o.f.
T eta() const
Definition: PV3DBase.h:76
GlobalVector globalMomentum() const
TrackFilterForPVFinding(const edm::ParameterSet &conf)
TrajectoryStateOnSurface impactPointState() const
reco::TrackBase::TrackQuality quality_