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

Go to the documentation of this file.
00001 /*****************************************************************************
00002  * Project: BaBar detector at the SLAC PEP-II B-factory
00003  * Package: EvtGenBase
00004  *    File: $Id: EvtDalitzReso.hh,v 1.1 2009/05/08 01:59:56 pingrg Exp $
00005  *
00006  * Description:
00007  *   Class to compute Dalitz amplitudes based on many models that cannot be
00008  *     handled with EvtResonance.
00009  *
00010  * Modification history:
00011  *   Jordi Garra Ticó     2008/07/03         File created
00012  *****************************************************************************/
00013 
00014 #ifndef __EVTDALITZRESO_HH__
00015 #define __EVTDALITZRESO_HH__
00016 
00017 #include <string>
00018 #include <vector>
00019 #include <map>
00020 
00021 #include "EvtGenBase/EvtComplex.hh"
00022 #include "EvtGenBase/EvtCyclic3.hh"
00023 #include "EvtGenBase/EvtSpinType.hh"
00024 #include "EvtGenBase/EvtTwoBodyVertex.hh"
00025 #include "EvtGenBase/EvtDalitzPoint.hh"
00026 #include "EvtGenBase/EvtDecayAmp.hh"
00027 #include "EvtGenBase/EvtBlattWeisskopf.hh"
00028 
00029 using std::vector;
00030 using std::map;
00031 
00032 class EvtBlattWeisskopf;
00033 
00034 class EvtDalitzReso
00035 {
00036 public:
00037   // Numerator type
00038   enum NumType { NBW            = 0 , RBW_ZEMACH        = 1 , RBW_KUEHN  = 2 , RBW_CLEO        = 3 ,
00039                  RBW_ZEMACH2    = 4 , GS_CLEO           = 5 , K_MATRIX   = 6 , RBW_CLEO_ZEMACH = 7 ,
00040                  GS_CLEO_ZEMACH = 8 , LASS              = 9 , K_MATRIX_I = 10, K_MATRIX_II     = 11,
00041                  GAUSS_CLEO     = 12, GAUSS_CLEO_ZEMACH = 13 };
00042 
00043   // Coupling type
00044   //  ChgPion : pi+ pi-
00045   //  NeuPion : pi0 pi0
00046   //  Pion    : 0.5*[(pi+ pi-) + (pi0 pi0)]
00047   //  ChgKaon : K+ K-
00048   //  NeuKaon : K0 K0
00049   //  Kaon    : 0.5*[(K+ K-) + (K0 K0)]
00050   //  EtaPion : eta pi0
00051   enum CouplingType {Undefined=0,PicPic=1,PizPiz,PiPi,KcKc,KzKz,KK,EtaPic,EtaPiz,PicPicKK,WA76};
00052 
00053   EvtDalitzReso() {};
00054 
00055   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
00056                 EvtSpinType::spintype spin, double m0, double g0, NumType typeN);
00057 
00058   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
00059                 EvtSpinType::spintype spin, double m0, double g0, NumType typeN,
00060                 double m0_mix, double g0_mix, double delta_mix, EvtComplex amp_mix);
00061 
00062   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
00063                 EvtSpinType::spintype spin, double m0, NumType typeN, double g1, double g2, CouplingType coupling2);
00064 
00065   // K-matrix
00066   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, std::string nameIndex, NumType typeN,
00067                 EvtComplex fr12prod, EvtComplex fr13prod, EvtComplex fr14prod, EvtComplex fr15prod, double s0prod);
00068 
00069   // LASS
00070   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0, double g0,
00071                 double a, double r, double B, double phiB, double R, double phiR);
00072 
00073   EvtDalitzReso(const EvtDalitzReso& other);
00074 
00075   ~EvtDalitzReso();
00076 
00077   EvtDalitzReso* clone() const { return new EvtDalitzReso(*this); }
00078 
00079   EvtComplex evaluate(const EvtDalitzPoint& p);
00080 
00081   void set_fd( double R ) { _vd.set_f( R ); }
00082   void set_fb( double R ) { _vb.set_f( R ); }
00083 
00084 private:
00085   EvtComplex psFactor(double& ma, double& mb, double& m);
00086   EvtComplex psFactor(double& ma1, double& mb1, double& ma2, double& mb2, double& m);
00087   EvtComplex propGauss(const double& m0, const double& s0, const double& m);
00088   EvtComplex propBreitWigner(const double& m0, const double& g0, const double& m); 
00089   EvtComplex propBreitWignerRel(const double& m0, const double& g0, const double& m);
00090   EvtComplex propBreitWignerRel(const double& m0, const EvtComplex& g0, const double& m);
00091   EvtComplex propBreitWignerRelCoupled(const double& m0, const EvtComplex& g1, const EvtComplex& g2, const double& m); 
00092   EvtComplex propGounarisSakurai(const double& m0, const double& g0, const double& k0, 
00093                                  const double& m, const double& g, const double& k);
00094   inline double GS_f(const double& m0, const double& g0, const double& k0, const double& m, const double& k);
00095   inline double GS_h(const double& m, const double& k);
00096   inline double GS_dhods(const double& m0, const double& k0); 
00097   inline double GS_d(const double& m0, const double& k0); 
00098 
00099   EvtComplex numerator(const EvtDalitzPoint& p, const EvtTwoBodyKine& vb, const EvtTwoBodyKine& vd);
00100   double angDep(const EvtDalitzPoint& p);
00101   EvtComplex mixFactor(EvtComplex prop, EvtComplex prop_mix);
00102   EvtComplex Fvector( double s, int index );
00103   EvtComplex lass(double s);
00104 
00105   // Dalitz plot
00106   EvtDalitzPlot _dp; 
00107 
00108   // Pairing indices:
00109   EvtCyclic3::Pair _pairAng;    // angular  
00110   EvtCyclic3::Pair _pairRes;    // resonance
00111 
00112   // Spin
00113   EvtSpinType::spintype _spin;                                  
00114 
00115   // Numerator type
00116   NumType _typeN;
00117 
00118   // Nominal mass and width
00119   double _m0,_g0; 
00120 
00121   // Vertices
00122   EvtTwoBodyVertex _vb;
00123   EvtTwoBodyVertex _vd;
00124 
00125   // Daughter masses
00126   double _massFirst,_massSecond;
00127 
00128   // variables for electromagnetic mass mixing 
00129   double _m0_mix,_g0_mix,_delta_mix;
00130   EvtComplex _amp_mix;   
00131 
00132   // variables for coupled Breit-Wigner
00133   double _g1,_g2;
00134   CouplingType _coupling2;
00135 
00136   // K-matrix 
00137   int _kmatrix_index;
00138   EvtComplex _fr12prod,_fr13prod,_fr14prod,_fr15prod;
00139   double _s0prod;
00140 
00141   // LASS
00142   double _a;
00143   double _r;
00144   double _Blass;
00145   double _phiB;
00146   double _R;
00147   double _phiR;
00148 };
00149 
00150 #endif
00151 

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