00001 #ifndef JETCALIBTOOLS_INSITUDATACORRECTION_H
00002 #define JETCALIBTOOLS_INSITUDATACORRECTION_H 1
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <TROOT.h>
00012 #include <TEnv.h>
00013 #include <TAxis.h>
00014 #include <TH1D.h>
00015 #include <TH2D.h>
00016
00017 #include "JetCalibTools/IJetCalibrationTool.h"
00018 #include "JetCalibTools/JetCalibrationToolBase.h"
00019
00020 class InsituDataCorrection
00021 : virtual public ::IJetCalibrationTool,
00022 virtual public ::JetCalibrationToolBase
00023 {
00024
00025 ASG_TOOL_CLASS( InsituDataCorrection, IJetCalibrationTool )
00026
00027 public:
00028 InsituDataCorrection();
00029 InsituDataCorrection(const std::string& name);
00030 InsituDataCorrection(const std::string& name, TEnv * config, TString jetAlgo, TString calibAreaTag, bool dev);
00031 virtual ~InsituDataCorrection();
00032
00033 virtual StatusCode initializeTool(const std::string& name);
00034
00035 protected:
00036 virtual StatusCode calibrateImpl(xAOD::Jet& jet, JetEventInfo&) const;
00037
00038 private:
00039 double getInsituCorr(double pt, double eta, std::string calibstep) const;
00040 TH2D * combineCalibration(TH2D *h2d, TH1D *h);
00041
00042 private:
00043 TEnv * m_config;
00044 TString m_jetAlgo, m_calibAreaTag;
00045 bool m_dev;
00046
00047 TH2D * m_insituCorr;
00048 double m_insituEtaMax, m_insituPtMin, m_insituPtMax;
00049
00050 TH2D * m_insituCorr_ResidualMCbased;
00051 double m_insituEtaMax_ResidualMCbased, m_insituPtMin_ResidualMCbased, m_insituPtMax_ResidualMCbased;
00052
00053 bool m_applyRelativeandAbsoluteInsitu;
00054 bool m_applyEtaRestrictionRelativeandAbsolute;
00055
00056 bool m_applyResidualMCbasedInsitu;
00057 bool m_applyEtaRestrictionResidualMCbased;
00058
00059 };
00060
00061 #endif