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 SecondaryVertex &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 12 of file VertexFilter.h.

Constructor & Destructor Documentation

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

Definition at line 21 of file VertexFilter.cc.

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

Definition at line 15 of file VertexFilter.h.

15 {}

Member Function Documentation

bool VertexFilter::operator() ( const reco::Vertex pv,
const SecondaryVertex sv,
const GlobalVector direction 
) const

Definition at line 58 of file VertexFilter.cc.

References abs, computeSharedTracks(), Geom::deltaR(), reco::SecondaryVertex::dist2d(), reco::SecondaryVertex::dist3d(), distSig2dMax, distSig2dMin, distSig3dMax, distSig3dMin, distVal2dMax, distVal2dMin, distVal3dMax, distVal3dMin, Measurement1D::error(), fracPV, reco::Vertex::hasRefittedTracks(), scaleCards::mass, massMax, maxDeltaRToJetAxis, minTrackWeight, multiplicityMin, reco::Vertex::position(), reco::Vertex::refittedTracks(), Measurement1D::significance(), reco::Vertex::tracks_begin(), reco::Vertex::tracks_end(), reco::Vertex::trackWeight(), useTrackWeights, v0Filter, Measurement1D::value(), reco::TrackKinematics::vectorSum(), and reco::TrackKinematics::weightedVectorSum().

61 {
62  std::vector<TrackRef> svTracks;
63  for(std::vector<TrackBaseRef>::const_iterator iter = sv.tracks_begin();
64  iter != sv.tracks_end(); iter++)
65  if (sv.trackWeight(*iter) >= minTrackWeight)
66  svTracks.push_back(iter->castTo<TrackRef>());
67 
68  // minimum number of tracks at vertex
69 
70  if (svTracks.size() < multiplicityMin)
71  return false;
72 
73  // invalid errors
74 
75  if (sv.dist2d().error() < 0 || sv.dist3d().error() < 0)
76  return false;
77 
78  // flight distance limits (value and significance, 2d and 3d)
79 
80  if (sv.dist2d().value() < distVal2dMin ||
81  sv.dist2d().value() > distVal2dMax ||
82  sv.dist3d().value() < distVal3dMin ||
83  sv.dist3d().value() > distVal3dMax ||
84  sv.dist2d().significance() < distSig2dMin ||
85  sv.dist2d().significance() > distSig2dMax ||
86  sv.dist3d().significance() < distSig3dMin ||
88  return false;
89 
90  // SV direction filter
91 
92  if (Geom::deltaR(sv.position() - pv.position(),
93  (maxDeltaRToJetAxis > 0) ? direction : -direction)
95  return false;
96 
97  // compute fourvector sum of tracks as vertex and cut on inv. mass
98 
99  TrackKinematics kin(sv);
100 
101  double mass = useTrackWeights ? kin.weightedVectorSum().M()
102  : kin.vectorSum().M();
103 
104  if (mass > massMax)
105  return false;
106 
107  // find shared tracks between PV and SV
108 
109  if (fracPV < 1.0) {
110  unsigned int sharedTracks =
111  computeSharedTracks(pv, svTracks, minTrackWeight);
112  if ((double)sharedTracks / svTracks.size() > fracPV)
113  return false;
114  }
115 
116  // check for V0 vertex
117 
118  if (sv.hasRefittedTracks())
119  return v0Filter(sv.refittedTracks());
120  else
121  return v0Filter(svTracks);
122 }
trackRef_iterator tracks_end() const
last iterator over tracks
Definition: Vertex.cc:45
Measurement1D dist3d() const
bool hasRefittedTracks() const
Checks whether refitted tracks are stored.
Definition: Vertex.h:121
double error() const
Definition: Measurement1D.h:30
#define abs(x)
Definition: mlp_lapack.h:159
const std::vector< Track > & refittedTracks() const
Returns the container of refitted tracks.
Definition: Vertex.h:136
const Point & position() const
position
Definition: Vertex.h:93
unsigned int multiplicityMin
Definition: VertexFilter.h:25
float trackWeight(const TrackBaseRef &r) const
returns the weight with which a Track has contributed to the vertex-fit.
Measurement1D dist2d() const
static unsigned int computeSharedTracks(const Vertex &pv, const std::vector< TrackRef > &svTracks, double minTrackWeight)
Definition: VertexFilter.cc:41
double significance() const
Definition: Measurement1D.h:32
double value() const
Definition: Measurement1D.h:28
double maxDeltaRToJetAxis
Definition: VertexFilter.h:37
double deltaR(const Vector1 &v1, const Vector2 &v2)
Definition: VectorUtil.h:84
tuple mass
Definition: scaleCards.py:27
trackRef_iterator tracks_begin() const
first iterator over tracks
Definition: Vertex.cc:40

Member Data Documentation

double reco::VertexFilter::distSig2dMax
private

Definition at line 33 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distSig2dMin
private

Definition at line 32 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distSig3dMax
private

Definition at line 35 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distSig3dMin
private

Definition at line 34 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal2dMax
private

Definition at line 28 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal2dMin
private

Definition at line 27 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal3dMax
private

Definition at line 30 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::distVal3dMin
private

Definition at line 29 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::fracPV
private

Definition at line 24 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::massMax
private

Definition at line 23 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::maxDeltaRToJetAxis
private

Definition at line 37 of file VertexFilter.h.

Referenced by operator()().

double reco::VertexFilter::minTrackWeight
private

Definition at line 22 of file VertexFilter.h.

Referenced by operator()().

unsigned int reco::VertexFilter::multiplicityMin
private

Definition at line 25 of file VertexFilter.h.

Referenced by operator()().

bool reco::VertexFilter::useTrackWeights
private

Definition at line 21 of file VertexFilter.h.

Referenced by operator()().

V0Filter reco::VertexFilter::v0Filter
private

Definition at line 38 of file VertexFilter.h.

Referenced by operator()().