36#define PRECISION ( 1.e-3 )
44 NumType typeN,
double f_b,
double f_d ) :
86 NumType typeN,
double m0_mix,
double g0_mix,
130 double m0,
NumType typeN,
double g1,
double g2,
175 std::string nameIndex,
NumType typeN,
214 if ( nameIndex ==
"Pole1" )
216 else if ( nameIndex ==
"Pole2" )
218 else if ( nameIndex ==
"Pole3" )
220 else if ( nameIndex ==
"Pole4" )
222 else if ( nameIndex ==
"Pole5" )
224 else if ( nameIndex ==
"f11prod" )
232 double g0,
double a,
double r,
double B,
233 double phiB,
double R,
double phiR,
double cutoff,
234 bool scaleByMOverQ ) :
314 const double m = sqrt( s );
335 return lass( kd, vd );
353 const double g = (
m_g0 <= 0. || vd.
pD() <= 0. )
445 <<
"EvtDalitzReso:evaluate(): PANIC, wrong coupling2 state."
481 const double m )
const
483 if ( m > ( ma + mb ) ) {
488 const double s = m * m;
489 const double phaseFactor_analyticalCont =
490 -0.5 * ( sqrt( 4 * ma * ma / s - 1 ) + sqrt( 4 * mb * mb / s - 1 ) );
491 return EvtComplex( phaseFactor_analyticalCont, 0 );
496 const double ma2,
const double mb2,
497 const double m )
const
503 const double m )
const
507 exp( -( m - m0 ) * ( m - m0 ) / 2. / ( s0 * s0 ) );
512 const double m )
const
519 const double m )
const
522 return 1. / ( m0 * m0 - m * m -
EvtComplex( 0., m0 * g0 ) );
527 const double m )
const
530 return 1. / ( m0 * m0 - m * m -
EvtComplex( 0., m0 ) * g0 );
536 const double m )
const
539 return 1. / ( m0 * m0 - m * m - ( g1 + g2 ) );
543 const double k0,
const double m,
545 const double k )
const
549 return ( 1. +
GS_d( m0, k0 ) * g0 / m0 ) /
551 GS_f( m0, g0, k0, m, k ) );
555 const double k0,
const double m,
556 const double k )
const
562 return g0 * m0 * m0 / ( k0 * k0 * k0 ) *
563 ( k * k * (
GS_h( m, k ) -
GS_h( m0, k0 ) ) +
564 ( m0 * m0 - m * m ) * k0 * k0 *
GS_dhods( m0, k0 ) );
575 return GS_h( m0, k0 ) * ( 0.125 / ( k0 * k0 ) - 0.5 / ( m0 * m0 ) ) +
630 const double M = x.
bigM();
631 const double mA = x.
m( iA );
632 const double mB = x.
m( iB );
633 const double mC = x.
m( iC );
634 const double qAB = x.
q( combine( iA, iB ) );
635 const double qBC = x.
q( combine( iB, iC ) );
636 const double qCA = x.
q( combine( iC, iA ) );
638 const double M2 = M * M;
644 const double mA2 = mA * mA;
645 const double mB2 = mB * mB;
646 const double mC2 = mC * mC;
651 ret = qCA - qBC + ( M2 - mC2 ) * ( mB2 - mA2 ) / m02;
653 const double x1 = qBC - qCA + ( M2 - mC2 ) * ( mA2 - mB2 ) / m02;
654 const double x2 = M2 - mC2;
655 const double x3 = qAB - 2 * M2 - 2 * mC2 + x2 * x2 / m02;
656 const double x4 = mA2 - mB2;
657 const double x5 = qAB - 2 * mB2 - 2 * mA2 + x4 * x4 / m02;
658 ret = x1 * x1 - x3 * x5 / 3.;
670 const double cosTh = x.
cosTh(
672 if ( fabs( cosTh ) > 1. ) {
686 return 1 / ( 1 - Delta * Delta * prop * prop_mix ) *
692 assert( index >= 1 && index <= 6 );
711 if ( solution == 0 ) {
712 std::cout <<
"EvtDalitzReso::Fvector() error. Kmatrix solution incorrectly chosen ! "
717 if ( solution == 3 ) {
757 }
else if ( solution == 1 ) {
798 }
else if ( solution == 2 ) {
841 double rho1sq, rho2sq, rho4sq, rho5sq;
846 const double mpi = 0.13957;
847 const double mK = 0.493677;
848 const double meta = 0.54775;
849 const double metap = 0.95778;
853 for (
int i = 0; i < 5; i++ ) {
854 for (
int j = 0; j < 5; j++ ) {
861 double s_scatt = 0.0;
864 else if ( solution == 1 )
866 else if ( solution == 2 )
868 const double sa = 1.0;
869 const double sa_0 = -0.15;
870 if ( solution == 3 ) {
876 }
else if ( solution == 1 ) {
882 }
else if ( solution == 2 ) {
896 rho1sq = 1. - pow( mpi + mpi, 2 ) / s;
902 rho2sq = 1. - pow( mK + mK, 2 ) / s;
911 const double real = 1.2274 + .00370909 / ( s * s ) - .111203 / s -
912 6.39017 * s + 16.8358 * s * s -
913 21.8845 * s * s * s + 11.3153 * s * s * s * s;
914 const double cont32 = sqrt( 1.0 - ( 16.0 * mpi * mpi ) );
917 rho[2] =
EvtComplex( sqrt( 1. - 16. * mpi * mpi / s ), 0 );
919 rho4sq = 1. - pow( meta + meta, 2 ) / s;
925 rho5sq = 1. - pow( meta + metap, 2 ) / s;
931 double smallTerm = 1;
934 for (
int pole = 0; pole < 5; pole++ )
935 if ( fabs( pow( ma[pole], 2 ) - s ) <
PRECISION )
936 smallTerm = pow( ma[pole], 2 ) - s;
940 for (
int i = 0; i < 5; i++ ) {
941 for (
int j = 0; j < 5; j++ ) {
942 for (
int pole_index = 0; pole_index < 5; pole_index++ ) {
943 const double A = g[pole_index][i] * g[pole_index][j];
944 const double B = ma[pole_index] * ma[pole_index] - s;
949 K[i][j] +=
EvtComplex( A / B, 0 ) * smallTerm;
955 for (
int i = 0; i < 5; i++ ) {
956 for (
int j = 0; j < 5; j++ ) {
957 const double C = f[i][j] * ( 1.0 - s_scatt );
958 const double D = ( s - s_scatt );
959 K[i][j] +=
EvtComplex( C / D, 0 ) * smallTerm;
965 for (
int i = 0; i < 5; i++ ) {
966 for (
int j = 0; j < 5; j++ ) {
967 const double E = ( s - ( sa * mpi * mpi * 0.5 ) ) * ( 1.0 - sa_0 );
968 const double F = ( s - sa_0 );
979 for (
int row = 0; row < 5; row++ )
980 for (
int col = 0; col < 5; col++ )
981 mat( row, col ) = ( row == col ) * smallTerm -
982 EvtComplex( 0., 1. ) * K[row][col] * rho[col];
986 vector<EvtComplex> U1j;
987 for (
int j = 0; j < 5; j++ )
988 U1j.push_back( ( *matInverse )[0][j] );
996 for (
int j = 0; j < 5; j++ ) {
997 const EvtComplex top = U1j[j] * g[index - 1][j];
998 const double bottom = ma[index - 1] * ma[index - 1] - s;
1003 value += top / bottom * smallTerm;
1023 const double m = kd.
m();
1024 const double q = kd.
p();
1028 const double cot_deltaB = 1.0 / (
m_a * q ) + 0.5 *
m_r * q;
1029 const double deltaB = atan( 1.0 / cot_deltaB );
1030 const double totalB = deltaB +
m_phiB;
1033 const double deltaR = atan( (
m_m0 * GammaM / (
m_m0 *
m_m0 - m * m ) ) );
1034 const double totalR = deltaR +
m_phiR;
1042 EvtComplex( cos( 2 * totalB ), sin( 2 * totalB ) );
1061 const double m1 = param.m1();
1062 const double m2 = param.m2();
1063 const double g = param.g();
1065 sqrtCplx( ( 1 - ( ( m1 - m2 ) * ( m1 - m2 ) ) / ( s ) ) *
1066 ( 1 - ( ( m1 + m2 ) * ( m1 + m2 ) ) / ( s ) ) ) );
double real(const EvtComplex &c)
EvtComplex exp(const EvtComplex &c)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
static const double twoPi
double m(EvtCyclic3::Index) const
double q(EvtCyclic3::Pair) const
double cosTh(EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes) const
EvtComplex sqrtCplx(const double in) const
EvtComplex propGauss(const double m0, const double s0, const double m) const
std::vector< EvtFlatteParam > m_flatteParams
EvtComplex propBreitWigner(const double m0, const double g0, const double m) const
EvtComplex lass(const EvtTwoBodyKine &kd, const EvtTwoBodyVertex &vd) const
EvtComplex propBreitWignerRelCoupled(const double m0, const EvtComplex &g1, const EvtComplex &g2, const double m) const
EvtSpinType::spintype m_spin
EvtComplex propGounarisSakurai(const double m0, const double g0, const double k0, const double m, const double g, const double k) const
EvtComplex numerator(const EvtDalitzPoint &p, const EvtTwoBodyVertex &vb, const EvtTwoBodyVertex &vd, const EvtTwoBodyKine &kb, const EvtTwoBodyKine &kd) const
EvtCyclic3::Pair m_pairRes
EvtComplex flatte(const double s) const
double GS_h(const double m, const double k) const
double GS_d(const double m0, const double k0) const
double GS_f(const double m0, const double g0, const double k0, const double m, const double k) const
EvtComplex mixFactor(const EvtComplex &prop, const EvtComplex &prop_mix) const
double angDep(const EvtDalitzPoint &p) const
EvtComplex propBreitWignerRel(const double m0, const double g0, const double m) const
EvtComplex psFactor(const double ma, const double mb, const double m) const
EvtComplex evaluate(const EvtDalitzPoint &p) const
EvtComplex Fvector(const double s, const int index) const
EvtCyclic3::Pair m_pairAng
double GS_dhods(const double m0, const double k0) const
static double getMass(EvtId i)
static EvtId getId(const std::string &name)
static int getSpin2(spintype stype)
double m(Index i=AB) const
double p(Index i=AB) const
double formFactor(EvtTwoBodyKine x) const
double widthFactor(EvtTwoBodyKine x) const
double phaseSpaceFactor(EvtTwoBodyKine x, EvtTwoBodyKine::Index) const
static double d(int j, int m1, int m2, double theta)
Index other(Index i, Index j)