ATLAS Offline Software
MuonCaloTagTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONCOMBINEDBASETOOLS_MUONCALOTAGTOOL_H
6 #define MUONCOMBINEDBASETOOLS_MUONCALOTAGTOOL_H
7 
8 #include <atomic>
9 #include <string>
10 #include <vector>
11 
13 #include "GaudiKernel/ToolHandle.h"
30 #include "xAODMuon/Muon.h"
32 
33 namespace MuonCombined {
34 
35  class MuonCaloTagTool : public AthAlgTool,
36  virtual public IMuonCombinedInDetExtensionTool,
38  public:
39  MuonCaloTagTool(const std::string& type, const std::string& name, const IInterface* parent);
40  virtual ~MuonCaloTagTool() = default;
41 
42  virtual StatusCode initialize() override;
43  virtual StatusCode finalize() override;
44 
46  virtual void extend(const InDetCandidateCollection& inDetCandidates, InDetCandidateToTagMap* tagMap, TrackCollection* combTracks,
47  TrackCollection* meTracks, Trk::SegmentCollection* segments, const EventContext& ctx) const override;
48 
49  virtual void extend(const InDetCandidateCollection& inDetCandidates, InDetCandidateToTagMap* tagMap,
50  const CaloCellContainer* caloCellContainer,
51  const xAOD::CaloClusterContainer* caloClusterContainer) const override;
52 
53  virtual void extendWithPRDs(const InDetCandidateCollection& inDetCandidates, InDetCandidateToTagMap* tagMap,
55  TrackCollection* meTracks, Trk::SegmentCollection* segments, const EventContext& ctx) const override;
56 
57  private:
58  void createMuon(const InDetCandidate& muonCandidate, const std::vector<DepositInCalo>& deposits, int tag, float likelihood,
59  float muonScore, InDetCandidateToTagMap* tagMap) const;
60  const Trk::TrackParameters* getTrackParameters(const Trk::Track* trk) const;
61  bool selectTrack(const Trk::Track* trk, const Trk::Vertex* vertex) const;
62  bool selectCosmic(const Trk::Track* ptcl) const;
63  bool applyTrackIsolation(const xAOD::TrackParticle& tp) const;
64  void showTrackInfo(const Trk::TrackParameters* par) const;
65 
66  // --- StoreGate keys ---
67  SG::ReadHandleKey<xAOD::CaloClusterContainer> m_caloClusterCont{this, "CaloClusters", "CaloTopoClusters", "calo cluster container"};
68  SG::ReadHandleKey<CaloCellContainer> m_caloCellCont{this, "CaloCells", "AllCalo", "calo cell container"};
69 
70  // --- Internal cache ---
71  mutable std::atomic_int m_nTrueMuons{0};
72  mutable std::atomic_int m_nTracksTagged{0};
73  mutable std::atomic_int m_nMuonsTagged{0};
74 
75  // --- Set up what to do and what not to do ---
76  Gaudi::Property<bool> m_doCaloMuonTag{this, "doCaloMuonTag", true, "run CaloMuonTag Tool"};
77  Gaudi::Property<bool> m_doCaloMuonScore{this, "doCaloMuonScore", true, "run CaloMuonScoreTool"};
78  Gaudi::Property<bool> m_doCaloLR{this, "doCaloLR", true, "run CaloMuonLikelihoodTool"};
79  Gaudi::Property<bool> m_doTrkSelection{this, "doTrkSelection", true,
80  "This variable should be set to false when there is no primary vertex reconstructed."};
81  Gaudi::Property<bool> m_doCosmicTrackSelection{this, "doCosmicTrackSelection", false, "Apply track selection for cosmics"};
82  Gaudi::Property<bool> m_showCutFlow{this, "ShowCutFlow", true, "Verbose track selection and track isolation"};
83  Gaudi::Property<bool> m_doTruth{this, "ShowTruth", true, "Display truth info for each analysed track"};
84  Gaudi::Property<bool> m_debugMode{this, "DebugMode", false, "Switch for extra printout"};
85  Gaudi::Property<bool> m_doOldExtrapolation{this, "doOldExtrapolation", false};
86  Gaudi::Property<bool> m_ignoreSiAssocated{this, "IgnoreSiAssociatedCandidates", true,
87  "If true, ignore InDetCandidates which are SiAssociated"};
88 
89  Gaudi::Property<double> m_ptIsoPtRatioCut{this, "TrackPtIsoPtRatioCut", 5, "Pt isolation for a .45 cone, normalized to track pt"};
90  Gaudi::Property<double> m_eIsoBarrelCut{this, "TrackEIsoBarrelCut", 15000, "Energy isolation for a .45 cone in Barrel"};
91  Gaudi::Property<double> m_eIsoTransitionCut{this, "TrackEIsoTransitionCut", 8000,
92  "Energy isolation for a .45 cone in Barrel-EndCap transition region"};
93  Gaudi::Property<double> m_eIsoEndCapCut{this, "TrackEIsoEndCapCut", 12000, "Energy isolation for a .45 cone in Endcap"};
94  Gaudi::Property<double> m_eIsoPtRatioBarrelCut{this, "TrackEIsoPtRatioBarrelCut", 2.5,
95  "Energy isolation for a .45 cone in Barrel, normalized to track pt"};
96  Gaudi::Property<double> m_eIsoPtRatioTransitionCut{
97  this, "TrackEIsoPtRatioTransitionCut", 1.25,
98  "Energy isolation for a .45 cone in Barrel-EndCap transition region, normalized to track pt"};
99  Gaudi::Property<double> m_eIsoPtRatioEndCapCut{this, "TrackEIsoPtRatioEndCapCut", 1.6,
100  "Energy isolation for a .45 cone in Endcap, normalized to track pt"};
101  Gaudi::Property<double> m_CaloLRlikelihoodCut{this, "CaloLRLikelihoodCut", 0.5, "CaloLR likelihood ratio hard cut"};
102  Gaudi::Property<double> m_CaloMuonScoreCut{this, "CaloMuonScoreCut", 0.4,
103  "Calo muon convolutional neural network output score hard cut"};
104  Gaudi::Property<double> m_trackIsoCone{this, "TrackIsoConeSize", 0.45, "Cone size for track isolation"};
105  Gaudi::Property<double> m_energyIsoCone{this, "EnergyIsoConeSize", 0.4, "Cone size for energy isolation"};
106 
107  // --- CaloTrkMuIdTools ---
108  ToolHandle<ICaloMuonLikelihoodTool> m_caloMuonLikelihood{this, "CaloMuonLikelihoodTool",
109  "CaloMuonLikelihoodTool/CaloMuonLikelihoodTool"};
110  ToolHandle<ICaloMuonScoreTool> m_caloMuonScoreTool{this, "CaloMuonScoreTool", "CaloMuonScoreTool/CaloMuonScoreTool"};
111 
112  ToolHandle<ICaloMuonTag> m_caloMuonTagLoose{this, "CaloMuonTagLoose", "CaloMuonTag/CaloMuonTagLoose",
113  "CaloTrkMuIdTools::CaloMuonTag for loose tagging"};
114  ToolHandle<ICaloMuonTag> m_caloMuonTagTight{this, "CaloMuonTagTight", "CaloMuonTag/CaloMuonTag",
115  "CaloTrkMuIdTools::CaloMuonTag for tight tagging"};
116  ToolHandle<ITrackDepositInCaloTool> m_trkDepositInCalo{this, "TrackDepositInCaloTool",
117  "TrackDepositInCaloTool/TrackDepositInCaloTool"};
118 
119  // --- External tools ---
120  ToolHandle<xAOD::ITrackIsolationTool> m_trackIsolationTool{this, "TrackIsolationTool", "xAOD::TrackIsolationTool"};
121  ToolHandle<Trk::ITrackSelectorTool> m_trkSelTool{this, "TrackSelectorTool",
122  "InDet::InDetDetailedTrackSelectorTool/CaloTrkMuIdAlgTrackSelectorTool"};
123  };
124 
125 } // namespace MuonCombined
126 
127 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
Trk::Vertex
Definition: Tracking/TrkEvent/VxVertex/VxVertex/Vertex.h:26
ICaloMuonScoreTool.h
MuonCombined::MuonCaloTagTool::m_caloMuonTagLoose
ToolHandle< ICaloMuonTag > m_caloMuonTagLoose
Definition: MuonCaloTagTool.h:112
MuonCombined::MuonCaloTagTool::m_ignoreSiAssocated
Gaudi::Property< bool > m_ignoreSiAssocated
Definition: MuonCaloTagTool.h:86
MuonCombined::MuonCaloTagTool::showTrackInfo
void showTrackInfo(const Trk::TrackParameters *par) const
Definition: MuonCaloTagTool.cxx:309
TrackParameters.h
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
MuonCombined::MuonCaloTagTool::m_ptIsoPtRatioCut
Gaudi::Property< double > m_ptIsoPtRatioCut
Definition: MuonCaloTagTool.h:89
MuonCombined::MuonCaloTagTool::m_energyIsoCone
Gaudi::Property< double > m_energyIsoCone
Definition: MuonCaloTagTool.h:105
Muon.h
MuonCombined::MuonCaloTagTool::applyTrackIsolation
bool applyTrackIsolation(const xAOD::TrackParticle &tp) const
Definition: MuonCaloTagTool.cxx:281
MuonCombined::InDetCandidateToTagMap
Definition: InDetCandidateToTagMap.h:15
MuonCombined::MuonCaloTagTool::extendWithPRDs
virtual void extendWithPRDs(const InDetCandidateCollection &inDetCandidates, InDetCandidateToTagMap *tagMap, IMuonCombinedInDetExtensionTool::MuonPrdData prdData, TrackCollection *combTracks, TrackCollection *meTracks, Trk::SegmentCollection *segments, const EventContext &ctx) const override
Definition: MuonCaloTagTool.cxx:88
MuonCombined::MuonCaloTagTool::m_nMuonsTagged
std::atomic_int m_nMuonsTagged
Counts the number of truth muons tagged.
Definition: MuonCaloTagTool.h:73
MuonCombined::MuonCaloTagTool::getTrackParameters
const Trk::TrackParameters * getTrackParameters(const Trk::Track *trk) const
Definition: MuonCaloTagTool.cxx:232
ParticleTest.tp
tp
Definition: ParticleTest.py:25
MuonCombined::InDetCandidate
Definition: InDetCandidate.h:18
MuonCombined::MuonCaloTagTool::m_debugMode
Gaudi::Property< bool > m_debugMode
Definition: MuonCaloTagTool.h:84
MuonCombined::MuonCaloTagTool::m_doCaloMuonScore
Gaudi::Property< bool > m_doCaloMuonScore
Definition: MuonCaloTagTool.h:77
MuonCombined::MuonCaloTagTool::m_trkSelTool
ToolHandle< Trk::ITrackSelectorTool > m_trkSelTool
Definition: MuonCaloTagTool.h:121
SG::ReadHandleKey< xAOD::CaloClusterContainer >
MuonCombined::MuonCaloTagTool::m_trackIsoCone
Gaudi::Property< double > m_trackIsoCone
Definition: MuonCaloTagTool.h:104
MuonCombined::MuonCaloTagTool::m_doTrkSelection
Gaudi::Property< bool > m_doTrkSelection
Definition: MuonCaloTagTool.h:79
MuonCombined::MuonCaloTagTool::m_doCosmicTrackSelection
Gaudi::Property< bool > m_doCosmicTrackSelection
Definition: MuonCaloTagTool.h:81
MuonCombined::MuonCaloTagTool::m_CaloMuonScoreCut
Gaudi::Property< double > m_CaloMuonScoreCut
Definition: MuonCaloTagTool.h:102
MuonCombined::MuonCaloTagTool::selectTrack
bool selectTrack(const Trk::Track *trk, const Trk::Vertex *vertex) const
Definition: MuonCaloTagTool.cxx:245
MuonCombined::MuonCaloTagTool::createMuon
void createMuon(const InDetCandidate &muonCandidate, const std::vector< DepositInCalo > &deposits, int tag, float likelihood, float muonScore, InDetCandidateToTagMap *tagMap) const
Definition: MuonCaloTagTool.cxx:323
MuonCombined::MuonCaloTagTool::m_caloMuonTagTight
ToolHandle< ICaloMuonTag > m_caloMuonTagTight
Definition: MuonCaloTagTool.h:114
ICaloMuonLikelihoodTool.h
MuonCombined::MuonCaloTagTool::m_CaloLRlikelihoodCut
Gaudi::Property< double > m_CaloLRlikelihoodCut
Definition: MuonCaloTagTool.h:101
MuonCombined::MuonCaloTagTool::m_doTruth
Gaudi::Property< bool > m_doTruth
Definition: MuonCaloTagTool.h:83
MuonCombined::MuonCaloTagTool::m_caloMuonLikelihood
ToolHandle< ICaloMuonLikelihoodTool > m_caloMuonLikelihood
Definition: MuonCaloTagTool.h:108
ITrackDepositInCaloTool.h
MuonCombined::MuonCaloTagTool::m_caloClusterCont
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloClusterCont
Definition: MuonCaloTagTool.h:67
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonCombined::MuonCaloTagTool::m_doCaloLR
Gaudi::Property< bool > m_doCaloLR
Definition: MuonCaloTagTool.h:78
MuonCombined::MuonCaloTagTool::selectCosmic
bool selectCosmic(const Trk::Track *ptcl) const
Definition: MuonCaloTagTool.cxx:264
AthAlgTool.h
IMuonCombinedInDetExtensionTool.h
MuonCombined::MuonCaloTagTool::MuonCaloTagTool
MuonCaloTagTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: MuonCaloTagTool.cxx:41
test_pyathena.parent
parent
Definition: test_pyathena.py:15
DepositInCalo.h
MuonCombined::MuonCaloTagTool::finalize
virtual StatusCode finalize() override
Definition: MuonCaloTagTool.cxx:81
MuonCombined::MuonCaloTagTool::m_nTrueMuons
std::atomic_int m_nTrueMuons
Counts the number true muons.
Definition: MuonCaloTagTool.h:71
MuonCombined::MuonCaloTagTool::m_showCutFlow
Gaudi::Property< bool > m_showCutFlow
Definition: MuonCaloTagTool.h:82
Trk::ParametersBase
Definition: ParametersBase.h:55
MuonCombined::MuonCaloTagTool::m_eIsoPtRatioTransitionCut
Gaudi::Property< double > m_eIsoPtRatioTransitionCut
Definition: MuonCaloTagTool.h:96
IParticleCaloCellAssociationTool.h
CaloTag.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
ICaloMuonTag.h
InDetCandidate.h
MuonCombined::MuonCaloTagTool::m_caloCellCont
SG::ReadHandleKey< CaloCellContainer > m_caloCellCont
Definition: MuonCaloTagTool.h:68
MuonCombined::MuonCaloTagTool::m_eIsoBarrelCut
Gaudi::Property< double > m_eIsoBarrelCut
Definition: MuonCaloTagTool.h:90
MuonCombined::MuonCaloTagTool::m_nTracksTagged
std::atomic_int m_nTracksTagged
Counts the number of tracks tagged.
Definition: MuonCaloTagTool.h:72
MuonCombined::MuonCaloTagTool::extend
virtual void extend(const InDetCandidateCollection &inDetCandidates, InDetCandidateToTagMap *tagMap, TrackCollection *combTracks, TrackCollection *meTracks, Trk::SegmentCollection *segments, const EventContext &ctx) const override
IMuonCombinedInDetExtensionTool interface: extend ID candidate.
Definition: MuonCaloTagTool.cxx:96
MuonCombined::MuonCaloTagTool::m_trackIsolationTool
ToolHandle< xAOD::ITrackIsolationTool > m_trackIsolationTool
Definition: MuonCaloTagTool.h:120
MuonCombined::MuonCaloTagTool::initialize
virtual StatusCode initialize() override
Definition: MuonCaloTagTool.cxx:48
MuonCombined::MuonCaloTagTool::m_caloMuonScoreTool
ToolHandle< ICaloMuonScoreTool > m_caloMuonScoreTool
Definition: MuonCaloTagTool.h:110
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
MuonCombined::MuonCaloTagTool::m_eIsoPtRatioEndCapCut
Gaudi::Property< double > m_eIsoPtRatioEndCapCut
Definition: MuonCaloTagTool.h:99
MuonCombined::MuonCaloTagTool::m_eIsoPtRatioBarrelCut
Gaudi::Property< double > m_eIsoPtRatioBarrelCut
Definition: MuonCaloTagTool.h:94
MuonCombined::MuonCaloTagTool::m_doCaloMuonTag
Gaudi::Property< bool > m_doCaloMuonTag
Definition: MuonCaloTagTool.h:76
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
IMuonCombinedTrigCaloTagExtensionTool.h
TrackParticle.h
MuonCombined::MuonCaloTagTool::~MuonCaloTagTool
virtual ~MuonCaloTagTool()=default
IParticleCaloExtensionTool.h
MuonCombined::IMuonCombinedInDetExtensionTool
interface for tools buildingmuons from ID candidates
Definition: IMuonCombinedInDetExtensionTool.h:25
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
ITrackIsolationTool.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
MuonCombined
The MuonTagToSegMap is an auxillary construct that links the MuonSegments associated with a combined ...
Definition: IMuonSystemExtensionTool.h:23
MuonCombined::MuonCaloTagTool::m_eIsoTransitionCut
Gaudi::Property< double > m_eIsoTransitionCut
Definition: MuonCaloTagTool.h:91
MuonCombined::MuonCaloTagTool::m_trkDepositInCalo
ToolHandle< ITrackDepositInCaloTool > m_trkDepositInCalo
Definition: MuonCaloTagTool.h:116
MuonCombined::MuonCaloTagTool::m_doOldExtrapolation
Gaudi::Property< bool > m_doOldExtrapolation
Definition: MuonCaloTagTool.h:85
InDetCandidateCollection.h
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
MuonCombined::IMuonCombinedInDetExtensionTool::MuonPrdData
Definition: IMuonCombinedInDetExtensionTool.h:27
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
AthAlgTool
Definition: AthAlgTool.h:26
MuonCombined::MuonCaloTagTool::m_eIsoEndCapCut
Gaudi::Property< double > m_eIsoEndCapCut
Definition: MuonCaloTagTool.h:93
ITrackSelectorTool.h
MuonCombined::MuonCaloTagTool
Definition: MuonCaloTagTool.h:37
MuonCombined::IMuonCombinedTrigCaloTagExtensionTool
interface for tools buildingmuons from ID candidates
Definition: IMuonCombinedTrigCaloTagExtensionTool.h:22