5#ifndef ELECTRONCHARGECORRECTION__ELECTRONCHARGECORRECTIONTOOL__H
6#define ELECTRONCHARGECORRECTION__ELECTRONCHARGECORRECTIONTOOL__H
25namespace ADD_CMODE(CP) {
27class ElectronChargeEfficiencyCorrectionTool
final
28 :
virtual public IAsgElectronEfficiencyCorrectionTool
32 IAsgElectronEfficiencyCorrectionTool)
36 ElectronChargeEfficiencyCorrectionTool(
const std::string& name);
39 virtual ~ElectronChargeEfficiencyCorrectionTool();
47 virtual CP::CorrectionCode getEfficiencyScaleFactor(
48 const xAOD::Electron& inputObject,
49 double& sf) const override final;
52 virtual CP::CorrectionCode applyEfficiencyScaleFactor(
53 const xAOD::Electron& inputObject) const override final;
56 virtual
bool isAffectedBySystematic(
57 const CP::SystematicVariation& systematic) const override final;
60 virtual CP::SystematicSet affectingSystematics() const override final;
63 virtual CP::SystematicSet recommendedSystematics() const override final;
65 virtual StatusCode applySystematicVariation(const CP::SystematicSet& systConfig) override final;
69 virtual const CP::SystematicSet& appliedSystematics() const override final
71 return *m_appliedSystematics;
74 virtual int systUncorrVariationIndex(
const xAOD::Electron&)
const override final
77 "systUncorrVariationIndex is not implemented in "
78 "ElectronChargeEfficiencyCorrectionTool");
82 virtual CP::CorrectionCode getEfficiencyScaleFactor(
83 const double,
const double,
const unsigned int,
84 double&)
const override final{
86 "No toysimplemented in "
87 "ElectronChargeEfficiencyCorrectionTool");
91 virtual int getNumberOfToys() const override final
94 "No toysimplemented in "
95 "ElectronChargeEfficiencyCorrectionTool");
99 virtual void printCorrelationModels() const override final
102 "ONLY A DEFAULT Correlation model available for now");
109 float getChargeFlipRate(
double eta,
112 double& flipRate)
const;
115 int m_dataTypeOverwrite;
119 std::string m_eventInfoCollectionName;
122 std::map<std::string, std::vector<TH2*>>
126 std::map<std::string, std::vector<TH2*>>
132 std::vector<unsigned int> m_RunNumbers;
133 bool m_useRandomRunNumber;
134 unsigned int m_defaultRandomRunNumber;
137 std::string m_filename;
140 std::string m_workingPoint;
144 double m_eta_lowlimit;
148 double m_eta_uplimit;
152 double m_pt_lowlimit;
162 std::vector<std::string> m_systematics;
164 std::map<CP::SystematicSet, CP::SystematicSet> m_filtered_sys_sets;
166 CP::SystematicSet m_mySysConf;
167 CP::SystematicSet m_affectingSys;
170 CP::SystematicSet* m_appliedSystematics;
173 std::string m_sf_decoration_name;