ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
D3PDMaker
TrackD3PDMaker
src
VertexTrackParticleAssociationTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
VertexTrackParticleAssociationTool.h
"
6
7
#include <
VxVertex/VxCandidate.h
>
8
#include <
VxVertex/VxTrackAtVertex.h
>
9
#include <
Particle/TrackParticle.h
>
10
#include <
TrkParticleBase/LinkToTrackParticleBase.h
>
11
#include "
AthenaKernel/errorcheck.h
"
12
13
namespace
D3PD
{
14
15
16
VertexTrackParticleAssociationTool::VertexTrackParticleAssociationTool
17
(
const
std::string&
type
,
18
const
std::string& name,
19
const
IInterface* parent)
20
:
Base
(
type
, name, parent),
21
m_aod_vx
(0),
22
m_xaod_vx
(0),
23
m_itrack
(0)
24
{
25
book
().ignore();
26
}
27
28
32
StatusCode
VertexTrackParticleAssociationTool::book
()
33
{
34
CHECK
(
addVariable
(
"weight"
,
m_weight
) );
35
return
StatusCode::SUCCESS;
36
}
37
38
43
StatusCode
VertexTrackParticleAssociationTool::reset
(
const
Trk::VxCandidate
& p)
44
{
45
m_aod_vx
= &p;
46
m_xaod_vx
= 0;
47
m_itrack
= 0;
48
return
StatusCode::SUCCESS;
49
}
50
51
56
StatusCode
VertexTrackParticleAssociationTool::reset
(
const
xAOD::Vertex
& p)
57
{
58
m_aod_vx
= 0;
59
m_xaod_vx
= &p;
60
m_itrack
= 0;
61
return
StatusCode::SUCCESS;
62
}
63
64
70
const
Rec::TrackParticle
*
71
VertexTrackParticleAssociationTool::next
(
const
Trk::VxCandidate
*
/*dummy*/
)
72
{
73
const
std::vector<Trk::VxTrackAtVertex*>* tracks =
m_aod_vx
->vxTrackAtVertex();
74
75
// reached the end
76
if
(
m_itrack
>= tracks->size())
return
0;
77
78
const
Trk::VxTrackAtVertex
*track = (*tracks)[
m_itrack
++];
79
80
const
Trk::LinkToTrackParticleBase
*link =
dynamic_cast<
const
Trk::LinkToTrackParticleBase
*
>
(track->trackOrParticleLink());
81
if
(0 == link){
// it's not a link to TrackParticle
82
REPORT_MESSAGE
(MSG::WARNING) <<
"Trying to associate a TrackParticle to a vertex"
83
<<
" while the vertex was not fitted using TrackParticles"
;
84
return
0;
85
}
86
87
const
Trk::TrackParticleBase
*particle_base = **link;
88
if
(0 == particle_base){
89
REPORT_MESSAGE
(MSG::WARNING) <<
"link from VxCandidate to TrackParticle is broken"
;
90
return
0;
91
}
92
93
const
Rec::TrackParticle
* particle =
dynamic_cast<
const
Rec::TrackParticle
*
>
(particle_base);
94
95
if
(0 == particle){
96
REPORT_MESSAGE
(MSG::WARNING) <<
"dynamic cast from Trk::TrackParticleBase to Rec::TrackPArticle failed"
;
97
return
0;
98
}
99
100
*
m_weight
= track->vtxCompatibility();
101
102
return
particle;
103
}
104
105
111
const
xAOD::TrackParticle
*
112
VertexTrackParticleAssociationTool::next
(
const
xAOD::Vertex
*
/*dummy*/
)
113
{
114
// reached the end
115
if
(
m_itrack
>=
m_xaod_vx
->nTrackParticles())
return
0;
116
117
*
m_weight
=
m_xaod_vx
->trackWeight(
m_itrack
);
118
return
m_xaod_vx
->trackParticle(
m_itrack
++);
119
}
120
121
122
}
// namespace D3PD
errorcheck.h
Helpers for checking error return status codes and reporting errors.
REPORT_MESSAGE
#define REPORT_MESSAGE(LVL)
Report a message.
Definition
Control/AthenaKernel/AthenaKernel/errorcheck.h:365
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition
Control/AthenaKernel/AthenaKernel/errorcheck.h:422
LinkToTrackParticleBase.h
TrackParticle.h
VertexTrackParticleAssociationTool.h
VxCandidate.h
VxTrackAtVertex.h
D3PD::MultiAssociationTool< Types< Trk::VxCandidate, xAOD::Vertex >, Types< Rec::TrackParticle, xAOD::TrackParticle > >::addVariable
virtual StatusCode addVariable(const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0)
Definition
AddVariable.cxx:85
D3PD::MultiAssociationToolTo::next
virtual const TO_T * next()=0
Return a pointer to the next element in the association.
D3PD::VertexTrackParticleAssociationTool::Base
MultiAssociationTool< Types< Trk::VxCandidate, xAOD::Vertex >, Types< Rec::TrackParticle, xAOD::TrackParticle > > Base
Definition
VertexTrackParticleAssociationTool.h:31
D3PD::VertexTrackParticleAssociationTool::m_xaod_vx
const xAOD::Vertex * m_xaod_vx
Definition
VertexTrackParticleAssociationTool.h:78
D3PD::VertexTrackParticleAssociationTool::m_itrack
size_t m_itrack
Definition
VertexTrackParticleAssociationTool.h:79
D3PD::VertexTrackParticleAssociationTool::m_weight
float * m_weight
Variable: Track weight.
Definition
VertexTrackParticleAssociationTool.h:75
D3PD::VertexTrackParticleAssociationTool::m_aod_vx
const Trk::VxCandidate * m_aod_vx
Definition
VertexTrackParticleAssociationTool.h:77
D3PD::VertexTrackParticleAssociationTool::book
virtual StatusCode book() final
Book variables for this block.
Definition
VertexTrackParticleAssociationTool.cxx:32
D3PD::VertexTrackParticleAssociationTool::reset
virtual StatusCode reset(const Trk::VxCandidate &p) override
Start the iteration for a new association.
Definition
VertexTrackParticleAssociationTool.cxx:43
D3PD::VertexTrackParticleAssociationTool::VertexTrackParticleAssociationTool
VertexTrackParticleAssociationTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition
VertexTrackParticleAssociationTool.cxx:17
Rec::TrackParticle
Definition
Reconstruction/Particle/Particle/TrackParticle.h:47
Trk::LinkToTrackParticleBase
Definition
LinkToTrackParticleBase.h:17
Trk::TrackParticleBase
Definition
TrackParticleBase.h:41
Trk::VxCandidate
Definition
VxCandidate.h:27
Trk::VxTrackAtVertex
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
Definition
VxTrackAtVertex.h:77
D3PD
Block filler tool for noisy FEB information.
Definition
CaloCellDetailsFillerTool.cxx:29
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition
Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition
Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
type
Generated on
for ATLAS Offline Software by
1.17.0