need to define cut classes to be friends to access protected variables, needed for access of cut thresholds
Object used to store selection information.
33{
34
36class DiTauSelectionCut;
37class DiTauSelectionCutPt;
38class DiTauSelectionCutAbsEta;
39class DiTauSelectionCutNSubjets;
40class DiTauSelectionCutAbsCharge;
41class DiTauSelectionCutOmniScore;
42class DiTauSelectionCutOmniIDWP;
43
45 public virtual IDiTauSelectionTool,
47{
50 friend class DiTauSelectionCut;
51 friend class DiTauSelectionCutPt;
52 friend class DiTauSelectionCutAbsEta;
53 friend class DiTauSelectionCutNSubjets;
54 friend class DiTauSelectionCutAbsCharge;
55 friend class DiTauSelectionCutOmniScore;
56 friend class DiTauSelectionCutOmniIDWP;
57
60 IAsgSelectionTool,
61 IDiTauSelectionTool )
62
63public:
65 DiTauSelectionTool( const std::string& name );
66
67 virtual ~DiTauSelectionTool();
68
71
73 virtual const asg::AcceptInfo&
getAcceptInfo()
const override;
74
76 virtual asg::AcceptData
accept(
const xAOD::IParticle* p )
const override;
77
80
82 virtual void setOutFile( TFile* fOutFile ) override;
83
85 virtual void writeControlHistograms() override;
86
87private:
88
89
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
104 std::vector<float> m_vPtRegion;
105
106 std::vector<float> m_vAbsEtaRegion;
107
108 std::vector<float> m_vNSubjetsRegion;
109
110 std::vector<int> m_vAbsCharges;
111
112 std::vector<float> m_vOmniScoreRegion;
113
114 std::string m_sOmniIDWP;
115
116 bool m_useOmniScore=false;
117
118 Gaudi::Property<std::string> m_sConfigPath{this, "ConfigPath", ""};
120 Gaudi::Property<float> m_dPtMin{this, "PtMin", NAN};
121 Gaudi::Property<float> m_dAbsEtaMin{this, "AbsEtaMin", NAN};
122 Gaudi::Property<float> m_dAbsEtaMax{this, "AbsEtaMax", NAN};
123 Gaudi::Property<float> m_dNSubjetsMin{this, "NSubjetsMin", NAN};
124 Gaudi::Property<float> m_iAbsCharge{this, "AbsCharge", NAN};
125 Gaudi::Property<float> m_dOmniScoreMin{this, "OmniScoreMin", NAN};
126 Gaudi::Property<float> m_dOmniScoreMax{this, "OmniScoreMax", NAN};
127 Gaudi::Property<int> m_iOmniIDWP{this, "OmniIDWP", 0};
128
129 Gaudi::Property<std::vector<float>> m_vecAbsEtaRegion{this, "AbsEtaRegion",{}};
130 Gaudi::Property<std::vector<int>> m_vecAbsCharges{this, "AbsCharges", {}};
131
132protected:
133 TFile* m_fOutFile;
134 std::shared_ptr<TH1F> m_hCutFlow;
135
136private:
137
138 std::map<TauAnalysisTools::DiTauSelectionCuts, std::unique_ptr<DiTauSelectionCut>> m_cMap;
139
140 void setupCutFlowHistogram();
141 int convertStrToOmniIDWP(const std::string& sOmniIDWP) const;
142
143protected:
144
145 Gaudi::Property<bool> m_bCreateControlPlots{this, "CreateControlPlots", false};
146 SG::ReadDecorHandleKey<xAOD::DiTauJetContainer> m_OmniScoreDecorKey {this, "OmniScoreDecorName", "", "Name of OmniScore decoration"};
147
149 asg::AcceptInfo m_aAccept;
150
151
152};
153
154}
::StatusCode StatusCode
StatusCode definition for legacy code.
DiTauJet_v1 DiTauJet
Definition of the current version.