44 return StatusCode::SUCCESS;
52 std::unique_ptr<Trk::SegmentCollection> segmentContainer = std::make_unique<Trk::SegmentCollection>();
53 std::unique_ptr<Trk::SegmentCollection> nswSegmentContainer = !
m_segmentNSWCollectionKey.empty() ? std::make_unique<Trk::SegmentCollection>()
59 ATH_MSG_DEBUG(
"Processing the pattern collections with " << patternColl->size() <<
" Collections ");
71 segmentContainer->
insert(segmentContainer->
end(), std::make_move_iterator(nswCache.constructedSegs.begin()),
72 std::make_move_iterator(nswCache.constructedSegs.end()));
74 nswCache.constructedSegs.clear();
76 if (!nswSegmentContainer)
continue;
77 nswSegmentContainer->
insert(nswSegmentContainer->
end(), std::make_move_iterator(nswCache.quadSegs.begin()),
78 std::make_move_iterator(nswCache.quadSegs.end()));
79 nswCache.quadSegs.clear();
85 std::unique_ptr<MuonSegmentCombinationCollection> csc4dSegmentCombinations{};
112 return StatusCode::SUCCESS;
116 std::unique_ptr<MuonSegmentCombinationCollection>& csc4dSegmentCombinations)
const {
120 if (!cscPrds)
return StatusCode::SUCCESS;
122 std::vector<const Muon::CscPrepDataCollection*> cscCols;
124 ATH_MSG_DEBUG(
"Retrieved CscPrepDataContainer " << cscCols.size());
125 if (cscCols.empty())
return StatusCode::SUCCESS;
126 std::unique_ptr<MuonSegmentCombinationCollection> csc2dSegmentCombinations =
m_csc2dSegmentFinder->find(cscCols, ctx);
127 if (!csc2dSegmentCombinations)
return StatusCode::SUCCESS;
130 return StatusCode::SUCCESS;
134 if (!combi_coll)
return;
141 const unsigned int nstations = combi->numberOfStations();
142 const bool useEta = combi->useStripsInSegment(1);
143 const bool usePhi = combi->useStripsInSegment(0);
146 for (
unsigned int i = 0;
i < nstations; ++
i) {
150 if (!segments || segments->empty())
continue;
152 for (std::unique_ptr<Muon::MuonSegment>& seg : *segments) {
155 segmentContainer->
push_back(std::move(seg));
166 std::map<int, std::vector<std::unique_ptr<const Muon::MuonClusterOnTrack>> > clustersPerSector;
170 if (
it.prepRawDataVec().empty())
continue;
172 const Identifier id =
it.prepRawDataVec().front()->identify();
183 if (!newCluster)
continue;
184 std::vector<std::unique_ptr<const Muon::MuonClusterOnTrack>>&
clusters = clustersPerSector[sector];
188 for (
auto&[sector,
clusters] :clustersPerSector) {
200 ATH_MSG_DEBUG(
"Do not search segments in the Mdt part of the muon spectrometer");
201 return StatusCode::SUCCESS;
209 for (
const ROTRegion& region : hitsPerRegion) {
210 for (
const MdtVec& mdts : region.mdts()) {
211 if (mdts.empty())
continue;
216 std::vector<const Trk::MeasurementBase*> meas {};
217 meas.insert(meas.end(), mdts.begin(), mdts.end());
218 meas.insert(meas.end(), region.clusters().begin(), region.clusters().end());
221 <<
" nMdts: "<<mdts.size()<<
" nClusters "<<region.clusters().size()
225 m_segmentMaker->find(region.regionPos, region.regionDir, mdts, region.clusters(), hasPhiMeasurements, segs,
226 region.regionDir.mag());
228 std::vector<const Trk::RIO_OnTrack*> rios;
229 rios.insert(rios.begin(), mdts.begin(), mdts.end());
234 return StatusCode::SUCCESS;