CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
reco::VertexFilter Class Reference

#include <VertexFilter.h>

Public Member Functions

bool operator() (const reco::Vertex &pv, const TemplatedSecondaryVertex< reco::Vertex > &sv, const GlobalVector &direction) const
 
bool operator() (const reco::Vertex &pv, const TemplatedSecondaryVertex< reco::VertexCompositePtrCandidate > &sv, const GlobalVector &direction) const
 
 VertexFilter (const edm::ParameterSet &params)
 
 ~VertexFilter ()
 

Private Attributes

double distSig2dMax
 
double distSig2dMin
 
double distSig3dMax
 
double distSig3dMin
 
double distVal2dMax
 
double distVal2dMin
 
double distVal3dMax
 
double distVal3dMin
 
double fracPV
 
double massMax
 
double maxDeltaRToJetAxis
 
double minTrackWeight
 
unsigned int multiplicityMin
 
bool useTrackWeights
 
V0Filter v0Filter
 

Detailed Description

Definition at line 25 of file VertexFilter.h.

Constructor & Destructor Documentation

VertexFilter::VertexFilter ( const edm::ParameterSet params)

Definition at line 22 of file VertexFilter.cc.

22  :
23  useTrackWeights(params.getParameter<bool>("useTrackWeights")),
24  minTrackWeight(params.getParameter<double>("minimumTrackWeight")),
25  massMax(params.getParameter<double>("massMax")),
26  fracPV(params.getParameter<double>("fracPV")),
27  multiplicityMin(params.getParameter<unsigned int>("multiplicityMin")),
28  distVal2dMin(params.getParameter<double>("distVal2dMin")),
29  distVal2dMax(params.getParameter<double>("distVal2dMax")),
30  distVal3dMin(params.getParameter<double>("distVal3dMin")),
31  distVal3dMax(params.getParameter<double>("distVal3dMax")),
32  distSig2dMin(params.getParameter<double>("distSig2dMin")),
33  distSig2dMax(params.getParameter<double>("distSig2dMax")),
34  distSig3dMin(params.getParameter<double>("distSig3dMin")),
35  distSig3dMax(params.getParameter<double>("distSig3dMax")),
36  maxDeltaRToJetAxis(params.getParameter<double>("maxDeltaRToJetAxis")),
37  v0Filter(params.getParameter<edm::ParameterSet>("v0Filter"))
38 {
39 }
T getParameter(std::string const &) const
unsigned int multiplicityMin
Definition: VertexFilter.h:40
double maxDeltaRToJetAxis
Definition: VertexFilter.h:52
reco::VertexFilter::~VertexFilter ( )
inline

Definition at line 28 of file VertexFilter.h.

28 {}

Member Function Documentation

bool VertexFilter::operator() ( const reco::Vertex pv,
const TemplatedSecondaryVertex< reco::Vertex > &  sv,
const GlobalVector direction 
) const

Definition at line 41 of file VertexFilter.cc.

References funct::abs(), vertexTools::computeSharedTracks(), deltaR(), reco::TemplatedSecondaryVertex< SV >::dist2d(), reco::TemplatedSecondaryVertex< SV >::dist3d(), distSig2dMax, distSig2dMin, distSig3dMax, distSig3dMin, distVal2dMax, distVal2dMin, distVal3dMax, distVal3dMin, Measurement1D::error(), fracPV, massMax, maxDeltaRToJetAxis, minTrackWeight, multiplicityMin, reco::Vertex::position(), Measurement1D::significance(), useTrackWeights, v0Filter, Measurement1D::value(), reco::TrackKinematics::vectorSum(), and reco::TrackKinematics::weightedVectorSum().

44 {
45  std::vector<TrackRef> svTracks;
46  for(std::vector<TrackBaseRef>::const_iterator iter = sv.tracks_begin();
47  iter != sv.tracks_end(); iter++)
48  if (sv.trackWeight(*iter) >= minTrackWeight)
49  svTracks.push_back(iter->castTo<TrackRef>());
50 
51  // minimum number of tracks at vertex
52 
53  if (svTracks.size() < multiplicityMin)
54  return false;
55 
56  // invalid errors
57 
58  if (sv.dist2d().error() < 0 || sv.dist3d().error() < 0)
59  return false;
60 
61  // flight distance limits (value and significance, 2d and 3d)
62 
63  if (sv.dist2d().value() < distVal2dMin ||
64  sv.dist2d().value() > distVal2dMax ||
65  sv.dist3d().value() < distVal3dMin ||
66  sv.dist3d().value() > distVal3dMax ||
67  sv.dist2d().significance() < distSig2dMin ||
68  sv.dist2d().significance() > distSig2dMax ||
69  sv.dist3d().significance() < distSig3dMin ||
71  return false;
72 
73  // SV direction filter
74 
75  if (Geom::deltaR(sv.position() - pv.position(),
76  (maxDeltaRToJetAxis > 0) ? direction : -direction)
78  return false;
79 
80  // compute fourvector sum of tracks as vertex and cut on inv. mass
81 
82  TrackKinematics kin(sv);
83 
84  double mass = useTrackWeights ? kin.weightedVectorSum().M()
85  : kin.vectorSum().M();
86 
87  if (mass > massMax)
88  return false;
89 
90  // find shared tracks between PV and SV
91 
92  if (fracPV < 1.0) {
93  double fractionSharedTracks =
95  if (fractionSharedTracks > fracPV)
96  return false;
97  }
98 
99  // check for V0 vertex
100 
101  if (sv.hasRefittedTracks())
102  return v0Filter(sv.refittedTracks());
103  else
104  return v0Filter(svTracks);
105 }
double error() const
Definition: Measurement1D.h:30
const Point & position() const
position
Definition: Vertex.h:106
double computeSharedTracks(const reco::Vertex &pv, const std::vector< reco::TrackRef > &svTracks, double minTrackWeight=0.5, float unused=0)
Definition: SharedTracks.cc:4
unsigned int multiplicityMin
Definition: VertexFilter.h:40
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
double significance() const
Definition: Measurement1D.h:32
double value() const
Definition: Measurement1D.h:28
double maxDeltaRToJetAxis
Definition: VertexFilter.h:52
bool VertexFilter::operator() ( const reco::Vertex pv,
const TemplatedSecondaryVertex< reco::VertexCompositePtrCandidate > &  sv,
const GlobalVector direction 
) const

Definition at line 106 of file VertexFilter.cc.

References funct::abs(), vertexTools::computeSharedTracks(), deltaR(), reco::TemplatedSecondaryVertex< SV >::dist2d(), reco::TemplatedSecondaryVertex< SV >::dist3d(), distSig2dMax, distSig2dMin, distSig3dMax, distSig3dMin, distVal2dMax, distVal2dMin, distVal3dMax, distVal3dMin, Measurement1D::error(), fracPV, massMax, maxDeltaRToJetAxis, minTrackWeight, multiplicityMin, reco::Vertex::position(), Measurement1D::significance(), useTrackWeights, v0Filter, Measurement1D::value(), reco::TrackKinematics::vectorSum(), and reco::TrackKinematics::weightedVectorSum().

108  {
109 
110  const std::vector<CandidatePtr> & svTracks = sv.daughterPtrVector();
111 
112  // minimum number of tracks at vertex
113 
114  if (svTracks.size() < multiplicityMin)
115  return false;
116 
117  // invalid errors
118 
119  if (sv.dist2d().error() < 0 || sv.dist3d().error() < 0)
120  return false;
121 
122  // flight distance limits (value and significance, 2d and 3d)
123 
124  if (sv.dist2d().value() < distVal2dMin ||
125  sv.dist2d().value() > distVal2dMax ||
126  sv.dist3d().value() < distVal3dMin ||
127  sv.dist3d().value() > distVal3dMax ||
128  sv.dist2d().significance() < distSig2dMin ||
129  sv.dist2d().significance() > distSig2dMax ||
130  sv.dist3d().significance() < distSig3dMin ||
132  return false;
133 
134  // SV direction filter
135 
136  if (Geom::deltaR(sv.vertex() - pv.position(),
137  (maxDeltaRToJetAxis > 0) ? direction : -direction)
139  return false;
140  // compute fourvector sum of tracks as vertex and cut on inv. mass
141 
142  TrackKinematics kin(sv);
143 
144  double mass = useTrackWeights ? kin.weightedVectorSum().M()
145  : kin.vectorSum().M();
146 
147  if (mass > massMax)
148  return false;
149 
150  // find shared tracks between PV and SV
151 
152  if (fracPV < 1.0) {
153  double fractionSharedTracks =
155  if (fractionSharedTracks > fracPV)
156  return false;
157  }
158 
159  // check for V0 vertex
160 
161  return v0Filter(svTracks);
162 }
double error() const
Definition: Measurement1D.h:30
const Point & position() const
position
Definition: Vertex.h:106
double computeSharedTracks(const reco::Vertex &pv, const std::vector< reco::TrackRef > &svTracks, double minTrackWeight=0.5, float unused=0)
Definition: SharedTracks.cc:4
unsigned int multiplicityMin
Definition: VertexFilter.h:40
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
double significance() const
Definition: Measurement1D.h:32
double value() const
Definition: Measurement1D.h:28
double maxDeltaRToJetAxis
Definition: VertexFilter.h:52

Member Data Documentation

double reco::VertexFilter::distSig2dMax
private

Definition at line 48 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distSig2dMin
private

Definition at line 47 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distSig3dMax
private

Definition at line 50 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distSig3dMin
private

Definition at line 49 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal2dMax
private

Definition at line 43 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal2dMin
private

Definition at line 42 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal3dMax
private

Definition at line 45 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal3dMin
private

Definition at line 44 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::fracPV
private

Definition at line 39 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::massMax
private

Definition at line 38 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::maxDeltaRToJetAxis
private

Definition at line 52 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::minTrackWeight
private

Definition at line 37 of file VertexFilter.h.

Referenced by operator()().

unsigned int reco::VertexFilter::multiplicityMin
private

Definition at line 40 of file VertexFilter.h.

Referenced by operator()().

bool reco::VertexFilter::useTrackWeights
private

Definition at line 36 of file VertexFilter.h.

Referenced by operator()().

V0Filter reco::VertexFilter::v0Filter
private

Definition at line 53 of file VertexFilter.h.

Referenced by operator()().