Analysis-level structure for vertex-related information. More...
#include <Vertexing.h>
Public Member Functions | |
const Measurement1DFloat & | dr () const |
Distance between the object and the vertex in the transverse plane, and it's error. | |
const Measurement1DFloat & | dz () const |
bool | hasErrors () const |
True if the errors on dr and dz have been set, false if they're nulls. | |
bool | hasTrack () const |
Returns 'true' if a reference to a track was stored in this VertexAssociation. | |
bool | hasTransverseIP () const |
True if the transverse distance was computed for this VertexAssociation. | |
bool | isAvailable () const |
Return 'true' if the reco::Vertex is available in the file, false if it has been dropped. | |
bool | isNonnull () const |
Return 'true' unless this is a null association (that is, no vertex) | |
bool | isNull () const |
Return 'true' if this is a null association (that is, no vertex) | |
const reco::Vertex & | operator* () const |
Return the vertex (that is, you can do "const reco::Vertex &vtx = *assoc") | |
const reco::Vertex * | operator-> () const |
Allows VertexAssociation to behave like a vertex ref (e.g. to do "assoc->position()") | |
void | setDistances (const AlgebraicVector3 &dist, const AlgebraicSymMatrix33 &err) |
Set dz and dr given the distance and the 3x3 total covariance matrix of the distance. | |
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::Track * | track () const |
Returns a C++ pointer to the track stored in this vertex (can be a null pointer) | |
const reco::TrackBaseRef & | trackRef () const |
Returns a reference to the track stored in this vertex (can be null) | |
const reco::Vertex * | vertex () const |
Returns a pointer to the vertex, or a null pointer if there is no vertex (null association) | |
VertexAssociation (const reco::VertexRef &vertex, const reco::TrackBaseRef &tk) | |
VertexAssociation (const reco::VertexRef &vertex) | |
Create a vertex association given a ref to a vertex. | |
VertexAssociation () | |
Create a null vertx association. | |
const reco::VertexRef & | vertexRef () const |
Returns the reference to the vertex (can be a null reference) | |
Private Attributes | |
Measurement1DFloat | dr_ |
Measurement1DFloat | dz_ |
reco::TrackBaseRef | track_ |
reco::VertexRef | vertex_ |
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
Definition at line 27 of file Vertexing.h.
pat::VertexAssociation::VertexAssociation | ( | ) | [inline] |
pat::VertexAssociation::VertexAssociation | ( | const reco::VertexRef & | vertex | ) | [inline] |
Create a vertex association given a ref to a vertex.
Definition at line 32 of file Vertexing.h.
: vertex_(vertex) {}
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 36 of file Vertexing.h.
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 64 of file Vertexing.h.
References dr_.
Referenced by pat::VertexAssociationSelector::operator()(), and setDr().
{ return dr_; }
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 62 of file Vertexing.h.
References dz_.
Referenced by pat::VertexAssociationSelector::operator()(), and setDz().
{ return dz_; }
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 68 of file Vertexing.h.
References dr_, dz_, Measurement1DFloat::error(), and hasTransverseIP().
{ return (dz_.error() != 0) && ( !hasTransverseIP() || dr_.error() != 0 ); }
bool pat::VertexAssociation::hasTrack | ( | ) | const [inline] |
Returns 'true' if a reference to a track was stored in this VertexAssociation.
Definition at line 54 of file Vertexing.h.
References edm::RefToBase< T >::isNull(), and track_.
Referenced by track().
bool pat::VertexAssociation::hasTransverseIP | ( | ) | const [inline] |
True if the transverse distance was computed for this VertexAssociation.
Definition at line 66 of file Vertexing.h.
References dr_, and Measurement1DFloat::value().
Referenced by hasErrors().
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 43 of file Vertexing.h.
References edm::Ref< C, T, F >::isAvailable(), and vertex_.
{ return vertex_.isAvailable(); }
bool pat::VertexAssociation::isNonnull | ( | ) | const [inline] |
Return 'true' unless this is a null association (that is, no vertex)
Definition at line 41 of file Vertexing.h.
References edm::Ref< C, T, F >::isNonnull(), and vertex_.
bool pat::VertexAssociation::isNull | ( | ) | const [inline] |
Return 'true' if this is a null association (that is, no vertex)
Definition at line 39 of file Vertexing.h.
References edm::Ref< C, T, F >::isNull(), and vertex_.
Referenced by pat::VertexAssociationSelector::operator()().
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 45 of file Vertexing.h.
References operator->().
{ return * operator->(); }
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 47 of file Vertexing.h.
References edm::Ref< C, T, F >::get(), edm::Ref< C, T, F >::isNull(), and vertex_.
Referenced by operator*().
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 abs, setDr(), setDz(), and mathSSE::sqrt().
Referenced by pat::helper::VertexingHelper::associate(), setDistances(), and pat::VertexAssociationSelector::simpleAssociation().
{ setDz( Measurement1DFloat( std::abs(dist[2]) , std::sqrt(err(2,2)) ) ); AlgebraicVector3 dist2D(dist[0], dist[1], 0); float d2 = dist2D[0]*dist2D[0] + dist2D[1]*dist2D[1]; setDr( Measurement1DFloat( sqrt(d2), sqrt(ROOT::Math::Similarity(dist2D, err)/d2) ) ); }
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 80 of file Vertexing.h.
References setDistances().
{ AlgebraicVector3 dist(p1.x() - p2.x(), p1.y() - p2.y(), p1.z() - p2.z()); setDistances(dist, err); }
void pat::VertexAssociation::setDr | ( | const Measurement1DFloat & | dr | ) | [inline] |
Definition at line 71 of file Vertexing.h.
Referenced by setDistances().
void pat::VertexAssociation::setDr | ( | const Measurement1D & | dr | ) | [inline] |
Definition at line 73 of file Vertexing.h.
References dr_, Measurement1D::error(), and Measurement1D::value().
{ dr_ = Measurement1DFloat(dr.value(), dr.error()); }
void pat::VertexAssociation::setDz | ( | const Measurement1DFloat & | dz | ) | [inline] |
Definition at line 70 of file Vertexing.h.
Referenced by setDistances().
void pat::VertexAssociation::setDz | ( | const Measurement1D & | dz | ) | [inline] |
Definition at line 72 of file Vertexing.h.
References dz_, Measurement1D::error(), and Measurement1D::value().
{ dz_ = Measurement1DFloat(dz.value(), dz.error()); }
const reco::Track* pat::VertexAssociation::track | ( | void | ) | const [inline] |
Returns a C++ pointer to the track stored in this vertex (can be a null pointer)
Definition at line 58 of file Vertexing.h.
References edm::RefToBase< T >::get(), hasTrack(), and track_.
const reco::TrackBaseRef& pat::VertexAssociation::trackRef | ( | ) | const [inline] |
Returns a reference to the track stored in this vertex (can be null)
Definition at line 56 of file Vertexing.h.
References track_.
{ return track_; }
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 52 of file Vertexing.h.
References edm::Ref< C, T, F >::get(), edm::Ref< C, T, F >::isNull(), and vertex_.
const reco::VertexRef& pat::VertexAssociation::vertexRef | ( | ) | const [inline] |
Returns the reference to the vertex (can be a null reference)
Definition at line 50 of file Vertexing.h.
References vertex_.
{ return vertex_; }
Definition at line 91 of file Vertexing.h.
Referenced by dr(), hasErrors(), hasTransverseIP(), and setDr().
Definition at line 91 of file Vertexing.h.
Referenced by dz(), hasErrors(), and setDz().
Definition at line 94 of file Vertexing.h.
Referenced by hasTrack(), track(), and trackRef().
Definition at line 90 of file Vertexing.h.
Referenced by isAvailable(), isNonnull(), isNull(), operator->(), vertex(), and vertexRef().