]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtFlatte.cxx
Centrality update (Alberica)
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtFlatte.cxx
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