00001 #ifndef TAUREC_TAUWPDECORATOR_H
00002 #define TAUREC_TAUWPDECORATOR_H
00003
00004 #include "tauRecTools/TauRecToolBase.h"
00005 #include "xAODTau/TauDefs.h"
00006 #include "xAODTau/TauJet.h"
00007 #include <map>
00008
00009 class TH2;
00010
00024 class TauWPDecorator : public TauRecToolBase {
00025 public:
00026
00027 TauWPDecorator(const std::string& name="TauWPDecorator") ;
00028 ASG_TOOL_CLASS2(TauWPDecorator, TauRecToolBase, ITauToolBase)
00029 ~TauWPDecorator();
00030
00031 virtual StatusCode initialize();
00032 virtual StatusCode finalize();
00033 virtual StatusCode execute(xAOD::TauJet& pTau);
00034
00035 virtual StatusCode retrieveHistos(int nProng);
00036 virtual StatusCode storeLimits(int nProng);
00037 virtual double transformScore(double score, double cut_lo, double eff_lo, double cut_hi, double eff_hi);
00038
00039 virtual void print() const { }
00040 virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
00041 virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
00042 virtual void cleanup(xAOD::TauJet* ) { }
00043
00044
00045 private:
00046 std::string m_file1P;
00047 std::string m_file3P;
00048
00049 typedef std::pair<double, TH2* > m_pair_t;
00050
00051 std::vector<m_pair_t> m_hists1P;
00052 std::vector<m_pair_t> m_hists3P;
00053
00054
00055 std::map<int, double> m_xmin;
00056 std::map<int, double> m_ymin;
00057 std::map<int, double> m_xmax;
00058 std::map<int, double> m_ymax;
00059
00060
00061 double m_effVeryLoose1P;
00062 double m_effLoose1P;
00063 double m_effMedium1P;
00064 double m_effTight1P;
00065
00066 double m_effVeryLoose3P;
00067 double m_effLoose3P;
00068 double m_effMedium3P;
00069 double m_effTight3P;
00070
00071 bool m_defineWP;
00072 bool m_electronMode;
00073
00074 SG::AuxElement::ConstAccessor<float>* acc_score;
00075 SG::AuxElement::Accessor<float>* acc_newScore;
00076
00077 };
00078
00079 #endif