CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 #ifndef PhysicsTools_Heppy_mt2w_bisect_H
12 #define PhysicsTools_Heppy_mt2w_bisect_H
13 
14 namespace heppy {
15 
16  namespace mt2w_bisect {
17  class mt2w {
18  public:
19  static const float RELATIVE_PRECISION;
20  static const float ABSOLUTE_PRECISION;
21  static const float MIN_MASS;
22  static const float ZERO_MASS;
23  static const float SCANSTEP;
24 
25  mt2w(double upper_bound = 500.0, double error_value = 499.0, double scan_step = 0.5);
26  // Constructor where:
27  // upper_bound: the upper bound of search for MT2W, default value is 500 GeV
28  // error_value: if we couldn't find any compatible region below upper_bound, this value gets returned.
29  // -1.0 is a reasonable to indicate error, but upper_bound-1.0 allows a simple greater-than cut for signal
30  // scan_step: if we need to scan to find the compatible region, this is the step of the scan
31  void set_momenta(double *pl0, double *pb10, double *pb20, double *pmiss0); //b1 pairs with l
32  void set_momenta(double El,
33  double plx,
34  double ply,
35  double plz,
36  double Eb1,
37  double pb1x,
38  double pb1y,
39  double pb1z,
40  double Eb2,
41  double pb2x,
42  double pb2y,
43  double pb2z,
44  double pmissx,
45  double pmissy); // Same as above without pointers/arrays
46  // Where the input 4-vector information represents:
47  // l is the visible lepton
48  // b1 is the bottom on the same side as the visible lepton
49  // b2 is the other bottom (paired with the invisible W)
50  // pmiss is missing momentum with only x and y components.
51  double get_mt2w(); // Calculates result, which is cached until set_momenta is called.
52  // void print();
53 
54  protected:
55  void mt2w_bisect(); // The real work is done here.
56 
57  private:
58  bool solved;
60  double upper_bound;
61  double error_value;
62  double scan_step;
63  double mt2w_b;
64 
65  int teco(double mtop); // test the compatibility of a given trial top mass mtop
66  inline int signchange_n(long double t1, long double t2, long double t3, long double t4, long double t5);
67  inline int signchange_p(long double t1, long double t2, long double t3, long double t4, long double t5);
68 
69  //data members
70  double plx, ply, plz, ml, El; // l is the visible lepton
71  double pb1x, pb1y, pb1z, mb1, Eb1; // b1 is the bottom on the same side as the visible lepton
72  double pb2x, pb2y, pb2z, mb2, Eb2; // b2 is the other bottom
73  double pmissx, pmissy; // x and y component of missing p_T
74  double mv, mw; //mass of neutrino and W-boson
75 
76  //auxiliary definitions
77  double mlsq, Elsq;
78  double mb1sq, Eb1sq;
79  double mb2sq, Eb2sq;
80 
81  //auxiliary coefficients
82  double a1, b1, c1, a2, b2, c2, d1, e1, f1, d2, e2, f2;
83  double d2o, e2o, f2o;
84 
85  double precision;
86  };
87 
88  } //end namespace mt2w_bisect
89 } //end namespace heppy
90 
91 #endif
static const float SCANSTEP
Definition: mt2w_bisect.h:23
int signchange_n(long double t1, long double t2, long double t3, long double t4, long double t5)
Definition: mt2w_bisect.cc:386
static const float ZERO_MASS
Definition: mt2w_bisect.h:22
int teco(double mtop)
Definition: mt2w_bisect.cc:224
int signchange_p(long double t1, long double t2, long double t3, long double t4, long double t5)
Definition: mt2w_bisect.cc:399
mt2w(double upper_bound=500.0, double error_value=499.0, double scan_step=0.5)
Definition: mt2w_bisect.cc:53
static const float RELATIVE_PRECISION
Definition: mt2w_bisect.h:19
static const float ABSOLUTE_PRECISION
Definition: mt2w_bisect.h:20
static const float MIN_MASS
Definition: mt2w_bisect.h:21
void set_momenta(double *pl0, double *pb10, double *pb20, double *pmiss0)
Definition: mt2w_bisect.cc:74