CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
pat::VertexAssociation Class Reference

Analysis-level structure for vertex-related information. More...

#include "DataFormats/PatCandidates/interface/Vertexing.h"

Public Member Functions

const Measurement1DFloatdr () const
 Distance between the object and the vertex in the transverse plane, and it's error. More...
 
const Measurement1DFloatdz () const
 
bool hasErrors () const
 True if the errors on dr and dz have been set, false if they're nulls. More...
 
bool hasTrack () const
 Returns 'true' if a reference to a track was stored in this VertexAssociation. More...
 
bool hasTransverseIP () const
 True if the transverse distance was computed for this VertexAssociation. More...
 
bool isAvailable () const
 Return 'true' if the reco::Vertex is available in the file, false if it has been dropped. More...
 
bool isNonnull () const
 Return 'true' unless this is a null association (that is, no vertex) More...
 
bool isNull () const
 Return 'true' if this is a null association (that is, no vertex) More...
 
const reco::Vertexoperator* () const
 Return the vertex (that is, you can do "const reco::Vertex &vtx = *assoc") More...
 
const reco::Vertexoperator-> () const
 Allows VertexAssociation to behave like a vertex ref (e.g. to do "assoc->position()") More...
 
void setDistances (const AlgebraicVector3 &dist, const AlgebraicSymMatrix33 &err)
 Set dz and dr given the distance and the 3x3 total covariance matrix of the distance. More...
 
template<typename T1 , typename T2 >
void setDistances (const T1 &p1, const T2 &p2, const AlgebraicSymMatrix33 &err)
 
void setDr (const Measurement1DFloat &dr)
 
void setDr (const Measurement1D &dr)
 
void setDz (const Measurement1DFloat &dz)
 
void setDz (const Measurement1D &dz)
 
const reco::Tracktrack () const
 Returns a C++ pointer to the track stored in this vertex (can be a null pointer) More...
 
const reco::TrackBaseReftrackRef () const
 Returns a reference to the track stored in this vertex (can be null) More...
 
const reco::Vertexvertex () const
 Returns a pointer to the vertex, or a null pointer if there is no vertex (null association) More...
 
 VertexAssociation ()
 Create a null vertx association. More...
 
 VertexAssociation (const reco::VertexRef &vertex)
 Create a vertex association given a ref to a vertex. More...
 
 VertexAssociation (const reco::VertexRef &vertex, const reco::TrackBaseRef &tk)
 
const reco::VertexRefvertexRef () const
 Returns the reference to the vertex (can be a null reference) More...
 

Private Attributes

Measurement1DFloat dr_
 
Measurement1DFloat dz_
 
reco::TrackBaseRef track_
 
reco::VertexRef vertex_
 

Detailed Description

Analysis-level structure for vertex-related information.

pat::VertexAssociation holds a reference to a vertex and extended information like the distance between the object and the vertex.

For convenience, pat::VertexAssociation behaves like a VertexRef, that is (*assoc) is a reco::Vertex.

The original proposal is at https://hypernews.cern.ch/HyperNews/CMS/get/physTools/587.html

Author
Giovanni Petrucciani

Definition at line 26 of file Vertexing.h.

Constructor & Destructor Documentation

pat::VertexAssociation::VertexAssociation ( )
inline

Create a null vertx association.

Definition at line 29 of file Vertexing.h.

29 {}
pat::VertexAssociation::VertexAssociation ( const reco::VertexRef vertex)
inline

Create a vertex association given a ref to a vertex.

Definition at line 31 of file Vertexing.h.

31 : vertex_(vertex) {}
reco::VertexRef vertex_
Definition: Vertexing.h:89
pat::VertexAssociation::VertexAssociation ( const reco::VertexRef vertex,
const reco::TrackBaseRef tk 
)
inline

Create a vertex association given a ref to a vertex and a reference to a track object Note: you also have to set the distances, they can be computed by the VertexAssociation itself because it requires access to the magnetic field and other condition data.

Definition at line 35 of file Vertexing.h.

35 : vertex_(vertex), track_(tk) {}
reco::VertexRef vertex_
Definition: Vertexing.h:89
reco::TrackBaseRef track_
Definition: Vertexing.h:93

Member Function Documentation

const Measurement1DFloat& pat::VertexAssociation::dr ( ) const
inline

Distance between the object and the vertex in the transverse plane, and it's error.

Definition at line 63 of file Vertexing.h.

References dr_.

Referenced by pat::VertexAssociationSelector::operator()(), and setDr().

63 { return dr_; }
Measurement1DFloat dr_
Definition: Vertexing.h:90
const Measurement1DFloat& pat::VertexAssociation::dz ( ) const
inline

Distance between the object and the vertex along the Z axis, and it's error. Note 1: if the BeamSpot was used as Vertex, the error includes the BeamSpot spread!

Definition at line 61 of file Vertexing.h.

References dz_.

Referenced by Electron.Electron::cutBasedId(), ntupleDataFormat.Track::dzPull(), pat::VertexAssociationSelector::operator()(), and setDz().

61 { return dz_; }
Measurement1DFloat dz_
Definition: Vertexing.h:90
bool pat::VertexAssociation::hasErrors ( ) const
inline

True if the errors on dr and dz have been set, false if they're nulls.

Definition at line 67 of file Vertexing.h.

References dr_, dz_, Measurement1DFloat::error(), and hasTransverseIP().

67 { return (dz_.error() != 0) && ( !hasTransverseIP() || dr_.error() != 0 ); }
float error() const
bool hasTransverseIP() const
True if the transverse distance was computed for this VertexAssociation.
Definition: Vertexing.h:65
Measurement1DFloat dr_
Definition: Vertexing.h:90
Measurement1DFloat dz_
Definition: Vertexing.h:90
bool pat::VertexAssociation::hasTrack ( ) const
inline

Returns 'true' if a reference to a track was stored in this VertexAssociation.

Definition at line 53 of file Vertexing.h.

References edm::RefToBase< T >::isNull(), and track_.

Referenced by track().

53 { return !track_.isNull(); }
bool isNull() const
Checks for null.
Definition: RefToBase.h:331
reco::TrackBaseRef track_
Definition: Vertexing.h:93
bool pat::VertexAssociation::hasTransverseIP ( ) const
inline

True if the transverse distance was computed for this VertexAssociation.

Definition at line 65 of file Vertexing.h.

References dr_, and Measurement1DFloat::value().

Referenced by hasErrors().

65 { return (dr_.value() != 0); }
float value() const
Measurement1DFloat dr_
Definition: Vertexing.h:90
bool pat::VertexAssociation::isAvailable ( ) const
inline

Return 'true' if the reco::Vertex is available in the file, false if it has been dropped.

Definition at line 42 of file Vertexing.h.

References edm::Ref< C, T, F >::isAvailable(), and vertex_.

42 { return vertex_.isAvailable(); }
bool isAvailable() const
Definition: Ref.h:577
reco::VertexRef vertex_
Definition: Vertexing.h:89
bool pat::VertexAssociation::isNonnull ( ) const
inline

Return 'true' unless this is a null association (that is, no vertex)

Definition at line 40 of file Vertexing.h.

References edm::Ref< C, T, F >::isNonnull(), and vertex_.

40 { return vertex_.isNonnull(); }
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:253
reco::VertexRef vertex_
Definition: Vertexing.h:89
bool pat::VertexAssociation::isNull ( ) const
inline

Return 'true' if this is a null association (that is, no vertex)

Definition at line 38 of file Vertexing.h.

References edm::Ref< C, T, F >::isNull(), and vertex_.

Referenced by pat::VertexAssociationSelector::operator()().

38 { return vertex_.isNull(); }
reco::VertexRef vertex_
Definition: Vertexing.h:89
bool isNull() const
Checks for null.
Definition: Ref.h:250
const reco::Vertex& pat::VertexAssociation::operator* ( void  ) const
inline

Return the vertex (that is, you can do "const reco::Vertex &vtx = *assoc")

Definition at line 44 of file Vertexing.h.

References operator->().

44 { return * operator->(); }
const reco::Vertex * operator->() const
Allows VertexAssociation to behave like a vertex ref (e.g. to do "assoc->position()") ...
Definition: Vertexing.h:46
const reco::Vertex* pat::VertexAssociation::operator-> ( ) const
inline

Allows VertexAssociation to behave like a vertex ref (e.g. to do "assoc->position()")

Definition at line 46 of file Vertexing.h.

References edm::Ref< C, T, F >::get(), edm::Ref< C, T, F >::isNull(), and vertex_.

Referenced by operator*().

46 { return vertex_.isNull() ? nullptr : vertex_.get(); }
reco::VertexRef vertex_
Definition: Vertexing.h:89
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:245
bool isNull() const
Checks for null.
Definition: Ref.h:250
void VertexAssociation::setDistances ( const AlgebraicVector3 dist,
const AlgebraicSymMatrix33 err 
)

Set dz and dr given the distance and the 3x3 total covariance matrix of the distance.

Definition at line 5 of file Vertexing.cc.

References funct::abs(), setDr(), setDz(), and mathSSE::sqrt().

Referenced by pat::helper::VertexingHelper::associate(), setDistances(), setDr(), and pat::VertexAssociationSelector::simpleAssociation().

5  {
6  setDz( Measurement1DFloat( std::abs(dist[2]) , std::sqrt(err(2,2)) ) );
7 
8  AlgebraicVector3 dist2D(dist[0], dist[1], 0);
9  float d2 = dist2D[0]*dist2D[0] + dist2D[1]*dist2D[1];
10  setDr( Measurement1DFloat( sqrt(d2), sqrt(ROOT::Math::Similarity(dist2D, err)/d2) ) );
11 }
void setDr(const Measurement1DFloat &dr)
Definition: Vertexing.h:70
void setDz(const Measurement1DFloat &dz)
Definition: Vertexing.h:69
T sqrt(T t)
Definition: SSEVec.h:18
ROOT::Math::SVector< double, 3 > AlgebraicVector3
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
template<typename T1 , typename T2 >
void pat::VertexAssociation::setDistances ( const T1 &  p1,
const T2 &  p2,
const AlgebraicSymMatrix33 err 
)
inline

Set dz and dr given the two points (object and vertex) and the 3x3 total covariance matrix of the distance The covariance matrix must already include the covariance matrix of the vertex 'p1', 'p2' can be anything that has methods .x(), .y(), .z() (e.g. GlobalPoint, Vertex, ...)

Definition at line 79 of file Vertexing.h.

References setDistances().

79  {
80  AlgebraicVector3 dist(p1.x() - p2.x(), p1.y() - p2.y(), p1.z() - p2.z());
81  setDistances(dist, err);
82  }
void setDistances(const AlgebraicVector3 &dist, const AlgebraicSymMatrix33 &err)
Set dz and dr given the distance and the 3x3 total covariance matrix of the distance.
Definition: Vertexing.cc:5
ROOT::Math::SVector< double, 3 > AlgebraicVector3
double p2[4]
Definition: TauolaWrapper.h:90
double p1[4]
Definition: TauolaWrapper.h:89
void pat::VertexAssociation::setDr ( const Measurement1DFloat dr)
inline

Definition at line 70 of file Vertexing.h.

References dr(), and dr_.

Referenced by setDistances().

70 { dr_ = dr; }
const Measurement1DFloat & dr() const
Distance between the object and the vertex in the transverse plane, and it&#39;s error.
Definition: Vertexing.h:63
Measurement1DFloat dr_
Definition: Vertexing.h:90
void pat::VertexAssociation::setDr ( const Measurement1D dr)
inline

Definition at line 72 of file Vertexing.h.

References dr_, Measurement1D::error(), setDistances(), and Measurement1D::value().

72 { dr_ = Measurement1DFloat(dr.value(), dr.error()); }
double error() const
Definition: Measurement1D.h:30
double value() const
Definition: Measurement1D.h:28
Measurement1DFloat dr_
Definition: Vertexing.h:90
void pat::VertexAssociation::setDz ( const Measurement1DFloat dz)
inline

Definition at line 69 of file Vertexing.h.

References dz(), and dz_.

Referenced by setDistances().

69 { dz_ = dz; }
const Measurement1DFloat & dz() const
Definition: Vertexing.h:61
Measurement1DFloat dz_
Definition: Vertexing.h:90
void pat::VertexAssociation::setDz ( const Measurement1D dz)
inline

Definition at line 71 of file Vertexing.h.

References dz_, Measurement1D::error(), and Measurement1D::value().

71 { dz_ = Measurement1DFloat(dz.value(), dz.error()); }
double error() const
Definition: Measurement1D.h:30
double value() const
Definition: Measurement1D.h:28
Measurement1DFloat dz_
Definition: Vertexing.h:90
const reco::Track* pat::VertexAssociation::track ( ) const
inline

Returns a C++ pointer to the track stored in this vertex (can be a null pointer)

Definition at line 57 of file Vertexing.h.

References edm::RefToBase< T >::get(), hasTrack(), and track_.

57 { return hasTrack() ? track_.get() : nullptr; }
value_type const * get() const
Definition: RefToBase.h:234
bool hasTrack() const
Returns &#39;true&#39; if a reference to a track was stored in this VertexAssociation.
Definition: Vertexing.h:53
reco::TrackBaseRef track_
Definition: Vertexing.h:93
const reco::TrackBaseRef& pat::VertexAssociation::trackRef ( ) const
inline

Returns a reference to the track stored in this vertex (can be null)

Definition at line 55 of file Vertexing.h.

References track_.

55 { return track_; }
reco::TrackBaseRef track_
Definition: Vertexing.h:93
const reco::Vertex* pat::VertexAssociation::vertex ( ) const
inline

Returns a pointer to the vertex, or a null pointer if there is no vertex (null association)

Definition at line 51 of file Vertexing.h.

References edm::Ref< C, T, F >::get(), edm::Ref< C, T, F >::isNull(), and vertex_.

Referenced by Tau.Tau::dxy().

51 { return vertex_.isNull() ? nullptr : vertex_.get(); }
reco::VertexRef vertex_
Definition: Vertexing.h:89
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:245
bool isNull() const
Checks for null.
Definition: Ref.h:250
const reco::VertexRef& pat::VertexAssociation::vertexRef ( ) const
inline

Returns the reference to the vertex (can be a null reference)

Definition at line 49 of file Vertexing.h.

References vertex_.

49 { return vertex_; }
reco::VertexRef vertex_
Definition: Vertexing.h:89

Member Data Documentation

Measurement1DFloat pat::VertexAssociation::dr_
private

Definition at line 90 of file Vertexing.h.

Referenced by dr(), hasErrors(), hasTransverseIP(), and setDr().

Measurement1DFloat pat::VertexAssociation::dz_
private

Definition at line 90 of file Vertexing.h.

Referenced by dz(), hasErrors(), and setDz().

reco::TrackBaseRef pat::VertexAssociation::track_
private

Definition at line 93 of file Vertexing.h.

Referenced by hasTrack(), track(), and trackRef().

reco::VertexRef pat::VertexAssociation::vertex_
private

Definition at line 89 of file Vertexing.h.

Referenced by isAvailable(), isNonnull(), isNull(), operator->(), vertex(), and vertexRef().