ATLAS Offline Software
MuonSegmentFinderAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "MuonSegmentFinderAlg.h"
6 
21 
22 MuonSegmentFinderAlg::MuonSegmentFinderAlg(const std::string& name, ISvcLocator* pSvcLocator) : AthReentrantAlgorithm(name, pSvcLocator) {}
23 
25  ATH_CHECK(m_idHelperSvc.retrieve());
26  ATH_CHECK(m_printer.retrieve());
28  ATH_CHECK(m_segmentSelector.retrieve(DisableTool{m_segQuality<0}));
30  ATH_CHECK(m_patternCalibration.retrieve(DisableTool{!m_runMdtSegments}));
31  ATH_CHECK(m_segmentMaker.retrieve(DisableTool{!m_runMdtSegments}));
32 
33 
34  const bool doNSW = m_doSTgcSegments || m_doMMSegments;
35  ATH_CHECK(m_clusterCreator.retrieve(DisableTool{!doNSW}));
36  ATH_CHECK(m_clusterSegMakerNSW.retrieve(DisableTool{!doNSW}));
37  ATH_CHECK(m_csc2dSegmentFinder.retrieve(DisableTool{m_cscPrdsKey.empty()}));
38  ATH_CHECK(m_csc4dSegmentFinder.retrieve(DisableTool{m_cscPrdsKey.empty()}));
39 
40  ATH_CHECK(m_segmentCollectionKey.initialize());
42  ATH_CHECK(m_segmentNSWCollectionKey.initialize(doNSW && !m_segmentNSWCollectionKey.empty()));
43  ATH_CHECK(m_cscPrdsKey.initialize(!m_cscPrdsKey.empty())); // check for layouts without CSCs
44  ATH_CHECK(m_patternCollKey.initialize());
45  return StatusCode::SUCCESS;
46 }
47 
48 StatusCode MuonSegmentFinderAlg::execute(const EventContext& ctx) const {
49 
50  NSWSegmentCache nswCache{};
51  nswCache.buildQuads = !m_segmentNSWCollectionKey.empty();
52 
53  std::unique_ptr<Trk::SegmentCollection> segmentContainer = std::make_unique<Trk::SegmentCollection>();
54  std::unique_ptr<Trk::SegmentCollection> nswSegmentContainer = !m_segmentNSWCollectionKey.empty() ? std::make_unique<Trk::SegmentCollection>()
55  : nullptr;
56 
57 
58  const MuonPatternCombinationCollection* patternColl{nullptr};
59  ATH_CHECK(loadFromStoreGate(ctx, m_patternCollKey, patternColl));
60  ATH_MSG_DEBUG("Processing the pattern collections with " << patternColl->size() << " Collections ");
61 
62  for (const Muon::MuonPatternCombination* patt : *patternColl) {
63  ATH_MSG_DEBUG("Working on pattern combination " << m_printer->print(*patt));
64  // check the technology & call the corresponding segment finder
65 
66  ATH_CHECK(createSegmentsWithMDTs(ctx, patt, segmentContainer.get()));
67 
68 
69  createNSWSegments(ctx, patt, nswCache);
70 
72  segmentContainer->insert(segmentContainer->end(), std::make_move_iterator(nswCache.constructedSegs.begin()),
73  std::make_move_iterator(nswCache.constructedSegs.end()));
74 
75  nswCache.constructedSegs.clear();
76 
77  if (!nswSegmentContainer) continue;
78  nswSegmentContainer->insert(nswSegmentContainer->end(), std::make_move_iterator(nswCache.quadSegs.begin()),
79  std::make_move_iterator(nswCache.quadSegs.end()));
80  nswCache.quadSegs.clear();
81 
82  } // end loop on pattern combinations
83 
84  m_segmentOverlapRemovalTool->removeDuplicates(*segmentContainer);
85 
86  std::unique_ptr<MuonSegmentCombinationCollection> csc4dSegmentCombinations{};
87  ATH_CHECK(createCscSegments(ctx, csc4dSegmentCombinations));
88  appendSegmentsFromCombi(csc4dSegmentCombinations, segmentContainer.get());
89 
91  ATH_MSG_DEBUG("segments before overlap removal: " << segmentContainer->size());
92  m_segmentOverlapRemovalTool->removeDuplicates(*segmentContainer);
93  ATH_MSG_DEBUG(" Segments after overlap removal: " << segmentContainer->size());
94 
95 
96  if (m_printSummary){
97  ATH_MSG_INFO("Number of segments found " << segmentContainer->size());
98  for (Trk::Segment* tseg : *segmentContainer) {
99  const Muon::MuonSegment* mseg{dynamic_cast<Muon::MuonSegment*>(tseg)};
100  ATH_MSG_INFO(m_printer->print(*mseg)<<std::endl<<m_printer->print(mseg->containedMeasurements())<<std::endl);
101  }
102  }
103 
104 
106  ATH_CHECK(handle.record(std::move(segmentContainer)));
107 
108  if (!m_segmentNSWCollectionKey.empty()) {
109  m_segmentOverlapRemovalTool->removeDuplicates(*nswSegmentContainer);
111  ATH_CHECK(handle_segNSW.record(std::move(nswSegmentContainer)));
112  }
113  return StatusCode::SUCCESS;
114 } // execute
115 
117  std::unique_ptr<MuonSegmentCombinationCollection>& csc4dSegmentCombinations) const {
118 
119  const Muon::CscPrepDataContainer* cscPrds{nullptr};
121  if (!cscPrds) return StatusCode::SUCCESS;
122 
123  std::vector<const Muon::CscPrepDataCollection*> cscCols;
124  std::copy_if(cscPrds->begin(),cscPrds->end(), std::back_inserter(cscCols), [](const Muon::CscPrepDataCollection* coll) {return !coll->empty();});
125  ATH_MSG_DEBUG("Retrieved CscPrepDataContainer " << cscCols.size());
126  if (cscCols.empty()) return StatusCode::SUCCESS;
127  std::unique_ptr<MuonSegmentCombinationCollection> csc2dSegmentCombinations = m_csc2dSegmentFinder->find(cscCols, ctx);
128  if (!csc2dSegmentCombinations) return StatusCode::SUCCESS;
129 
130  csc4dSegmentCombinations = m_csc4dSegmentFinder->find(*csc2dSegmentCombinations, ctx);
131  return StatusCode::SUCCESS;
132 }
133 void MuonSegmentFinderAlg::appendSegmentsFromCombi(const std::unique_ptr<MuonSegmentCombinationCollection>& combi_coll,
134  Trk::SegmentCollection* segmentContainer) const {
135  if (!combi_coll) return;
137  for (const Muon::MuonSegmentCombination* combi: *combi_coll) {
138  if (!combi) {
139  ATH_MSG_WARNING(" empty MuonSegmentCombination!!! ");
140  continue;
141  }
142  const unsigned int nstations = combi->numberOfStations();
143  const bool useEta = combi->useStripsInSegment(1);
144  const bool usePhi = combi->useStripsInSegment(0);
145 
146  // loop over chambers in combi and extract segments
147  for (unsigned int i = 0; i < nstations; ++i) {
148  // loop over segments in station
149  Muon::MuonSegmentCombination::SegmentVec* segments = combi->stationSegments(i);
150  // check if not empty
151  if (!segments || segments->empty()) continue;
152  // loop over new segments, copy them into collection
153  for (std::unique_ptr<Muon::MuonSegment>& seg : *segments) {
154  if(m_segQuality >=0 && !m_segmentSelector->select(*seg, false, m_segQuality, useEta, usePhi)) continue;
155  ATH_MSG_VERBOSE("Append segment "<<std::endl<<m_printer->print(seg->containedMeasurements()));
156  segmentContainer->push_back(std::move(seg));
157  }
158 
159  }
160  }
161 }
162 void MuonSegmentFinderAlg::createNSWSegments(const EventContext& ctx,
163  const Muon::MuonPatternCombination* patt,
164  NSWSegmentCache& cache) const {
165  // turn the PRD into MuonCluster
166  if (!m_doSTgcSegments && !m_doMMSegments) return;
167  std::map<int, std::vector<std::unique_ptr<const Muon::MuonClusterOnTrack>> > clustersPerSector;
168 
169 
170  for (const Muon::MuonPatternChamberIntersect& it :patt->chamberData()) {
171  if (it.prepRawDataVec().empty()) continue;
172 
173  const Identifier id = it.prepRawDataVec().front()->identify();
174  const int sector = m_idHelperSvc->sector(id);
176  if (!m_idHelperSvc->isMM(id) && !m_idHelperSvc->issTgc(id)) continue;
177  for (const Trk::PrepRawData* pit : it.prepRawDataVec()) {
178  const Muon::MuonCluster* cl = dynamic_cast<const Muon::MuonCluster*>(pit);
179  if (!cl) continue;
180  else if (!m_doMMSegments && m_idHelperSvc->isMM(cl->identify())) continue;
181  else if (!m_doSTgcSegments && m_idHelperSvc->issTgc(cl->identify())) continue;
182  else if (m_removeUsedNswHits && cache.usedHits.count(cl->identify())) continue;
183  const Muon::MuonClusterOnTrack* newCluster = m_clusterCreator->createRIO_OnTrack(*cl, cl->globalPosition());
184  if (!newCluster) continue;
185  std::vector<std::unique_ptr<const Muon::MuonClusterOnTrack>>& clusters = clustersPerSector[sector];
186  clusters.emplace_back(newCluster);
187  }
188  }
189  for (auto&[sector, clusters] :clustersPerSector) {
190  ATH_MSG_VERBOSE("Run segment making on sector "<<sector);
191  cache.inputClust = std::move(clusters);
192  m_clusterSegMakerNSW->find(ctx, cache);
193  }
194 }
195 
197  const Muon::MuonPatternCombination* patcomb,
198  Trk::SegmentCollection* segs) const {
199 
200  if (!m_runMdtSegments) {
201  ATH_MSG_DEBUG("Do not search segments in the Mdt part of the muon spectrometer");
202  return StatusCode::SUCCESS;
203  }
204 
205  bool hasPhiMeasurements = m_patternCalibration->checkForPhiMeasurements(*patcomb);
207  ATH_CHECK(m_patternCalibration->calibrate(ctx, *patcomb, hitsPerRegion));
209  using ROTRegion = Muon::IMuonPatternCalibration::ROTRegion;
210  for (const ROTRegion& region : hitsPerRegion) {
211  for (const MdtVec& mdts : region.mdts()) {
212  if (mdts.empty()) continue;
213  ATH_MSG_VERBOSE("Calling segment finding for sector " << m_idHelperSvc->chamberNameString(mdts.front()->identify()));
214  // fit the segments
215  if (m_doFullFinder) {
216  if (msgLvl(MSG::VERBOSE)){
217  std::vector<const Trk::MeasurementBase*> meas {};
218  meas.insert(meas.end(), mdts.begin(), mdts.end());
219  meas.insert(meas.end(), region.clusters().begin(), region.clusters().end());
220  ATH_MSG_VERBOSE("Call segment maker with road pos: "<<Amg::toString(region.regionPos)
221  << " road dir: "<<Amg::toString(region.regionDir)
222  <<" nMdts: "<<mdts.size()<<" nClusters "<<region.clusters().size()
223  <<std::endl<<m_printer->print(meas));
224 
225  }
226  m_segmentMaker->find(region.regionPos, region.regionDir, mdts, region.clusters(), hasPhiMeasurements, segs,
227  region.regionDir.mag());
228  } else {
229  std::vector<const Trk::RIO_OnTrack*> rios;
230  rios.insert(rios.begin(), mdts.begin(), mdts.end());
231  m_segmentMaker->find(rios, segs);
232  }
233  } // end loop on hits per region
234  }
235  return StatusCode::SUCCESS;
236 }
237 template <class ContType> StatusCode MuonSegmentFinderAlg::loadFromStoreGate(const EventContext& ctx,
239  const ContType* & cont_ptr) const {
240  if (key.empty()){
241  ATH_MSG_VERBOSE("Empty key given for "<<typeid(ContType).name()<<".");
242  cont_ptr = nullptr;
243  return StatusCode::SUCCESS;
244  }
245  SG::ReadHandle<ContType> readHandle{key, ctx};
246  if (!readHandle.isValid()) {
247  ATH_MSG_FATAL("Failed to retrieve "<<key.fullKey()<<" from store gate");
248  return StatusCode::FAILURE;
249  }
250  cont_ptr = readHandle.cptr();
251  return StatusCode::SUCCESS;
252 }
Muon::MuonPatternCombination::chamberData
const std::vector< MuonPatternChamberIntersect > & chamberData() const
access to the MuonPatternChamberIntersect associated with the MuonPatternCombination
Definition: MuonPatternCombination.h:60
MuonSegmentFinderAlg::m_segQuality
Gaudi::Property< int > m_segQuality
Apply a preselection on the segments.
Definition: MuonSegmentFinderAlg.h:137
MuonCluster.h
MuonSegmentFinderAlg::appendSegmentsFromCombi
void appendSegmentsFromCombi(const std::unique_ptr< MuonSegmentCombinationCollection > &combi_coll, Trk::SegmentCollection *segments) const
Definition: MuonSegmentFinderAlg.cxx:133
Muon::IMuonPatternCalibration::MdtVec
std::vector< const MdtDriftCircleOnTrack * > MdtVec
Definition: IMuonPatternCalibration.h:27
Muon::MuonPrepDataContainer
Template for Muon PRD containers (which are basically collections of MuonPrepDataCollections).
Definition: MuonPrepDataContainer.h:42
Muon::MuonSegmentCombination
Definition: MuonSegmentCombination.h:30
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonSegmentFinderAlg::m_doMMSegments
Gaudi::Property< bool > m_doMMSegments
Definition: MuonSegmentFinderAlg.h:132
MuonPatternChamberIntersect.h
MuonSegmentFinderAlg.h
MuonSegmentFinderAlg::initialize
virtual StatusCode initialize() override
Definition: MuonSegmentFinderAlg.cxx:24
TrackParameters.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonSegmentFinderAlg::MuonSegmentFinderAlg
MuonSegmentFinderAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonSegmentFinderAlg.cxx:22
MuonSegmentFinderAlg::m_clusterCreator
ToolHandle< Muon::IMuonClusterOnTrackCreator > m_clusterCreator
Definition: MuonSegmentFinderAlg.h:58
MuonSegmentFinderAlg::m_csc4dSegmentFinder
ToolHandle< ICscSegmentFinder > m_csc4dSegmentFinder
Definition: MuonSegmentFinderAlg.h:73
MuonSegmentFinderAlg::m_patternCalibration
ToolHandle< Muon::IMuonPatternCalibration > m_patternCalibration
Definition: MuonSegmentFinderAlg.h:43
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
MuonSegmentFinderAlg::m_segmentSelector
ToolHandle< Muon::IMuonSegmentSelectionTool > m_segmentSelector
Definition: MuonSegmentFinderAlg.h:79
skel.it
it
Definition: skel.GENtoEVGEN.py:396
MuonSegmentFinderAlg::m_segmentCollectionKey
SG::WriteHandleKey< Trk::SegmentCollection > m_segmentCollectionKey
Definition: MuonSegmentFinderAlg.h:83
MuonSegmentFinderAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonSegmentFinderAlg.h:32
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
MuonSegmentFinderAlg::m_cscPrdsKey
SG::ReadHandleKey< Muon::CscPrepDataContainer > m_cscPrdsKey
Definition: MuonSegmentFinderAlg.h:95
MuonSegmentFinderAlg::m_doFullFinder
Gaudi::Property< bool > m_doFullFinder
Run segment finding with eta / phi determination.
Definition: MuonSegmentFinderAlg.h:127
MuonPrepDataContainer.h
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
MuonSegmentFinderAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: MuonSegmentFinderAlg.cxx:48
MuonSegmentFinderAlg::m_removeUsedNswHits
Gaudi::Property< bool > m_removeUsedNswHits
If switched to true, hits that have been already successfully combined to a segment are removed from ...
Definition: MuonSegmentFinderAlg.h:135
MuonSegmentFinderAlg::loadFromStoreGate
StatusCode loadFromStoreGate(const EventContext &ctx, const SG::ReadHandleKey< ContType > &key, const ContType *&cont_ptr) const
load the container from storegate given a ReadHandleKey.
Definition: MuonSegmentFinderAlg.cxx:237
MuonSegmentFinderAlg::m_printer
PublicToolHandle< Muon::MuonEDMPrinterTool > m_printer
Definition: MuonSegmentFinderAlg.h:38
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
MuonSegmentCombination.h
Muon::IMuonPatternCalibration::ROTRegion
Definition: IMuonPatternCalibration.h:30
MuonSegmentFinderAlg::m_doSTgcSegments
Gaudi::Property< bool > m_doSTgcSegments
Run the NSW segment maker.
Definition: MuonSegmentFinderAlg.h:131
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonSegmentFinderAlg::createSegmentsWithMDTs
StatusCode createSegmentsWithMDTs(const EventContext &ctx, const Muon::MuonPatternCombination *patt, Trk::SegmentCollection *segs) const
Definition: MuonSegmentFinderAlg.cxx:196
EventPrimitivesToStringConverter.h
lumiFormat.i
int i
Definition: lumiFormat.py:85
MuonPrepDataCollection.h
Muon::MuonPatternChamberIntersect
This class holds information needed for the Moore and MoMu pattern recognition for a muon chamber.
Definition: MuonPatternChamberIntersect.h:38
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonSegmentCombinationCollection.h
Trk::Segment
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:56
MuonPatternCombination.h
MuonPatternCombinationCollection.h
MuonSegmentFinderAlg::m_printSummary
Gaudi::Property< bool > m_printSummary
Definition: MuonSegmentFinderAlg.h:124
AnalysisUtils::copy_if
Out copy_if(In first, const In &last, Out res, const Pred &p)
Definition: IFilterUtils.h:30
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DataVector::insert
iterator insert(iterator position, value_type pElem)
Add a new element to the collection.
MuonReadoutElement.h
Muon::MuonPrepDataCollection
Template to hold collections of MuonPrepRawData objects.
Definition: MuonPrepDataCollection.h:46
DataVector< Muon::MuonPatternCombination >
Muon::IMuonNSWSegmentFinderTool::SegmentMakingCache::buildQuads
bool buildQuads
Toggle whether quad segments should be built or not.
Definition: IMuonNSWSegmentFinderTool.h:35
Muon::IMuonPatternCalibration::ROTsPerRegion
std::vector< ROTRegion > ROTsPerRegion
Definition: IMuonPatternCalibration.h:55
Trk::PrepRawData
Definition: PrepRawData.h:62
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
MuonSegmentFinderAlg::m_segmentMaker
ToolHandle< Muon::IMuonSegmentMaker > m_segmentMaker
Definition: MuonSegmentFinderAlg.h:48
Muon::IMuonNSWSegmentFinderTool::SegmentMakingCache::inputClust
std::vector< std::unique_ptr< const Muon::MuonClusterOnTrack > > inputClust
Input vector containing all muon cluster on track.
Definition: IMuonNSWSegmentFinderTool.h:39
MuonSegPatAssMap.h
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
MuonSegmentFinderAlg::createNSWSegments
void createNSWSegments(const EventContext &ctx, const Muon::MuonPatternCombination *patt, NSWSegmentCache &cache) const
Definition: MuonSegmentFinderAlg.cxx:162
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
MuonSegmentFinderAlg::m_csc2dSegmentFinder
ToolHandle< ICscSegmentFinder > m_csc2dSegmentFinder
Definition: MuonSegmentFinderAlg.h:68
MuonSegmentFinderAlg::m_segmentOverlapRemovalTool
ToolHandle< Muon::IMuonSegmentOverlapRemovalTool > m_segmentOverlapRemovalTool
Definition: MuonSegmentFinderAlg.h:53
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Muon::MuonSegmentCombination::SegmentVec
std::vector< std::unique_ptr< MuonSegment > > SegmentVec
Definition: MuonSegmentCombination.h:32
MuonSegmentFinderAlg::m_segmentNSWCollectionKey
SG::WriteHandleKey< Trk::SegmentCollection > m_segmentNSWCollectionKey
Definition: MuonSegmentFinderAlg.h:89
Muon::IMuonNSWSegmentFinderTool::SegmentMakingCache
Helper struct to parse the data around.
Definition: IMuonNSWSegmentFinderTool.h:31
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
MuonSegment.h
Muon::MuonCluster
Class representing clusters in the muon system.
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonCluster.h:37
MuonClusterOnTrack.h
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
Muon::MuonSegment
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:45
Muon::MuonPatternCombination
The MuonPatternCombination class provides the means to store the output of the initial global pattern...
Definition: MuonPatternCombination.h:29
Muon::IMuonNSWSegmentFinderTool::SegmentMakingCache::usedHits
std::set< Identifier > usedHits
Set of all hits used in the segment making.
Definition: IMuonNSWSegmentFinderTool.h:41
MuonSegmentFinderAlg::m_patternCollKey
SG::ReadHandleKey< MuonPatternCombinationCollection > m_patternCollKey
Definition: MuonSegmentFinderAlg.h:101
MuonSegmentFinderAlg::createCscSegments
StatusCode createCscSegments(const EventContext &ctx, std::unique_ptr< MuonSegmentCombinationCollection > &csc4dSegmentCombinations) const
Retrieve the raw outputs from the Csc segment makers for the curved combination.
Definition: MuonSegmentFinderAlg.cxx:116
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
MuonSegmentFinderAlg::m_clusterSegMakerNSW
ToolHandle< Muon::IMuonNSWSegmentFinderTool > m_clusterSegMakerNSW
Definition: MuonSegmentFinderAlg.h:63
Muon::MuonClusterOnTrack
Base class for Muon cluster RIO_OnTracks.
Definition: MuonClusterOnTrack.h:34
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
MuonSegmentFinderAlg::m_runMdtSegments
Gaudi::Property< bool > m_runMdtSegments
Run the Mdt segment maker (Switched of the NCB systems)
Definition: MuonSegmentFinderAlg.h:129
Identifier
Definition: IdentifierFieldParser.cxx:14