00001
00002
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ANALYSISCALIBRATIONDATAINTERFACEBASE_H
00013 #define ANALYSISCALIBRATIONDATAINTERFACEBASE_H
00014
00015
00016 #include "TNamed.h"
00017 #include <vector>
00018 #include <string>
00019 #include <map>
00020 #include <utility>
00021 #include <algorithm>
00022
00023 class TF1;
00024
00025 namespace Analysis
00026 {
00027
00028 const double CalibZERO = 1.e-6;
00029 const double dummyValue = -1.;
00030 typedef std::pair<double,double> CalibResult;
00031
00032 const CalibResult dummyResult(dummyValue,dummyValue);
00033
00034
00043 class CalibrationDataInterfaceBase : public TNamed {
00044 public:
00045 CalibrationDataInterfaceBase();
00046
00048 virtual ~CalibrationDataInterfaceBase() = 0;
00049
00056 const std::string& EffCalibrationName(const std::string& flavour, unsigned int mapIndex = 0) const;
00057 void setEffCalibrationNames(const std::map<std::string, std::vector<std::string> >& names);
00058
00059 const std::string& SFCalibrationName(const std::string& flavour) const;
00060 void setSFCalibrationNames(const std::map<std::string, std::string>& names);
00061
00063 enum variableType { kEta, kAbsEta, kPt };
00064
00065 private:
00066
00069 mutable std::map<std::string, std::vector<std::string> > m_calibrationEffNames;
00070 mutable std::map<std::string, std::string> m_calibrationSFNames;
00071
00072 protected:
00073
00074
00075
00076
00077
00079 std::string getContainername (const std::string& flavour,
00080 bool SF, unsigned int mapIndex = 0) const;
00081
00083 std::string getBasename (const std::string& name) const;
00084
00088 double combinedUncertainty (double stat, const std::pair<double, double>& syst) const;
00089
00091 std::string m_taggerName;
00092
00093
00094 ClassDef(CalibrationDataInterfaceBase,1)
00095 };
00096 }
00097
00098 #endif