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 }
12 
13 namespace MuonR4{
14 
15  std::string printID(const xAOD::MuonSegment& seg) {
16  using namespace Muon::MuonStationIndex;
17  return std::format("{:}{:}{:}{:}", chName(seg.chamberIndex()),
18  std::abs(seg.etaIndex()),
19  seg.etaIndex() > 0 ? 'A' : 'C',
20  seg.sector());
21  }
24  static const SG::ConstAccessor<SegLink_t> acc{"parentSegment"};
25  if (acc.isAvailable(seg)){
26  const SegLink_t& link{acc(seg)};
27  if (link.isValid()){
28  return *link;
29  }
30  }
31  return nullptr;
32  }
33  std::vector<const xAOD::UncalibratedMeasurement*> collectMeasurements(const Segment& seg,
34  bool skipOutlier) {
35  std::vector<const xAOD::UncalibratedMeasurement*> out{};
36  out.reserve(seg.measurements().size()*2);
37  for (const auto& meas : seg.measurements()){
39  if (skipOutlier && meas->fitState() != CalibratedSpacePoint::State::Valid) {
40  continue;
41  }
42  // Remove the external constraints
43  const SpacePoint* sp = meas->spacePoint();
44  if (!sp) {
45  continue;
46  }
47  out.emplace_back(sp->primaryMeasurement());
48  if (sp->secondaryMeasurement()) {
49  out.emplace_back(sp->secondaryMeasurement());
50  }
51  }
52  return out;
53  }
54  std::vector<const xAOD::UncalibratedMeasurement*> collectMeasurements(const xAOD::MuonSegment& segment,
55  bool skipOutlier) {
56  static const SG::ConstAccessor<PrdLinkVec_t> acc_prdLinks{"prdLinks"};
57  static const SG::ConstAccessor<std::vector<char>> acc_prdState{"prdState"};
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 ||
64  acc_prdState(segment)[l] == Acts::toUnderlying(CalibratedSpacePoint::State::Valid)) {
65  out.push_back(*link);
66 
67  }
68  }
69  return out;
70  }
71 }
MuonR4::collectMeasurements
std::vector< const xAOD::UncalibratedMeasurement * > collectMeasurements(const Segment &seg, bool skipOutlier=true)
Helper function to extract the measurements from the segment.
Definition: TrackingHelpers.cxx:33
MuonR4::printID
std::string printID(const xAOD::MuonSegment &seg)
Print the chamber ID of a segment, e.g.
Definition: TrackingHelpers.cxx:15
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::Segment::measurements
const MeasVec & measurements() const
Returns the associated measurements.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:49
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
MuonR4::SpacePoint::secondaryMeasurement
const xAOD::UncalibratedMeasurement * secondaryMeasurement() const
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx:78
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::detailedSegment
const Segment * detailedSegment(const xAOD::MuonSegment &seg)
Helper function to navigate from the xAOD::MuonSegment to the MuonR4::Segment.
Definition: TrackingHelpers.cxx:22
MuonR4::SpacePoint::primaryMeasurement
const xAOD::UncalibratedMeasurement * primaryMeasurement() const
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/src/SpacePoint.cxx:75
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
MuonR4::SpacePoint
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h:24
TrackingHelpers.h
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.