/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtFlatte.cc

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 //
00003 // Environment:
00004 //      This software is part of the EvtGen package developed jointly
00005 //      for the BaBar and CLEO collaborations.  If you use all or part
00006 //      of it, please give an appropriate acknowledgement.
00007 //
00008 // Copyright Information: See EvtGen/COPYRIGHT
00009 //      Copyright (C) 1998      Caltech, UCSB
00010 //
00011 // Module: EvtFlatte.cc
00012 //
00013 // Description: resonance-defining class 
00014 //
00015 // Modification history:
00016 //
00017 //    ponyisi  18 Feb 2008  created
00018 //
00019 //------------------------------------------------------------------------
00020 // 
00021 #include "EvtGenBase/EvtPatches.hh"
00022 #include <math.h>
00023 #include "EvtGenBase/EvtVector4R.hh"
00024 #include "EvtGenBase/EvtKine.hh"
00025 #include "EvtGenBase/EvtComplex.hh"
00026 #include "EvtGenBase/EvtFlatte.hh"
00027 #include "EvtGenBase/EvtReport.hh"
00028 #include "EvtGenBase/EvtConst.hh"
00029 
00030 EvtFlatte::~EvtFlatte(){}
00031 
00032 //operator
00033 
00034 EvtFlatte& EvtFlatte::operator = ( const EvtFlatte  &n)
00035 {
00036   if ( &n == this ) return *this;
00037   _p4_p = n._p4_p;
00038   _p4_d1 = n._p4_d1;
00039   _p4_d2 = n._p4_d2;
00040   _ampl = n._ampl;
00041   _theta = n._theta;
00042   _mass = n._mass;
00043   _params = n._params;
00044   //  _m1a = n._m1a;
00045   //  _m1b = n._m1b;
00046   //  _g1 = n._g1;
00047   //  _m2a = n._m2a;
00048   //  _m2b = n._m2b;
00049   //  _g2 = n._g2;
00050   return  *this;
00051 }
00052 
00053 //constructor
00054  
00055 EvtFlatte::EvtFlatte(const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
00056                      const  EvtVector4R& p4_d2, double ampl,
00057                      double theta, double mass, 
00058                      vector<EvtFlatteParam>& params
00059                      //                   double m1a, double m1b, double g1,
00060                      //                   double m2a, double m2b, double g2
00061                      ): 
00062   _p4_p(p4_p),_p4_d1(p4_d1), _p4_d2(p4_d2), _ampl(ampl), _theta(theta), 
00063   _mass(mass),
00064   _params(params)
00065   //  _m1a(m1a), _m1b(m1b), _g1(g1),
00066   //  _m2a(m2a), _m2b(m2b), _g2(g2)
00067 {}
00068 
00069 //amplitude function
00070 
00071 EvtComplex EvtFlatte::resAmpl() {
00072  
00073   double pi180inv = 1.0/EvtConst::radToDegrees;
00074 
00075   //   EvtComplex ampl(cos(_theta*pi180inv), sin(_theta*pi180inv));
00076   //   ampl *= _ampl;
00077 
00078   // SCALARS ONLY
00079   double mR = (_p4_d1+_p4_d2).mass();
00080 
00081   EvtComplex w;
00082 
00083   for (vector<EvtFlatteParam>::const_iterator param = _params.begin();
00084        param != _params.end();
00085        ++param) {
00086 
00087     double m1 = (*param).m1(); double m2 = (*param).m2(); 
00088     double g = (*param).g();
00089     w += (g*g
00090           *sqrtCplx((1-((m1-m2)*(m1-m2))/(mR*mR))*
00091                     (1-((m1+m2)*(m1+m2))/(mR*mR))));
00092     //     cout << m1 << " " << mR << " " << w << endl;
00093   }
00094 
00095   EvtComplex denom = _mass*_mass - mR*mR - EvtComplex(0,1)*w;
00096   EvtComplex ampl = _ampl*EvtComplex(cos(_theta*pi180inv), sin(_theta*pi180inv))/denom;
00097   //  cout << abs(1/denom) << endl;
00098   return ampl;
00099 }
00100 
00101 

Generated on Tue Nov 29 23:12:13 2016 for BOSS_7.0.2 by  doxygen 1.4.7