ATLAS Offline Software
CommonEfficiencyTool.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_COMMONEFFICIENCYTOOL_H
6 #define TAUANALYSISTOOLS_COMMONEFFICIENCYTOOL_H
7 
8 /*
9  author: Dirk Duschinger
10  mail: dirk.duschinger@cern.ch
11 */
12 
13 // Framework include(s):
14 #include "AsgTools/AsgTool.h"
16 
17 // EDM include(s):
18 #include "xAODTau/TauJet.h"
21 
22 // Local include(s):
23 #include "TauAnalysisTools/Enums.h"
26 
27 // ROOT include(s):
28 #include "TFile.h"
29 #include "TKey.h"
30 
31 namespace TauAnalysisTools
32 {
33 
34 // forward declaration
35 class TauEfficiencyCorrectionsTool;
36 
38  : public virtual ITauEfficiencyCorrectionsTool
39  , public asg::AsgTool
40 {
43 
44 public:
45 
46  CommonEfficiencyTool(const std::string& sName);
47 
49 
50  virtual StatusCode initialize();
51 
52  // CommonEfficiencyTool pure virtual public functionality
53  //__________________________________________________________________________
54 
55  virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::TauJet& tau, double& dEfficiencyScaleFactor,
56  unsigned int iRunNumber = 0 );
57 
59  unsigned int iRunNumber = 0 );
60 
62  virtual bool isAffectedBySystematic( const CP::SystematicVariation& systematic ) const;
63 
66 
69 
72  virtual StatusCode applySystematicVariation ( const CP::SystematicSet& sSystematicSet);
73 
74  virtual bool isSupportedRunNumber( int /*iRunNumber*/ ) const
75  {
76  return true;
77  };
78 
79 protected:
80 
81  std::string ConvertProngToString(const int iProngness) const;
82  std::string ConvertDecayModeToString(const int iDecayMode) const;
83 
84  typedef std::tuple<TObject*,
85  CP::CorrectionCode (*)(const TObject* oObject,
86  double& dEfficiencyScaleFactor,
87  double dVars[] ) > tTupleObjectFunc;
88  typedef std::map<std::string, tTupleObjectFunc > tSFMAP;
89  // In gcc10 builds, cling gets confused by the type of m_mSF and produces
90  // an ugly warning message. Hide this from cling to suppress that
91  // (substitute another unique_ptr so that the class layout remains the same).
92 #ifdef __CLING__
93  std::unique_ptr<int> m_dummy;
94 #else
95  std::unique_ptr< tSFMAP > m_mSF;
96 #endif
97 
98  std::unordered_map < CP::SystematicSet, std::string > m_mSystematicSets;
100  std::map<std::string, int> m_mSystematics;
101  std::map<std::string, std::string> m_mSystematicsHistNames;
102 
103  std::function<double(const xAOD::TauJet& xTau)> m_fX;
104  std::function<double(const xAOD::TauJet& xTau)> m_fY;
105 
106  void ReadInputs(const TFile& fFile);
107  void addHistogramToSFMap(TKey* kKey, const std::string& sKeyName);
108 
109  virtual CP::CorrectionCode getValue(const std::string& sHistName,
110  const xAOD::TauJet& xTau,
111  double& dEfficiencyScaleFactor) const;
112 
113  static CP::CorrectionCode getValueTH1(const TObject* oObject,
114  double& dEfficiencyScaleFactor,
115  double dVars[]
116  );
117  static CP::CorrectionCode getValueTH2(const TObject* oObject,
118  double& dEfficiencyScaleFactor,
119  double dVars[]
120  );
121  static CP::CorrectionCode getValueTF1(const TObject* oObject,
122  double& dEfficiencyScaleFactor,
123  double dVars[]
124  );
125 
126  void generateSystematicSets();
127 
128 protected:
129 
132 
133  Gaudi::Property<std::string> m_sInputFilePath{this, "InputFilePath", ""};
134  Gaudi::Property<std::string> m_sVarName{this, "VarName", ""};
135  Gaudi::Property<std::string> m_sWP{this, "WP", ""};
136  Gaudi::Property<bool> m_bSkipTruthMatchCheck{this, "SkipTruthMatchCheck", false};
137  Gaudi::Property<int> m_iJetIDLevel{this, "JetIDLevel", static_cast<int>(JETIDNONE)};
138  Gaudi::Property<int> m_iEleIDLevel{this, "EleIDLevel", static_cast<int>(ELEIDNONE)};
139  Gaudi::Property<bool> m_bUseTauSubstructure{this, "UseTauSubstructure", false};
140  Gaudi::Property<bool> m_doTauTrig{this, "DoTauTrig", false};
141 
142  std::string m_sInputFileName;
143  std::string m_sSFHistName;
145 
147 
150 };
151 } // namespace TauAnalysisTools
152 
153 #endif // TAUANALYSISTOOLS_COMMONEFFICIENCYTOOL_H
TauAnalysisTools::CommonEfficiencyTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::TauJet &tau, double &dEfficiencyScaleFactor, unsigned int iRunNumber=0)
Declare the interface that the class provides.
Definition: CommonEfficiencyTool.cxx:144
TauAnalysisTools
Definition: TruthCollectionMakerTau.h:16
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
TauAnalysisTools::CommonEfficiencyTool::m_eCheckTruth
TruthMatchedParticleType m_eCheckTruth
Definition: CommonEfficiencyTool.h:146
TauAnalysisTools::CommonEfficiencyTool::ReadInputs
void ReadInputs(const TFile &fFile)
Definition: CommonEfficiencyTool.cxx:429
Enums.h
TauAnalysisTools::CommonEfficiencyTool::m_sInputFilePath
Gaudi::Property< std::string > m_sInputFilePath
Definition: CommonEfficiencyTool.h:133
TauAnalysisTools::CommonEfficiencyTool::m_mSystematics
std::map< std::string, int > m_mSystematics
Definition: CommonEfficiencyTool.h:100
TauAnalysisTools::CommonEfficiencyTool::m_sSystematicSet
const CP::SystematicSet * m_sSystematicSet
Definition: CommonEfficiencyTool.h:99
TauAnalysisTools::CommonEfficiencyTool::applyEfficiencyScaleFactor
virtual CP::CorrectionCode applyEfficiencyScaleFactor(const xAOD::TauJet &xTau, unsigned int iRunNumber=0)
Decorate the tau with its efficiency.
Definition: CommonEfficiencyTool.cxx:273
TauAnalysisTools::CommonEfficiencyTool::ConvertProngToString
std::string ConvertProngToString(const int iProngness) const
Definition: CommonEfficiencyTool.cxx:391
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
TauAnalysisTools::CommonEfficiencyTool::tSFMAP
std::map< std::string, tTupleObjectFunc > tSFMAP
Definition: CommonEfficiencyTool.h:88
TauAnalysisTools::CommonEfficiencyTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &sSystematicSet)
configure this tool for the given list of systematic variations.
Definition: CommonEfficiencyTool.cxx:340
CP::SystematicVariation
Definition: SystematicVariation.h:47
TauAnalysisTools::CommonEfficiencyTool::m_iJetIDLevel
Gaudi::Property< int > m_iJetIDLevel
Definition: CommonEfficiencyTool.h:137
TauAnalysisTools::JETIDNONE
@ JETIDNONE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:14
TauAnalysisTools::CommonEfficiencyTool::tTupleObjectFunc
std::tuple< TObject *, CP::CorrectionCode(*)(const TObject *oObject, double &dEfficiencyScaleFactor, double dVars[]) > tTupleObjectFunc
Definition: CommonEfficiencyTool.h:87
ITauEfficiencyCorrectionsTool.h
TauAnalysisTools::CommonEfficiencyTool::isSupportedRunNumber
virtual bool isSupportedRunNumber(int) const
check if run number is supported in recommendations
Definition: CommonEfficiencyTool.h:74
TauAnalysisTools::CommonEfficiencyTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const CP::SystematicVariation &systematic) const
returns: whether this tool is affected by the given systematics
Definition: CommonEfficiencyTool.cxx:304
TauAnalysisTools::CommonEfficiencyTool::~CommonEfficiencyTool
~CommonEfficiencyTool()
Definition: CommonEfficiencyTool.cxx:88
TauAnalysisTools::CommonEfficiencyTool::m_mSystematicSets
std::unordered_map< CP::SystematicSet, std::string > m_mSystematicSets
Definition: CommonEfficiencyTool.h:98
TauAnalysisTools::CommonEfficiencyTool::getValue
virtual CP::CorrectionCode getValue(const std::string &sHistName, const xAOD::TauJet &xTau, double &dEfficiencyScaleFactor) const
Definition: CommonEfficiencyTool.cxx:645
TauAnalysisTools::ELEIDNONE
@ ELEIDNONE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:32
TauAnalysisTools::CommonEfficiencyTool::recommendedSystematics
virtual CP::SystematicSet recommendedSystematics() const
returns: the list of all systematics this tool recommends to use
Definition: CommonEfficiencyTool.cxx:324
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TauAnalysisTools::CommonEfficiencyTool::m_mSF
std::unique_ptr< tSFMAP > m_mSF
Definition: CommonEfficiencyTool.h:95
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
TauAnalysisTools::CommonEfficiencyTool
Definition: CommonEfficiencyTool.h:40
TauAnalysisTools::CommonEfficiencyTool::m_sVarName
Gaudi::Property< std::string > m_sVarName
Definition: CommonEfficiencyTool.h:134
TauAnalysisTools::CommonEfficiencyTool::m_fX
std::function< double(const xAOD::TauJet &xTau)> m_fX
Definition: CommonEfficiencyTool.h:103
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
TauAnalysisTools::CommonEfficiencyTool::m_bSFIsAvailable
bool m_bSFIsAvailable
Definition: CommonEfficiencyTool.h:148
TauAnalysisTools::CommonEfficiencyTool::getValueTH2
static CP::CorrectionCode getValueTH2(const TObject *oObject, double &dEfficiencyScaleFactor, double dVars[])
Definition: CommonEfficiencyTool.cxx:710
TauAnalysisTools::CommonEfficiencyTool::m_sSFHistName
std::string m_sSFHistName
Definition: CommonEfficiencyTool.h:143
TauAnalysisTools::CommonEfficiencyTool::generateSystematicSets
void generateSystematicSets()
Definition: CommonEfficiencyTool.cxx:585
TauAnalysisTools::CommonEfficiencyTool::m_sAffectingSystematics
CP::SystematicSet m_sAffectingSystematics
Definition: CommonEfficiencyTool.h:130
TauAnalysisTools::TruthMatchedParticleType
TruthMatchedParticleType
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:97
TauAnalysisTools::CommonEfficiencyTool::m_fY
std::function< double(const xAOD::TauJet &xTau)> m_fY
Definition: CommonEfficiencyTool.h:104
TauAnalysisTools::CommonEfficiencyTool::m_iEleIDLevel
Gaudi::Property< int > m_iEleIDLevel
Definition: CommonEfficiencyTool.h:138
TauAnalysisTools::CommonEfficiencyTool::initialize
virtual StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: CommonEfficiencyTool.cxx:102
TauAnalysisTools::CommonEfficiencyTool::addHistogramToSFMap
void addHistogramToSFMap(TKey *kKey, const std::string &sKeyName)
Definition: CommonEfficiencyTool.cxx:540
TauAnalysisTools::CommonEfficiencyTool::m_sWP
Gaudi::Property< std::string > m_sWP
Definition: CommonEfficiencyTool.h:135
TauAnalysisTools::CommonEfficiencyTool::m_bSFIsAvailableChecked
bool m_bSFIsAvailableChecked
Definition: CommonEfficiencyTool.h:149
TauAnalysisTools::CommonEfficiencyTool::CommonEfficiencyTool
CommonEfficiencyTool(const std::string &sName)
Create a proper constructor for Athena.
Definition: CommonEfficiencyTool.cxx:71
TauAnalysisTools::CommonEfficiencyTool::m_bUseTauSubstructure
Gaudi::Property< bool > m_bUseTauSubstructure
Definition: CommonEfficiencyTool.h:139
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
TauJet.h
TauAnalysisTools::CommonEfficiencyTool::ConvertDecayModeToString
std::string ConvertDecayModeToString(const int iDecayMode) const
Definition: CommonEfficiencyTool.cxx:400
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
TauAnalysisTools::CommonEfficiencyTool::m_doTauTrig
Gaudi::Property< bool > m_doTauTrig
Definition: CommonEfficiencyTool.h:140
CorrectionCode.h
TauAnalysisTools::CommonEfficiencyTool::m_bNoMultiprong
bool m_bNoMultiprong
Definition: CommonEfficiencyTool.h:144
AsgTool.h
TruthParticle.h
TauAnalysisTools::CommonEfficiencyTool::m_sInputFileName
std::string m_sInputFileName
Definition: CommonEfficiencyTool.h:142
TauAnalysisTools::CommonEfficiencyTool::affectingSystematics
virtual CP::SystematicSet affectingSystematics() const
returns: the list of all systematics this tool can be affected by
Definition: CommonEfficiencyTool.cxx:315
TauAnalysisTools::ITauEfficiencyCorrectionsTool
Definition: ITauEfficiencyCorrectionsTool.h:31
TauAnalysisTools::CommonEfficiencyTool::m_mSystematicsHistNames
std::map< std::string, std::string > m_mSystematicsHistNames
Definition: CommonEfficiencyTool.h:101
HelperFunctions.h
TauAnalysisTools::CommonEfficiencyTool::getValueTH1
static CP::CorrectionCode getValueTH1(const TObject *oObject, double &dEfficiencyScaleFactor, double dVars[])
Definition: CommonEfficiencyTool.cxx:680
TauAnalysisTools::CommonEfficiencyTool::getValueTF1
static CP::CorrectionCode getValueTF1(const TObject *oObject, double &dEfficiencyScaleFactor, double dVars[])
Definition: CommonEfficiencyTool.cxx:742
TauAnalysisTools::CommonEfficiencyTool::m_sRecommendedSystematics
CP::SystematicSet m_sRecommendedSystematics
Definition: CommonEfficiencyTool.h:131
TauAnalysisTools::CommonEfficiencyTool::m_bSkipTruthMatchCheck
Gaudi::Property< bool > m_bSkipTruthMatchCheck
Definition: CommonEfficiencyTool.h:136