ATLAS Offline Software
MuonRecoValidationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUON_MuonRecoValidationTool_H
6 #define MUON_MuonRecoValidationTool_H
7 
8 #include <atomic>
9 #include <vector>
10 
14 #include "GaudiKernel/IIncidentListener.h"
15 #include "GaudiKernel/ServiceHandle.h"
16 #include "GaudiKernel/ToolHandle.h"
32 
33 class TTree;
34 class TFile;
35 class IIncidentSvc;
36 
37 namespace Trk {
38  class Track;
39 }
40 
41 namespace Muon {
42  class MuonClusterOnTrack;
43 
44  struct MuonCandidate;
45 
46  class ATLAS_NOT_THREAD_SAFE MuonRecoValidationTool : public IMuonRecoValidationTool, virtual public IIncidentListener, public AthAlgTool {
47  public:
49  MuonRecoValidationTool(const std::string&, const std::string&, const IInterface*);
50 
53 
55  virtual StatusCode initialize() override;
56 
58  bool addTrackParticle(const xAOD::TrackParticle& indetTrackParticle, const MuonSystemExtension& muonSystemExtention) const override;
59 
61  bool add(const MuonSystemExtension::Intersection& intersection, const MuonSegment& segment, int stage) const override;
62 
65 
67  bool add(const MuonSystemExtension::Intersection& intersection, const Trk::PrepRawData& prd, float expos,
68  float expos_err) const override;
69 
71  bool addTimeMeasurement(const MuonSystemExtension::Intersection& intersection, const Trk::MeasurementBase& meas) const override;
72 
74  bool addTimeMeasurement(const MuonSystemExtension::Intersection& intersection, const Identifier& id, const Amg::Vector3D& gpos,
75  float time, float errorTime) const override;
76 
78  bool addTimeMeasurements(const xAOD::TrackParticle& indetTrackParticle, const MuGirlNS::StauHits& stauHits) const override;
79 
81  bool addMuonCandidate(const xAOD::TrackParticle& indetTrackParticle, const MuonCandidate* candidate, Trk::Track* combinedTrack,
82  int ntimes, float beta, float chi2ndof, int stage) const override;
83 
85  virtual void handle(const Incident& inc) override;
86 
87  private:
89  void clear();
90 
91  void extract(const MuonSegment& segment, std::set<Identifier>& ids, std::vector<const MuonClusterOnTrack*>& clusters) const;
92 
94  int index = -1;
95  auto result = m_trackParticleIndexLookup.find(intersection.trackParameters.get());
96  if (result != m_trackParticleIndexLookup.end()) index = result->second;
97  return index;
98  }
99 
100  // extract majority barcode out of a set of identifiers
101  int getBarcode(const std::set<Identifier>& ids) const; // FIXME barcode-based
102 
103  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
104  ServiceHandle<IMuonEDMHelperSvc> m_edmHelperSvc{this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
105  "Handle to the service providing the IMuonEDMHelperSvc interface"};
106  ToolHandle<IMuonSegmentHitSummaryTool> m_segmentHitSummaryTool;
107  ToolHandle<IMuonHitSummaryTool> m_hitSummaryTool;
108  ToolHandle<IMuonTruthSummaryTool> m_truthSummaryTool;
109  ToolHandle<Trk::IExtrapolator> m_extrapolator;
110  ToolHandle<IMuTagMatchingTool> m_matchingTool;
111  ToolHandle<IMuonHitTimingTool> m_hitTimingTool;
113 
114  // the following members are supposed to be used in 1-thread debugging, thus, not in production and not with mutliple threads
115  mutable std::vector<const xAOD::TrackParticle*> m_trackParticles;
116  mutable std::map<const Trk::TrackParameters*, unsigned int> m_trackParticleIndexLookup;
117 
119  TTree* m_tree = nullptr;
120 
121  mutable std::atomic<unsigned int> m_candidateCounter;
122 
123  bool m_isMC;
124  };
125 
126 } // namespace Muon
127 
128 #endif
Muon::MuonRecoValidationTool::m_ntuple
MuonInsideOutValidationNtuple m_ntuple
Definition: MuonRecoValidationTool.h:118
Muon::MuonCandidate
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonLayerEvent/MuonLayerEvent/MuonCandidate.h:14
Muon::MuonRecoValidationTool::m_trackParticles
std::vector< const xAOD::TrackParticle * > m_trackParticles
Definition: MuonRecoValidationTool.h:115
Muon::MuonRecoValidationTool::m_hitSummaryTool
ToolHandle< IMuonHitSummaryTool > m_hitSummaryTool
Definition: MuonRecoValidationTool.h:107
Muon::MuonRecoValidationTool
Definition: MuonRecoValidationTool.h:46
get_generator_info.result
result
Definition: get_generator_info.py:21
python.FPGATrackSimAnalysisConfig.stage
stage
Definition: FPGATrackSimAnalysisConfig.py:604
MeasurementBase.h
IMuonHitSummaryTool.h
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
ATLAS_NOT_THREAD_SAFE
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Definition: checker_macros.h:212
index
Definition: index.py:1
Muon::MuonRecoValidationTool::m_isMC
bool m_isMC
Definition: MuonRecoValidationTool.h:123
initialize
void initialize()
Definition: run_EoverP.cxx:894
EventPrimitivesHelpers.h
IMuTagMatchingTool.h
IExtrapolator.h
IMuonTruthSummaryTool.h
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
intersection
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
Definition: compareFlatTrees.cxx:25
Trk::combinedTrack
void combinedTrack(long int ICH, double *pv0, double *covi, double BMAG, double *par, double *covo)
Definition: XYZtrp.cxx:113
Muon::MuonRecoValidationTool::m_trackParticleIndexLookup
std::map< const Trk::TrackParameters *, unsigned int > m_trackParticleIndexLookup
Definition: MuonRecoValidationTool.h:116
MuonLayerHough.h
IMuonHitTimingTool.h
MuonHough::MuonLayerHough::Maximum
struct representing the maximum in the hough space
Definition: MuonLayerHough.h:56
Muon::MuonRecoValidationTool::~MuonRecoValidationTool
~MuonRecoValidationTool()=default
destructor
Muon::MuonRecoValidationTool::m_candidateCounter
std::atomic< unsigned int > m_candidateCounter
Definition: MuonRecoValidationTool.h:121
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Muon::MuonSystemExtension
Tracking class to hold the extrapolation from a particle from the calo entry to the end of muon syste...
Definition: MuonSystemExtension.h:18
AthAlgTool.h
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
Trk::PrepRawData
Definition: PrepRawData.h:62
Trk::MeasurementBase
Definition: MeasurementBase.h:58
IMuonEDMHelperSvc.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
MuonSystemExtension.h
Muon::MuonRecoValidationTool::m_incidentSvc
ServiceHandle< IIncidentSvc > m_incidentSvc
Definition: MuonRecoValidationTool.h:112
Muon::IMuonRecoValidationTool
Definition: IMuonRecoValidationTool.h:21
MuonInsideOutValidationNtuple.h
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
Muon::MuonRecoValidationTool::m_hitTimingTool
ToolHandle< IMuonHitTimingTool > m_hitTimingTool
Definition: MuonRecoValidationTool.h:111
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
IMuonRecoValidationTool.h
TrackParticle.h
DeMoScan.index
string index
Definition: DeMoScan.py:362
Muon::MuonRecoValidationTool::m_segmentHitSummaryTool
ToolHandle< IMuonSegmentHitSummaryTool > m_segmentHitSummaryTool
Definition: MuonRecoValidationTool.h:106
VKalVrtAthena::varHolder_detail::clear
void clear(T &var)
Definition: NtupleVars.h:48
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
Muon::MuonRecoValidationTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: MuonRecoValidationTool.h:109
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
Muon::MuonInsideOutValidationNtuple
Definition: MuonInsideOutValidationNtuple.h:282
Muon::MuonRecoValidationTool::getIndex
int getIndex(const MuonSystemExtension::Intersection &intersection) const
Definition: MuonRecoValidationTool.h:93
CandidateSummary.h
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Muon::MuonSystemExtension::Intersection
data per intersection
Definition: MuonSystemExtension.h:21
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
Muon::MuonRecoValidationTool::m_truthSummaryTool
ToolHandle< IMuonTruthSummaryTool > m_truthSummaryTool
Definition: MuonRecoValidationTool.h:108
Muon::MuonSegment
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:45
AthAlgTool
Definition: AthAlgTool.h:26
MuonParameters::beta
@ beta
Definition: MuonParamDefs.h:144
IMuonSegmentHitSummaryTool.h
checker_macros.h
Define macros for attributes used to control the static checker.
Muon::MuonRecoValidationTool::m_matchingTool
ToolHandle< IMuTagMatchingTool > m_matchingTool
Definition: MuonRecoValidationTool.h:110
tools.zlumi_alleff.extract
def extract(histogram, bin1, bin2)
Definition: zlumi_alleff.py:272
MuGirlNS::StauHits
std::vector< StauHit > StauHits
Definition: CandidateSummary.h:67
IMuonIdHelperSvc.h
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
ServiceHandle< Muon::IMuonIdHelperSvc >