5#ifndef TAUANALYSISTOOLS_DITAUSELECTIONTOOL_H
6#define TAUANALYSISTOOLS_DITAUSELECTIONTOOL_H
32namespace ADD_CMODE(TauAnalysisTools)
36class DiTauSelectionCut;
37class DiTauSelectionCutPt;
38class DiTauSelectionCutAbsEta;
39class DiTauSelectionCutNSubjets;
40class DiTauSelectionCutAbsCharge;
41class DiTauSelectionCutOmniScore;
42class DiTauSelectionCutOmniIDWP;
45 public virtual IDiTauSelectionTool,
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;
65 DiTauSelectionTool(
const std::string& name );
67 virtual ~DiTauSelectionTool();
82 virtual void setOutFile( TFile* fOutFile )
override;
85 virtual void writeControlHistograms()
override;
90 virtual StatusCode beginEvent()
override;
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;
97 void PrintConfigRegion(
const std::string& sCutName, std::vector<T>& vRegion)
const;
99 void PrintConfigValue(
const std::string& sCutName, std::vector<T>& vRegion)
const;
101 void PrintConfigValue(
const std::string& sCutName, T& sVal)
const;
104 std::vector<float> m_vPtRegion;
106 std::vector<float> m_vAbsEtaRegion;
108 std::vector<float> m_vNSubjetsRegion;
110 std::vector<int> m_vAbsCharges;
112 std::vector<float> m_vOmniScoreRegion;
114 std::string m_sOmniIDWP;
116 bool m_useOmniScore=
false;
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};
129 Gaudi::Property<std::vector<float>> m_vecAbsEtaRegion{
this,
"AbsEtaRegion",{}};
130 Gaudi::Property<std::vector<int>> m_vecAbsCharges{
this,
"AbsCharges", {}};
134 std::shared_ptr<TH1F> m_hCutFlow;
138 std::map<TauAnalysisTools::DiTauSelectionCuts, std::unique_ptr<DiTauSelectionCut>> m_cMap;
140 void setupCutFlowHistogram();
141 int convertStrToOmniIDWP(
const std::string& sOmniIDWP)
const;
145 Gaudi::Property<bool> m_bCreateControlPlots{
this,
"CreateControlPlots",
false};
Class providing the definition of the 4-vector interface.