CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/ElectroWeakAnalysis/ZMuMu/interface/ZMuMuNormalBack.h

Go to the documentation of this file.
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