ATLAS Offline Software
Loading...
Searching...
No Matches
DiTauSelectionCuts.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TAUANALYSISTOOLS_DITAUSELECTIONCUTS_H
6#define TAUANALYSISTOOLS_DITAUSELECTIONCUTS_H
7
8/*
9 original author: Dirk Duschinger
10 mail: dirk.duschinger@cern.ch
11 contact email: antonio.de.maria@cern.ch
12 documentation in: https://gitlab.cern.ch/atlas/athena/-/blob/main/PhysicsAnalysis/TauID/TauAnalysisTools/doc/README-TauSelectionTool.rst
13*/
14
15// Framework include(s):
16#include "xAODTau/DiTauJet.h"
18
19// ROOT include(s):
20#include "TH1F.h"
21
22#include <memory>
23
24namespace asg{
25 class AcceptInfo;
26 class AcceptData;
27}
28
29namespace ADD_CMODE(TauAnalysisTools)
30{
31
32class DiTauSelectionTool;
33
34class DiTauSelectionCut
35{
36
37public:
38 DiTauSelectionCut(const std::string& sName, DiTauSelectionTool* tDTST);
39 virtual ~DiTauSelectionCut();
40
41 void writeControlHistograms();
42 void fillHistogramCutPre(const xAOD::DiTauJet& xTau);
43 void fillHistogramCut(const xAOD::DiTauJet& xTau);
44 virtual void setAcceptInfo (asg::AcceptInfo& info) const = 0;
45 virtual bool accept(const xAOD::DiTauJet& xTau,
46 asg::AcceptData& accept) = 0;
47 std::unique_ptr<TH1F> CreateControlPlot(const char* sName, const char* sTitle, int iBins, double dXLow, double dXUp);
48
49 const std::string& getName()
50 {
51 return m_sName;
52 };
53
54 void setProperty(const std::string& name, const std::string& value);
55
56protected:
57 std::string m_sName;
58
59 std::unique_ptr<TH1F> m_hHistCutPre;
60 std::unique_ptr<TH1F> m_hHistCut;
61
62 DiTauSelectionTool* m_tDTST{};
63
64 void declareProperty(const std::string& name, std::string& loc);
65 std::map<std::string, std::string&> m_mProperties;
66 std::string getProperty(const std::string& name);
67
68private:
69 virtual void fillHistogram(const xAOD::DiTauJet& xTau, TH1F& hHist) const = 0;
70};
71
72class DiTauSelectionCutPt
73 : public DiTauSelectionCut
74{
75public:
76 DiTauSelectionCutPt(DiTauSelectionTool* tDTST);
77 virtual void setAcceptInfo (asg::AcceptInfo& info) const override;
78 virtual bool accept(const xAOD::DiTauJet& xTau,
79 asg::AcceptData& accept) override;
80private:
81 virtual void fillHistogram(const xAOD::DiTauJet& xTau, TH1F& hHist) const override;
82};
83
84class DiTauSelectionCutAbsEta
85 : public DiTauSelectionCut
86{
87public:
88 DiTauSelectionCutAbsEta(DiTauSelectionTool* tDTST);
89 virtual void setAcceptInfo (asg::AcceptInfo& info) const override;
90 virtual bool accept(const xAOD::DiTauJet& xTau,
91 asg::AcceptData& accept) override;
92private:
93 virtual void fillHistogram(const xAOD::DiTauJet& xTau, TH1F& hHist) const override;
94};
95
96class DiTauSelectionCutNSubjets
97 : public DiTauSelectionCut
98{
99public:
100 DiTauSelectionCutNSubjets(DiTauSelectionTool* tDTST);
101 virtual void setAcceptInfo (asg::AcceptInfo& info) const override;
102 virtual bool accept(const xAOD::DiTauJet& xTau,
103 asg::AcceptData& accept) override;
104private:
105 virtual void fillHistogram(const xAOD::DiTauJet& xTau, TH1F& hHist) const override;
106};
107
108class DiTauSelectionCutAbsCharge
109 : public DiTauSelectionCut
110{
111public:
112 DiTauSelectionCutAbsCharge(DiTauSelectionTool* tDTST);
113 virtual void setAcceptInfo (asg::AcceptInfo& info) const override;
114 virtual bool accept(const xAOD::DiTauJet& xTau,
115 asg::AcceptData& accept) override;
116private:
117 float m_bDiTauCharge;
118 virtual void fillHistogram(const xAOD::DiTauJet& xTau, TH1F& hHist) const override;
119};
120
121// class to perform ditau ID selection
122class DiTauSelectionCutOmniScore
123 : public DiTauSelectionCut
124{
125public:
126 DiTauSelectionCutOmniScore(DiTauSelectionTool* tDTST);
127 // method to add message about cut setup
128 virtual void setAcceptInfo (asg::AcceptInfo& info) const override;
129 // method to check if ditau passes the cut and return decision
130 virtual bool accept(const xAOD::DiTauJet& xTau,
131 asg::AcceptData& accept) override;
132private:
133 // method to fill control histograms
134 virtual void fillHistogram(const xAOD::DiTauJet& xTau, TH1F& hHist) const override;
135};
136
137// class to perform ditau ID selection based on WPs
138class DiTauSelectionCutOmniIDWP
139 : public DiTauSelectionCut
140{
141public:
142 DiTauSelectionCutOmniIDWP(DiTauSelectionTool* tDTST);
143 virtual void setAcceptInfo (asg::AcceptInfo& info) const override;
144 virtual bool accept(const xAOD::DiTauJet& xTau,
145 asg::AcceptData& accept) override;
146private:
147 virtual void fillHistogram(const xAOD::DiTauJet& xTau, TH1F& hHist) const override;
148};
149
150}
151
152#endif // TAUANALYSISTOOLS_DITAUSELECTIONCUTS_H
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
Object to encode the result of several cuts.
Object to describe a series of cuts.
StatusCode accept(const xAOD::Muon *mu)
T getProperty(const asg::IAsgTool *interface_tool, const std::string &prop_name)
DiTauJet_v1 DiTauJet
Definition of the current version.
Definition DiTauJet.h:17