mt2_bisect.hh
Go to the documentation of this file.
00001 #ifndef MT2_BISECT_H 00002 #define MT2_BISECT_H 00003 00004 /***********************************************************************/ 00005 /* */ 00006 /* Finding mt2 by Bisection */ 00007 /* */ 00008 /* Authors: Hsin-Chia Cheng, Zhenyu Han */ 00009 /* Dec 11, 2008, v1.01a */ 00010 /* */ 00011 /* see arXiv:0810.5178 */ 00012 /* */ 00013 /* Wrapped for Rivet by D. Grellscheid */ 00014 /* Apr 13, 2011 */ 00015 /* */ 00016 /***********************************************************************/ 00017 00018 namespace Rivet { 00019 00020 namespace mt2_bisect 00021 { 00022 00023 /*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*/ 00024 00025 const double RELATIVE_PRECISION = 0.00001; 00026 //defined as precision = RELATIVE_PRECISION * scale, where scale = max{Ea, Eb} 00027 00028 const double ABSOLUTE_PRECISION = 0.0; 00029 //absolute precision for mt2, unused by default 00030 00031 00032 //Reserved for expert 00033 const double MIN_MASS = 0.1; //if ma<MINMASS and mb<MINMASS, use massless code 00034 const double ZERO_MASS = 0.000; //give massless particles a small mass 00035 const double SCANSTEP = 0.1; 00036 00037 class mt2 00038 { 00039 public: 00040 00041 mt2(); 00042 void mt2_bisect(); 00043 void mt2_massless(); 00044 void set_momenta(double *pa0, double *pb0, double* pmiss0); 00045 void set_mn(double mn); 00046 double get_mt2(); 00047 // void print(); 00048 int nevt; 00049 private: 00050 00051 bool solved; 00052 bool momenta_set; 00053 double mt2_b; 00054 00055 int nsols(double Dsq); 00056 int nsols_massless(double Dsq); 00057 inline int signchange_n( long double t1, long double t2, long double t3, long double t4, long double t5); 00058 inline int signchange_p( long double t1, long double t2, long double t3, long double t4, long double t5); 00059 int scan_high(double &Deltasq_high); 00060 int find_high(double &Deltasq_high); 00061 //data members 00062 double pax, pay, ma, Ea; 00063 double pmissx, pmissy; 00064 double pbx, pby, mb, Eb; 00065 double mn, mn_unscale; 00066 00067 //auxiliary definitions 00068 double masq, Easq; 00069 double mbsq, Ebsq; 00070 double pmissxsq, pmissysq; 00071 double mnsq; 00072 00073 //auxiliary coefficients 00074 double a1, b1, c1, a2, b2, c2, d1, e1, f1, d2, e2, f2; 00075 double d11, e11, f12, f10, d21, d20, e21, e20, f22, f21, f20; 00076 00077 double scale; 00078 double precision; 00079 }; 00080 00081 }//end namespace mt2_bisect 00082 00083 }//end namespace Rivet 00084 00085 #endif Generated on Thu Feb 6 2014 17:38:45 for The Rivet MC analysis system by 1.7.6.1 |