diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx index c9b76a0a5e23a5b60941ca105dd8571e892b00a3..0a8b21834397b43bc46da5264ae1c2af7bd7b46c 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/src/TrackTruthDecoratorAlg.cxx @@ -15,6 +15,8 @@ #include "xAODTruth/TruthVertex.h" #include "xAODTruth/TruthVertexContainer.h" +#include "InDetTrackSystematicsTools/InDetTrackTruthOriginDefs.h" + namespace FlavorTagDiscriminants { @@ -69,12 +71,18 @@ namespace FlavorTagDiscriminants { // decorate loop std::vector<const xAOD::TrackParticle*> tracks_vector(tracks->begin(), tracks->end()); for ( const auto& track : tracks_vector ) { + + // for the origin label we need to start from the track object (to label fake tracks) + int trackTruthOrigin = m_trackTruthOriginTool->getTrackOrigin(track); + dec_origin_label(*track) = InDet::ExclusiveOrigin::getExclusiveOrigin(trackTruthOrigin); + + // everything else is already decorated to the associated truth particle const auto truth = m_trackTruthOriginTool->getTruth(track); dec_barcode(*track) = truth ? truth->barcode() : -2; dec_parent_barcode(*track) = truth ? m_acc_truthParentBarcode(*truth) : -2; - dec_origin_label(*track) = truth ? m_acc_truthOriginLabel(*truth) : -2; dec_type_label(*track) = truth ? m_acc_truthTypeLabel(*truth) : -2; dec_vertex_index(*track) = truth ? m_acc_truthVertexIndex(*truth) : -2; + } return StatusCode::SUCCESS; }