00001 #ifndef ElectroWeakAnalysis_ZMuMu_ZMuTrackScaledNormalBack_h 00002 #define ElectroWeakAnalysis_ZMuMu_ZMuTrackScaledNormalBack_h 00003 #include "ElectroWeakAnalysis/ZMuMu/interface/ZMuTrackScaledFunction.h" 00004 #include "ElectroWeakAnalysis/ZMuMu/interface/ZMuMuNormalBack.h" 00005 #include <boost/shared_ptr.hpp> 00006 00007 namespace function { 00008 class ZMuTrackScaledNormalBack { 00009 public: 00010 enum{ arguments = 1}; 00011 enum{ parameters = 13}; 00012 ZMuTrackScaledNormalBack(boost::shared_ptr<double> m, boost::shared_ptr<double> g, boost::shared_ptr<double> Ng, boost::shared_ptr<double> Ni, 00013 boost::shared_ptr<double> me, boost::shared_ptr<double> s, 00014 boost::shared_ptr<double> N, boost::shared_ptr<double> eff_tr, boost::shared_ptr<double> eff_sa, 00015 boost::shared_ptr<double> Nb, boost::shared_ptr<double> l, boost::shared_ptr<double> a, boost::shared_ptr<double> b, 00016 int bin, int rmin, int rmax): 00017 mass(m), width(g), Ngamma(Ng), Nint(Ni), 00018 mean(me), sigma(s), 00019 numberOfEvents(N), efficiencyTrack(eff_tr), efficiencyStandalone(eff_sa), 00020 Nbkg(Nb), lambda(l), a1(a), a2(b), 00021 binScaleFactor(bin), x_min(rmin), x_max(rmax), 00022 zmts_(m, g, Ng, Ni, me, s, N, eff_tr, eff_sa, bin), zmmnb_(Nb, l, a, b, rmin, rmax) {} 00023 ZMuTrackScaledNormalBack(double m, double g, double Ng, double Ni, 00024 double me, double s, 00025 double N, double eff_tr, double eff_sa, 00026 double Nb, double l, double a, double b, 00027 int bin, int rmin, int rmax): 00028 mass(new double(m)), width(new double(g)), Ngamma(new double(Ng)), Nint(new double(Ni)), 00029 mean(new double(me)), sigma(new double(s)), 00030 numberOfEvents(new double(N)), efficiencyTrack(new double(eff_tr)), efficiencyStandalone(new double(eff_sa)), 00031 Nbkg(new double(Nb)), lambda(new double(l)), a1(new double(a)), a2(new double(b)), 00032 binScaleFactor(bin), x_min(rmin), x_max(rmax), 00033 zmts_(m, g, Ng, Ni, me, s, N, eff_tr, eff_sa, bin), zmmnb_(Nb, l, a, b, rmin, rmax) {} 00034 void setParameters(double m, double g, double Ng, double Ni, 00035 double me, double s, 00036 double N, double eff_tr, double eff_sa, 00037 double Nb, double l, double a, double b) { 00038 zmts_.setParameters(m, g, Ng, Ni, me, s, N, eff_tr, eff_sa); 00039 zmmnb_.setParameters(Nb, l, a, b); 00040 } 00041 double operator()(double x) const { 00042 return zmts_(x) + zmmnb_(x); 00043 } 00044 boost::shared_ptr<double> mass, width, Ngamma, Nint, mean, sigma; 00045 boost::shared_ptr<double> numberOfEvents, efficiencyTrack, efficiencyStandalone; 00046 boost::shared_ptr<double> Nbkg, lambda, a1, a2; 00047 int binScaleFactor, x_min, x_max; 00048 private: 00049 ZMuTrackScaledFunction zmts_; 00050 ZMuMuNormalBack zmmnb_; 00051 }; 00052 } 00053 00054 #endif