File indexing completed on 2024-04-06 12:23:25
0001 #ifndef PhysicsTools_Heppy_Davismt2_h
0002 #define PhysicsTools_Heppy_Davismt2_h
0003
0004 #include <iostream>
0005 #include <cmath>
0006 #include "TObject.h"
0007
0008
0009
0010 namespace heppy {
0011
0012 class Davismt2 {
0013
0014 public:
0015 static const float RELATIVE_PRECISION;
0016 static const float ABSOLUTE_PRECISION;
0017 static const float MIN_MASS;
0018 static const float ZERO_MASS;
0019 static const float SCANSTEP;
0020
0021 Davismt2();
0022 virtual ~Davismt2();
0023 void mt2_bisect();
0024 void mt2_massless();
0025 void set_momenta(double *pa0, double *pb0, double *pmiss0);
0026 void set_mn(double mn);
0027 inline void set_verbose(int vlevel) { verbose = vlevel; };
0028 double get_mt2();
0029 void print();
0030 int nevt;
0031
0032 private:
0033 int verbose;
0034 bool solved;
0035 bool momenta_set;
0036 double mt2_b;
0037
0038 int nsols(double Dsq);
0039 int nsols_massless(double Dsq);
0040
0041 int signchange_n(long double t1, long double t2, long double t3, long double t4, long double t5);
0042
0043 int signchange_p(long double t1, long double t2, long double t3, long double t4, long double t5);
0044 int scan_high(double &Deltasq_high);
0045 int find_high(double &Deltasq_high);
0046
0047 double pax, pay, ma, Ea;
0048 double pmissx, pmissy;
0049 double pbx, pby, mb, Eb;
0050 double mn, mn_unscale;
0051
0052
0053 double masq, Easq;
0054 double mbsq, Ebsq;
0055 double pmissxsq, pmissysq;
0056 double mnsq;
0057
0058
0059 double a1, b1, c1, a2, b2, c2, d1, e1, f1, d2, e2, f2;
0060 double d11, e11, f12, f10, d21, d20, e21, e20, f22, f21, f20;
0061
0062 double scale;
0063 double precision;
0064
0065 };
0066 }
0067
0068 #endif