File indexing completed on 2023-03-17 11:15:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef PhysicsTools_Heppy_mt2w_bisect_H
0012 #define PhysicsTools_Heppy_mt2w_bisect_H
0013
0014 namespace heppy {
0015
0016 namespace mt2w_bisect {
0017 class mt2w {
0018 public:
0019 static const float RELATIVE_PRECISION;
0020 static const float ABSOLUTE_PRECISION;
0021 static const float MIN_MASS;
0022 static const float ZERO_MASS;
0023 static const float SCANSTEP;
0024
0025 mt2w(double upper_bound = 500.0, double error_value = 499.0, double scan_step = 0.5);
0026
0027
0028
0029
0030
0031 void set_momenta(double *pl0, double *pb10, double *pb20, double *pmiss0);
0032 void set_momenta(double El,
0033 double plx,
0034 double ply,
0035 double plz,
0036 double Eb1,
0037 double pb1x,
0038 double pb1y,
0039 double pb1z,
0040 double Eb2,
0041 double pb2x,
0042 double pb2y,
0043 double pb2z,
0044 double pmissx,
0045 double pmissy);
0046
0047
0048
0049
0050
0051 double get_mt2w();
0052
0053
0054 protected:
0055 void mt2w_bisect();
0056
0057 private:
0058 bool solved;
0059 bool momenta_set;
0060 double upper_bound;
0061 double error_value;
0062 double scan_step;
0063 double mt2w_b;
0064
0065 int teco(double mtop);
0066 inline int signchange_n(long double t1, long double t2, long double t3, long double t4, long double t5);
0067 inline int signchange_p(long double t1, long double t2, long double t3, long double t4, long double t5);
0068
0069
0070 double plx, ply, plz, ml, El;
0071 double pb1x, pb1y, pb1z, mb1, Eb1;
0072 double pb2x, pb2y, pb2z, mb2, Eb2;
0073 double pmissx, pmissy;
0074 double mv, mw;
0075
0076
0077 double mlsq, Elsq;
0078 double mb1sq, Eb1sq;
0079 double mb2sq, Eb2sq;
0080
0081
0082 double a1, b1, c1, a2, b2, c2, d1, e1, f1, d2, e2, f2;
0083 double d2o, e2o, f2o;
0084
0085 double precision;
0086 };
0087
0088 }
0089 }
0090
0091 #endif