ATLAS Offline Software
Loading...
Searching...
No Matches
MuonRecoValidationTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 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
33class TTree;
34class TFile;
35class IIncidentSvc;
36
37namespace Trk {
38 class Track;
39}
40
41namespace Muon {
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
72
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 truth uniqueID out of a set of Identifiers
101 int getUniqueID(const std::set<Identifier>& ids) const;
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
Define macros for attributes used to control the static checker.
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Base class for Muon cluster RIO_OnTracks.
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
bool addTimeMeasurements(const xAOD::TrackParticle &indetTrackParticle, const MuGirlNS::StauHits &stauHits) const override
add StauHits to ntuple
ToolHandle< IMuTagMatchingTool > m_matchingTool
~MuonRecoValidationTool()=default
destructor
std::atomic< unsigned int > m_candidateCounter
ToolHandle< Trk::IExtrapolator > m_extrapolator
MuonRecoValidationTool(const std::string &, const std::string &, const IInterface *)
default AlgTool constructor
std::vector< const xAOD::TrackParticle * > m_trackParticles
ToolHandle< IMuonSegmentHitSummaryTool > m_segmentHitSummaryTool
bool addTimeMeasurement(const MuonSystemExtension::Intersection &intersection, const Trk::MeasurementBase &meas) const override
add a new time measurement
ServiceHandle< IIncidentSvc > m_incidentSvc
void extract(const MuonSegment &segment, std::set< Identifier > &ids, std::vector< const MuonClusterOnTrack * > &clusters) const
int getIndex(const MuonSystemExtension::Intersection &intersection) const
ToolHandle< IMuonHitTimingTool > m_hitTimingTool
ToolHandle< IMuonTruthSummaryTool > m_truthSummaryTool
ToolHandle< IMuonHitSummaryTool > m_hitSummaryTool
MuonInsideOutValidationNtuple m_ntuple
virtual void handle(const Incident &inc) override
incident service handle for EndEvent
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
bool addTrackParticle(const xAOD::TrackParticle &indetTrackParticle, const MuonSystemExtension &muonSystemExtention) const override
add a new TrackParticle with it's muon system extension
std::map< const Trk::TrackParameters *, unsigned int > m_trackParticleIndexLookup
bool addMuonCandidate(const xAOD::TrackParticle &indetTrackParticle, const MuonCandidate *candidate, Trk::Track *combinedTrack, int ntimes, float beta, float chi2ndof, int stage) const override
add a new muon candidate
This is the common class for 3D segments used in the muon spectrometer.
Tracking class to hold the extrapolation from a particle from the calo entry to the end of muon syste...
This class is the pure abstract base class for all fittable tracking measurements.
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55
Eigen::Matrix< double, 3, 1 > Vector3D
std::vector< StauHit > StauHits
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Ensure that the ATLAS eigen extensions are properly loaded.
Definition index.py:1
TrackParticle_v1 TrackParticle
Reference the current persistent version:
void initialize()
struct representing the maximum in the hough space