00001
00002 #ifndef ISOLATIONSELECTION_ISOLATIONCONDITIONHIST_H
00003 #define ISOLATIONSELECTION_ISOLATIONCONDITIONHIST_H
00004
00005 #include <memory>
00006 #include <vector>
00007 #include <map>
00008
00009
00010
00011 #include "IsolationCondition.h"
00012
00013
00014 class TF1;
00015 class TH3F;
00016
00017 class Interp3D;
00018
00019 namespace CP
00020 {
00021 class IsolationConditionHist: public IsolationCondition{
00022 public:
00023 IsolationConditionHist(std::string name, xAOD::Iso::IsolationType isoType, const std::string& isolationFunction, const std::shared_ptr<TH3F> efficiencyHisto3D);
00024 virtual ~IsolationConditionHist(){}
00025
00026
00027 IsolationConditionHist(const IsolationConditionHist& rhs) = delete;
00028 IsolationConditionHist& operator=(const IsolationConditionHist& rhs) = delete;
00029 void setCut(xAOD::Iso::IsolationType isoType, const std::string& isolationFunction, const std::shared_ptr<TH3F> efficiencyHisto3D=nullptr);
00030
00031 std::string name(){return m_name;}
00032 bool accept(const xAOD::IParticle& x, std::map< xAOD::Iso::IsolationType, float >* cutValues=0);
00033 bool accept(const strObj& x, std::map< xAOD::Iso::IsolationType, float >* cutValues=0);
00034 void getCutValue(const float pt, const float eta);
00035
00036 void setInterp(Interp3D* interp) { m_interp = interp; };
00037
00038 private:
00039 std::shared_ptr<TH3F> m_efficiencyHisto3D;
00040 std::shared_ptr<TF1> m_isolationFunction;
00041 bool m_ptGeV;
00042
00043 Interp3D* m_interp;
00044 };
00045 }
00046 #endif