ATLAS Offline Software
TauSelectionTool.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 TAUANALYSISTOOLS_TAUSELECTIONTOOL_H
6 #define TAUANALYSISTOOLS_TAUSELECTIONTOOL_H
7 
8 /*
9  author: Dirk Duschinger
10  mail: dirk.duschinger@cern.ch
11 */
12 
13 // Framework include(s):
15 #include "AsgTools/AnaToolHandle.h"
20 
21 // Local include(s):
23 #include "TauAnalysisTools/Enums.h"
26 
27 // EDM include(s):
28 #include "xAODMuon/MuonContainer.h"
30 
31 // ROOT include(s):
32 #include "TH1F.h"
33 #include "TFile.h"
34 
35 namespace TauAnalysisTools
36 {
37 
39 class TauSelectionCut;
40 class TauSelectionCutPt;
41 class TauSelectionCutAbsEta;
42 class TauSelectionCutAbsCharge;
43 class TauSelectionCutNTracks;
44 class TauSelectionCutJetIDWP;
45 class TauSelectionCutRNNJetScoreSigTrans;
46 class TauSelectionCutGNTauScoreSigTrans;
47 class TauSelectionCutRNNEleScoreSigTrans;
48 class TauSelectionCutEleIDWP;
49 class TauSelectionCutMuonOLR;
50 
51 
52 class TauSelectionTool : public virtual IAsgSelectionTool,
53  public virtual ITauSelectionTool,
55 {
58  friend class TauSelectionCut;
59  friend class TauSelectionCutPt;
60  friend class TauSelectionCutAbsEta;
62  friend class TauSelectionCutNTracks;
63  friend class TauSelectionCutJetIDWP;
67  friend class TauSelectionCutEleIDWP;
68  friend class TauSelectionCutMuonOLR;
69 
74 
75  // declaration of classes as friends to access private member variables
76  friend class TauEfficiencyCorrectionsTool;
77 
78 public:
80  TauSelectionTool( const std::string& name );
81 
82  virtual ~TauSelectionTool();
83 
85  virtual StatusCode initialize() override;
86 
88  virtual const asg::AcceptInfo& getAcceptInfo() const override;
89 
91  virtual asg::AcceptData accept( const xAOD::IParticle* p ) const override;
92 
94  virtual asg::AcceptData accept( const xAOD::TauJet& tau ) const override;
95 
97  virtual void setOutFile( TFile* fOutFile ) override;
98 
100  virtual void writeControlHistograms() override;
101 
102 private:
103 
104  // Execute at each event
105  virtual StatusCode beginEvent() override;
106 
107  template<typename T, typename U>
108  void FillRegionVector(std::vector<T>& vRegion, U tMin, U tMax) const;
109  template<typename T, typename U>
110  void FillValueVector(std::vector<T>& vRegion, U tVal) const;
111  template<typename T>
112  void PrintConfigRegion(const std::string& sCutName, std::vector<T>& vRegion) const;
113  template<typename T>
114  void PrintConfigValue(const std::string& sCutName, std::vector<T>& vRegion) const;
115  template<typename T>
116  void PrintConfigValue(const std::string& sCutName, T& sVal) const;
117 
118  // vector of transverse momentum cut regions
119  std::vector<float> m_vPtRegion;
120  // vector of absolute eta cut regions
121  std::vector<float> m_vAbsEtaRegion;
122  // vector of absolute charge requirements
123  std::vector<int> m_vAbsCharges;
124  // vector of number of track requirements
125  std::vector<unsigned> m_vNTracks;
126  // vector of JetRNNSigTrans cut regions
127  std::vector<float> m_vJetRNNSigTransRegion;
128  // vector of GNTauSigTrans cut regions
129  std::vector<float> m_vGNTauSigTransRegion;
130  // JetID working point
131  std::string m_sJetIDWP;
132  bool m_useGNTau=false;
133  // vector of EleRNN cut regions
134  std::vector<float> m_vEleRNNSigTransRegion;
135  // EleID working point
136  std::string m_sEleIDWP;
137 
138  // properties
139  Gaudi::Property<int> m_iSelectionCuts{this, "SelectionCuts", NoCut};
140  Gaudi::Property<float> m_dPtMin{this, "PtMin", NAN};
141  Gaudi::Property<float> m_dPtMax{this, "PtMax", NAN};
142  Gaudi::Property<float> m_dAbsEtaMin{this, "AbsEtaMin", NAN};
143  Gaudi::Property<float> m_dAbsEtaMax{this, "AbsEtaMax", NAN};
144  Gaudi::Property<float> m_iAbsCharge{this, "AbsCharge", NAN};
145  Gaudi::Property<float> m_dJetRNNSigTransMin{this, "JetRNNSigTransMin", NAN};
146  Gaudi::Property<float> m_dJetRNNSigTransMax{this, "JetRNNSigTransMax", NAN};
147  Gaudi::Property<float> m_dGNTauSigTransMin{this, "GNTauSigTransMin", NAN};
148  Gaudi::Property<float> m_dGNTauSigTransMax{this, "GNTauSigTransMax", NAN};
149  Gaudi::Property<float> m_iNTrack{this, "NTrack", NAN};
150  Gaudi::Property<float> m_dEleRNNSigTransMin{this, "EleRNNSigTransMin", NAN};
151  Gaudi::Property<float> m_dEleRNNSigTransMax{this, "EleRNNSigTransMax", NAN};
152  Gaudi::Property<int> m_iJetIDWP{this, "JetIDWP", 0};
153  Gaudi::Property<int> m_iEleIDWP{this, "EleIDWP", 0};
154  Gaudi::Property<int> m_iEleIDVersion{this, "EleIDVersion", 1};
155  Gaudi::Property<bool> m_bMuonOLR{this, "MuonOLR", false};
156 
157  Gaudi::Property<std::vector<float>> m_vecPtRegion{this, "PtRegion", {}};
158  Gaudi::Property<std::vector<float>> m_vecAbsEtaRegion{this, "AbsEtaRegion",{}};
159  Gaudi::Property<std::vector<int>> m_vecAbsCharges{this, "AbsCharges", {}};
160  Gaudi::Property<std::vector<unsigned>> m_vecNTracks{this, "NTracks", {}};
161  Gaudi::Property<std::vector<float>> m_vecJetRNNSigTransRegion{this, "JetRNNSigTransRegion", {}};
162  Gaudi::Property<std::vector<float>> m_vecGNTauSigTransRegion{this, "GNTauSigTransRegion", {}};
163  Gaudi::Property<std::vector<float>> m_vecEleRNNSigTransRegion{this, "EleRNNSigTransRegion", {}};
164 
165 protected:
166  TFile* m_fOutFile;
167  std::shared_ptr<TH1F> m_hCutFlow;
168 
169 private:
170 
171  Gaudi::Property<std::string> m_sConfigPath{this, "ConfigPath", "TauAnalysisTools/"+std::string(sSharedFilesVersion)+"/Selection/recommended_selection_r22.conf"};
172  SG::ReadHandleKey<xAOD::MuonContainer> m_muonContainerKey {this, "MuonContainerName", "Muons", "Muon container name"};
173  SG::ReadHandleKey<xAOD::TauJetContainer> m_tauContainerKey {this, "TauContainerName", "TauJets", "Tau container name"};
174  SG::ReadDecorHandleKey<xAOD::TauJetContainer> m_eVetoDecorKey {this, "eVetoDecorName", "", "Name of eVeto decoration"};
175  SG::ReadDecorHandleKey<xAOD::TauJetContainer> m_GNTauDecorKey {this, "GNTauDecorName", "", "Name of GnTauID decoration"};
176 
177  std::map<SelectionCuts, std::unique_ptr<TauAnalysisTools::TauSelectionCut>> m_cMap;
178 
179  void setupCutFlowHistogram();
180  int convertStrToJetIDWP(const std::string& sJetIDWP) const;
181  int convertStrToEleIDWP(const std::string& sEleIDWP) const;
182  std::string convertJetIDWPToStr(int iJetIDWP) const;
183  std::string convertEleIDWPToStr(int iEleIDWP) const;
184 
185 protected:
186 
187  Gaudi::Property<bool> m_bCreateControlPlots{this, "CreateControlPlots", false};
188 
191 
192 
193 }; // class TauSelectionTool
194 
195 } // namespace TauAnalysisTools
196 
197 #endif // TAUANALYSISTOOLS_TAUSELECTIONTOOL_H
TauAnalysisTools::TauSelectionTool::m_dAbsEtaMax
Gaudi::Property< float > m_dAbsEtaMax
Definition: TauSelectionTool.h:143
TauAnalysisTools::TauSelectionTool::m_vPtRegion
std::vector< float > m_vPtRegion
Definition: TauSelectionTool.h:119
TauAnalysisTools
Definition: TruthCollectionMakerTau.h:16
TauAnalysisTools::TauSelectionTool::convertStrToEleIDWP
int convertStrToEleIDWP(const std::string &sEleIDWP) const
Definition: TauSelectionTool.cxx:584
TauAnalysisTools::TauSelectionTool::m_bCreateControlPlots
Gaudi::Property< bool > m_bCreateControlPlots
Definition: TauSelectionTool.h:187
PropertyWrapper.h
Enums.h
TauAnalysisTools::TauSelectionTool::ASG_TOOL_CLASS2
ASG_TOOL_CLASS2(TauSelectionTool, IAsgSelectionTool, TauAnalysisTools::ITauSelectionTool) friend class TauEfficiencyCorrectionsTool
Create a proper constructor for Athena.
TauAnalysisTools::TauSelectionTool::setupCutFlowHistogram
void setupCutFlowHistogram()
Definition: TauSelectionTool.cxx:491
TauAnalysisTools::TauSelectionTool::m_sJetIDWP
std::string m_sJetIDWP
Definition: TauSelectionTool.h:131
TauAnalysisTools::TauSelectionTool
Definition: TauSelectionTool.h:55
TauAnalysisTools::TauSelectionTool::m_hCutFlow
std::shared_ptr< TH1F > m_hCutFlow
Definition: TauSelectionTool.h:167
TauAnalysisTools::TauSelectionCutRNNEleScoreSigTrans
Definition: TauSelectionCuts.h:151
TauAnalysisTools::TauSelectionTool::m_dPtMin
Gaudi::Property< float > m_dPtMin
Definition: TauSelectionTool.h:140
TauAnalysisTools::TauSelectionTool::FillRegionVector
void FillRegionVector(std::vector< T > &vRegion, U tMin, U tMax) const
Definition: TauSelectionTool.cxx:515
TauAnalysisTools::TauSelectionTool::m_vJetRNNSigTransRegion
std::vector< float > m_vJetRNNSigTransRegion
Definition: TauSelectionTool.h:127
TauAnalysisTools::TauSelectionTool::m_vGNTauSigTransRegion
std::vector< float > m_vGNTauSigTransRegion
Definition: TauSelectionTool.h:129
TauAnalysisTools::TauSelectionTool::setOutFile
virtual void setOutFile(TFile *fOutFile) override
Set output file for control histograms.
Definition: TauSelectionTool.cxx:466
TauAnalysisTools::TauSelectionTool::initialize
virtual StatusCode initialize() override
Function initialising the tool.
Definition: TauSelectionTool.cxx:38
TauAnalysisTools::TauSelectionTool::m_vecEleRNNSigTransRegion
Gaudi::Property< std::vector< float > > m_vecEleRNNSigTransRegion
Definition: TauSelectionTool.h:163
ITauSelectionTool.h
TauAnalysisTools::TauSelectionTool::m_iNTrack
Gaudi::Property< float > m_iNTrack
Definition: TauSelectionTool.h:149
SG::ReadHandleKey< xAOD::MuonContainer >
TauAnalysisTools::TauSelectionTool::m_vecNTracks
Gaudi::Property< std::vector< unsigned > > m_vecNTracks
Definition: TauSelectionTool.h:160
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
TauAnalysisTools::ITauSelectionTool
Interface for tau selector tool.
Definition: ITauSelectionTool.h:33
TauAnalysisTools::TauSelectionTool::m_iAbsCharge
Gaudi::Property< float > m_iAbsCharge
Definition: TauSelectionTool.h:144
TauAnalysisTools::TauSelectionCutEleIDWP
Definition: TauSelectionCuts.h:163
TauAnalysisTools::TauSelectionTool::PrintConfigValue
void PrintConfigValue(const std::string &sCutName, std::vector< T > &vRegion) const
Definition: TauSelectionTool.cxx:553
TauAnalysisTools::TauSelectionTool::m_dEleRNNSigTransMax
Gaudi::Property< float > m_dEleRNNSigTransMax
Definition: TauSelectionTool.h:151
TauAnalysisTools::TauSelectionTool::m_cMap
std::map< SelectionCuts, std::unique_ptr< TauAnalysisTools::TauSelectionCut > > m_cMap
Definition: TauSelectionTool.h:177
TauAnalysisTools::TauSelectionTool::~TauSelectionTool
virtual ~TauSelectionTool()
Definition: TauSelectionTool.cxx:32
TauAnalysisTools::TauSelectionTool::m_iSelectionCuts
Gaudi::Property< int > m_iSelectionCuts
Definition: TauSelectionTool.h:139
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
TauAnalysisTools::TauSelectionTool::FillValueVector
void FillValueVector(std::vector< T > &vRegion, U tVal) const
Definition: TauSelectionTool.cxx:532
TauAnalysisTools::TauSelectionCutAbsEta
Definition: TauSelectionCuts.h:79
SharedFilesVersion.h
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
TauAnalysisTools::TauSelectionTool::m_bMuonOLR
Gaudi::Property< bool > m_bMuonOLR
Definition: TauSelectionTool.h:155
asg::AcceptInfo
Definition: AcceptInfo.h:28
TauAnalysisTools::TauSelectionTool::m_dAbsEtaMin
Gaudi::Property< float > m_dAbsEtaMin
Definition: TauSelectionTool.h:142
TauAnalysisTools::TauSelectionTool::m_dEleRNNSigTransMin
Gaudi::Property< float > m_dEleRNNSigTransMin
Definition: TauSelectionTool.h:150
TauAnalysisTools::TauSelectionTool::m_vecGNTauSigTransRegion
Gaudi::Property< std::vector< float > > m_vecGNTauSigTransRegion
Definition: TauSelectionTool.h:162
TauAnalysisTools::TauSelectionTool::m_iEleIDVersion
Gaudi::Property< int > m_iEleIDVersion
Definition: TauSelectionTool.h:154
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TauAnalysisTools::TauEfficiencyCorrectionsTool
Definition: TauEfficiencyCorrectionsTool.h:34
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
TauAnalysisTools::TauSelectionTool::convertEleIDWPToStr
std::string convertEleIDWPToStr(int iEleIDWP) const
Definition: TauSelectionTool.cxx:628
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
TauAnalysisTools::TauSelectionTool::m_vNTracks
std::vector< unsigned > m_vNTracks
Definition: TauSelectionTool.h:125
TauAnalysisTools::TauSelectionTool::m_useGNTau
bool m_useGNTau
Definition: TauSelectionTool.h:132
TauAnalysisTools::TauSelectionTool::m_fOutFile
TFile * m_fOutFile
Definition: TauSelectionTool.h:166
TauAnalysisTools::TauSelectionTool::beginEvent
virtual StatusCode beginEvent() override
Function called when a new events is loaded.
Definition: TauSelectionTool.cxx:369
TauAnalysisTools::TauSelectionTool::PrintConfigRegion
void PrintConfigRegion(const std::string &sCutName, std::vector< T > &vRegion) const
Definition: TauSelectionTool.cxx:542
TauAnalysisTools::TauSelectionTool::writeControlHistograms
virtual void writeControlHistograms() override
Write control histograms to output file.
Definition: TauSelectionTool.cxx:472
TauAnalysisTools::TauSelectionTool::m_sEleIDWP
std::string m_sEleIDWP
Definition: TauSelectionTool.h:136
TauJetContainer.h
AnaToolHandle.h
TauAnalysisTools::TauSelectionCutMuonOLR
Definition: TauSelectionCuts.h:177
TauAnalysisTools::TauSelectionTool::m_dGNTauSigTransMax
Gaudi::Property< float > m_dGNTauSigTransMax
Definition: TauSelectionTool.h:148
TauAnalysisTools::TauSelectionTool::m_vAbsCharges
std::vector< int > m_vAbsCharges
Definition: TauSelectionTool.h:123
TauAnalysisTools::TauSelectionTool::m_eVetoDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_eVetoDecorKey
Definition: TauSelectionTool.h:174
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TauAnalysisTools::TauSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const override
Get the decision using a generic IParticle pointer.
Definition: TauSelectionTool.cxx:381
TauAnalysisTools::TauSelectionTool::m_vecAbsEtaRegion
Gaudi::Property< std::vector< float > > m_vecAbsEtaRegion
Definition: TauSelectionTool.h:158
TauAnalysisTools::TauSelectionTool::m_vAbsEtaRegion
std::vector< float > m_vAbsEtaRegion
Definition: TauSelectionTool.h:121
TauAnalysisTools::TauSelectionTool::convertStrToJetIDWP
int convertStrToJetIDWP(const std::string &sJetIDWP) const
Definition: TauSelectionTool.cxx:567
TauAnalysisTools::TauSelectionCutAbsCharge
Definition: TauSelectionCuts.h:91
MuonContainer.h
TauAnalysisTools::TauSelectionCut
Definition: TauSelectionCuts.h:28
TauAnalysisTools::TauSelectionTool::getAcceptInfo
virtual const asg::AcceptInfo & getAcceptInfo() const override
Get an object describing the "selection steps" of the tool.
Definition: TauSelectionTool.cxx:375
TauAnalysisTools::TauSelectionCutRNNJetScoreSigTrans
Definition: TauSelectionCuts.h:115
TauAnalysisTools::TauSelectionTool::m_dJetRNNSigTransMax
Gaudi::Property< float > m_dJetRNNSigTransMax
Definition: TauSelectionTool.h:146
TauAnalysisTools::TauSelectionTool::m_muonContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonContainerKey
Definition: TauSelectionTool.h:172
TauAnalysisTools::TauSelectionTool::m_GNTauDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_GNTauDecorKey
Definition: TauSelectionTool.h:175
asg::AsgMetadataTool
Base class for dual-use tools that provide file metadata access.
Definition: AsgMetadataTool.h:48
TauAnalysisTools::TauSelectionTool::TauSelectionTool
TauSelectionTool(const std::string &name)
Constructor for standalone usage.
Definition: TauSelectionTool.cxx:23
TauAnalysisTools::TauSelectionTool::m_dJetRNNSigTransMin
Gaudi::Property< float > m_dJetRNNSigTransMin
Definition: TauSelectionTool.h:145
TauAnalysisTools::TauSelectionTool::m_dPtMax
Gaudi::Property< float > m_dPtMax
Definition: TauSelectionTool.h:141
AsgMetadataTool.h
TauAnalysisTools::TauSelectionTool::m_dGNTauSigTransMin
Gaudi::Property< float > m_dGNTauSigTransMin
Definition: TauSelectionTool.h:147
TauAnalysisTools::TauSelectionTool::m_iJetIDWP
Gaudi::Property< int > m_iJetIDWP
Definition: TauSelectionTool.h:152
TauAnalysisTools::TauSelectionCutJetIDWP
Definition: TauSelectionCuts.h:139
TauAnalysisTools::TauSelectionTool::m_tauContainerKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_tauContainerKey
Definition: TauSelectionTool.h:173
TauAnalysisTools::TauSelectionTool::m_aAccept
asg::AcceptInfo m_aAccept
Object used to store selection information.
Definition: TauSelectionTool.h:190
TauAnalysisTools::NoCut
@ NoCut
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:41
TauAnalysisTools::TauSelectionTool::m_sConfigPath
Gaudi::Property< std::string > m_sConfigPath
Definition: TauSelectionTool.h:171
TauAnalysisTools::TauSelectionCutNTracks
Definition: TauSelectionCuts.h:103
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
asg::AcceptData
Definition: AcceptData.h:30
TauAnalysisTools::TauSelectionTool::m_iEleIDWP
Gaudi::Property< int > m_iEleIDWP
Definition: TauSelectionTool.h:153
TauAnalysisTools::TauSelectionTool::convertJetIDWPToStr
std::string convertJetIDWPToStr(int iJetIDWP) const
Definition: TauSelectionTool.cxx:596
TauAnalysisTools::TauSelectionTool::m_vecAbsCharges
Gaudi::Property< std::vector< int > > m_vecAbsCharges
Definition: TauSelectionTool.h:159
HelperFunctions.h
TauAnalysisTools::TauSelectionCutGNTauScoreSigTrans
Definition: TauSelectionCuts.h:127
TauAnalysisTools::TauSelectionTool::m_vecJetRNNSigTransRegion
Gaudi::Property< std::vector< float > > m_vecJetRNNSigTransRegion
Definition: TauSelectionTool.h:161
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
TauAnalysisTools::TauSelectionTool::m_vEleRNNSigTransRegion
std::vector< float > m_vEleRNNSigTransRegion
Definition: TauSelectionTool.h:134
TauAnalysisTools::TauSelectionCutPt
Definition: TauSelectionCuts.h:67
TauAnalysisTools::TauSelectionTool::m_vecPtRegion
Gaudi::Property< std::vector< float > > m_vecPtRegion
Definition: TauSelectionTool.h:157