ATLAS Offline Software
TrackingHelpers.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
7 
8 namespace{
10  using PrdLinkVec_t = std::vector<PrdLink_t>;
11  static const SG::ConstAccessor<PrdLinkVec_t> acc_prdLinks{"prdLinks"};
12  static const SG::ConstAccessor<std::vector<char>> acc_prdState{"prdState"};
13 }
14 
15 namespace MuonR4{
16 
17  std::string printID(const xAOD::MuonSegment& seg) {
18  using namespace Muon::MuonStationIndex;
19  return std::format("{:}{:}{:}{:}", chName(seg.chamberIndex()),
20  std::abs(seg.etaIndex()),
21  seg.etaIndex() > 0 ? 'A' : 'C',
22  seg.sector());
23  }
26  static const SG::ConstAccessor<SegLink_t> acc{"parentSegment"};
27  if (acc.isAvailable(seg)){
28  const SegLink_t& link{acc(seg)};
29  if (link.isValid()){
30  return *link;
31  }
32  }
33  return nullptr;
34  }
35 
36  std::size_t nMeasurements(const xAOD::MuonSegment& segment) {
37  return acc_prdLinks.isAvailable(segment) ? acc_prdLinks(segment).size() : 0;
38  }
40  const std::size_t n) {
41  if (!acc_prdLinks.isAvailable(segment)) {
42  return nullptr;
43  }
44  assert(n < nMeasurements(segment));
45  const PrdLink_t& link{acc_prdLinks(segment)[n]};
46  return link.isValid() ? *link : nullptr;
47  }
49  const std::size_t n) {
50  if(!acc_prdState.isAvailable(segment)) {
51  return false;
52  }
53  assert (n < acc_prdState(segment).size());
54  return acc_prdState(segment)[n] != Acts::toUnderlying(CalibratedSpacePoint::State::Valid);
55  }
56  std::vector<const xAOD::UncalibratedMeasurement*> collectMeasurements(const xAOD::MuonSegment& segment,
57  bool skipOutlier) {
58  std::vector<const xAOD::UncalibratedMeasurement*> out{};
59  const PrdLinkVec_t& links{acc_prdLinks(segment)};
60  out.reserve(links.size());
61  for (std::size_t l = 0 ; l < links.size(); ++l) {
62  const PrdLink_t& link{links[l]};
63  if (!skipOutlier || !isOutlierMeasurement(segment, l)) {
64  out.push_back(*link);
65  }
66  }
67  return out;
68  }
69 }
MuonR4::printID
std::string printID(const xAOD::MuonSegment &seg)
Print the chamber ID of a segment, e.g.
Definition: TrackingHelpers.cxx:17
vtune_athena.format
format
Definition: vtune_athena.py:14
Muon::MuonStationIndex
Definition: MuonStationIndex.h:13
MuonR4::CalibratedSpacePoint::State::Valid
@ Valid
MuonR4::PrdLink_t
ElementLink< PrdCont_t > PrdLink_t
Abrivation to call the link to an element inside an uncalibrated measurement container.
Definition: xAODSegmentCnvAlg.cxx:24
MuonR4::Segment
Placeholder for what will later be the muon segment EDM representation.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:19
MuonR4::collectMeasurements
std::vector< const xAOD::UncalibratedMeasurement * > collectMeasurements(const xAOD::MuonSegment &segment, bool skipOutlier=true)
Helper function to extract the measurements from the segment.
Definition: TrackingHelpers.cxx:56
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
MuonR4::nMeasurements
std::size_t nMeasurements(const xAOD::MuonSegment &segment)
Returns the number of associated Uncalibrated measurements.
Definition: TrackingHelpers.cxx:36
MuonR4::detailedSegment
const Segment * detailedSegment(const xAOD::MuonSegment &seg)
Helper function to navigate from the xAOD::MuonSegment to the MuonR4::Segment.
Definition: TrackingHelpers.cxx:24
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
beamspotman.n
n
Definition: beamspotman.py:727
Muon::MuonStationIndex::chName
const std::string & chName(ChIndex index)
convert ChIndex into a string
Definition: MuonStationIndex.cxx:119
DMTest::links
links
Definition: CLinks_v1.cxx:22
MuonPatternContainer.h
UncalibratedMeasurementContainer.h
MuonR4::PrdLinkVec_t
std::vector< PrdLink_t > PrdLinkVec_t
Abrivation of a collection of Prd links.
Definition: xAODSegmentCnvAlg.cxx:26
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
TrackingHelpers.h
MuonR4::getMeasurement
const xAOD::UncalibratedMeasurement * getMeasurement(const xAOD::MuonSegment &segment, const std::size_t n)
Returns the n-th uncalibrated measurement.
Definition: TrackingHelpers.cxx:39
MuonR4::isOutlierMeasurement
bool isOutlierMeasurement(const xAOD::MuonSegment &segment, const std::size_t n)
Returns whether the n-the uncalibrated measurement is an outlier.
Definition: TrackingHelpers.cxx:48
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
xAOD::MuonSegment_v1::sector
int sector() const
xAOD::MuonSegment_v1::etaIndex
int etaIndex() const
Returns the eta index, which corresponds to stationEta in the offline identifiers (and the ).
xAOD::MuonSegment_v1::chamberIndex
::Muon::MuonStationIndex::ChIndex chamberIndex() const
Returns the chamber index.