CMS 3D CMS Logo

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
heppy::mt2w_bisect::mt2w::c2
double c2
Definition: mt2w_bisect.h:82
RandomServiceHelper.t2
t2
Definition: RandomServiceHelper.py:257
heppy::mt2w_bisect::mt2w::SCANSTEP
static const float SCANSTEP
Definition: mt2w_bisect.h:23
heppy::mt2w_bisect::mt2w::d2
double d2
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::Eb1sq
double Eb1sq
Definition: mt2w_bisect.h:78
heppy::mt2w_bisect::mt2w::ply
double ply
Definition: mt2w_bisect.h:70
heppy::mt2w_bisect::mt2w::d1
double d1
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::mlsq
double mlsq
Definition: mt2w_bisect.h:77
heppy::mt2w_bisect::mt2w::c1
double c1
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::momenta_set
bool momenta_set
Definition: mt2w_bisect.h:59
heppy::mt2w_bisect::mt2w::b1
double b1
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::Eb2sq
double Eb2sq
Definition: mt2w_bisect.h:79
heppy::mt2w_bisect::mt2w::get_mt2w
double get_mt2w()
Definition: mt2w_bisect.cc:62
heppy::mt2w_bisect::mt2w::precision
double precision
Definition: mt2w_bisect.h:85
heppy::mt2w_bisect::mt2w::e2o
double e2o
Definition: mt2w_bisect.h:83
heppy::mt2w_bisect::mt2w::teco
int teco(double mtop)
Definition: mt2w_bisect.cc:223
heppy::mt2w_bisect::mt2w::Elsq
double Elsq
Definition: mt2w_bisect.h:77
heppy::mt2w_bisect::mt2w::mt2w
mt2w(double upper_bound=500.0, double error_value=499.0, double scan_step=0.5)
Definition: mt2w_bisect.cc:52
heppy::mt2w_bisect::mt2w::signchange_n
int signchange_n(long double t1, long double t2, long double t3, long double t4, long double t5)
Definition: mt2w_bisect.cc:385
RandomServiceHelper.t1
t1
Definition: RandomServiceHelper.py:256
heppy::mt2w_bisect::mt2w::mb1sq
double mb1sq
Definition: mt2w_bisect.h:78
heppy::mt2w_bisect::mt2w::pb1x
double pb1x
Definition: mt2w_bisect.h:71
heppy::mt2w_bisect::mt2w::ZERO_MASS
static const float ZERO_MASS
Definition: mt2w_bisect.h:22
heppy::mt2w_bisect::mt2w::mb2sq
double mb2sq
Definition: mt2w_bisect.h:79
heppy::mt2w_bisect::mt2w::pb2y
double pb2y
Definition: mt2w_bisect.h:72
heppy::mt2w_bisect::mt2w
Definition: mt2w_bisect.h:17
heppy::mt2w_bisect::mt2w::e2
double e2
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::mv
double mv
Definition: mt2w_bisect.h:74
heppy::mt2w_bisect::mt2w::mb2
double mb2
Definition: mt2w_bisect.h:72
heppy::mt2w_bisect::mt2w::mt2w_b
double mt2w_b
Definition: mt2w_bisect.h:63
heppy::mt2w_bisect::mt2w::a2
double a2
Definition: mt2w_bisect.h:82
RandomServiceHelper.t3
t3
Definition: RandomServiceHelper.py:258
heppy::mt2w_bisect::mt2w::pb2z
double pb2z
Definition: mt2w_bisect.h:72
heppy::mt2w_bisect::mt2w::mw
double mw
Definition: mt2w_bisect.h:74
heppy
TAKEN FROM http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/CMSSW/ElectroWeakAnalysis/Utilities/src/PdfWeig...
Definition: AlphaT.h:16
heppy::mt2w_bisect::mt2w::signchange_p
int signchange_p(long double t1, long double t2, long double t3, long double t4, long double t5)
Definition: mt2w_bisect.cc:398
heppy::mt2w_bisect::mt2w::Eb2
double Eb2
Definition: mt2w_bisect.h:72
heppy::mt2w_bisect::mt2w::e1
double e1
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::pmissy
double pmissy
Definition: mt2w_bisect.h:73
heppy::mt2w_bisect::mt2w::pb1z
double pb1z
Definition: mt2w_bisect.h:71
heppy::mt2w_bisect::mt2w::plx
double plx
Definition: mt2w_bisect.h:70
heppy::mt2w_bisect::mt2w::RELATIVE_PRECISION
static const float RELATIVE_PRECISION
Definition: mt2w_bisect.h:19
heppy::mt2w_bisect::mt2w::MIN_MASS
static const float MIN_MASS
Definition: mt2w_bisect.h:21
heppy::mt2w_bisect::mt2w::scan_step
double scan_step
Definition: mt2w_bisect.h:62
heppy::mt2w_bisect::mt2w::solved
bool solved
Definition: mt2w_bisect.h:58
heppy::mt2w_bisect::mt2w::d2o
double d2o
Definition: mt2w_bisect.h:83
heppy::mt2w_bisect::mt2w::upper_bound
double upper_bound
Definition: mt2w_bisect.h:60
heppy::mt2w_bisect::mt2w::plz
double plz
Definition: mt2w_bisect.h:70
heppy::mt2w_bisect::mt2w::mb1
double mb1
Definition: mt2w_bisect.h:71
heppy::mt2w_bisect::mt2w::set_momenta
void set_momenta(double *pl0, double *pb10, double *pb20, double *pmiss0)
Definition: mt2w_bisect.cc:73
heppy::mt2w_bisect::mt2w::ml
double ml
Definition: mt2w_bisect.h:70
heppy::mt2w_bisect::mt2w::error_value
double error_value
Definition: mt2w_bisect.h:61
heppy::mt2w_bisect::mt2w::f1
double f1
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::ABSOLUTE_PRECISION
static const float ABSOLUTE_PRECISION
Definition: mt2w_bisect.h:20
heppy::mt2w_bisect::mt2w::a1
double a1
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::El
double El
Definition: mt2w_bisect.h:70
heppy::mt2w_bisect::mt2w::f2
double f2
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::Eb1
double Eb1
Definition: mt2w_bisect.h:71
heppy::mt2w_bisect::mt2w::mt2w_bisect
void mt2w_bisect()
Definition: mt2w_bisect.cc:168
heppy::mt2w_bisect::mt2w::pb1y
double pb1y
Definition: mt2w_bisect.h:71
heppy::mt2w_bisect::mt2w::b2
double b2
Definition: mt2w_bisect.h:82
heppy::mt2w_bisect::mt2w::pmissx
double pmissx
Definition: mt2w_bisect.h:73
heppy::mt2w_bisect::mt2w::f2o
double f2o
Definition: mt2w_bisect.h:83
heppy::mt2w_bisect::mt2w::pb2x
double pb2x
Definition: mt2w_bisect.h:72