]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 1 | //-------------------------------------------------------------------------- |
2 | // | |
3 | // Environment: | |
4 | // This software is part of the EvtGen package developed jointly | |
5 | // for the BaBar and CLEO collaborations. If you use all or part | |
6 | // of it, please give an appropriate acknowledgement. | |
7 | // | |
8 | // Copyright Information: See EvtGen/COPYRIGHT | |
9 | // Copyright (C) 1998 Caltech, UCSB | |
10 | // | |
11 | // Module: EvtFlatte.cc | |
12 | // | |
13 | // Description: resonance-defining class | |
14 | // | |
15 | // Modification history: | |
16 | // | |
17 | // ponyisi 18 Feb 2008 created | |
18 | // | |
19 | //------------------------------------------------------------------------ | |
20 | // | |
21 | #include "EvtGenBase/EvtPatches.hh" | |
22 | #include <math.h> | |
23 | #include "EvtGenBase/EvtVector4R.hh" | |
24 | #include "EvtGenBase/EvtKine.hh" | |
25 | #include "EvtGenBase/EvtComplex.hh" | |
26 | #include "EvtGenBase/EvtFlatte.hh" | |
27 | #include "EvtGenBase/EvtReport.hh" | |
28 | #include "EvtGenBase/EvtConst.hh" | |
29 | ||
30 | EvtFlatte::~EvtFlatte(){} | |
31 | ||
32 | //operator | |
33 | ||
34 | EvtFlatte& EvtFlatte::operator = ( const EvtFlatte &n) | |
35 | { | |
36 | if ( &n == this ) return *this; | |
37 | _p4_p = n._p4_p; | |
38 | _p4_d1 = n._p4_d1; | |
39 | _p4_d2 = n._p4_d2; | |
40 | _ampl = n._ampl; | |
41 | _theta = n._theta; | |
42 | _mass = n._mass; | |
43 | _params = n._params; | |
44 | // _m1a = n._m1a; | |
45 | // _m1b = n._m1b; | |
46 | // _g1 = n._g1; | |
47 | // _m2a = n._m2a; | |
48 | // _m2b = n._m2b; | |
49 | // _g2 = n._g2; | |
50 | return *this; | |
51 | } | |
52 | ||
53 | //constructor | |
54 | ||
55 | EvtFlatte::EvtFlatte(const EvtVector4R& p4_p, const EvtVector4R& p4_d1, | |
56 | const EvtVector4R& p4_d2, double ampl, | |
57 | double theta, double mass, | |
58 | vector<EvtFlatteParam>& params | |
59 | // double m1a, double m1b, double g1, | |
60 | // double m2a, double m2b, double g2 | |
61 | ): | |
62 | _p4_p(p4_p),_p4_d1(p4_d1), _p4_d2(p4_d2), _ampl(ampl), _theta(theta), | |
63 | _mass(mass), | |
64 | _params(params) | |
65 | // _m1a(m1a), _m1b(m1b), _g1(g1), | |
66 | // _m2a(m2a), _m2b(m2b), _g2(g2) | |
67 | {} | |
68 | ||
69 | //amplitude function | |
70 | ||
71 | EvtComplex EvtFlatte::resAmpl() { | |
72 | ||
73 | double pi180inv = 1.0/EvtConst::radToDegrees; | |
74 | ||
75 | // EvtComplex ampl(cos(_theta*pi180inv), sin(_theta*pi180inv)); | |
76 | // ampl *= _ampl; | |
77 | ||
78 | // SCALARS ONLY | |
79 | double mR = (_p4_d1+_p4_d2).mass(); | |
80 | ||
81 | EvtComplex w; | |
82 | ||
83 | for (vector<EvtFlatteParam>::const_iterator param = _params.begin(); | |
84 | param != _params.end(); | |
85 | ++param) { | |
86 | ||
87 | double m1 = (*param).m1(); double m2 = (*param).m2(); | |
88 | double g = (*param).g(); | |
89 | w += (g*g | |
90 | *sqrtCplx((1-((m1-m2)*(m1-m2))/(mR*mR))* | |
91 | (1-((m1+m2)*(m1+m2))/(mR*mR)))); | |
92 | // cout << m1 << " " << mR << " " << w << endl; | |
93 | } | |
94 | ||
95 | EvtComplex denom = _mass*_mass - mR*mR - EvtComplex(0,1)*w; | |
96 | EvtComplex ampl = _ampl*EvtComplex(cos(_theta*pi180inv), sin(_theta*pi180inv))/denom; | |
97 | // cout << abs(1/denom) << endl; | |
98 | return ampl; | |
99 | } | |
100 | ||
101 |