checkmate is hosted by Hepforge, IPPP Durham
mt2bl_bisect.h
Go to the documentation of this file.
1 #ifndef mt2bl_BISECT_H
2 #define mt2bl_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 mt2bl, unused by default
9 
10 namespace mt2bl_bisect
11 {
12 class mt2bl
13 {
14  public:
15 
16  mt2bl();
17  void mt2bl_bisect();
18  void mt2bl_massless();
19  void set_momenta(double *pl0, double *pb10, double *pb20, double* pmiss0); //b1 pairs with l
20  void set_momenta(double El, double plx, double ply, double plz,
21  double Eb1, double pb1x, double pb1y, double pb1z,
22  double Eb2, double pb2x, double pb2y, double pb2z,
23  double pmissx, double pmissy); // Same as above without pointers/arrays
24 // void set_mn(double mn);
25  double get_mt2bl();
26 // void print();
27 // int nevt;
28  private:
29 
30  bool solved;
31  bool momenta_set;
32  double scan_step;
33  double mt2bl_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 mn1, mn2;
46 
47 
48  //auxiliary definitions
49  double masq, Easq;
50  double mbsq, Ebsq;
51  double pmissxsq, pmissysq;
52  double mn1sq, mn2sq;
53 
54  //auxiliary coefficients
55  double a1, b1, c1, a2, b2, c2, d1, e1, f1, d2, e2, f2;
56  double d11, e11, f12, f10, d21, d20, e21, e20, f22, f21, f20;
57 
58 // double scale;
59  double precision;
60 };
61 
62 }//end namespace mt2bl_bisect
63 
64 #endif
void set_momenta(double *pl0, double *pb10, double *pb20, double *pmiss0)
Definition: mt2bl_bisect.cc:78