]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtLASSAmp.cxx
L1phase shift corrected
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtLASSAmp.cxx
1 #include "EvtGenBase/EvtPatches.hh"
2 /*******************************************************************************
3  * Project: BaBar detector at the SLAC PEP-II B-factory 
4  * Package: EvtGenBase 
5  *  Author: Denis Dujmic, ddujmic@slac.stanford.edu               
6  *  
7  * Copyright (C) 2005 SLAC   
8  *******************************************************************************/
9
10 #include <assert.h>
11 #include <math.h>
12 #include <iostream>
13 #include "EvtGenBase/EvtComplex.hh"
14 #include "EvtGenBase/EvtLASSAmp.hh"
15 #include "EvtGenBase/EvtDalitzCoord.hh"
16 #include "EvtGenBase/EvtdFunction.hh"
17 #include "EvtGenBase/EvtCyclic3.hh"
18 using std::endl;
19 using EvtCyclic3::Index;
20 using EvtCyclic3::Pair;
21
22
23 EvtLASSAmp::EvtLASSAmp(EvtDalitzPlot *dp, 
24                        EvtCyclic3::Pair pair,
25                        double m0, double g0,
26                        double a, double r, double cutoff) :
27   EvtAmplitude<EvtDalitzPoint>(),
28   _pair(pair),
29   _m0(m0),
30   _g0(g0),
31   _r(r),
32   _a(a),
33   _cutoff(cutoff)
34 {
35   _dalitzSpace = dp;
36   double ma = dp->m( first(pair) );
37   double mb = dp->m( second(pair) );
38   double E0a  = 0.5 * (_m0*_m0 + ma*ma - mb*mb) / _m0;
39   _q0 = E0a*E0a - ma*ma;
40   assert(_q0>0);
41   _q0 = sqrt(_q0);
42 }
43
44
45
46 EvtLASSAmp::EvtLASSAmp(const EvtLASSAmp& other) :
47   EvtAmplitude<EvtDalitzPoint>(other),
48   _pair(other._pair),
49   _m0(other._m0),
50   _g0(other._g0),
51   _q0(other._q0),
52   _r(other._r),
53   _a(other._a),
54   _cutoff(other._cutoff)
55 {  
56   _dalitzSpace = other._dalitzSpace;
57 }
58
59
60 EvtLASSAmp::~EvtLASSAmp() {}
61
62
63
64 EvtComplex 
65 EvtLASSAmp::amplitude(const EvtDalitzPoint &dalitzPoint) const {
66   
67   /*
68
69     Parameterization of Kpi S-wave using LASS scattering data.
70     - Nucl.Phys.B296, 493 (1988)
71     - W.Dunwoodie,http://www.slac.stanford.edu/~wmd/kpi_swave/kpi_swave_fit.note
72
73             m                                     m0^2*Gamma0/q0
74     ----------------- + exp(2*i*delta) * --------------------------------
75     q*cot(delta)-i*q                     m0^2-m^2 - i*m0*Gamma0*q/m*m0/q0
76
77
78     where q = momentum of K or pi in Kpi system
79           
80           q*cot(delta) = 1/ a   + 1/2 * [ r * q**2 ]
81
82           a = scattering length
83
84           r = effective range
85
86   */
87
88   double s = dalitzPoint.q(_pair);
89   double m = sqrt(s);
90   double q = dalitzPoint.p(first(_pair), _pair);
91
92   // elastic scattering 
93   double qcotd = 1./_a + 0.5*_r*q*q;
94   EvtComplex lass_elastic = m<_cutoff ? m / ( qcotd - EvtComplex(0,q) ) : 0;
95
96   // relative phase
97   double cosd=1;
98   double sind=0;
99   if (q>0) {
100     cosd = qcotd*qcotd/(q*q);
101     cosd = sqrt( cosd/(1+cosd) );
102     sind = sqrt( 1-cosd*cosd );
103   }
104   EvtComplex lass_phase( cosd, sind);
105   lass_phase *= lass_phase;
106
107   // K*(1430)
108   double gamma = _g0 * q/m * _m0/_q0;
109   EvtComplex lass_Kstar = (_m0*_m0)*(_g0/_q0)/(_m0*_m0-m*m-EvtComplex(0.,_m0*gamma));   
110
111   return lass_elastic + lass_phase * lass_Kstar;
112 }