ATLAS Offline Software
MuonSelectionTool.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 MUONSELECTORTOOLS_MUONSELECTIONTOOL_H
6 #define MUONSELECTORTOOLS_MUONSELECTIONTOOL_H
7 
9 #include "AsgTools/AsgTool.h"
11 #include "AsgTools/ToolHandle.h"
14 #include "TF1.h"
15 #include "TFile.h"
16 #include "TH2D.h"
17 #include "TMVA/Reader.h"
18 #include "TSystem.h" // Replace with PathResolver
21 
22 
23 namespace CP {
24 
35  class MuonSelectionTool : public virtual IAsgSelectionTool, public virtual IMuonSelectionTool, public asg::AsgTool {
38 
39  public:
41  MuonSelectionTool(const std::string& name = "MuonSelection");
42 
43  virtual ~MuonSelectionTool();
44 
47 
49  virtual StatusCode initialize() override;
50 
52 
55 
57  virtual const asg::AcceptInfo& getAcceptInfo() const override;
58 
60  virtual asg::AcceptData accept(const xAOD::IParticle* p) const override;
61 
63 
66 
68  virtual asg::AcceptData accept(const xAOD::Muon& mu) const override;
69 
71  virtual void setPassesIDCuts(xAOD::Muon&) const override;
72 
74  // void setPassesLowPtEfficiencyCuts( xAOD::Muon& mu ) const;
75 
77  virtual void setQuality(xAOD::Muon& mu) const override;
78 
80  virtual bool passedIDCuts(const xAOD::Muon&) const override;
81 
83  virtual bool passedMuonCuts(const xAOD::Muon&) const override;
84 
86  virtual bool passedIDCuts(const xAOD::TrackParticle&) const override;
87 
89  virtual bool passedHighPtCuts(const xAOD::Muon&) const override;
90 
93  virtual bool passedLowPtEfficiencyCuts(const xAOD::Muon&) const override;
94  virtual bool passedLowPtEfficiencyCuts(const xAOD::Muon&, xAOD::Muon::Quality thisMu_quality) const override;
95 
97  virtual bool passedErrorCutCB(const xAOD::Muon&) const override;
98 
100  virtual bool isBadMuon(const xAOD::Muon&) const override;
101 
103  virtual xAOD::Muon::Quality getQuality(const xAOD::Muon& mu) const override;
104 
106  virtual bool passedCaloTagQuality(const xAOD::Muon& mu) const override;
107 
109  virtual bool passedCaloScore(const xAOD::Muon& mu) const override;
110 
112  virtual int getResolutionCategory(const xAOD::Muon&) const override;
114 
116  std::vector<const xAOD::MuonSegment*> getSegmentsSorted(const xAOD::Muon& mu) const;
117 
119  bool isBIS78(const float eta, const float phi) const;
121  bool isBEE(const float eta, const float phi) const;
123  bool isBMG(const float eta, const float phi) const;
124 
126  float qOverPsignificance(const xAOD::Muon& muon) const;
128  float rhoPrime(const xAOD::Muon& muon) const;
129 
131  struct hitSummary {
149  };
150 
152  template <class P, class T, class S> inline void retrieveSummaryValue(const P& muon, T& value, const S type, bool ignoreMissing = false) const {
153  if (!muon.summaryValue(value, type) && !ignoreMissing) {
154  ATH_MSG_FATAL(__FILE__ << ":" << __LINE__ << " Failed to retrieve summary value " << type);
155  throw std::runtime_error("MuonSelectorTool summary retrieval failed");
156  }
157  }
158 
160  void fillSummary(const xAOD::Muon& muon, hitSummary& summary) const;
161 
163  virtual float getTightNNScore(const xAOD::Muon& muon) const override;
164 
165  private:
166  bool passedLowPtEfficiencyMVACut(const xAOD::Muon&) const;
167 
169  bool passTight(const xAOD::Muon& mu, float rho, float oneOverPSig) const;
170 
173  bool passedBMVmimicCut(const xAOD::Muon&) const;
174 
177 
178  Gaudi::Property<double> m_maxEta{this, "MaxEta", 2.7, "Maximum eta range to select the muons"};
179  Gaudi::Property<int> m_quality{this, "MuQuality", 1,"Quality to select. Values correspond to 0=Tight, 1=Medium, 2=Loose, 3=VeryLoose (only for debug, not supported), 4=HighPt, 5=LowPtEfficiency"};
180  Gaudi::Property<bool> m_toroidOff{this, "ToroidOff", false, "Run the tool in Toroid off setup"};
181  Gaudi::Property<bool> m_isRun3{this, "IsRun3Geo", false, "Switch to toggle the run 2 & run 3 geometry cuts. The tool will throw an exception if the run number does not match the expectations later"};
182  Gaudi::Property<bool> m_excludeNSWFromPrecisionLayers{this, "ExcludeNSWFromPrecisionLayers", false, "Cut on the nprecisionlayers ignoring the NSW"};
183  Gaudi::Property<bool> m_recalcPrecisionLayerswNSW{this, "RecalcPrecisionLayerswNSW", true, "Recalculate nprecisionlayers with internal criteria for NSW"};
184  Gaudi::Property<bool> m_useCaloScore{this, "UseCaloScore", true, "Use CaloScore for calo-tags in the Loose working point. False will revert back to CaloMuonIDTag (not recommended in Rel.22)"};
185  Gaudi::Property<int> m_caloScoreWP{this, "CaloScoreWP", 4,"Currently there are 4 CaloScore WPs for testing; WP4 is the recommended one"};
186  Gaudi::Property<bool> m_useLRT{this, "UseLRT", false, "Enable support for LRT muons"};
187 
188  // Expert development options
189  Gaudi::Property<bool> m_turnOffMomCorr{this, "TurnOffMomCorr", false};
190  Gaudi::Property<bool> m_disablePtCuts{this, "DisablePtCuts", false};
191  Gaudi::Property<bool> m_developMode{this, "ExpertDevelopMode", false};
192  Gaudi::Property<bool> m_TrtCutOff{this, "TrtCutOff", true};
193  Gaudi::Property<bool> m_SctCutOff{this, "SctCutOff", false};
194  Gaudi::Property<bool> m_PixCutOff{this, "PixCutOff", false};
195  Gaudi::Property<bool> m_SiHolesCutOff{this, "SiHolesCutOff", false};
196  Gaudi::Property<bool> m_useAllAuthors{this, "UseAllAuthors", true};
197  Gaudi::Property<bool> m_use2stationMuonsHighPt{this, "Use2stationMuonsHighPt", true, "for users of high-pT working point to choose whether to include 'safe' 2-station muons"};
198  Gaudi::Property<bool> m_useMVALowPt{this, "UseMVALowPt", false, "for users of low-pT working point to choose whether to use MVA and whether to include MuTagIMO muons. Not yet supported in release 22, crrently only for development studies."};
199  Gaudi::Property<bool> m_useSegmentTaggedLowPt{this, "UseSegmentTaggedLowPt", false, "Use MVA low-pt WP. In development phase"};
200  Gaudi::Property<bool> m_geoOnTheFly{this, "AllowSettingGeometryOnTheFly", false,"avoids crash if run2/run3 geo is wrongly set"};
201  Gaudi::Property<bool> m_doBadMuonVetoMimic{this, "DoBadMuonVetoMimic", false}; // switch to cut away the tail of very large smearing in MC to mimic the effect of the bad muon veto for 2-station muons in the high-pT selection
202  Gaudi::Property<bool> m_allowComm{this, "AcceptCommChain", true, "Accepts muons from the EMEO chain if set to true"};
203  Gaudi::Property<bool> m_useBEEBISInHighPtRun3{this, "UseBEEBISInHighPtRun3", true, "Include BEE and BIS7/8 in high-pT WP in Run3"};
204 
205  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this, "EventInfoContName", "EventInfo", "event info key"};
206 
207  // MVA configs for low-pT working point. Expert use only!
208  Gaudi::Property<std::string> m_MVAreaderFile_EVEN_MuidCB{
209  this, "MVAreaderFile_EVEN_MuidCB",
210  "MuonSelectorTools/190118_PrelimLowPtMVA/LowPtMVA_Weights/BDTG_9JAN2019_MuidCB_EVEN.weights.xml"};
211  Gaudi::Property<std::string> m_MVAreaderFile_ODD_MuidCB{
212  this, "MVAreaderFile_ODD_MuidCB",
213  "MuonSelectorTools/190118_PrelimLowPtMVA/LowPtMVA_Weights/BDTG_9JAN2019_MuidCB_ODD.weights.xml"};
214 
215  Gaudi::Property<std::string> m_MVAreaderFile_EVEN_MuGirl{
216  this, "MVAreaderFile_EVEN_MuGirl",
217  "MuonSelectorTools/190118_PrelimLowPtMVA/LowPtMVA_Weights/BDTG_9JAN2019_MuGirl_EVEN.weights.xml"};
218  Gaudi::Property<std::string> m_MVAreaderFile_ODD_MuGirl{
219  this, "MVAreaderFile_ODD_MuGirl",
220  "MuonSelectorTools/190118_PrelimLowPtMVA/LowPtMVA_Weights/BDTG_9JAN2019_MuGirl_ODD.weights.xml"};
221 
222  Gaudi::Property<std::string> m_MVAreaderFile_MuTagIMO_etaBin1{
223  this, "MVAreaderFile_MuTagIMO_etaBin1", "dev/MuonSelectorTools/181121_MuTagIMO_BDT/BDT_NOV2021_MuTagIMO_etaBin1.weights.xml"};
224  Gaudi::Property<std::string> m_MVAreaderFile_MuTagIMO_etaBin2{
225  this, "MVAreaderFile_MuTagIMO_etaBin2", "dev/MuonSelectorTools/181121_MuTagIMO_BDT/BDT_NOV2021_MuTagIMO_etaBin2.weights.xml"};
226  Gaudi::Property<std::string> m_MVAreaderFile_MuTagIMO_etaBin3{
227  this, "MVAreaderFile_MuTagIMO_etaBin3", "dev/MuonSelectorTools/181121_MuTagIMO_BDT/BDT_NOV2021_MuTagIMO_etaBin3.weights.xml"};
228 
229  // subfolder to load from the calibration db
230  Gaudi::Property<std::string> m_calibration_version{this, "CalibrationRelease", "PreRec2016_2016-04-13"};
231 
232  // possible override for the calibration version
233  Gaudi::Property<std::string> m_custom_dir{this, "CustomInputFolder", ""};
234 
236  Gaudi::Property<std::string> m_BMVcutFile{this, "BMVcutFile",
237  "MuonSelectorTools/180620_BMVmimicCutFunctions/BMVmimicCutFunctions.root"};
238 
240  StatusCode getHist(TFile* file, const std::string& histName, std::unique_ptr<TH1>& hist) const;
241  //
242  std::unique_ptr<TH1> m_tightWP_lowPt_rhoCuts;
243  std::unique_ptr<TH1> m_tightWP_lowPt_qOverPCuts;
244  std::unique_ptr<TH1> m_tightWP_mediumPt_rhoCuts;
245  std::unique_ptr<TH1> m_tightWP_highPt_rhoCuts;
246  //
247  std::unique_ptr<TF1> m_BMVcutFunction_barrel;
248  std::unique_ptr<TF1> m_BMVcutFunction_endcap;
249 
250  // Need run number (or random run number) to apply period-dependent selections.
251  // If selection depends only on data taking year, this can be specified by passing
252  // argument needOnlyCorrectYear=true, in which case the random run number decoration
253  // from the pile-up reweighting tool is not needed.
254  unsigned int getRunNumber(bool needOnlyCorrectYear = false) const;
255 
256  // TMVA readers for low-pT working point
257  std::unique_ptr<TMVA::Reader> m_readerE_MUID{nullptr};
258  std::unique_ptr<TMVA::Reader> m_readerO_MUID{nullptr};
259  std::unique_ptr<TMVA::Reader> m_readerE_MUGIRL{nullptr};
260  std::unique_ptr<TMVA::Reader> m_readerO_MUGIRL{nullptr};
261 
262  std::unique_ptr<TMVA::Reader> m_reader_MUTAGIMO_etaBin1{nullptr};
263  std::unique_ptr<TMVA::Reader> m_reader_MUTAGIMO_etaBin2{nullptr};
264  std::unique_ptr<TMVA::Reader> m_reader_MUTAGIMO_etaBin3{nullptr};
265 
266  // variables for the TMVA readers
268 
269  void IdMsPt(const xAOD::Muon& muon, float& idPt, float& msPt) const;
270 
271  void checkSanity() const;
272 
273  bool isRun3(bool forceOnTheFly = false) const {
274  if (!m_geoOnTheFly && !forceOnTheFly) return m_isRun3;
275  int rn = getRunNumber(true);
276  return rn>=399999;
277  }
278 
279  void retrieveParam(const xAOD::Muon& muon, float& value, const xAOD::Muon::ParamDef param) const;
280 
281  //ONNX
282  Gaudi::Property<bool> m_calculateTightNNScore{this, "CalculateTightNNScore", false};
283  ToolHandle< AthInfer::IAthInferenceTool > m_onnxTool{this, "ORTInferenceTool", "AthOnnx::OnnxRuntimeInferenceTool"};
284 
285  }; // class MuonSelectionTool
286 
287 } // namespace CP
288 
289 #endif // CPTOOLTESTS_MUONSELECTIONTOOL_H
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
CP::MuonSelectionTool::m_MVAreaderFile_MuTagIMO_etaBin2
Gaudi::Property< std::string > m_MVAreaderFile_MuTagIMO_etaBin2
Definition: MuonSelectionTool.h:224
CP::MuonSelectionTool
Implementation of the muon selector tool.
Definition: MuonSelectionTool.h:35
CP::MuonSelectionTool::passTight
bool passTight(const xAOD::Muon &mu, float rho, float oneOverPSig) const
Returns true if the muon passed the tight working point cuts.
Definition: MuonSelectionTool.cxx:1348
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
CP::MuonSelectionTool::m_acceptInfo
asg::AcceptInfo m_acceptInfo
Store selection information.
Definition: MuonSelectionTool.h:176
CP::MuonSelectionTool::hitSummary::extendedLargeHits
uint8_t extendedLargeHits
Definition: MuonSelectionTool.h:142
CP::MuonSelectionTool::m_use2stationMuonsHighPt
Gaudi::Property< bool > m_use2stationMuonsHighPt
Definition: MuonSelectionTool.h:197
CP::MuonSelectionTool::m_quality
Gaudi::Property< int > m_quality
Definition: MuonSelectionTool.h:179
AddEmptyComponent.histName
string histName
Definition: AddEmptyComponent.py:64
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
CP::MuonSelectionTool::m_custom_dir
Gaudi::Property< std::string > m_custom_dir
Definition: MuonSelectionTool.h:233
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
CP::MuonSelectionTool::passedCaloTagQuality
virtual bool passedCaloTagQuality(const xAOD::Muon &mu) const override
Returns true if the muon passed additional calo-tag quality cuts.
Definition: MuonSelectionTool.cxx:1297
CP::MuonSelectionTool::m_MVAreaderFile_MuTagIMO_etaBin3
Gaudi::Property< std::string > m_MVAreaderFile_MuTagIMO_etaBin3
Definition: MuonSelectionTool.h:226
CP::MuonSelectionTool::getQuality
virtual xAOD::Muon::Quality getQuality(const xAOD::Muon &mu) const override
Returns the quality of the muon. To set the value on the muon, instead call setQuality(xAOD::Muon&) c...
Definition: MuonSelectionTool.cxx:435
CP::MuonSelectionTool::m_MVAreaderFile_EVEN_MuidCB
Gaudi::Property< std::string > m_MVAreaderFile_EVEN_MuidCB
Definition: MuonSelectionTool.h:208
ASG_TOOL_CLASS2
#define ASG_TOOL_CLASS2(CLASSNAME, INT1, INT2)
Definition: AsgToolMacros.h:77
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
CP::MuonSelectionTool::m_useAllAuthors
Gaudi::Property< bool > m_useAllAuthors
Definition: MuonSelectionTool.h:196
CP::MuonSelectionTool::m_reader_MUTAGIMO_etaBin3
std::unique_ptr< TMVA::Reader > m_reader_MUTAGIMO_etaBin3
Definition: MuonSelectionTool.h:264
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
CP::MuonSelectionTool::m_disablePtCuts
Gaudi::Property< bool > m_disablePtCuts
Definition: MuonSelectionTool.h:190
DMTest::P
P_v1 P
Definition: P.h:23
CP::MuonSelectionTool::m_readerE_MUID
std::unique_ptr< TMVA::Reader > m_readerE_MUID
Definition: MuonSelectionTool.h:257
CP::MuonSelectionTool::m_calculateTightNNScore
Gaudi::Property< bool > m_calculateTightNNScore
Definition: MuonSelectionTool.h:282
plotmaker.hist
hist
Definition: plotmaker.py:148
CP::MuonSelectionTool::passedIDCuts
virtual bool passedIDCuts(const xAOD::Muon &) const override
Returns true if the muon passes the standard MCP ID cuts.
Definition: MuonSelectionTool.cxx:614
CP::MuonSelectionTool::m_BMVcutFunction_barrel
std::unique_ptr< TF1 > m_BMVcutFunction_barrel
Definition: MuonSelectionTool.h:247
CP::MuonSelectionTool::isBEE
bool isBEE(const float eta, const float phi) const
Check if muon eta/phi falls in BEE chambers.
Definition: MuonSelectionTool.cxx:1624
CP::MuonSelectionTool::m_readerE_MUGIRL
std::unique_ptr< TMVA::Reader > m_readerE_MUGIRL
Definition: MuonSelectionTool.h:259
CP::MuonSelectionTool::m_turnOffMomCorr
Gaudi::Property< bool > m_turnOffMomCorr
Definition: MuonSelectionTool.h:189
CP::MuonSelectionTool::m_tightWP_highPt_rhoCuts
std::unique_ptr< TH1 > m_tightWP_highPt_rhoCuts
Definition: MuonSelectionTool.h:245
CP::MuonSelectionTool::getHist
StatusCode getHist(TFile *file, const std::string &histName, std::unique_ptr< TH1 > &hist) const
Checks for each histogram.
Definition: MuonSelectionTool.cxx:248
egammaParameters::ParamDef
ParamDef
Definition: egammaParamDefs.h:99
athena.value
value
Definition: athena.py:124
CP::MuonSelectionTool::passedLowPtEfficiencyCuts
virtual bool passedLowPtEfficiencyCuts(const xAOD::Muon &) const override
Returns true if the muon passes the standard MCP low pt cuts.
Definition: MuonSelectionTool.cxx:695
CP::MuonSelectionTool::m_PixCutOff
Gaudi::Property< bool > m_PixCutOff
Definition: MuonSelectionTool.h:194
CP::MuonSelectionTool::setPassesIDCuts
virtual void setPassesIDCuts(xAOD::Muon &) const override
set the passes ID cuts variable of the muon
Definition: MuonSelectionTool.cxx:612
CP::MuonSelectionTool::m_readerO_MUGIRL
std::unique_ptr< TMVA::Reader > m_readerO_MUGIRL
Definition: MuonSelectionTool.h:260
CP::MuonSelectionTool::hitSummary::middleSmallHits
uint8_t middleSmallHits
Definition: MuonSelectionTool.h:137
CP::MuonSelectionTool::getTightNNScore
virtual float getTightNNScore(const xAOD::Muon &muon) const override
Returns the TightNNscore of the muon, an experimental ML-based score for the identification of muons ...
Definition: MuonSelectionTool.cxx:1656
SG::ReadHandleKey< xAOD::EventInfo >
CP::MuonSelectionTool::retrieveParam
void retrieveParam(const xAOD::Muon &muon, float &value, const xAOD::Muon::ParamDef param) const
Definition: MuonSelectionTool.cxx:1473
CP::MuonSelectionTool::passedCaloScore
virtual bool passedCaloScore(const xAOD::Muon &mu) const override
Returns true if the muon passed the CaloScore calo-tag working point.
Definition: MuonSelectionTool.cxx:1318
IAsgSelectionTool
Definition: IAsgSelectionTool.h:28
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
IAsgSelectionTool.h
CP::MuonSelectionTool::m_isRun3
Gaudi::Property< bool > m_isRun3
Definition: MuonSelectionTool.h:181
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
CP::MuonSelectionTool::m_MVAreaderFile_ODD_MuGirl
Gaudi::Property< std::string > m_MVAreaderFile_ODD_MuGirl
Definition: MuonSelectionTool.h:218
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:49
CP::MuonSelectionTool::m_toroidOff
Gaudi::Property< bool > m_toroidOff
Definition: MuonSelectionTool.h:180
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
CP::MuonSelectionTool::passedHighPtCuts
virtual bool passedHighPtCuts(const xAOD::Muon &) const override
Returns true if the muon passes the standard MCP High Pt cuts.
Definition: MuonSelectionTool.cxx:938
CP::MuonSelectionTool::m_BMVcutFile
Gaudi::Property< std::string > m_BMVcutFile
file for bad muon veto mimic cut functions
Definition: MuonSelectionTool.h:236
CP::MuonSelectionTool::m_useMVALowPt
Gaudi::Property< bool > m_useMVALowPt
Definition: MuonSelectionTool.h:198
CP::MuonSelectionTool::m_BMVcutFunction_endcap
std::unique_ptr< TF1 > m_BMVcutFunction_endcap
Definition: MuonSelectionTool.h:248
CP::MuonSelectionTool::hitSummary::innerSmallHits
uint8_t innerSmallHits
Definition: MuonSelectionTool.h:135
CP::MuonSelectionTool::m_recalcPrecisionLayerswNSW
Gaudi::Property< bool > m_recalcPrecisionLayerswNSW
Definition: MuonSelectionTool.h:183
CP::MuonSelectionTool::m_developMode
Gaudi::Property< bool > m_developMode
Definition: MuonSelectionTool.h:191
CP::MuonSelectionTool::passedErrorCutCB
virtual bool passedErrorCutCB(const xAOD::Muon &) const override
Returns true if a CB muon passes a pt- and eta-dependent cut on the relative CB q/p error.
Definition: MuonSelectionTool.cxx:1116
IMuonSelectionTool.h
CP::MuonSelectionTool::hitSummary::nprecisionLayers
uint8_t nprecisionLayers
Definition: MuonSelectionTool.h:132
CP::MuonSelectionTool::setQuality
virtual void setQuality(xAOD::Muon &mu) const override
set the passes low pT cuts variable of the muon
Definition: MuonSelectionTool.cxx:377
CP::MuonSelectionTool::m_doBadMuonVetoMimic
Gaudi::Property< bool > m_doBadMuonVetoMimic
Definition: MuonSelectionTool.h:201
CP::MuonSelectionTool::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition: MuonSelectionTool.h:205
CP::MuonSelectionTool::passedBMVmimicCut
bool passedBMVmimicCut(const xAOD::Muon &) const
Returns true if the muon passes a cut which mimics the effect of the combined error cut This is neces...
Definition: MuonSelectionTool.cxx:1221
CP::MuonSelectionTool::qOverPsignificance
float qOverPsignificance(const xAOD::Muon &muon) const
Returns q/p significance of the muon (see definition in https://cds.cern.ch/record/2665711 )
Definition: MuonSelectionTool.cxx:400
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
CP::MuonSelectionTool::passedMuonCuts
virtual bool passedMuonCuts(const xAOD::Muon &) const override
Returns true if the muon passes a standardized loose preselection.
Definition: MuonSelectionTool.cxx:1246
CP::MuonSelectionTool::hitSummary::nprecisionHoleLayers
uint8_t nprecisionHoleLayers
Definition: MuonSelectionTool.h:133
CP::MuonSelectionTool::hitSummary::outerSmallHits
uint8_t outerSmallHits
Definition: MuonSelectionTool.h:139
asg::AcceptInfo
Definition: AcceptInfo.h:28
CP::MuonSelectionTool::hitSummary
struct to handle easily number of hits in different parts of the MS
Definition: MuonSelectionTool.h:131
CP::MuonSelectionTool::hitSummary::etaLayer2STGCHits
uint8_t etaLayer2STGCHits
Definition: MuonSelectionTool.h:147
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
CP::MuonSelectionTool::isBMG
bool isBMG(const float eta, const float phi) const
Check if muon eta/phi falls in BMG chambers.
Definition: MuonSelectionTool.cxx:1642
CP::MuonSelectionTool::isBIS78
bool isBIS78(const float eta, const float phi) const
Check if muon eta/phi falls in BIS7/8 chambers.
Definition: MuonSelectionTool.cxx:1606
CP::MuonSelectionTool::m_useLRT
Gaudi::Property< bool > m_useLRT
Definition: MuonSelectionTool.h:186
CP::MuonSelectionTool::m_caloScoreWP
Gaudi::Property< int > m_caloScoreWP
Definition: MuonSelectionTool.h:185
CP::MuonSelectionTool::getAcceptInfo
virtual const asg::AcceptInfo & getAcceptInfo() const override
Get an object describing the "selection steps" of the tool.
Definition: MuonSelectionTool.cxx:269
file
TFile * file
Definition: tile_monitor.h:29
python.BunchSpacingUtils.rn
rn
Definition: BunchSpacingUtils.py:85
IAthInferenceTool.h
CP::MuonSelectionTool::m_useSegmentTaggedLowPt
Gaudi::Property< bool > m_useSegmentTaggedLowPt
Definition: MuonSelectionTool.h:199
CP::MuonSelectionTool::hitSummary::nGoodPrecLayers
uint8_t nGoodPrecLayers
Definition: MuonSelectionTool.h:134
CP::MuonSelectionTool::getSegmentsSorted
std::vector< const xAOD::MuonSegment * > getSegmentsSorted(const xAOD::Muon &mu) const
Returns a vector of the muon's segments, sorted according to chamber index.
Definition: MuonSelectionTool.cxx:815
CP::MuonSelectionTool::m_calibration_version
Gaudi::Property< std::string > m_calibration_version
Definition: MuonSelectionTool.h:230
CP::MuonSelectionTool::m_excludeNSWFromPrecisionLayers
Gaudi::Property< bool > m_excludeNSWFromPrecisionLayers
Definition: MuonSelectionTool.h:182
CP::MuonSelectionTool::getRunNumber
unsigned int getRunNumber(bool needOnlyCorrectYear=false) const
Definition: MuonSelectionTool.cxx:1549
CP::MuonSelectionTool::hitSummary::etaLayer1STGCHits
uint8_t etaLayer1STGCHits
Definition: MuonSelectionTool.h:146
CP::MuonSelectionTool::m_low_pt_mva_mutex
std::mutex m_low_pt_mva_mutex
Definition: MuonSelectionTool.h:267
CP::MuonSelectionTool::hitSummary::outerLargeHits
uint8_t outerLargeHits
Definition: MuonSelectionTool.h:140
CP::MuonSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const override
Get the decision using a generic IParticle pointer.
Definition: MuonSelectionTool.cxx:271
CP::MuonSelectionTool::m_useBEEBISInHighPtRun3
Gaudi::Property< bool > m_useBEEBISInHighPtRun3
Definition: MuonSelectionTool.h:203
CP::IMuonSelectionTool
Interface for (a) muon selector tool(s)
Definition: IMuonSelectionTool.h:25
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
CP::MuonSelectionTool::m_reader_MUTAGIMO_etaBin1
std::unique_ptr< TMVA::Reader > m_reader_MUTAGIMO_etaBin1
Definition: MuonSelectionTool.h:262
CP::MuonSelectionTool::m_tightWP_mediumPt_rhoCuts
std::unique_ptr< TH1 > m_tightWP_mediumPt_rhoCuts
Definition: MuonSelectionTool.h:244
CP::MuonSelectionTool::m_readerO_MUID
std::unique_ptr< TMVA::Reader > m_readerO_MUID
Definition: MuonSelectionTool.h:258
CP::MuonSelectionTool::m_useCaloScore
Gaudi::Property< bool > m_useCaloScore
Definition: MuonSelectionTool.h:184
CP::MuonSelectionTool::checkSanity
void checkSanity() const
Definition: MuonSelectionTool.cxx:290
CP::MuonSelectionTool::m_SiHolesCutOff
Gaudi::Property< bool > m_SiHolesCutOff
Definition: MuonSelectionTool.h:195
CP::MuonSelectionTool::m_MVAreaderFile_MuTagIMO_etaBin1
Gaudi::Property< std::string > m_MVAreaderFile_MuTagIMO_etaBin1
Definition: MuonSelectionTool.h:222
EventInfo.h
CP::MuonSelectionTool::m_tightWP_lowPt_qOverPCuts
std::unique_ptr< TH1 > m_tightWP_lowPt_qOverPCuts
Definition: MuonSelectionTool.h:243
CP::MuonSelectionTool::initialize
virtual StatusCode initialize() override
Function initialising the tool.
Definition: MuonSelectionTool.cxx:64
CP::MuonSelectionTool::isBadMuon
virtual bool isBadMuon(const xAOD::Muon &) const override
Returns true if a CB muon fails some loose quaility requirements designed to remove pathological trac...
Definition: MuonSelectionTool.cxx:649
CP::MuonSelectionTool::m_reader_MUTAGIMO_etaBin2
std::unique_ptr< TMVA::Reader > m_reader_MUTAGIMO_etaBin2
Definition: MuonSelectionTool.h:263
CP::MuonSelectionTool::m_tightWP_lowPt_rhoCuts
std::unique_ptr< TH1 > m_tightWP_lowPt_rhoCuts
Definition: MuonSelectionTool.h:242
CP::MuonSelectionTool::MuonSelectionTool
MuonSelectionTool(const std::string &name="MuonSelection")
Create a proper constructor for Athena.
Definition: MuonSelectionTool.cxx:56
CP::MuonSelectionTool::hitSummary::extendedSmallHits
uint8_t extendedSmallHits
Definition: MuonSelectionTool.h:141
CP::MuonSelectionTool::isRun3
bool isRun3(bool forceOnTheFly=false) const
Definition: MuonSelectionTool.h:273
CP::MuonSelectionTool::m_maxEta
Gaudi::Property< double > m_maxEta
Definition: MuonSelectionTool.h:178
CP::MuonSelectionTool::hitSummary::MMHits
uint8_t MMHits
Definition: MuonSelectionTool.h:148
CP::MuonSelectionTool::m_onnxTool
ToolHandle< AthInfer::IAthInferenceTool > m_onnxTool
Definition: MuonSelectionTool.h:283
CP::MuonSelectionTool::m_TrtCutOff
Gaudi::Property< bool > m_TrtCutOff
Definition: MuonSelectionTool.h:192
CP::MuonSelectionTool::hitSummary::innerLargeHits
uint8_t innerLargeHits
Definition: MuonSelectionTool.h:136
CP::MuonSelectionTool::hitSummary::extendedSmallHoles
uint8_t extendedSmallHoles
Definition: MuonSelectionTool.h:143
CP::MuonSelectionTool::IdMsPt
void IdMsPt(const xAOD::Muon &muon, float &idPt, float &msPt) const
Definition: MuonSelectionTool.cxx:381
CP::MuonSelectionTool::retrieveSummaryValue
void retrieveSummaryValue(const P &muon, T &value, const S type, bool ignoreMissing=false) const
helper function to retrieve a hitSummary value
Definition: MuonSelectionTool.h:152
CP::MuonSelectionTool::m_geoOnTheFly
Gaudi::Property< bool > m_geoOnTheFly
Definition: MuonSelectionTool.h:200
CP::MuonSelectionTool::~MuonSelectionTool
virtual ~MuonSelectionTool()
CP::MuonSelectionTool::m_allowComm
Gaudi::Property< bool > m_allowComm
Definition: MuonSelectionTool.h:202
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
CP::MuonSelectionTool::m_MVAreaderFile_ODD_MuidCB
Gaudi::Property< std::string > m_MVAreaderFile_ODD_MuidCB
Definition: MuonSelectionTool.h:211
ToolHandle.h
CP::MuonSelectionTool::hitSummary::isSmallGoodSectors
uint8_t isSmallGoodSectors
Definition: MuonSelectionTool.h:144
AsgTool.h
CP::MuonSelectionTool::passedLowPtEfficiencyMVACut
bool passedLowPtEfficiencyMVACut(const xAOD::Muon &) const
Definition: MuonSelectionTool.cxx:831
asg::AcceptData
Definition: AcceptData.h:30
CP::MuonSelectionTool::fillSummary
void fillSummary(const xAOD::Muon &muon, hitSummary &summary) const
functions that fills a hitSummary for a muon
Definition: MuonSelectionTool.cxx:1421
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:51
CP::MuonSelectionTool::getResolutionCategory
virtual int getResolutionCategory(const xAOD::Muon &) const override
Returns an integer corresponding to categorization of muons with different resolutions.
Definition: MuonSelectionTool.cxx:1483
CP::MuonSelectionTool::m_SctCutOff
Gaudi::Property< bool > m_SctCutOff
Definition: MuonSelectionTool.h:193
CP::MuonSelectionTool::hitSummary::middleLargeHits
uint8_t middleLargeHits
Definition: MuonSelectionTool.h:138
CP::MuonSelectionTool::m_MVAreaderFile_EVEN_MuGirl
Gaudi::Property< std::string > m_MVAreaderFile_EVEN_MuGirl
Definition: MuonSelectionTool.h:215
fitman.rho
rho
Definition: fitman.py:532
CP::MuonSelectionTool::rhoPrime
float rhoPrime(const xAOD::Muon &muon) const
Returns rhoPrime of the muon (see definition in https://cds.cern.ch/record/2665711 )
Definition: MuonSelectionTool.cxx:424
CP::MuonSelectionTool::hitSummary::cscUnspoiledEtaHits
uint8_t cscUnspoiledEtaHits
Definition: MuonSelectionTool.h:145
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65