susy_cfa  b611ccad937ea179f86a1f5663960264616c0a20
mt2w_bisect.hpp
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 /*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*/
16 
17 #define RELATIVE_PRECISION 0.00001 //defined as precision = RELATIVE_PRECISION * scale, where scale = max{Ea, Eb}
18 #define ABSOLUTE_PRECISION 0.0 //absolute precision for mt2w, unused by default
19 
20 //Reserved for expert
21 #define MIN_MASS 0.1 //if ma<MINMASS and mb<MINMASS, use massless code
22 #define ZERO_MASS 0.000 //give massless particles a small mass
23 #define SCANSTEP 0.1
24 namespace mt2w_bisect
25 {
26  class mt2w
27  {
28  public:
29 
30  mt2w(double upper_bound=500.0, double error_value=499.0, double scan_step=0.5);
31  // Constructor where:
32  // upper_bound: the upper bound of search for MT2W, default value is 500 GeV
33  // error_value: if we couldn't find any compatible region below upper_bound, this value gets returned.
34  // -1.0 is a reasonable to indicate error, but upper_bound-1.0 allows a simple greater-than cut for signal
35  // scan_step: if we need to scan to find the compatible region, this is the step of the scan
36  void set_momenta(double *pl0, double *pb10, double *pb20, double* pmiss0); //b1 pairs with l
37  void set_momenta(double El, double plx, double ply, double plz,
38  double Eb1, double pb1x, double pb1y, double pb1z,
39  double Eb2, double pb2x, double pb2y, double pb2z,
40  double pmissx, double pmissy); // Same as above without pointers/arrays
41  // Where the input 4-vector information represents:
42  // l is the visible lepton
43  // b1 is the bottom on the same side as the visible lepton
44  // b2 is the other bottom (paired with the invisible W)
45  // pmiss is missing momentum with only x and y components.
46  double get_mt2w(); // Calculates result, which is cached until set_momenta is called.
47  void print();
48 
49  protected:
50  void mt2w_bisect(); // The real work is done here.
51 
52  private:
53 
54  bool solved_;
56  double upper_bound_;
57  double error_value_;
58  double scan_step_;
59  double mt2w_b_;
60 
61  int teco(double mtop); // test the compatibility of a given trial top mass mtop
62  inline int signchange_n( long double t1, long double t2, long double t3, long double t4, long double t5);
63  inline int signchange_p( long double t1, long double t2, long double t3, long double t4, long double t5);
64 
65  //data members
66  double plx_, ply_, plz_, ml_, El_; // l is the visible lepton
67  double pb1x_, pb1y_, pb1z_, mb1_, Eb1_; // b1 is the bottom on the same side as the visible lepton
68  double pb2x_, pb2y_, pb2z_, mb2_, Eb2_; // b2 is the other bottom
69  double pmissx_, pmissy_; // x and y component of missing p_T
70  double mv_,mw_; //mass of neutrino and W-boson
71 
72  //auxiliary definitions
73  double mlsq_, Elsq_;
74  double mb1sq_, Eb1sq_;
75  double mb2sq_, Eb2sq_;
76 
77  //auxiliary coefficients
78  double a1_, b1_, c1_, a2_, b2_, c2_, d1_, e1_, f1_, d2_, e2_, f2_;
79  double d2o_, e2o_, f2o_;
80 
81  double precision_;
82  };
83 
84 }//end namespace mt2w_bisect
85 
86 #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:66
mt2w(double upper_bound=500.0, double error_value=499.0, double scan_step=0.5)
Definition: mt2w_bisect.cpp:44