Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
MuonTrackTruthTool.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_MUONTRACKTRUTHTOOL_H
6 #define MUON_MUONTRACKTRUTHTOOL_H
7 
8 #include <map>
9 #include <set>
10 #include <string>
11 #include <utility>
12 #include <vector>
13 
15 
16 
25 
26 class TruthTrajectory;
27 
28 namespace Muon {
29  class MuonSegment;
30 }
31 
32 namespace Trk {
33  class Track;
34  class MeasurementBase;
35 } // namespace Trk
36 
37 namespace Muon {
38 
43  class MuonTrackTruthTool : public extends<AthAlgTool, IMuonTrackTruthTool> {
44  public:
46  bool operator()(const MatchResult& r1, const MatchResult& r2) const;
47  bool operator()(const SegmentMatchResult& r1, const SegmentMatchResult& r2) const;
48  bool operator()(const MuonTrackTruth& r1, const MuonTrackTruth& r2) const;
49  };
50 
51  public:
53  using base_class::base_class;
55  ~MuonTrackTruthTool() = default;
56 
59 
61  ResultVec match(const TruthTree& truth_tree, const TrackCollection& tracks) const;
62 
64  SegmentResultVec match(const TruthTree& truth_tree, const std::vector<const MuonSegment*>& segments) const;
65 
67  MuonTrackTruth getTruth(const TruthTree& truth_tree, const Trk::Track& track, bool restrictedTruth = false) const;
68 
70  MuonTrackTruth getTruth(const TruthTree& truth_tree, const std::vector<const MuonSegment*>& segments,
71  bool restrictedTruth = false) const;
72 
74  MuonTrackTruth getTruth(const TruthTree& truth_tree, const Muon::MuonSegment& segment) const;
75 
79  MuonTrackTruth getTruth(const TruthTree& truth_tree, const std::vector<const Trk::MeasurementBase*>& measurements,
80  bool restrictedTruth = false) const;
81 
83  const TruthTree createTruthTree(const TrackRecordCollection* truthTrackCol, const McEventCollection* mcEventCollection,
84  const std::vector<const MuonSimDataCollection*>& muonSimData,
85  const CscSimDataCollection* cscSimDataMap) const;
86 
89  HepMC::ConstGenParticlePtr getMother(const TruthTrajectory& traj, const int barcodeIn) const;
90 
93  HepMC::ConstGenParticlePtr getAncestor(const TruthTrajectory& traj, const int barcodeIn) const;
94 
98  HepMC::ConstGenParticlePtr getInitial(const TruthTrajectory& traj, const int barcodeIn) const;
99 
102  unsigned int getNumberOfScatters(const TruthTrajectory& traj, const int barcodeIn) const;
103 
104  private:
105  MuonTrackTruth getTruth(const std::vector<const Trk::MeasurementBase*>& measurements, const TruthTreeEntry& truthEntry,
106  bool restrictedTruth) const;
107 
108  void addSimDataToTree(TruthTree& truth_tree, std::map<int, int>& barcode_map, const MuonSimDataCollection* simDataCol) const;
109  void addCscSimDataToTree(TruthTree& truth_tree, std::map<int, int>& barcode_map, const CscSimDataCollection* simDataCol) const;
110 
111  void addMdtTruth(MuonTechnologyTruth& trackTruth, const Identifier& id, const Trk::MeasurementBase& meas,
112  const MuonSimDataCollection& simCol) const;
113 
114  void addClusterTruth(MuonTechnologyTruth& trackTruth, const Identifier& id, const Trk::MeasurementBase& meas,
115  const MuonSimDataCollection& simCol) const;
116  void addClusterTruth(MuonTechnologyTruth& trackTruth, const Identifier& id, const Trk::MeasurementBase& meas,
117  const CscSimDataCollection& simCol) const;
118 
119  void addMissedHits(MuonTechnologyTruth& truth, const std::set<Identifier>& ids, const std::set<Identifier>& chids,
120  const MuonSimDataCollection& simCol, bool restrictedTruth) const;
121 
122  void addMissedHits(MuonTechnologyTruth& truth, const std::set<Identifier>& ids, const std::set<Identifier>& chids,
123  const CscSimDataCollection& simCol, bool restrictedTruth) const;
124 
125  int manipulateBarCode(int barcode) const;
126 
127  bool selectPdg(int pdg) const { return m_selectedPdgs.count(pdg); }
128 
132  const std::pair<HepMC::ConstGenParticlePtr, unsigned int> getInitialPair(const TruthTrajectory& traj, const int barcodeIn) const;
133 
134  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
135 
136  PublicToolHandle<Muon::MuonEDMPrinterTool> m_printer{this, "Printer", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
137  ToolHandle<Trk::ITruthTrajectoryBuilder> m_truthTrajectoryBuilder{
138  this, "TruthTrajectoryBuilder", "Muon::MuonDecayTruthTrajectoryBuilder/MuonDecayTruthTrajectoryBuilder"};
139 
140  Gaudi::Property<bool> m_manipulateBarCode{this, "ManipulateBarCode", false};
141  Gaudi::Property<bool> m_doSummary{this, "DoSummary", false};
142  Gaudi::Property<bool> m_matchAllParticles{this, "MatchAllParticles", true};
143  Gaudi::Property<unsigned int> m_minHits{this, "MinHits", 4};
144  Gaudi::Property<std::vector<int>> m_pdgsToBeConsidered{this, "ConsideredPDGs", {}};
145 
146  std::set<int> m_selectedPdgs; // set storing particle PDG's considered for matching
147  };
148 
149 } // namespace Muon
150 
151 #endif // MUON_MDTONTRACKTOOL_H
Muon::MuonTechnologyTruth
Definition: IMuonTrackTruthTool.h:30
Muon::MuonTrackTruthTool::SortResultByMatchedHits::operator()
bool operator()(const MatchResult &r1, const MatchResult &r2) const
ITruthTrajectoryBuilder.h
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
MuonEDMPrinterTool.h
Muon::MuonTrackTruthTool::getAncestor
HepMC::ConstGenParticlePtr getAncestor(const TruthTrajectory &traj, const int barcodeIn) const
Returns the ancestor particle of the particle with barcodeIn if it is found in the truth trajectory.
Definition: MuonTrackTruthTool.cxx:658
CscSimDataCollection.h
Muon::MuonTrackTruthTool::getInitial
HepMC::ConstGenParticlePtr getInitial(const TruthTrajectory &traj, const int barcodeIn) const
Returns the initial particle of the particle with barcodeIn if it is found in the truth trajectory.
Definition: MuonTrackTruthTool.cxx:737
Muon::MuonTrackTruthTool::m_selectedPdgs
std::set< int > m_selectedPdgs
Definition: MuonTrackTruthTool.h:146
AtlasHitsVector
Definition: AtlasHitsVector.h:33
TrkDriftCircleMath::MatchResult
std::pair< DCOnTrackVec, DCVec > MatchResult
counts the number of hits shared by the two segments
Definition: MatchCrossedTubes.h:15
Muon::MuonTrackTruth
Definition: IMuonTrackTruthTool.h:40
Muon::MuonTrackTruthTool::createTruthTree
const TruthTree createTruthTree(const TrackRecordCollection *truthTrackCol, const McEventCollection *mcEventCollection, const std::vector< const MuonSimDataCollection * > &muonSimData, const CscSimDataCollection *cscSimDataMap) const
create truth tree from sim data
Definition: MuonTrackTruthTool.cxx:110
Muon::MuonTrackTruthTool::SortResultByMatchedHits::operator()
bool operator()(const SegmentMatchResult &r1, const SegmentMatchResult &r2) const
Muon::MuonTrackTruthTool::addClusterTruth
void addClusterTruth(MuonTechnologyTruth &trackTruth, const Identifier &id, const Trk::MeasurementBase &meas, const MuonSimDataCollection &simCol) const
Definition: MuonTrackTruthTool.cxx:560
Muon::MuonTrackTruthTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonTrackTruthTool.h:134
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
xAOD::MuonSegment
MuonSegment_v1 MuonSegment
Reference the current persistent version:
Definition: Event/xAOD/xAODMuon/xAODMuon/MuonSegment.h:13
inspect_truth_file.truth_tree
truth_tree
Definition: inspect_truth_file.py:75
Muon::MuonTrackTruthTool::getMother
HepMC::ConstGenParticlePtr getMother(const TruthTrajectory &traj, const int barcodeIn) const
Returns the mother particle of the particle with barcodeIn if it is found in the truth trajectory.
Definition: MuonTrackTruthTool.cxx:636
Muon::MuonTrackTruthTool
Tool to calculate track truth.
Definition: MuonTrackTruthTool.h:43
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
Muon::MuonTrackTruthTool::SortResultByMatchedHits
Definition: MuonTrackTruthTool.h:45
MuonSimDataCollection
Definition: MuonSimDataCollection.h:21
AthAlgTool.h
TrackCollection.h
Muon::MuonTrackTruthTool::m_manipulateBarCode
Gaudi::Property< bool > m_manipulateBarCode
Definition: MuonTrackTruthTool.h:140
CscSimDataCollection
Definition: CscSimDataCollection.h:29
Muon::MuonTrackTruthTool::getTruth
MuonTrackTruth getTruth(const TruthTree &truth_tree, const Trk::Track &track, bool restrictedTruth=false) const
get track truth
Definition: MuonTrackTruthTool.cxx:361
IMuonTrackTruthTool.h
McEventCollection
This defines the McEventCollection, which is really just an ObjectVector of McEvent objects.
Definition: McEventCollection.h:33
Muon::MuonTrackTruthTool::~MuonTrackTruthTool
~MuonTrackTruthTool()=default
destructor
Muon::MuonTrackTruthTool::initialize
StatusCode initialize()
AlgTool initilize.
Definition: MuonTrackTruthTool.cxx:26
DataVector< Trk::Track >
Muon::MuonTrackTruthTool::m_truthTrajectoryBuilder
ToolHandle< Trk::ITruthTrajectoryBuilder > m_truthTrajectoryBuilder
Definition: MuonTrackTruthTool.h:137
Muon::MuonTrackTruthTool::m_matchAllParticles
Gaudi::Property< bool > m_matchAllParticles
Definition: MuonTrackTruthTool.h:142
Muon::MuonTrackTruthTool::addSimDataToTree
void addSimDataToTree(TruthTree &truth_tree, std::map< int, int > &barcode_map, const MuonSimDataCollection *simDataCol) const
Definition: MuonTrackTruthTool.cxx:266
Trk::MeasurementBase
Definition: MeasurementBase.h:58
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Muon::MuonTrackTruthTool::m_pdgsToBeConsidered
Gaudi::Property< std::vector< int > > m_pdgsToBeConsidered
Definition: MuonTrackTruthTool.h:144
TruthTrajectory
Definition: TruthTrajectory.h:26
Muon::MuonTrackTruthTool::m_minHits
Gaudi::Property< unsigned int > m_minHits
Definition: MuonTrackTruthTool.h:143
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
TrackRecordCollection.h
Muon::MuonTrackTruthTool::selectPdg
bool selectPdg(int pdg) const
Definition: MuonTrackTruthTool.h:127
Muon::MuonTrackTruthTool::addMissedHits
void addMissedHits(MuonTechnologyTruth &truth, const std::set< Identifier > &ids, const std::set< Identifier > &chids, const MuonSimDataCollection &simCol, bool restrictedTruth) const
Definition: MuonTrackTruthTool.cxx:469
Muon::MuonTrackTruthTool::manipulateBarCode
int manipulateBarCode(int barcode) const
Definition: MuonTrackTruthTool.cxx:44
Muon::MuonTrackTruthTool::getInitialPair
const std::pair< HepMC::ConstGenParticlePtr, unsigned int > getInitialPair(const TruthTrajectory &traj, const int barcodeIn) const
Returns the initial particle of the particle with barcodeIn if it is found in the truth trajectory.
Definition: MuonTrackTruthTool.cxx:677
Muon::MuonTrackTruthTool::m_printer
PublicToolHandle< Muon::MuonEDMPrinterTool > m_printer
Definition: MuonTrackTruthTool.h:136
Muon::MuonTrackTruthTool::match
ResultVec match(const TruthTree &truth_tree, const TrackCollection &tracks) const
perform truth matching for a given set of tracks
Definition: MuonTrackTruthTool.cxx:68
Muon::MuonTrackTruthTool::m_doSummary
Gaudi::Property< bool > m_doSummary
Definition: MuonTrackTruthTool.h:141
Muon::MuonTrackTruthTool::getNumberOfScatters
unsigned int getNumberOfScatters(const TruthTrajectory &traj, const int barcodeIn) const
Returns the number of steps a particle took while maintaining its PDG ID.
Definition: MuonTrackTruthTool.cxx:741
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Muon::MuonSegment
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:45
MuonSimDataCollection.h
Muon::MuonTrackTruthTool::addCscSimDataToTree
void addCscSimDataToTree(TruthTree &truth_tree, std::map< int, int > &barcode_map, const CscSimDataCollection *simDataCol) const
Definition: MuonTrackTruthTool.cxx:319
IMuonIdHelperSvc.h
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
Muon::MuonTrackTruthTool::addMdtTruth
void addMdtTruth(MuonTechnologyTruth &trackTruth, const Identifier &id, const Trk::MeasurementBase &meas, const MuonSimDataCollection &simCol) const
Definition: MuonTrackTruthTool.cxx:525
ServiceHandle< Muon::IMuonIdHelperSvc >
Identifier
Definition: IdentifierFieldParser.cxx:14