File indexing completed on 2024-04-06 12:29:13
0001 #ifndef KinematicVertex_H
0002 #define KinematicVertex_H
0003
0004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
0005 #include "RecoVertex/VertexPrimitives/interface/CachingVertex.h"
0006 #include "RecoVertex/VertexPrimitives/interface/VertexState.h"
0007 #include "DataFormats/VertexReco/interface/Vertex.h"
0008 class KinematicTree;
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 class KinematicVertex : public ReferenceCounted {
0021 public:
0022 friend class KinematicTree;
0023
0024
0025
0026
0027
0028 KinematicVertex();
0029
0030
0031
0032
0033
0034 KinematicVertex(const VertexState state, float totalChiSq, float degreesOfFr);
0035
0036
0037
0038
0039
0040 KinematicVertex(const VertexState state,
0041 const ReferenceCountingPointer<KinematicVertex> prVertex,
0042 float totalChiSq,
0043 float degreesOfFr);
0044
0045
0046
0047
0048 KinematicVertex(const CachingVertex<6>& vertex);
0049
0050 ~KinematicVertex() override;
0051
0052
0053
0054
0055
0056
0057 bool operator==(const KinematicVertex& other) const;
0058
0059 bool operator==(const ReferenceCountingPointer<KinematicVertex> other) const;
0060
0061
0062
0063
0064
0065
0066
0067 bool operator<(const KinematicVertex& other) const;
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079 bool vertexIsValid() const;
0080
0081
0082
0083
0084
0085
0086 KinematicTree* correspondingTree() const;
0087
0088
0089
0090
0091 ReferenceCountingPointer<KinematicVertex> vertexBeforeConstraint() const;
0092
0093 VertexState vertexState() const;
0094
0095 GlobalPoint position() const;
0096
0097 GlobalError error() const;
0098
0099 float chiSquared() const;
0100
0101 float degreesOfFreedom() const;
0102
0103 operator reco::Vertex();
0104
0105 private:
0106 void setTreePointer(KinematicTree* tr) const;
0107
0108
0109
0110 mutable KinematicTree* tree;
0111 mutable bool vl;
0112
0113 VertexState theState;
0114
0115
0116 float theChiSquared;
0117 float theNDF;
0118 mutable ReferenceCountingPointer<KinematicVertex> pVertex;
0119 };
0120
0121 #endif