ATLAS Offline Software
DiTauSelectionTool.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_DITAUSELECTIONTOOL_H
6 #define TAUANALYSISTOOLS_DITAUSELECTIONTOOL_H
7 
8 /*
9  author: Dirk Duschinger
10  mail: dirk.duschinger@cern.ch
11  contact email: antonio.de.maria@cern.ch
12 */
13 
14 // Framework include(s):
16 #include "AsgTools/AnaToolHandle.h"
22 
23 // Local include(s):
25 #include "TauAnalysisTools/Enums.h"
27 
28 // ROOT include(s):
29 #include "TH1F.h"
30 #include "TFile.h"
31 
32 namespace TauAnalysisTools
33 {
34 
36 class DiTauSelectionCut;
37 class DiTauSelectionCutPt;
38 class DiTauSelectionCutAbsEta;
39 class DiTauSelectionCutNSubjets;
40 class DiTauSelectionCutAbsCharge;
41 class DiTauSelectionCutOmniScore;
42 class DiTauSelectionCutOmniIDWP;
43 
44 class DiTauSelectionTool : public virtual IAsgSelectionTool,
45  public virtual IDiTauSelectionTool,
47 {
50  friend class DiTauSelectionCut;
51  friend class DiTauSelectionCutPt;
57 
62 
63 public:
65  DiTauSelectionTool( const std::string& name );
66 
67  virtual ~DiTauSelectionTool();
68 
70  virtual StatusCode initialize() override;
71 
73  virtual const asg::AcceptInfo& getAcceptInfo() const override;
74 
76  virtual asg::AcceptData accept( const xAOD::IParticle* p ) const override;
77 
79  virtual asg::AcceptData accept( const xAOD::DiTauJet& tau ) const override;
80 
82  virtual void setOutFile( TFile* fOutFile ) override;
83 
85  virtual void writeControlHistograms() override;
86 
87 private:
88 
89  // Execute at each event
90  virtual StatusCode beginEvent() override;
91 
92  template<typename T, typename U>
93  void FillRegionVector(std::vector<T>& vRegion, U tMin, U tMax) const;
94  template<typename T, typename U>
95  void FillValueVector(std::vector<T>& vRegion, U tVal) const;
96  template<typename T>
97  void PrintConfigRegion(const std::string& sCutName, std::vector<T>& vRegion) const;
98  template<typename T>
99  void PrintConfigValue(const std::string& sCutName, std::vector<T>& vRegion) const;
100  template<typename T>
101  void PrintConfigValue(const std::string& sCutName, T& sVal) const;
102 
103  // vector of transverse momentum cut regions
104  std::vector<float> m_vPtRegion;
105  // vector of absolute eta cut regions
106  std::vector<float> m_vAbsEtaRegion;
107  // vector of number of subjets cut regions
108  std::vector<float> m_vNSubjetsRegion;
109  // vector of absolute charge requirements
110  std::vector<int> m_vAbsCharges;
111  // vector of OmniScore cut regions
112  std::vector<float> m_vOmniScoreRegion;
113  // OmniID working point
114  std::string m_sOmniIDWP;
115 
116  bool m_useOmniScore=false;
117 
118  Gaudi::Property<std::string> m_sConfigPath{this, "ConfigPath", ""};
119  Gaudi::Property<int> m_iSelectionCuts{this, "SelectionCuts", NoDiTauCut};
120  Gaudi::Property<float> m_dPtMin{this, "PtMin", NAN};
121  Gaudi::Property<float> m_dPtMax{this, "PtMax", NAN};
122  Gaudi::Property<float> m_dAbsEtaMin{this, "AbsEtaMin", NAN};
123  Gaudi::Property<float> m_dAbsEtaMax{this, "AbsEtaMax", NAN};
124  Gaudi::Property<float> m_dNSubjetsMin{this, "NSubjetsMin", NAN};
125  Gaudi::Property<float> m_dNSubjetsMax{this, "NSubjetsMax", NAN};
126  Gaudi::Property<float> m_iAbsCharge{this, "AbsCharge", NAN};
127  Gaudi::Property<float> m_dOmniScoreMin{this, "OmniScoreMin", NAN};
128  Gaudi::Property<float> m_dOmniScoreMax{this, "OmniScoreMax", NAN};
129  Gaudi::Property<int> m_iOmniIDWP{this, "OmniIDWP", 0};
130 
131  Gaudi::Property<std::vector<float>> m_vecPtRegion{this, "PtRegion", {}};
132  Gaudi::Property<std::vector<float>> m_vecAbsEtaRegion{this, "AbsEtaRegion",{}};
133  Gaudi::Property<std::vector<float>> m_vecNSubjetsRegion{this, "NSubjetsRegion", {}};
134  Gaudi::Property<std::vector<int>> m_vecAbsCharges{this, "AbsCharges", {}};
135  Gaudi::Property<std::vector<float>> m_vecOmniScoreRegion{this, "OmniScoreRegion", {}};
136 
137 protected:
138  TFile* m_fOutFile;
139  std::shared_ptr<TH1F> m_hCutFlow;
140 
141 private:
142 
143  std::map<DiTauSelectionCuts, std::unique_ptr<TauAnalysisTools::DiTauSelectionCut>> m_cMap;
144 
145  void setupCutFlowHistogram();
146  int convertStrToOmniIDWP(const std::string& sOmniIDWP) const;
147  std::string convertOmniIDWPToStr(int iOmniIDWP) const;
148 
149 protected:
150 
151  Gaudi::Property<bool> m_bCreateControlPlots{this, "CreateControlPlots", false};
152  SG::ReadDecorHandleKey<xAOD::DiTauJetContainer> m_OmniScoreDecorKey {this, "OmniScoreDecorName", "", "Name of OmniScore decoration"};
153 
156 
157 
158 }; // class DiTauSelectionTool
159 
160 } // namespace TauAnalysisTools
161 
162 #endif // TAUANALYSISTOOLS_DITAUSELECTIONTOOL_H
TauAnalysisTools
Definition: PhysValMET.h:37
TauAnalysisTools::DiTauSelectionTool::m_bCreateControlPlots
Gaudi::Property< bool > m_bCreateControlPlots
Definition: DiTauSelectionTool.h:151
TauAnalysisTools::DiTauSelectionTool::m_vecPtRegion
Gaudi::Property< std::vector< float > > m_vecPtRegion
Definition: DiTauSelectionTool.h:131
PropertyWrapper.h
Enums.h
TauAnalysisTools::DiTauSelectionTool::m_aAccept
asg::AcceptInfo m_aAccept
Object used to store selection information.
Definition: DiTauSelectionTool.h:155
TauAnalysisTools::DiTauSelectionTool::m_OmniScoreDecorKey
SG::ReadDecorHandleKey< xAOD::DiTauJetContainer > m_OmniScoreDecorKey
Definition: DiTauSelectionTool.h:152
TauAnalysisTools::DiTauSelectionTool::m_dPtMin
Gaudi::Property< float > m_dPtMin
Definition: DiTauSelectionTool.h:120
TauAnalysisTools::DiTauSelectionCut
Definition: DiTauSelectionCuts.h:29
TauAnalysisTools::DiTauSelectionTool::initialize
virtual StatusCode initialize() override
Function initialising the tool.
Definition: DiTauSelectionTool.cxx:37
TauAnalysisTools::IDiTauSelectionTool
Interface for tau selector tool.
Definition: IDiTauSelectionTool.h:34
TauAnalysisTools::DiTauSelectionTool::m_dPtMax
Gaudi::Property< float > m_dPtMax
Definition: DiTauSelectionTool.h:121
ASG_TOOL_CLASS2
#define ASG_TOOL_CLASS2(CLASSNAME, INT1, INT2)
Definition: AsgToolMacros.h:77
TauAnalysisTools::DiTauSelectionTool::m_dOmniScoreMax
Gaudi::Property< float > m_dOmniScoreMax
Definition: DiTauSelectionTool.h:128
TauAnalysisTools::DiTauSelectionTool::m_dAbsEtaMin
Gaudi::Property< float > m_dAbsEtaMin
Definition: DiTauSelectionTool.h:122
TauAnalysisTools::DiTauSelectionTool::getAcceptInfo
virtual const asg::AcceptInfo & getAcceptInfo() const override
Get an object describing the "selection steps" of the tool.
Definition: DiTauSelectionTool.cxx:306
TauAnalysisTools::DiTauSelectionTool::m_dOmniScoreMin
Gaudi::Property< float > m_dOmniScoreMin
Definition: DiTauSelectionTool.h:127
DiTauJetContainer.h
TauAnalysisTools::DiTauSelectionTool::writeControlHistograms
virtual void writeControlHistograms() override
Write control histograms to output file.
Definition: DiTauSelectionTool.cxx:403
TauAnalysisTools::DiTauSelectionTool::beginEvent
virtual StatusCode beginEvent() override
Function called when a new events is loaded.
Definition: DiTauSelectionTool.cxx:300
TauAnalysisTools::DiTauSelectionCutOmniScore
Definition: DiTauSelectionCuts.h:118
TauAnalysisTools::DiTauSelectionTool::m_sOmniIDWP
std::string m_sOmniIDWP
Definition: DiTauSelectionTool.h:114
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::DiTauSelectionTool::m_iAbsCharge
Gaudi::Property< float > m_iAbsCharge
Definition: DiTauSelectionTool.h:126
TauAnalysisTools::DiTauSelectionTool::m_vAbsCharges
std::vector< int > m_vAbsCharges
Definition: DiTauSelectionTool.h:110
TauAnalysisTools::DiTauSelectionTool::m_vecAbsEtaRegion
Gaudi::Property< std::vector< float > > m_vecAbsEtaRegion
Definition: DiTauSelectionTool.h:132
TauAnalysisTools::NoDiTauCut
@ NoDiTauCut
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:66
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
asg::AcceptInfo
Definition: AcceptInfo.h:28
TauAnalysisTools::DiTauSelectionTool::m_vAbsEtaRegion
std::vector< float > m_vAbsEtaRegion
Definition: DiTauSelectionTool.h:106
TauAnalysisTools::DiTauSelectionCutOmniIDWP
Definition: DiTauSelectionCuts.h:134
TauAnalysisTools::DiTauSelectionTool::m_sConfigPath
Gaudi::Property< std::string > m_sConfigPath
Definition: DiTauSelectionTool.h:118
TauAnalysisTools::DiTauSelectionTool::m_hCutFlow
std::shared_ptr< TH1F > m_hCutFlow
Definition: DiTauSelectionTool.h:139
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.
TauAnalysisTools::DiTauSelectionCutNSubjets
Definition: DiTauSelectionCuts.h:92
TauAnalysisTools::DiTauSelectionCutPt
Definition: DiTauSelectionCuts.h:68
TauAnalysisTools::DiTauSelectionTool::setupCutFlowHistogram
void setupCutFlowHistogram()
Definition: DiTauSelectionTool.cxx:422
TauAnalysisTools::DiTauSelectionTool::PrintConfigValue
void PrintConfigValue(const std::string &sCutName, std::vector< T > &vRegion) const
Definition: DiTauSelectionTool.cxx:484
TauAnalysisTools::DiTauSelectionTool::FillRegionVector
void FillRegionVector(std::vector< T > &vRegion, U tMin, U tMax) const
Definition: DiTauSelectionTool.cxx:446
AnaToolHandle.h
TauAnalysisTools::DiTauSelectionTool::convertOmniIDWPToStr
std::string convertOmniIDWPToStr(int iOmniIDWP) const
Definition: DiTauSelectionTool.cxx:511
TauAnalysisTools::DiTauSelectionTool::m_vPtRegion
std::vector< float > m_vPtRegion
Definition: DiTauSelectionTool.h:104
TauAnalysisTools::DiTauSelectionTool::m_iOmniIDWP
Gaudi::Property< int > m_iOmniIDWP
Definition: DiTauSelectionTool.h:129
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TauAnalysisTools::DiTauSelectionCutAbsEta
Definition: DiTauSelectionCuts.h:80
TauAnalysisTools::DiTauSelectionTool::m_dAbsEtaMax
Gaudi::Property< float > m_dAbsEtaMax
Definition: DiTauSelectionTool.h:123
TauAnalysisTools::DiTauSelectionTool::m_dNSubjetsMin
Gaudi::Property< float > m_dNSubjetsMin
Definition: DiTauSelectionTool.h:124
TauAnalysisTools::DiTauSelectionTool::convertStrToOmniIDWP
int convertStrToOmniIDWP(const std::string &sOmniIDWP) const
Definition: DiTauSelectionTool.cxx:498
TauAnalysisTools::DiTauSelectionTool::m_vecAbsCharges
Gaudi::Property< std::vector< int > > m_vecAbsCharges
Definition: DiTauSelectionTool.h:134
TauAnalysisTools::DiTauSelectionTool::setOutFile
virtual void setOutFile(TFile *fOutFile) override
Set output file for control histograms.
Definition: DiTauSelectionTool.cxx:397
TauAnalysisTools::DiTauSelectionTool::m_vecOmniScoreRegion
Gaudi::Property< std::vector< float > > m_vecOmniScoreRegion
Definition: DiTauSelectionTool.h:135
asg::AsgMetadataTool
Base class for dual-use tools that provide file metadata access.
Definition: AsgMetadataTool.h:48
TauAnalysisTools::DiTauSelectionTool::m_useOmniScore
bool m_useOmniScore
Definition: DiTauSelectionTool.h:116
AsgMetadataTool.h
TauAnalysisTools::DiTauSelectionTool::PrintConfigRegion
void PrintConfigRegion(const std::string &sCutName, std::vector< T > &vRegion) const
Definition: DiTauSelectionTool.cxx:473
TauAnalysisTools::DiTauSelectionTool::m_vecNSubjetsRegion
Gaudi::Property< std::vector< float > > m_vecNSubjetsRegion
Definition: DiTauSelectionTool.h:133
IDiTauSelectionTool.h
xAOD::DiTauJet_v1
Definition: DiTauJet_v1.h:31
TauAnalysisTools::DiTauSelectionTool::m_cMap
std::map< DiTauSelectionCuts, std::unique_ptr< TauAnalysisTools::DiTauSelectionCut > > m_cMap
Definition: DiTauSelectionTool.h:143
TauAnalysisTools::DiTauSelectionTool::m_vNSubjetsRegion
std::vector< float > m_vNSubjetsRegion
Definition: DiTauSelectionTool.h:108
TauAnalysisTools::DiTauSelectionTool::m_vOmniScoreRegion
std::vector< float > m_vOmniScoreRegion
Definition: DiTauSelectionTool.h:112
TauAnalysisTools::DiTauSelectionTool
Definition: DiTauSelectionTool.h:47
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
TauAnalysisTools::DiTauSelectionTool::FillValueVector
void FillValueVector(std::vector< T > &vRegion, U tVal) const
Definition: DiTauSelectionTool.cxx:463
asg::AcceptData
Definition: AcceptData.h:30
TauAnalysisTools::DiTauSelectionTool::m_iSelectionCuts
Gaudi::Property< int > m_iSelectionCuts
Definition: DiTauSelectionTool.h:119
TauAnalysisTools::DiTauSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const override
Get the decision using a generic IParticle pointer.
Definition: DiTauSelectionTool.cxx:312
HelperFunctions.h
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
TauAnalysisTools::DiTauSelectionTool::m_dNSubjetsMax
Gaudi::Property< float > m_dNSubjetsMax
Definition: DiTauSelectionTool.h:125
TauAnalysisTools::DiTauSelectionCutAbsCharge
Definition: DiTauSelectionCuts.h:104
TauAnalysisTools::DiTauSelectionTool::m_fOutFile
TFile * m_fOutFile
Definition: DiTauSelectionTool.h:138