CMS 3D CMS Logo

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

#include <VertexAssociationSelector.h>

Classes

struct  Config
 

Public Member Functions

bool operator() (const pat::VertexAssociation &vass) const
 check if this VertexAssociation is ok More...
 
bool operator() (const reco::Candidate &c, const reco::Vertex &) const
 
pat::VertexAssociation simpleAssociation (const reco::Candidate &c, const reco::VertexRef &vtx) const
 
 VertexAssociationSelector ()
 an empty constructor is sometimes needed More...
 
 VertexAssociationSelector (const Config &conf)
 constructor from a configuration More...
 

Private Attributes

Config conf_
 

Detailed Description

Definition at line 9 of file VertexAssociationSelector.h.

Constructor & Destructor Documentation

pat::VertexAssociationSelector::VertexAssociationSelector ( )
inline

an empty constructor is sometimes needed

Definition at line 41 of file VertexAssociationSelector.h.

41 {}
pat::VertexAssociationSelector::VertexAssociationSelector ( const Config conf)

constructor from a configuration

Definition at line 6 of file VertexAssociationSelector.cc.

Member Function Documentation

bool pat::VertexAssociationSelector::operator() ( const pat::VertexAssociation vass) const

check if this VertexAssociation is ok

Definition at line 48 of file VertexAssociationSelector.cc.

References pat::VertexAssociation::dr(), pat::VertexAssociation::dz(), pat::VertexAssociation::isNull(), Measurement1DFloat::significance(), and Measurement1DFloat::value().

48  {
49  if (vass.isNull())
50  return false;
51  if ((conf_.dZ > 0) && (vass.dz().value() > conf_.dZ))
52  return false;
53  if ((conf_.sigmasZ > 0) && (vass.dz().significance() > conf_.sigmasZ))
54  return false;
55  if ((conf_.dZ > 0) && (vass.dr().value() > conf_.dR))
56  return false;
57  if ((conf_.sigmasZ > 0) && (vass.dr().significance() > conf_.sigmasR))
58  return false;
59  // if ((conf_.sigmas3d > 0) && ( vass.signif3d() > conf_.sigmas3d)) return false;
60  return true;
61 }
bool isNull() const
Return &#39;true&#39; if this is a null association (that is, no vertex)
Definition: Vertexing.h:37
const Measurement1DFloat & dz() const
Definition: Vertexing.h:60
float significance() const
const Measurement1DFloat & dr() const
Distance between the object and the vertex in the transverse plane, and it&#39;s error.
Definition: Vertexing.h:62
float value() const
float dZ
cuts on Z and transverse distance from the vertex, absolute values or significances ...
bool pat::VertexAssociationSelector::operator() ( const reco::Candidate c,
const reco::Vertex vtx 
) const

check if this candidate and this vertex are compatible this will just use the basic candidate vertex position, without any fancy track extrapolation.

Definition at line 15 of file VertexAssociationSelector.cc.

References funct::abs(), reco::Vertex::error(), reco::Vertex::position(), mathSSE::sqrt(), reco::Candidate::vertex(), reco::Candidate::vx(), reco::Candidate::vy(), reco::Candidate::vz(), reco::Vertex::x(), reco::Vertex::y(), reco::Vertex::z(), and reco::Vertex::zError().

15  {
16  using std::abs;
17  using std::sqrt;
18 
19  if ((conf_.dZ > 0) && !(std::abs(c.vz() - vtx.z()) > conf_.dZ))
20  return false;
21  if ((conf_.sigmasZ > 0) && !(std::abs(c.vz() - vtx.z()) > conf_.sigmasZ * vtx.zError()))
22  return false;
23  if ((conf_.dR > 0) && !((c.vertex() - vtx.position()).Rho() > conf_.dR))
24  return false;
25  if (conf_.sigmasR > 0) {
26  // D = sqrt( DZ^2 + DY^2) => sigma^2(D) = d D/d X_i * cov(X_i, X_j) * d D/d X_j =>
27  // d D / d X_i = DX_i / D
28  // D > sigmaR * sigma(D) if and only if D^4 > sigmaR^2 * DX_i DX_j cov(X_i,X_j)
29  AlgebraicVector3 dist(c.vx() - vtx.x(), c.vy() - vtx.y(), 0);
30  double D2 = dist[0] * dist[0] + dist[1] * dist[1];
31  double DcovD = ROOT::Math::Similarity(dist, vtx.error());
32  if (D2 * D2 > DcovD * (conf_.sigmasR * conf_.sigmasR))
33  return false;
34  }
35  /*
36  if (conf_.sigmas3d > 0) {
37  // same as above, but 3D
38  AlgebraicVector3 dist(c.vx() - vtx.x(), c.vy() - vtx.y(), c.vz() - vtx.z());
39  double D2 = dist[0]*dist[0] + dist[1]*dist[1] + dist[2]*dist[2];
40  double DcovD = ROOT::Math::Similarity(dist, vtx.error());
41  if ( D2*D2 > DcovD * (conf_.sigmas3d*conf_.sigmas3d) ) return false;
42  }
43  */
44 
45  return true;
46 }
Divides< B, C > D2
Definition: Factorize.h:137
double zError() const
error on z
Definition: Vertex.h:141
double y() const
y coordinate
Definition: Vertex.h:131
virtual double vx() const =0
x coordinate of vertex position
const Point & position() const
position
Definition: Vertex.h:127
virtual double vy() const =0
y coordinate of vertex position
T sqrt(T t)
Definition: SSEVec.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double z() const
z coordinate
Definition: Vertex.h:133
virtual const Point & vertex() const =0
vertex position
double x() const
x coordinate
Definition: Vertex.h:129
Error error() const
return SMatrix
Definition: Vertex.h:163
virtual double vz() const =0
z coordinate of vertex position
ROOT::Math::SVector< double, 3 > AlgebraicVector3
float dZ
cuts on Z and transverse distance from the vertex, absolute values or significances ...
pat::VertexAssociation pat::VertexAssociationSelector::simpleAssociation ( const reco::Candidate c,
const reco::VertexRef vtx 
) const

Definition at line 8 of file VertexAssociationSelector.cc.

References runTheMatrix::ret, pat::VertexAssociation::setDistances(), and reco::Candidate::vertex().

9  {
11  ret.setDistances(c.vertex(), vtx->position(), vtx->error());
12  return ret;
13 }
tuple ret
prodAgent to be discontinued
virtual const Point & vertex() const =0
vertex position
Analysis-level structure for vertex-related information.
Definition: Vertexing.h:25

Member Data Documentation

Config pat::VertexAssociationSelector::conf_
private

Definition at line 62 of file VertexAssociationSelector.h.