00001 #ifndef ElectroWeakAnalysis_ZMuMu_ZMuMuNormalBack_h 00002 #define ElectroWeakAnalysis_ZMuMu_ZMuMuNormalBack_h 00003 #include "ElectroWeakAnalysis/ZMuMu/interface/ZMuMuBack.h" 00004 #include "ElectroWeakAnalysis/ZMuMu/interface/ZMuMuBackNorm.h" 00005 #include <boost/shared_ptr.hpp> 00006 00007 namespace function { 00008 class ZMuMuNormalBack { 00009 public: 00010 enum{ arguments = 1}; 00011 enum{ parameters = 4}; 00012 ZMuMuNormalBack(boost::shared_ptr<double> Nb, boost::shared_ptr<double> l, boost::shared_ptr<double> a, boost::shared_ptr<double> b, 00013 int rmin, int rmax): 00014 Nbkg(Nb), lambda(l), a1(a), a2(b), x_min(rmin), x_max(rmax), 00015 zmb_(Nb, l, a, b), zmbn_(l, a, b) {} 00016 ZMuMuNormalBack(double Nb, double l, double a, double b, 00017 int rmin, int rmax): 00018 Nbkg(new double(Nb)), lambda(new double(l)), a1(new double(a)), a2(new double(b)), x_min(rmin), x_max(rmax), 00019 zmb_(Nb, l, a, b), zmbn_(l, a, b) {} 00020 void setParameters(double Nb, double l, double a, double b) { 00021 zmb_.setParameters(Nb, l, a, b); 00022 zmbn_.setParameters(l, a, b); 00023 } 00024 double operator()(double x) const { 00025 return zmbn_(x_min, x_max) * zmb_(x); 00026 } 00027 boost::shared_ptr<double> Nbkg, lambda, a1, a2; 00028 int x_min, x_max; 00029 private: 00030 ZMuMuBack zmb_; 00031 ZMuMuBackNorm zmbn_; 00032 }; 00033 } 00034 00035 #endif