22 const IInterface*
p) :
30 ATH_MSG_ERROR(
"No decoration prefix name provided for the output of TracktoVertexWrapper!");
31 return StatusCode::FAILURE;
34 ATH_MSG_ERROR(
"No TrackParticle collection provided for TracktoVertexWrapper!");
35 return StatusCode::FAILURE;
41 std::vector<std::string>
names;
63 return StatusCode::SUCCESS;
68 return StatusCode::SUCCESS;
78 return StatusCode::FAILURE;
81 if ( !vertices.isValid() )
84 return StatusCode::FAILURE;
87 std::vector<SG::WriteDecorHandle<xAOD::TrackParticleContainer,float> >
90 for (
const auto *trItr : *tracks) {
91 std::unique_ptr<Trk::ImpactParametersAndSigma> iPandSigma;
92 std::unique_ptr<Trk::ImpactParametersAndSigma> iPandSigmaBiased;
94 for (
const auto *
const vx : *vertices) {
95 for (
const auto& tpLink : vx->trackParticleLinks()) {
96 if (*tpLink == trItr) {
101 if (foundVertex)
break;
104 iPandSigma=
m_tool->estimate(trItr,foundVertex,
true);
105 iPandSigmaBiased =
m_tool->estimate(trItr,foundVertex,
false);
106 if( !iPandSigma )
ATH_MSG_WARNING (
"trackToVertexIPEstimator failed !");
107 if( !iPandSigmaBiased )
ATH_MSG_WARNING (
"trackToVertexIPEstimator biased IP failed !");
110 ATH_MSG_DEBUG(
"No vertex associated to the track. Skipping it.");
137 if (iPandSigmaBiased) {
161 return StatusCode::SUCCESS;