RecoVertex
KinematicFitPrimitives
src
KinematicVertex.cc
Go to the documentation of this file.
1
#include "
RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h
"
2
#include "
RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h
"
3
#include "
RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h
"
4
#include "
RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h
"
5
#include "
TrackingTools/TransientTrack/interface/TrackTransientTrack.h
"
6
#include "
TrackingTools/TransientTrack/interface/GsfTransientTrack.h
"
7
8
KinematicVertex::KinematicVertex
() {
vl
=
false
; }
9
10
KinematicVertex::KinematicVertex
(
const
VertexState
state,
float
totalChiSq,
float
degreesOfFr)
11
: theState(state),
12
theChiSquared(totalChiSq),
13
theNDF(degreesOfFr)
14
15
{
16
vl
=
true
;
17
tree
=
nullptr
;
18
pVertex
=
nullptr
;
19
}
20
21
KinematicVertex::KinematicVertex
(
const
CachingVertex<6>
&
vertex
) {
22
// theVertexPosition = vertex.position();
23
// theVPositionError = vertex.error();
24
vl
=
true
;
25
theState
=
VertexState
(
vertex
.position(),
vertex
.error());
26
theChiSquared
=
vertex
.totalChiSquared();
27
theNDF
=
vertex
.degreesOfFreedom();
28
tree
=
nullptr
;
29
pVertex
=
nullptr
;
30
}
31
32
KinematicVertex::KinematicVertex
(
const
VertexState
state,
33
const
ReferenceCountingPointer<KinematicVertex>
prVertex,
34
float
totalChiSq,
35
float
degreesOfFr)
36
: theState(state), theChiSquared(totalChiSq), theNDF(degreesOfFr), pVertex(prVertex) {
37
vl
=
true
;
38
tree
=
nullptr
;
39
}
40
41
bool
KinematicVertex::operator==
(
const
KinematicVertex
&
other
)
const
{
42
bool
res
=
false
;
43
if
(
vertexIsValid
() &&
other
.vertexIsValid()) {
44
GlobalPoint
cPos = this->
position
();
45
GlobalPoint
oPos =
other
.position();
46
AlgebraicMatrix33
const
& cCov = this->
error
().
matrix
();
47
AlgebraicMatrix33
const
& oCov =
other
.error().matrix();
48
if
((cPos.
x
() == oPos.
x
()) && (cPos.
y
() == oPos.
y
()) && (cPos.
z
() == oPos.
z
()) && (cCov == oCov))
49
res
=
true
;
50
}
else
if
(!(
vertexIsValid
()) && !(
other
.vertexIsValid())) {
51
if
(
this
== &
other
)
52
res
=
true
;
53
}
54
return
res
;
55
}
56
57
bool
KinematicVertex::operator==
(
const
ReferenceCountingPointer<KinematicVertex>
other
)
const
{
58
bool
res
=
false
;
59
if
(*
this
== *
other
)
60
res
=
true
;
61
return
res
;
62
}
63
64
bool
KinematicVertex::operator<
(
const
KinematicVertex
&
other
)
const
{
65
bool
res
=
false
;
66
if
(
this
< &
other
)
67
res
=
true
;
68
return
res
;
69
}
70
71
bool
KinematicVertex::vertexIsValid
()
const
{
return
vl
; }
72
73
KinematicVertex::~KinematicVertex
() {}
74
75
GlobalPoint
KinematicVertex::position
()
const
{
return
theState
.
position
(); }
76
77
GlobalError
KinematicVertex::error
()
const
{
return
theState
.
error
(); }
78
79
float
KinematicVertex::chiSquared
()
const
{
return
theChiSquared
; }
80
81
float
KinematicVertex::degreesOfFreedom
()
const
{
return
theNDF
; }
82
83
KinematicTree
*
KinematicVertex::correspondingTree
()
const
{
return
tree
; }
84
85
void
KinematicVertex::setTreePointer
(
KinematicTree
* tr)
const
{
tree
= tr; }
86
87
ReferenceCountingPointer<KinematicVertex>
KinematicVertex::vertexBeforeConstraint
()
const
{
return
pVertex
; }
88
89
VertexState
KinematicVertex::vertexState
()
const
{
return
theState
; }
90
91
KinematicVertex::operator
reco::Vertex
() {
92
//If the vertex is invalid, return an invalid TV !
93
if
(!vertexIsValid() ||
tree
==
nullptr
)
94
return
reco::Vertex
();
95
96
//accessing the tree components, move pointer to top
97
if
(!
tree
->findDecayVertex(
this
))
98
return
reco::Vertex
();
99
std::vector<RefCountedKinematicParticle>
daughters
=
tree
->daughterParticles();
100
101
reco::Vertex
vertex
(
reco::Vertex::Point
(theState.position()),
102
// RecoVertex::convertError(theVertexState.error()),
103
theState.error().matrix(),
104
chiSquared(),
105
degreesOfFreedom(),
106
daughters
.size());
107
108
for
(std::vector<RefCountedKinematicParticle>::const_iterator
i
=
daughters
.begin();
i
!=
daughters
.end(); ++
i
) {
109
const
TransientTrackKinematicParticle
* ttkp = dynamic_cast<const TransientTrackKinematicParticle*>(&(**
i
));
110
if
(ttkp !=
nullptr
) {
111
const
reco::TrackTransientTrack
* ttt =
112
dynamic_cast<const reco::TrackTransientTrack*>(ttkp->
initialTransientTrack
()->
basicTransientTrack
());
113
if
((ttt !=
nullptr
) && (ttt->
persistentTrackRef
().
isNonnull
())) {
114
reco::TrackRef
tr = ttt->
persistentTrackRef
();
115
vertex
.add(
reco::TrackBaseRef
(tr), ttkp->
refittedTransientTrack
().
track
(), 1.);
116
}
else
{
117
const
reco::GsfTransientTrack
* ttt =
118
dynamic_cast<const reco::GsfTransientTrack*>(ttkp->
initialTransientTrack
()->
basicTransientTrack
());
119
if
((ttt !=
nullptr
) && (ttt->
persistentTrackRef
().
isNonnull
())) {
120
reco::GsfTrackRef
tr = ttt->
persistentTrackRef
();
121
vertex
.add(
reco::TrackBaseRef
(tr), ttkp->
refittedTransientTrack
().
track
(), 1.);
122
}
123
}
124
}
125
}
126
return
vertex
;
127
}
KinematicVertex::setTreePointer
void setTreePointer(KinematicTree *tr) const
Definition:
KinematicVertex.cc:85
KinematicVertex::pVertex
ReferenceCountingPointer< KinematicVertex > pVertex
Definition:
KinematicVertex.h:118
mps_fire.i
i
Definition:
mps_fire.py:355
PV3DBase::x
T x() const
Definition:
PV3DBase.h:59
reco::GsfTransientTrack
Definition:
GsfTransientTrack.h:18
KinematicVertex::vertexIsValid
bool vertexIsValid() const
Definition:
KinematicVertex.cc:71
CachingVertex
Definition:
CachingVertex.h:22
KinematicParticle::refittedTransientTrack
reco::TransientTrack refittedTransientTrack() const
Definition:
KinematicParticle.cc:30
tree
Definition:
tree.py:1
KinematicParticle.h
KinematicVertex::chiSquared
float chiSquared() const
Definition:
KinematicVertex.cc:79
KinematicTree
Definition:
KinematicTree.h:36
KinematicVertex::theChiSquared
float theChiSquared
Definition:
KinematicVertex.h:116
GlobalErrorBase::matrix
const AlgebraicSymMatrix33 matrix() const
Definition:
GlobalErrorBase.h:121
AlgebraicMatrix33
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepStd< double, 3, 3 > > AlgebraicMatrix33
Definition:
AlgebraicROOTObjects.h:41
ReferenceCountingPointer< KinematicVertex >
edm::Ref< TrackCollection >
Utilities.operator
operator
Definition:
Utilities.py:24
PV3DBase::z
T z() const
Definition:
PV3DBase.h:61
GsfTransientTrack.h
reco::TransientTrack::basicTransientTrack
const BasicTransientTrack * basicTransientTrack() const
Definition:
TransientTrack.h:112
KinematicVertex::theNDF
float theNDF
Definition:
KinematicVertex.h:117
KinematicVertex
Definition:
KinematicVertex.h:20
BPhysicsValidation_cfi.daughters
daughters
Definition:
BPhysicsValidation_cfi.py:11
KinematicVertex::vertexBeforeConstraint
ReferenceCountingPointer< KinematicVertex > vertexBeforeConstraint() const
Definition:
KinematicVertex.cc:87
KinematicVertex::vl
bool vl
Definition:
KinematicVertex.h:111
VertexState::error
GlobalError error() const
Definition:
VertexState.h:64
KinematicVertex.h
trackingPlots.other
other
Definition:
trackingPlots.py:1465
Point3DBase< float, GlobalTag >
KinematicTree.h
KinematicVertex::degreesOfFreedom
float degreesOfFreedom() const
Definition:
KinematicVertex.cc:81
bphysicsOniaDQM_cfi.vertex
vertex
Definition:
bphysicsOniaDQM_cfi.py:7
KinematicVertex::position
GlobalPoint position() const
Definition:
KinematicVertex.cc:75
KinematicVertex::tree
KinematicTree * tree
Definition:
KinematicVertex.h:110
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition:
Ref.h:238
PV3DBase::y
T y() const
Definition:
PV3DBase.h:60
TrackTransientTrack.h
GlobalErrorBase< double, ErrorMatrixTag >
reco::GsfTransientTrack::persistentTrackRef
GsfTrackRef persistentTrackRef() const
Definition:
GsfTransientTrack.h:92
KinematicVertex::operator==
bool operator==(const KinematicVertex &other) const
Definition:
KinematicVertex.cc:41
KinematicVertex::theState
VertexState theState
Definition:
KinematicVertex.h:113
res
Definition:
Electron.h:6
KinematicVertex::vertexState
VertexState vertexState() const
Definition:
KinematicVertex.cc:89
reco::Vertex::Point
math::XYZPoint Point
point in the space
Definition:
Vertex.h:40
HltBtagValidation_cff.Vertex
Vertex
Definition:
HltBtagValidation_cff.py:32
KinematicVertex::KinematicVertex
KinematicVertex()
Definition:
KinematicVertex.cc:8
reco::TransientTrack::track
const Track & track() const
Definition:
TransientTrack.h:117
KinematicVertex::error
GlobalError error() const
Definition:
KinematicVertex.cc:77
VertexState
Definition:
VertexState.h:13
edm::RefToBase< reco::Track >
VertexState::position
GlobalPoint position() const
Definition:
VertexState.h:62
TransientTrackKinematicParticle
Definition:
TransientTrackKinematicParticle.h:17
TransientTrackKinematicParticle.h
KinematicVertex::~KinematicVertex
~KinematicVertex() override
Definition:
KinematicVertex.cc:73
reco::TrackTransientTrack
Definition:
TrackTransientTrack.h:18
KinematicVertex::correspondingTree
KinematicTree * correspondingTree() const
Definition:
KinematicVertex.cc:83
TransientTrackKinematicParticle::initialTransientTrack
const reco::TransientTrack * initialTransientTrack() const
Definition:
TransientTrackKinematicParticle.cc:82
reco::Vertex
Definition:
Vertex.h:35
reco::TrackTransientTrack::persistentTrackRef
TrackRef persistentTrackRef() const
Definition:
TrackTransientTrack.h:80
KinematicVertex::operator<
bool operator<(const KinematicVertex &other) const
Definition:
KinematicVertex.cc:64
Generated for CMSSW Reference Manual by
1.8.16