00001 
00002 #ifndef TAUANALYSISTOOLS_TAUEFFICIENCYCONTJETIDTOOL_H
00003 #define TAUANALYSISTOOLS_TAUEFFICIENCYCONTJETIDTOOL_H
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 #include "TauAnalysisTools/CommonEfficiencyTool.h"
00017 
00018 namespace TauAnalysisTools
00019 {
00020 
00021 class TauEfficiencyContJetIDTool : public CommonEfficiencyTool
00022 {
00023   ASG_TOOL_CLASS( TauEfficiencyContJetIDTool,
00024                   TauAnalysisTools::ITauEfficiencyCorrectionsTool )
00025 
00026 public:
00027 
00028   TauEfficiencyContJetIDTool(std::string sName);
00029 
00030   ~TauEfficiencyContJetIDTool();
00031 
00032   StatusCode initialize();
00033 
00034   CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::TauJet& xTau,
00035       double& dEfficiencyScaleFactor);
00036   CP::CorrectionCode applyEfficiencyScaleFactor(const xAOD::TauJet& xTau);
00037 
00038   bool isAffectedBySystematic( const CP::SystematicVariation& systematic ) const;
00039   CP::SystematicSet affectingSystematics() const;
00040   CP::SystematicSet recommendedSystematics() const;
00041   CP::SystematicCode applySystematicVariation ( const CP::SystematicSet& sSystematicSet);
00042 
00043 
00044 private:
00045   std::string ConvertEtaToString(const float& fEta);
00046 
00047   CP::CorrectionCode getTotalSF(const xAOD::TauJet& xTau,
00048                                 double& dEfficiencyScaleFactor);
00049   CP::CorrectionCode getTotalSFInclusiveEta(const xAOD::TauJet& xTau,
00050       double& dEfficiencyScaleFactor);
00051 
00052   CP::CorrectionCode getBDTbinnedSF(double& val,
00053                                     int prongness,
00054                                     const double& BDT);
00055   CP::CorrectionCode getBDTbinnedSF(double& val,
00056                                     int prongness,
00057                                     const double& eta,
00058                                     const double& BDT);
00059 
00060   CP::CorrectionCode getBDTbinnedSFSysUnc(double& val,
00061                                           int prongness,
00062                                           const double& BDT);
00063   CP::CorrectionCode getBDTbinnedSFSysUnc(double& val,
00064                                           int prongness,
00065                                           const double& eta,
00066                                           const double& BDT);
00067   CP::CorrectionCode getBDTbinnedSFStatUnc(double& val,
00068       int prongness,
00069       const double& BDT);
00070   CP::CorrectionCode getBDTbinnedSFStatUnc(double& val,
00071       int prongness,
00072       const double& eta,
00073       const double& BDT);
00074 
00075   CP::CorrectionCode GetIDValue(double& val,
00076                                 const std::string& sWorkingPoint,
00077                                 const float& fBDT);
00078 
00079   std::string ConvertSystematicToString(int iContSysType);
00080   std::string ConvertDirectionToString(const int iSysDirection);
00081 
00082   
00083   int m_iSysDirection;
00084 
00085 };
00086 } 
00087 
00088 #endif // TAUANALYSISTOOLS_TAUEFFICIENCYCONTJETIDTOOL_H