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 
43 class DiTauSelectionTool : public virtual IAsgSelectionTool,
44  public virtual IDiTauSelectionTool,
46 {
49  friend class DiTauSelectionCut;
50  friend class DiTauSelectionCutPt;
55 
60 
61 public:
63  DiTauSelectionTool( const std::string& name );
64 
65  virtual ~DiTauSelectionTool();
66 
68  virtual StatusCode initialize() override;
69 
71  virtual const asg::AcceptInfo& getAcceptInfo() const override;
72 
74  virtual asg::AcceptData accept( const xAOD::IParticle* p ) const override;
75 
77  virtual asg::AcceptData accept( const xAOD::DiTauJet& tau ) const override;
78 
80  virtual void setOutFile( TFile* fOutFile ) override;
81 
83  virtual void writeControlHistograms() override;
84 
85 private:
86 
87  // Execute at each event
88  virtual StatusCode beginEvent() override;
89 
90  template<typename T, typename U>
91  void FillRegionVector(std::vector<T>& vRegion, U tMin, U tMax) const;
92  template<typename T, typename U>
93  void FillValueVector(std::vector<T>& vRegion, U tVal) const;
94  template<typename T>
95  void PrintConfigRegion(const std::string& sCutName, std::vector<T>& vRegion) const;
96  template<typename T>
97  void PrintConfigValue(const std::string& sCutName, std::vector<T>& vRegion) const;
98  template<typename T>
99  void PrintConfigValue(const std::string& sCutName, T& sVal) const;
100 
101  // vector of transverse momentum cut regions
102  std::vector<float> m_vPtRegion;
103  // vector of absolute eta cut regions
104  std::vector<float> m_vAbsEtaRegion;
105  // vector of number of subjets cut regions
106  std::vector<float> m_vNSubjetsRegion;
107  // vector of absolute charge requirements
108  std::vector<int> m_vAbsCharges;
109  // vector of OmniScore cut regions
110  std::vector<float> m_vOmniScoreRegion;
111 
112  bool m_useOmniScore=false;
113 
114  Gaudi::Property<std::string> m_sConfigPath{this, "ConfigPath", ""};
115  Gaudi::Property<int> m_iSelectionCuts{this, "SelectionCuts", NoDiTauCut};
116  Gaudi::Property<float> m_dPtMin{this, "PtMin", NAN};
117  Gaudi::Property<float> m_dPtMax{this, "PtMax", NAN};
118  Gaudi::Property<float> m_dAbsEtaMin{this, "AbsEtaMin", NAN};
119  Gaudi::Property<float> m_dAbsEtaMax{this, "AbsEtaMax", NAN};
120  Gaudi::Property<float> m_dNSubjetsMin{this, "NSubjetsMin", NAN};
121  Gaudi::Property<float> m_dNSubjetsMax{this, "NSubjetsMax", NAN};
122  Gaudi::Property<float> m_iAbsCharge{this, "AbsCharge", NAN};
123  Gaudi::Property<float> m_dOmniScoreMin{this, "OmniScoreMin", NAN};
124  Gaudi::Property<float> m_dOmniScoreMax{this, "OmniScoreMax", NAN};
125 
126  Gaudi::Property<std::vector<float>> m_vecPtRegion{this, "PtRegion", {}};
127  Gaudi::Property<std::vector<float>> m_vecAbsEtaRegion{this, "AbsEtaRegion",{}};
128  Gaudi::Property<std::vector<float>> m_vecNSubjetsRegion{this, "NSubjetsRegion", {}};
129  Gaudi::Property<std::vector<int>> m_vecAbsCharges{this, "AbsCharges", {}};
130  Gaudi::Property<std::vector<float>> m_vecOmniScoreRegion{this, "OmniScoreRegion", {}};
131 
132 protected:
133  TFile* m_fOutFile;
134  std::shared_ptr<TH1F> m_hCutFlow;
135 
136 private:
137 
138  std::map<DiTauSelectionCuts, std::unique_ptr<TauAnalysisTools::DiTauSelectionCut>> m_cMap;
139 
140  void setupCutFlowHistogram();
141 
142 protected:
143 
144  Gaudi::Property<bool> m_bCreateControlPlots{this, "CreateControlPlots", false};
145  SG::ReadDecorHandleKey<xAOD::DiTauJetContainer> m_OmniScoreDecorKey {this, "OmniScoreDecorName", "", "Name of OmniScore decoration"};
146 
149 
150 
151 }; // class DiTauSelectionTool
152 
153 } // namespace TauAnalysisTools
154 
155 #endif // TAUANALYSISTOOLS_DITAUSELECTIONTOOL_H
TauAnalysisTools
Definition: TruthCollectionMakerTau.h:16
TauAnalysisTools::DiTauSelectionTool::m_bCreateControlPlots
Gaudi::Property< bool > m_bCreateControlPlots
Definition: DiTauSelectionTool.h:144
TauAnalysisTools::DiTauSelectionTool::m_vecPtRegion
Gaudi::Property< std::vector< float > > m_vecPtRegion
Definition: DiTauSelectionTool.h:126
PropertyWrapper.h
Enums.h
TauAnalysisTools::DiTauSelectionTool::m_aAccept
asg::AcceptInfo m_aAccept
Object used to store selection information.
Definition: DiTauSelectionTool.h:148
TauAnalysisTools::DiTauSelectionTool::m_OmniScoreDecorKey
SG::ReadDecorHandleKey< xAOD::DiTauJetContainer > m_OmniScoreDecorKey
Definition: DiTauSelectionTool.h:145
TauAnalysisTools::DiTauSelectionTool::m_dPtMin
Gaudi::Property< float > m_dPtMin
Definition: DiTauSelectionTool.h:116
TauAnalysisTools::DiTauSelectionCut
Definition: DiTauSelectionCuts.h:29
TauAnalysisTools::DiTauSelectionTool::initialize
virtual StatusCode initialize() override
Function initialising the tool.
Definition: DiTauSelectionTool.cxx:38
TauAnalysisTools::IDiTauSelectionTool
Interface for tau selector tool.
Definition: IDiTauSelectionTool.h:34
TauAnalysisTools::DiTauSelectionTool::m_dPtMax
Gaudi::Property< float > m_dPtMax
Definition: DiTauSelectionTool.h:117
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:124
TauAnalysisTools::DiTauSelectionTool::m_dAbsEtaMin
Gaudi::Property< float > m_dAbsEtaMin
Definition: DiTauSelectionTool.h:118
TauAnalysisTools::DiTauSelectionTool::getAcceptInfo
virtual const asg::AcceptInfo & getAcceptInfo() const override
Get an object describing the "selection steps" of the tool.
Definition: DiTauSelectionTool.cxx:288
TauAnalysisTools::DiTauSelectionTool::m_dOmniScoreMin
Gaudi::Property< float > m_dOmniScoreMin
Definition: DiTauSelectionTool.h:123
DiTauJetContainer.h
TauAnalysisTools::DiTauSelectionTool::writeControlHistograms
virtual void writeControlHistograms() override
Write control histograms to output file.
Definition: DiTauSelectionTool.cxx:385
TauAnalysisTools::DiTauSelectionTool::beginEvent
virtual StatusCode beginEvent() override
Function called when a new events is loaded.
Definition: DiTauSelectionTool.cxx:282
TauAnalysisTools::DiTauSelectionCutOmniScore
Definition: DiTauSelectionCuts.h:118
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:122
TauAnalysisTools::DiTauSelectionTool::m_vAbsCharges
std::vector< int > m_vAbsCharges
Definition: DiTauSelectionTool.h:108
TauAnalysisTools::DiTauSelectionTool::m_vecAbsEtaRegion
Gaudi::Property< std::vector< float > > m_vecAbsEtaRegion
Definition: DiTauSelectionTool.h:127
TauAnalysisTools::NoDiTauCut
@ NoDiTauCut
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:57
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:104
TauAnalysisTools::DiTauSelectionTool::m_sConfigPath
Gaudi::Property< std::string > m_sConfigPath
Definition: DiTauSelectionTool.h:114
TauAnalysisTools::DiTauSelectionTool::m_hCutFlow
std::shared_ptr< TH1F > m_hCutFlow
Definition: DiTauSelectionTool.h:134
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:404
TauAnalysisTools::DiTauSelectionTool::PrintConfigValue
void PrintConfigValue(const std::string &sCutName, std::vector< T > &vRegion) const
Definition: DiTauSelectionTool.cxx:466
TauAnalysisTools::DiTauSelectionTool::FillRegionVector
void FillRegionVector(std::vector< T > &vRegion, U tMin, U tMax) const
Definition: DiTauSelectionTool.cxx:428
AnaToolHandle.h
TauAnalysisTools::DiTauSelectionTool::m_vPtRegion
std::vector< float > m_vPtRegion
Definition: DiTauSelectionTool.h:102
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:119
TauAnalysisTools::DiTauSelectionTool::m_dNSubjetsMin
Gaudi::Property< float > m_dNSubjetsMin
Definition: DiTauSelectionTool.h:120
TauAnalysisTools::DiTauSelectionTool::m_vecAbsCharges
Gaudi::Property< std::vector< int > > m_vecAbsCharges
Definition: DiTauSelectionTool.h:129
TauAnalysisTools::DiTauSelectionTool::setOutFile
virtual void setOutFile(TFile *fOutFile) override
Set output file for control histograms.
Definition: DiTauSelectionTool.cxx:379
TauAnalysisTools::DiTauSelectionTool::m_vecOmniScoreRegion
Gaudi::Property< std::vector< float > > m_vecOmniScoreRegion
Definition: DiTauSelectionTool.h:130
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:112
AsgMetadataTool.h
TauAnalysisTools::DiTauSelectionTool::PrintConfigRegion
void PrintConfigRegion(const std::string &sCutName, std::vector< T > &vRegion) const
Definition: DiTauSelectionTool.cxx:455
TauAnalysisTools::DiTauSelectionTool::m_vecNSubjetsRegion
Gaudi::Property< std::vector< float > > m_vecNSubjetsRegion
Definition: DiTauSelectionTool.h:128
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:138
TauAnalysisTools::DiTauSelectionTool::m_vNSubjetsRegion
std::vector< float > m_vNSubjetsRegion
Definition: DiTauSelectionTool.h:106
TauAnalysisTools::DiTauSelectionTool::m_vOmniScoreRegion
std::vector< float > m_vOmniScoreRegion
Definition: DiTauSelectionTool.h:110
TauAnalysisTools::DiTauSelectionTool
Definition: DiTauSelectionTool.h:46
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:445
asg::AcceptData
Definition: AcceptData.h:30
TauAnalysisTools::DiTauSelectionTool::m_iSelectionCuts
Gaudi::Property< int > m_iSelectionCuts
Definition: DiTauSelectionTool.h:115
TauAnalysisTools::DiTauSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const override
Get the decision using a generic IParticle pointer.
Definition: DiTauSelectionTool.cxx:294
HelperFunctions.h
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
TauAnalysisTools::DiTauSelectionTool::m_dNSubjetsMax
Gaudi::Property< float > m_dNSubjetsMax
Definition: DiTauSelectionTool.h:121
TauAnalysisTools::DiTauSelectionCutAbsCharge
Definition: DiTauSelectionCuts.h:104
TauAnalysisTools::DiTauSelectionTool::m_fOutFile
TFile * m_fOutFile
Definition: DiTauSelectionTool.h:133