/ElectroWeakAnalysis/ZMuMu/interface/ZMuTrackFunction.h

https://github.com/aivanov-cern/cmssw · C Header · 49 lines · 47 code · 2 blank · 0 comment · 0 complexity · 4e326252e20e8e6ded5192d2cbd73883 MD5 · raw file

  1. #ifndef ElectroWeakAnalysis_ZMuMu_ZMuTrackFunction_h
  2. #define ElectroWeakAnalysis_ZMuMu_ZMuTrackFunction_h
  3. #include "PhysicsTools/Utilities/interface/ConvGaussZLineShape.h"
  4. #include <boost/shared_ptr.hpp>
  5. namespace function {
  6. class ZMuTrackFunction {
  7. public:
  8. enum{ arguments = 1 };
  9. enum{ parameters = 9 };
  10. ZMuTrackFunction(boost::shared_ptr<double> m, boost::shared_ptr<double> g, boost::shared_ptr<double> Ng, boost::shared_ptr<double> Ni,
  11. boost::shared_ptr<double> me, boost::shared_ptr<double> s,
  12. boost::shared_ptr<double> N, boost::shared_ptr<double> eff_tr, boost::shared_ptr<double> eff_sa):
  13. mass(m), width(g), Ngamma(Ng), Nint(Ni), mean(me), sigma(s),
  14. numberOfEvents(N), efficiencyTrack(eff_tr), efficiencyStandalone(eff_sa),
  15. cgz_(m, g, Ng, Ni, me, s) {}
  16. ZMuTrackFunction(double m, double g, double Ng, double Ni,
  17. double me, double s,
  18. double N, double eff_tr, double eff_sa):
  19. mass(new double(m)), width(new double(g)), Ngamma(new double(Ng)), Nint(new double(Ni)), mean(new double(me)), sigma(new double(s)),
  20. numberOfEvents(new double(N)), efficiencyTrack(new double(eff_tr)), efficiencyStandalone(new double(eff_sa)),
  21. cgz_(m, g, Ng, Ni, me, s) {}
  22. double operator()(double x) const {
  23. double eff_tr_2 = *efficiencyTrack * (*efficiencyTrack);
  24. double eff_sa_minus = *efficiencyStandalone * (1. - *efficiencyStandalone);
  25. return cgz_(x) * 2. * (*numberOfEvents) * eff_tr_2 * eff_sa_minus;
  26. }
  27. void setParameters(double m, double g, double Ng, double Ni,
  28. double me, double s,
  29. double N, double eff_tr, double eff_sa) {
  30. *mass = m;
  31. *width = g;
  32. *Ngamma = Ng;
  33. *Nint = Ni;
  34. *mean = me;
  35. *sigma = s;
  36. *numberOfEvents = N;
  37. *efficiencyTrack = eff_tr;
  38. *efficiencyStandalone = eff_sa;
  39. cgz_.setParameters(m, g, Ng, Ni, me, s);
  40. }
  41. boost::shared_ptr<double> mass, width, Ngamma, Nint, mean, sigma;
  42. boost::shared_ptr<double> numberOfEvents, efficiencyTrack, efficiencyStandalone;
  43. private:
  44. ConvGaussZLineShape cgz_;
  45. };
  46. }
  47. #endif