CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros 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.

6  :
7  conf_(conf)
8 {
9 }
tuple conf
Definition: dbtoconf.py:185

Member Function Documentation

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

check if this VertexAssociation is ok

Definition at line 50 of file VertexAssociationSelector.cc.

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

50  {
51  if (vass.isNull()) return false;
52  if ((conf_.dZ > 0) && ( vass.dz().value() > conf_.dZ )) return false;
53  if ((conf_.sigmasZ > 0) && ( vass.dz().significance() > conf_.sigmasZ )) return false;
54  if ((conf_.dZ > 0) && ( vass.dr().value() > conf_.dR )) return false;
55  if ((conf_.sigmasZ > 0) && ( vass.dr().significance() > conf_.sigmasR )) return false;
56  // if ((conf_.sigmas3d > 0) && ( vass.signif3d() > conf_.sigmas3d)) return false;
57  return true;
58 }
bool isNull() const
Return &#39;true&#39; if this is a null association (that is, no vertex)
Definition: Vertexing.h:38
const Measurement1DFloat & dz() const
Definition: Vertexing.h:61
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:63
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 20 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().

20  {
21  using std::abs;
22  using std::sqrt;
23 
24  if ((conf_.dZ > 0) && !( std::abs(c.vz() - vtx.z()) > conf_.dZ )) return false;
25  if ((conf_.sigmasZ > 0) && !( std::abs(c.vz() - vtx.z()) > conf_.sigmasZ * vtx.zError())) return false;
26  if ((conf_.dR > 0) && !( (c.vertex() - vtx.position()).Rho() > conf_.dR )) return false;
27  if ( conf_.sigmasR > 0) {
28  // D = sqrt( DZ^2 + DY^2) => sigma^2(D) = d D/d X_i * cov(X_i, X_j) * d D/d X_j =>
29  // d D / d X_i = DX_i / D
30  // D > sigmaR * sigma(D) if and only if D^4 > sigmaR^2 * DX_i DX_j cov(X_i,X_j)
31  AlgebraicVector3 dist(c.vx() - vtx.x(), c.vy() - vtx.y(), 0);
32  double D2 = dist[0]*dist[0] + dist[1]*dist[1];
33  double DcovD = ROOT::Math::Similarity(dist, vtx.error());
34  if ( D2*D2 > DcovD * (conf_.sigmasR*conf_.sigmasR) ) return false;
35  }
36  /*
37  if (conf_.sigmas3d > 0) {
38  // same as above, but 3D
39  AlgebraicVector3 dist(c.vx() - vtx.x(), c.vy() - vtx.y(), c.vz() - vtx.z());
40  double D2 = dist[0]*dist[0] + dist[1]*dist[1] + dist[2]*dist[2];
41  double DcovD = ROOT::Math::Similarity(dist, vtx.error());
42  if ( D2*D2 > DcovD * (conf_.sigmas3d*conf_.sigmas3d) ) return false;
43  }
44  */
45 
46  return true;
47 }
Divides< B, C > D2
Definition: Factorize.h:145
double zError() const
error on z
Definition: Vertex.h:118
double y() const
y coordinate
Definition: Vertex.h:110
virtual double vx() const =0
x coordinate of vertex position
const Point & position() const
position
Definition: Vertex.h:106
virtual double vy() const =0
y coordinate of vertex position
T sqrt(T t)
Definition: SSEVec.h:48
ROOT::Math::SVector< double, 3 > AlgebraicVector3
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double z() const
y coordinate
Definition: Vertex.h:112
virtual const Point & vertex() const =0
vertex position
double x() const
x coordinate
Definition: Vertex.h:108
Error error() const
return SMatrix
Definition: Vertex.h:129
virtual double vz() const =0
z coordinate of vertex position
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 12 of file VertexAssociationSelector.cc.

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

12  {
14  ret.setDistances(c.vertex(), vtx->position(), vtx->error());
15  return ret;
16 }
virtual const Point & vertex() const =0
vertex position
Analysis-level structure for vertex-related information.
Definition: Vertexing.h:26

Member Data Documentation

Config pat::VertexAssociationSelector::conf_
private

Definition at line 62 of file VertexAssociationSelector.h.