gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
mt2w_bisect.h
Go to the documentation of this file.
1 /***********************************************************************/
2 /* */
3 /* Finding MT2W */
4 /* Reference: arXiv:1203.4813 [hep-ph] */
5 /* Authors: Yang Bai, Hsin-Chia Cheng, */
6 /* Jason Gallicchio, Jiayin Gu */
7 /* Based on MT2 by: Hsin-Chia Cheng, Zhenyu Han */
8 /* May 8, 2012, v1.00a */
9 /* */
10 /***********************************************************************/
11 
12 #ifndef MT2W_BISECT_H
13 #define MT2W_BISECT_H
14 
15 
16 /*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*/
17 
18 #define RELATIVE_PRECISION 0.00001 //defined as precision = RELATIVE_PRECISION * scale, where scale = max{Ea, Eb}
19 #define ABSOLUTE_PRECISION 0.0 //absolute precision for mt2w, unused by default
20 
21 
22 //Reserved for expert
23 #define MIN_MASS 0.1 //if ma<MINMASS and mb<MINMASS, use massless code
24 #define ZERO_MASS 0.000 //give massless particles a small mass
25 #define SCANSTEP 0.1
26 namespace mt2w_bisect
27 {
28 class mt2w
29 {
30  public:
31 
32  mt2w(double upper_bound=500.0, double error_value=499.0, double scan_step=0.5);
33  // Constructor where:
34  // upper_bound: the upper bound of search for MT2W, default value is 500 GeV
35  // error_value: if we couldn't find any compatible region below upper_bound, this value gets returned.
36  // -1.0 is a reasonable to indicate error, but upper_bound-1.0 allows a simple greater-than cut for signal
37  // scan_step: if we need to scan to find the compatible region, this is the step of the scan
38  void set_momenta(double *pl0, double *pb10, double *pb20, double* pmiss0); //b1 pairs with l
39  void set_momenta(double El, double plx, double ply, double plz,
40  double Eb1, double pb1x, double pb1y, double pb1z,
41  double Eb2, double pb2x, double pb2y, double pb2z,
42  double pmissx, double pmissy); // Same as above without pointers/arrays
43  // Where the input 4-vector information represents:
44  // l is the visible lepton
45  // b1 is the bottom on the same side as the visible lepton
46  // b2 is the other bottom (paired with the invisible W)
47  // pmiss is missing momentum with only x and y components.
48  double get_mt2w(); // Calculates result, which is cached until set_momenta is called.
49  void print();
50 
51  protected:
52  void mt2w_bisect(); // The real work is done here.
53 
54  private:
55 
56  bool solved;
58  double upper_bound;
59  double error_value;
60  double scan_step;
61  double mt2w_b;
62 
63  int teco(double mtop); // test the compatibility of a given trial top mass mtop
64  inline int signchange_n( long double t1, long double t2, long double t3, long double t4, long double t5);
65  inline int signchange_p( long double t1, long double t2, long double t3, long double t4, long double t5);
66 
67  //data members
68  double plx, ply, plz, ml, El; // l is the visible lepton
69  double pb1x, pb1y, pb1z, mb1, Eb1; // b1 is the bottom on the same side as the visible lepton
70  double pb2x, pb2y, pb2z, mb2, Eb2; // b2 is the other bottom
71  double pmissx, pmissy; // x and y component of missing p_T
72  double mv,mw; //mass of neutrino and W-boson
73 
74  //auxiliary definitions
75  double mlsq, Elsq;
76  double mb1sq, Eb1sq;
77  double mb2sq, Eb2sq;
78 
79  //auxiliary coefficients
80  double a1, b1, c1, a2, b2, c2, d1, e1, f1, d2, e2, f2;
81  double d2o, e2o, f2o;
82 
83  double precision;
84 };
85 
86 }//end namespace mt2w_bisect
87 
88 #endif
int signchange_n(long double t1, long double t2, long double t3, long double t4, long double t5)
int teco(double mtop)
int signchange_p(long double t1, long double t2, long double t3, long double t4, long double t5)
void set_momenta(double *pl0, double *pb10, double *pb20, double *pmiss0)
Definition: mt2w_bisect.cpp:67
mt2w(double upper_bound=500.0, double error_value=499.0, double scan_step=0.5)
Definition: mt2w_bisect.cpp:44