00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
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
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
00044
00045
00046
00047
00048
00049
00050
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
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
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
00106 EvtDalitzPlot _dp;
00107
00108
00109 EvtCyclic3::Pair _pairAng;
00110 EvtCyclic3::Pair _pairRes;
00111
00112
00113 EvtSpinType::spintype _spin;
00114
00115
00116 NumType _typeN;
00117
00118
00119 double _m0,_g0;
00120
00121
00122 EvtTwoBodyVertex _vb;
00123 EvtTwoBodyVertex _vd;
00124
00125
00126 double _massFirst,_massSecond;
00127
00128
00129 double _m0_mix,_g0_mix,_delta_mix;
00130 EvtComplex _amp_mix;
00131
00132
00133 double _g1,_g2;
00134 CouplingType _coupling2;
00135
00136
00137 int _kmatrix_index;
00138 EvtComplex _fr12prod,_fr13prod,_fr14prod,_fr15prod;
00139 double _s0prod;
00140
00141
00142 double _a;
00143 double _r;
00144 double _Blass;
00145 double _phiB;
00146 double _R;
00147 double _phiR;
00148 };
00149
00150 #endif
00151