checkmate is hosted by Hepforge, IPPP Durham
mt2_bisect.h
Go to the documentation of this file.
1 #ifndef MT2_BISECT_H
2 #define MT2_BISECT_H
3 
4 
5 /*The user can change the desired precision below, the larger one of the following two definitions is used. Relative precision less than 0.00001 is not guaranteed to be achievable--use with caution*/
6 
7 #define RELATIVE_PRECISION 0.00001 //defined as precision = RELATIVE_PRECISION * scale, where scale = max{Ea, Eb}
8 #define ABSOLUTE_PRECISION 0.0 //absolute precision for mt2, unused by default
9 
10 
11 //Reserved for expert
12 #define MIN_MASS 0.1 //if ma<MINMASS and mb<MINMASS, use massless code
13 #define ZERO_MASS 0.000 //give massless particles a small mass
14 #define SCANSTEP 0.1
15 namespace mt2_bisect
16 {
17 class mt2
18 {
19  public:
20 
21  mt2();
22  void mt2_bisect();
23  void mt2_massless();
24  void set_momenta(double *pa0, double *pb0, double* pmiss0);
25  void set_mn(double mn);
26  double get_mt2();
27  void print();
28  int nevt;
29  private:
30 
31  bool solved;
32  bool momenta_set;
33  double mt2_b;
34 
35  int nsols(double Dsq);
36  int nsols_massless(double Dsq);
37  inline int signchange_n( long double t1, long double t2, long double t3, long double t4, long double t5);
38  inline int signchange_p( long double t1, long double t2, long double t3, long double t4, long double t5);
39  int scan_high(double &Deltasq_high);
40  int find_high(double &Deltasq_high);
41  //data members
42  double pax, pay, ma, Ea;
43  double pmissx, pmissy;
44  double pbx, pby, mb, Eb;
45  double mn, mn_unscale;
46 
47  //auxiliary definitions
48  double masq, Easq;
49  double mbsq, Ebsq;
50  double pmissxsq, pmissysq;
51  double mnsq;
52 
53  //auxiliary coefficients
54  double a1, b1, c1, a2, b2, c2, d1, e1, f1, d2, e2, f2;
55  double d11, e11, f12, f10, d21, d20, e21, e20, f22, f21, f20;
56 
57  double scale;
58  double precision;
59 };
60 
61 }//end namespace mt2_bisect
62 
63 #endif
void set_momenta(double *pa0, double *pb0, double *pmiss0)
Definition: mt2_bisect.cc:61
void mt2_massless()
Definition: mt2_bisect.cc:146
double get_mt2()
Definition: mt2_bisect.cc:49
void set_mn(double mn)
Definition: mt2_bisect.cc:129