/ElectroWeakAnalysis/ZMuMu/interface/ZMuMuBack.h

https://github.com/aivanov-cern/cmssw · C Header · 39 lines · 35 code · 4 blank · 0 comment · 0 complexity · ba33d7ce4bcfcbb5961c63249828277b MD5 · raw file

  1. #ifndef ElectroWeakAnalysis_ZMuMu_ZMuMuBack_h
  2. #define ElectroWeakAnalysis_ZMuMu_ZMuMuBack_h
  3. #include "PhysicsTools/Utilities/interface/Exponential.h"
  4. #include "PhysicsTools/Utilities/interface/Polynomial.h"
  5. #include <boost/shared_ptr.hpp>
  6. namespace function{
  7. class ZMuMuBack {
  8. public:
  9. enum{ arguments = 1 };
  10. enum{ parameters = 4 };
  11. ZMuMuBack(boost::shared_ptr<double> Nb, boost::shared_ptr<double> l,
  12. boost::shared_ptr<double> a, boost::shared_ptr<double> b):
  13. Nbkg(Nb), lambda(l), a1(a), a2(b),
  14. expo_(-(*l)), poly_(1., *a, *b) {}
  15. ZMuMuBack(double Nb, double l, double a, double b):
  16. Nbkg(new double(Nb)), lambda(new double(l)), a1(new double(a)), a2(new double(b)),
  17. expo_(-l), poly_(1, a, b) {}
  18. double operator()(double x) const {
  19. return *Nbkg * expo_(x) * poly_(x);
  20. }
  21. void setParameters(double Nb, double l, double a, double b) {
  22. *Nbkg = Nb;
  23. *lambda = l;
  24. *a1 = a;
  25. *a2 = b;
  26. expo_.setParameters(-l);
  27. poly_.setParameters(1., a, b);
  28. }
  29. boost::shared_ptr<double> Nbkg, lambda, a1, a2;
  30. private:
  31. Exponential expo_;
  32. Polynomial<2> poly_;
  33. };
  34. }
  35. #endif