MINT2
Lass.cpp
Go to the documentation of this file.
1 // author: Jonas Rademacker (Jonas.Rademacker@bristol.ac.uk)
2 // status: Mon 9 Feb 2009 19:18:04 GMT
3 #include "Mint/Lass.h"
4 
5 #include <iostream>
6 #include <cmath>
7 
8 using namespace std;
9 using namespace MINT;
10 
11 // Lass parameterised a la BaBar, Phys.Rev.D78:012004,2008
12 // (and of course originally developed by Lass,
13 // D. Aston et al. (LASS), Nucl. Phys. B296, 493 (1988).
14 
15 Lass::Lass( const AssociatedDecayTree& decay, const std::string& namePrefix)
16  : BW_BW(decay, namePrefix)
17  , _a("Lass::a", 2.07/GeV)
18  , _r("Lass::r", 3.32/GeV) // same as b in Lass paper
19  , _phi("Lass::phi", 0*pi/180.0)
20  , _bgCutOff("Lass::bgCutOff", 1.8*GeV)
21 {}
22 
23 Lass::Lass(const Lass& other)
24  : ILineshape()
25  , BW_BW(other)
26  , _a(other._a)
27  , _r(other._r) // same as b in Lass paper
28  , _phi(other._phi)
29  , _bgCutOff(other._bgCutOff)
30 {}
31 
32 double Lass::q(){
33  double q2 = BW_BW::pABSq();
34  double qu=0;
35  if(q2 > 0) qu=sqrt(q2);
36  return qu;
37 }
38 double Lass::q0() const{
39  double q02 = BW_BW::prSq();
40  double qu0=0;
41  if(q02 > 0) qu0=sqrt(q02);
42  return qu0;
43 }
44 
45 complex<double> Lass::BG(){
46  const double M_Kpi = BW_BW::mumsRecoMass();
47 
48  if( M_Kpi > bgCutOff() ) return 0;
49  if( q() <=0 ) return 0;
50 
51  const complex<double> den( q()*cotDeltaBg(), -q() );
52 
53  // const double M_0 = BW_BW::mumsPDGMass();
54  const double M_0 = BW_BW::mumsMass();
55  const double Gamma0 = BW_BW::mumsWidth();
56 
57  const double num = M_Kpi;
58  const double myNormalisation = q0()/(M_0*M_0*Gamma0);
59 
60  return num * myNormalisation / den * GeV*GeV;
61 }
62 
63 double Lass::paraA() const{
64  return _a;
65 }
66 double Lass::paraR() const{
67  return _r;
68 }
69 double Lass::paraPhi() const{
70  return _phi;
71 }
72 double Lass::bgCutOff() const{
73  return _bgCutOff;
74 }
76  double x,y;
77  return cotDeltaBg(y,x);
78 }
79 double Lass::cotDeltaBg(double& y, double& x){
80  double qu=q();
81 
82  y = 2.0 * paraA()*qu;
83  x = 2.0 + paraA()*paraR()*qu*qu;
84 
85  return x/y;
86 }
87 double Lass::deltaBg(){
88  /*
89  cot(delta_bg) = 1/(aq) + rq/2
90  with q = sqrt(pABSq());
91 
92  . 2 + ba q^2
93  cot(delta_bg) = --------------
94  . 2aq
95 
96  . 2aq
97  tan(delta_bg) = --------------
98  . 2 + ba q^2
99  */
100 
101  double x,y;
102  cotDeltaBg(y, x);
103  return atan2(y, x);
104 }
105 
106 std::complex<double> Lass::getVal(IDalitzEvent& evt){
107  resetInternals();
108  setEventPtr(evt);
109  complex<double> expIPhi(cos(2*deltaBg()), sin(2*deltaBg()));
110  return BG() + BW_BW::getVal(evt)*expIPhi;
111 }
virtual double prSq() const
Definition: BW_BW.cpp:969
virtual void resetInternals()
Definition: BW_BW.cpp:1114
MINT::NamedParameter< double > _phi
Definition: Lass.h:30
virtual double mumsMass() const
Definition: BW_BW.cpp:453
static const double pi
bool setEventPtr(IDalitzEvent &evt) const
Definition: BW_BW.cpp:141
virtual std::complex< double > getVal(IDalitzEvent &evt)
Definition: Lass.cpp:106
double paraR() const
Definition: Lass.cpp:66
MINT::NamedParameter< double > _a
Definition: Lass.h:30
double paraPhi() const
Definition: Lass.cpp:69
Definition: BW_BW.h:30
MINT::NamedParameter< double > _bgCutOff
Definition: Lass.h:30
double bgCutOff() const
Definition: Lass.cpp:72
double paraA() const
Definition: Lass.cpp:63
virtual double pABSq()
Definition: BW_BW.cpp:1014
Definition: Lass.h:28
static const double GeV
virtual double mumsRecoMass() const
Definition: BW_BW.cpp:631
virtual double mumsWidth() const
Definition: BW_BW.cpp:460
double q()
Definition: Lass.cpp:32
double deltaBg()
Definition: Lass.cpp:87
std::complex< double > BG()
Definition: Lass.cpp:45
Lass(const AssociatedDecayTree &decay, const std::string &namePrefix="")
Definition: Lass.cpp:15
virtual std::complex< double > getVal(IDalitzEvent &evt)
Definition: BW_BW.cpp:1138
double q0() const
Definition: Lass.cpp:38
double cotDeltaBg()
Definition: Lass.cpp:75
MINT::NamedParameter< double > _r
Definition: Lass.h:30