12 #include "GaudiKernel/MsgStream.h"
20 ISvcLocator* pSvcLocator)
22 , m_outtracklocation(
"CombinedInDetTracks")
23 , m_doTrackOverlay(false)
39 ATH_CHECK(m_pileupTRT.initialize(m_doTrackOverlay));
40 ATH_CHECK(m_pileupPixel.initialize(m_doTrackOverlay));
41 ATH_CHECK(m_pileupSCT.initialize(m_doTrackOverlay));
42 ATH_CHECK(m_outtracklocation.initialize());
43 ATH_CHECK(m_assoTool.retrieve(DisableTool{m_assoTool.name().empty()}));
44 ATH_CHECK(m_assoMapName.initialize(!m_assoMapName.key().empty()));
45 return StatusCode::SUCCESS;
54 auto outputCol = std::make_unique<ConstDataVector<TrackCollection>>(
SG::VIEW_ELEMENTS);
55 ATH_MSG_DEBUG(
"Number of Track collections " << m_tracklocation.size());
58 std::vector<const TrackCollection*> trackCollections;
59 trackCollections.reserve(m_tracklocation.size());
61 for (
const auto& tcname : m_tracklocation){
64 trackCollections.push_back(trackCol.
cptr());
65 ttNumber += trackCol->size();
67 std::unique_ptr<Trk::PRDtoTrackMap> pPrdToTrackMap(m_assoTool ? m_assoTool->createPRDtoTrackMap() :
nullptr);
69 outputCol->reserve(ttNumber);
71 for (
auto& tciter : trackCollections) {
73 if (mergeTrack(tciter, pPrdToTrackMap.get(), outputCol.get()).isFailure()) {
77 ATH_MSG_DEBUG(
"Size of combined tracks " << outputCol->size());
80 ATH_CHECK(h_write.record(std::move(outputCol)));
82 if (!m_assoMapName.key().empty()) {
84 if (write_handle.
record( m_assoTool->reduceToStorableMap(std::move(pPrdToTrackMap))).isFailure()) {
90 return StatusCode::SUCCESS;
99 return StatusCode::SUCCESS;
111 if (trackCol && !trackCol->
empty()) {
113 if (not pPrdToTrackMap)
114 ATH_MSG_WARNING(
"No valid PRD to Track Map; was the association tool name missing?");
116 for (
const auto*
const rf : *trackCol) {
119 if (m_assoTool and m_assoTool->addPRDs(*pPrdToTrackMap, *rf).isFailure())
124 return StatusCode::SUCCESS;