ATLAS Offline Software
IMuonLRTOverlapRemovalTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 #ifndef IMUONLRTOVERLAPREMOVALTOOL__H
6 #define IMUONLRTOVERLAPREMOVALTOOL__H
7 
8 // Framework include(s):
9 #include "AsgTools/IAsgTool.h"
10 
11 // EDM include(s):
13 
14 #include "xAODMuon/Muon.h"
15 #include "xAODMuon/MuonContainer.h"
16 
17 // Local include(s):
18 
23 namespace CP {
24 
25  class IMuonLRTOverlapRemovalTool : public virtual asg::IAsgTool {
31 
33 
34  public:
35 
37  typedef enum {
38  defaultStrategy=0, //default strategy which does a basic overlap removal.
39  passThroughAndDecorate=1 //writes all the muons in the combined container irrespective of overlap,
40  //and adds a decoration `MuonLRTOverlapDecision` which contains overlap information for all muons.
42 
46  virtual std::pair<bool, bool> resolveOverlap(const xAOD::Muon* promptMuon,
47  const xAOD::Muon* lrtMuon) const = 0;
48 
52  virtual std::tuple<int, int> checkOverlapForDecor(const xAOD::Muon* promptMuon,
53  const xAOD::Muon* lrtMuon) const = 0;
54 
61  virtual void checkOverlap(const xAOD::MuonContainer & promptCollection,
62  const xAOD::MuonContainer & lrtCollection,
63  std::vector<bool>& promptMuonsSelectedToKeep,
64  std::vector<bool>& lrtMuonsSelectedToKeep ) const = 0;
65 
68  virtual bool hasOverlap(const xAOD::Muon* promptMuon,
69  const xAOD::Muon* lrtMuon) const = 0;
70  };
71  // class IMuonLRTOverlapRemovalTool
72 
73 } // namespace CP
74 
75 #endif /* IMUONLRTOVERLAPREMOVALTOOL__H */
CP::IMuonLRTOverlapRemovalTool::defaultStrategy
@ defaultStrategy
Definition: IMuonLRTOverlapRemovalTool.h:38
CP::IMuonLRTOverlapRemovalTool::passThroughAndDecorate
@ passThroughAndDecorate
Definition: IMuonLRTOverlapRemovalTool.h:39
CP::IMuonLRTOverlapRemovalTool
Definition: IMuonLRTOverlapRemovalTool.h:25
Muon.h
asg::IAsgTool
Base class for the dual-use tool interface classes.
Definition: IAsgTool.h:41
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
CP::IMuonLRTOverlapRemovalTool::checkOverlap
virtual void checkOverlap(const xAOD::MuonContainer &promptCollection, const xAOD::MuonContainer &lrtCollection, std::vector< bool > &promptMuonsSelectedToKeep, std::vector< bool > &lrtMuonsSelectedToKeep) const =0
check the overlap between the prompt and LRT muon collections.
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
CP::IMuonLRTOverlapRemovalTool::resolveOverlap
virtual std::pair< bool, bool > resolveOverlap(const xAOD::Muon *promptMuon, const xAOD::Muon *lrtMuon) const =0
resolve the overlap between a pair of muons, one from the prompt and one from the LRT pass.
CP::IMuonLRTOverlapRemovalTool::checkOverlapForDecor
virtual std::tuple< int, int > checkOverlapForDecor(const xAOD::Muon *promptMuon, const xAOD::Muon *lrtMuon) const =0
checks for overlap between a pair of muons, one from the prompt and one from the LRT pass.
CP::IMuonLRTOverlapRemovalTool::overlapStrategy
overlapStrategy
Allow to specify a number of MCP-supported overlap removal strategies.
Definition: IMuonLRTOverlapRemovalTool.h:37
ASG_TOOL_INTERFACE
#define ASG_TOOL_INTERFACE(CLASSNAME)
Definition: AsgToolMacros.h:40
IAsgTool.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
EventInfo.h
MuonContainer.h
CP::IMuonLRTOverlapRemovalTool::hasOverlap
virtual bool hasOverlap(const xAOD::Muon *promptMuon, const xAOD::Muon *lrtMuon) const =0
checks the overlap between a pair of muons, one from the prompt and one from the LRT pass.