13 ISvcLocator *pSvcLocator)
32 return StatusCode::SUCCESS;
52 ATH_CHECK( pixelMsosHandle.
record(std::make_unique<xAOD::TrackStateValidationContainer>(),
53 std::make_unique<xAOD::TrackStateValidationAuxContainer>()) );
57 ATH_CHECK( stripMsosHandle.
record(std::make_unique<xAOD::TrackStateValidationContainer>(),
58 std::make_unique<xAOD::TrackStateValidationAuxContainer>()) );
66 std::vector< ElementLink< xAOD::TrackStateValidationContainer > > > decorator_msos_link(
m_trackMsosLink, ctx );
75 std::optional<ActsTrk::TrackContainer::ConstTrackProxy> optional_track = *trackLink;
76 if ( not optional_track.has_value() ) {
77 ATH_MSG_ERROR(
"Invalid track link for particle " << trackParticle->index());
78 return StatusCode::FAILURE;
80 ActsTrk::TrackContainer::ConstTrackProxy track = optional_track.value();
82 std::vector< typename ActsTrk::TrackContainer::ConstTrackStateProxy > tsos {};
83 tsos.reserve( track.nTrackStates() );
87 track.container().trackStateContainer()
88 .visitBackwards(track.tipIndex(),
90 (
const typename ActsTrk::TrackContainer::ConstTrackStateProxy& state)
92 auto flags = state.typeFlags();
93 if (not flags.test(Acts::TrackStateFlag::MeasurementFlag) and
94 not flags.test(Acts::TrackStateFlag::OutlierFlag) and
95 not flags.test(Acts::TrackStateFlag::HoleFlag)) return;
96 tsos.push_back( state );
99 std::vector< ElementLink< xAOD::TrackStateValidationContainer > > msos {};
100 msos.reserve( tsos.size() );
102 for (
const typename ActsTrk::TrackContainer::ConstTrackStateProxy& state : tsos) {
103 const Acts::Surface& surface = state.referenceSurface();
122 return StatusCode::FAILURE;
127 decorator_msos_link(*trackParticle) = std::move(msos);
130 return StatusCode::SUCCESS;
142 msosLinks.push_back( std::move(elink) );
144 auto flags = state.typeFlags();
145 if (not
flags.test(Acts::TrackStateFlag::HoleFlag) ) {
146 auto sl = state.getUncalibratedSourceLink().template get<ATLASUncalibSourceLink>();
152 if (
flags.test(Acts::TrackStateFlag::HoleFlag)) {
154 }
else if (
flags.test(Acts::TrackStateFlag::OutlierFlag)) {
160 return StatusCode::SUCCESS;
185 throw std::runtime_error(
"Cannot recognize volume id");