ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
MuonR4::TrackSummaryTool Class Reference

#include <TrackSummaryTool.h>

Inheritance diagram for MuonR4::TrackSummaryTool:
Collaboration diagram for MuonR4::TrackSummaryTool:

Public Member Functions

virtual StatusCode initialize () override final
 
virtual HitSummary makeSummary (const EventContext &ctx, const ConstTrack_t trackProxy) const override final
 
virtual HitSummary makeSummary (const EventContext &ctx, const MsTrackSeed &seed) const override final
 
virtual void copySummary (const HitSummary &summary, xAOD::IParticle &track) const override final
 

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "IdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 IdHelperSvc to decode the Identifiers. More...
 

Detailed Description

Definition at line 19 of file MuonSpectrometer/MuonPhaseII/MuonTrackBuilding/MuonTrackFindingTools/src/TrackSummaryTool.h.

Member Function Documentation

◆ copySummary()

void MuonR4::TrackSummaryTool::copySummary ( const HitSummary summary,
xAOD::IParticle track 
) const
finaloverridevirtual

Definition at line 119 of file MuonSpectrometer/MuonPhaseII/MuonTrackBuilding/MuonTrackFindingTools/src/TrackSummaryTool.cxx.

120  {
121  ATH_MSG_DEBUG("Copy the summary \n "<<summary<<"\n pT: "<<track.pt()
122  <<", eta: "<<track.eta()<<", phi: "<<track.phi());
123  ATH_MSG_ALWAYS(__FILE__<<":"<<__LINE__<<" Implement me");
124  }

◆ initialize()

StatusCode MuonR4::TrackSummaryTool::initialize ( )
finaloverridevirtual

Definition at line 19 of file MuonSpectrometer/MuonPhaseII/MuonTrackBuilding/MuonTrackFindingTools/src/TrackSummaryTool.cxx.

19  {
20  ATH_CHECK(m_idHelperSvc.retrieve());
21  return StatusCode::SUCCESS;
22  }

◆ makeSummary() [1/2]

HitSummary MuonR4::TrackSummaryTool::makeSummary ( const EventContext &  ctx,
const ConstTrack_t  trackProxy 
) const
finaloverridevirtual

Surface is not active

Measurement is not muon

Mdt twin tubes

Combined measurement or it's a 2D BI strip

Definition at line 23 of file MuonSpectrometer/MuonPhaseII/MuonTrackBuilding/MuonTrackFindingTools/src/TrackSummaryTool.cxx.

24  {
25  HitSummary summary{};
26  trackProxy.container().trackStateContainer().visitBackwards(trackProxy.tipIndex(),
27  [&](const auto& state){
28 
29  Cat_t cat1{Cat_t::nCategories}, cat2{Cat_t::nCategories};
30  Stat_t status{Stat_t::OnTrack};
31  if (state.typeFlags().test(Acts::TrackStateFlag::OutlierFlag)){
32  status = Stat_t::Outlier;
33  } else if (state.typeFlags().test(Acts::TrackStateFlag::HoleFlag)) {
34  status = Stat_t::Hole;
35  }
36  LayerIndex layer{LayerIndex::LayerUnknown};
37  Identifier hitId{};
38  unsigned nDim{1};
39  bool small{false};
40  if (state.hasUncalibratedSourceLink()) {
41  const xAOD::UncalibratedMeasurement* meas = xAODUncalibMeasCalibrator::unpack(state.getUncalibratedSourceLink());
42  hitId = xAOD::identify(meas);
43  nDim = meas->numDimensions();
44  } else if (state.hasReferenceSurface()) {
45  const Acts::Surface& surf{state.referenceSurface()};
47  const Acts::DetectorElementBase* detEl = surf.associatedDetectorElement();
48  if (!detEl) {
49  return;
50  }
51  hitId = static_cast<const ActsTrk::IDetectorElementBase*>(detEl)->identify();
53  }
54 
56  const TechIdx techIdx = m_idHelperSvc->technologyIndex(hitId);
59  return;
60  }
61  ATH_MSG_VERBOSE("Write summary for "<<m_idHelperSvc->toString(hitId));
62 
63  const ChIndex chIdx = m_idHelperSvc->chamberIndex(hitId);
64  layer = toLayerIndex(chIdx);
65  small = isSmall(chIdx);
66 
67  if (techIdx == TechIdx::MDT || techIdx == TechIdx::MM) {
68  cat1 = Cat_t::Precision;
70  if (nDim == 2){
71  cat2 = Cat_t::TriggerPhi;
72  }
73  } else if (techIdx == TechIdx::RPC || techIdx == TechIdx::TGC) {
75  if (nDim == 0 || nDim == 2) {
76  cat1 = Cat_t::TriggerEta;
77  cat2 = Cat_t::TriggerPhi;
78  } else if (m_idHelperSvc->measuresPhi(hitId)) {
79  cat1 = Cat_t::TriggerPhi;
80  } else {
81  cat1 = Cat_t::TriggerEta;
82  }
83  } else {
84  ATH_MSG_ALWAYS(__FILE__<<":"<<__LINE__<<" Implement sTGC!");
85  return;
86  }
87 
88  if (cat1 != Cat_t::nCategories){
89  ATH_MSG_VERBOSE("Increment "<<summary.toString(cat1)<<", layer: "
90  <<Muon::MuonStationIndex::layerName(layer)<<", small: "<<(small ? "yes" : "no"));
91  ++summary.value(cat1, status, layer, small);
92  }
93  if (cat2 != Cat_t::nCategories) {
94  ATH_MSG_VERBOSE("Increment "<<summary.toString(cat2)<<", layer: "
95  <<Muon::MuonStationIndex::layerName(layer)<<", small: "<<(small ? "yes" : "no"));
96  ++summary.value(cat2, status, layer, small);
97  }
98  });
99  ATH_MSG_DEBUG("Obtained track summary from track with "<<Acts::toString(trackProxy.fourMomentum())
100  <<", q: "<<trackProxy.qOverP()
101  <<", chi2: "<<(trackProxy.chi2()/ std::max(trackProxy.nDoF(), 1u))
102  <<", nDoF: "<<trackProxy.nDoF()<<"\n"<<summary);
103  return summary;
104  }

◆ makeSummary() [2/2]

HitSummary MuonR4::TrackSummaryTool::makeSummary ( const EventContext &  ctx,
const MsTrackSeed seed 
) const
finaloverridevirtual

Definition at line 106 of file MuonSpectrometer/MuonPhaseII/MuonTrackBuilding/MuonTrackFindingTools/src/TrackSummaryTool.cxx.

107  {
108  HitSummary summary{};
109  for (const xAOD::MuonSegment* seg : seed.segments()){
110  const LayerIndex lay = toLayerIndex(seg->chamberIndex());
111  const bool small = isSmall(seg->chamberIndex());
112  summary.value(Cat_t::Precision, Stat_t::OnTrack, lay, small) = seg->nPrecisionHits();
113  summary.value(Cat_t::TriggerEta, Stat_t::OnTrack, lay, small) = seg->nTrigEtaLayers();
114  summary.value(Cat_t::TriggerPhi, Stat_t::OnTrack, lay, small) = seg->nPhiLayers();
115  }
116  return summary;
117  }

Member Data Documentation

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonR4::TrackSummaryTool::m_idHelperSvc {this, "IdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

The documentation for this class was generated from the following files:
TGC
@ TGC
Definition: RegSelEnums.h:33
Muon::MuonStationIndex::LayerIndex
LayerIndex
enum to classify the different layers in the muon spectrometer
Definition: MuonStationIndex.h:38
MuonR4::HitSummary::HitCategory::TriggerPhi
@ TriggerPhi
Trigger eta hits (Tgc, Rpc)
xAOD::identify
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.
Definition: MuonSpectrometer/MuonPhaseII/Event/xAOD/xAODMuonPrepData/Root/UtilFunctions.cxx:95
MuonR4::Stat_t
HitSummary::Status Stat_t
Definition: MuonSpectrometer/MuonPhaseII/MuonTrackBuilding/MuonTrackFindingTools/src/TrackSummaryTool.cxx:16
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
MuonR4::HitSummary::HitCategory::Precision
@ Precision
Muon::MuonStationIndex::TechnologyIndex
TechnologyIndex
enum to classify the different layers in the muon spectrometer
Definition: MuonStationIndex.h:54
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
MM
@ MM
Definition: RegSelEnums.h:38
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonR4::HitSummary::HitCategory::nCategories
@ nCategories
Trigger phi hits (Tgc, Rpc)
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
ActsTrk::IDetectorElementBase
base class interface providing the bare minimal interface extension.
Definition: IDetectorElement.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonR4::HitSummary::Status::OnTrack
@ OnTrack
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
ATH_MSG_ALWAYS
#define ATH_MSG_ALWAYS(x)
Definition: AthMsgStreamMacros.h:35
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonR4::TrackSummaryTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
IdHelperSvc to decode the Identifiers.
Definition: MuonSpectrometer/MuonPhaseII/MuonTrackBuilding/MuonTrackFindingTools/src/TrackSummaryTool.h:35
MuonR4::HitSummary::Status::Hole
@ Hole
Added to the trajectory but rejected.
RPC
@ RPC
Definition: RegSelEnums.h:32
Muon::MuonStationIndex::layerName
const std::string & layerName(LayerIndex index)
convert LayerIndex into a string
Definition: MuonStationIndex.cxx:153
Muon::MuonStationIndex::TechnologyIndex::TechnologyUnknown
@ TechnologyUnknown
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
Muon::MuonStationIndex::toLayerIndex
LayerIndex toLayerIndex(ChIndex index)
convert ChIndex into LayerIndex
merge.status
status
Definition: merge.py:16
Muon::MuonStationIndex::ChIndex
ChIndex
enum to classify the different chamber layers in the muon spectrometer
Definition: MuonStationIndex.h:15
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
MuonR4::HitSummary::HitCategory::TriggerEta
@ TriggerEta
Precision hits (Mdt, NSW) on track.
MDT
@ MDT
Definition: RegSelEnums.h:31
Muon::MuonStationIndex::isSmall
bool isSmall(const ChIndex index)
Returns true if the chamber index is in a small sector.
Identifier
Definition: IdentifierFieldParser.cxx:14
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65