|
EvtGen
2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
|
Go to the documentation of this file. 37 #define PRECISION ( 1.e-3 ) 45 NumType typeN, double f_b, double f_d ) : 53 _massFirst( dp.m( first( pairRes ) ) ), 54 _massSecond( dp.m( second( pairRes ) ) ), 61 _coupling2( Undefined ), 77 _scaleByMOverQ( false ), 85 assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I && 86 _typeN != K_MATRIX_II ); 92 NumType typeN, double m0_mix, double g0_mix, 101 _massFirst( dp.m( first( pairRes ) ) ), 102 _massSecond( dp.m( second( pairRes ) ) ), 105 _delta_mix( delta_mix ), 109 _coupling2( Undefined ), 112 _kmatrix_index( -1 ), 125 _scaleByMOverQ( false ), 134 assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II ); 140 double m0, NumType typeN, double g1, double g2, 141 CouplingType coupling2 ) : 149 _massFirst( dp.m( first( pairRes ) ) ), 150 _massSecond( dp.m( second( pairRes ) ) ), 157 _coupling2( coupling2 ), 160 _kmatrix_index( -1 ), 173 _scaleByMOverQ( false ), 181 assert( _coupling2 != Undefined ); 182 assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I && 183 _typeN != K_MATRIX_II ); 184 assert( _typeN != LASS ); 185 assert( _typeN != NBW ); 190 std::string nameIndex, NumType typeN, 199 _massFirst( dp.m( first( pairRes ) ) ), 200 _massSecond( dp.m( second( pairRes ) ) ), 207 _coupling2( Undefined ), 210 _kmatrix_index( -1 ), 211 _fr12prod( fr12prod ), 212 _fr13prod( fr13prod ), 213 _fr14prod( fr14prod ), 214 _fr15prod( fr15prod ), 223 _scaleByMOverQ( false ), 226 assert( _typeN == K_MATRIX || _typeN == K_MATRIX_I || _typeN == K_MATRIX_II ); 228 if ( nameIndex == "Pole1" ) 230 else if ( nameIndex == "Pole2" ) 232 else if ( nameIndex == "Pole3" ) 234 else if ( nameIndex == "Pole4" ) 236 else if ( nameIndex == "Pole5" ) 238 else if ( nameIndex == "f11prod" ) 246 double g0, double a, double r, double B, 247 double phiB, double R, double phiR, double cutoff, 248 bool scaleByMOverQ ) : 254 _massFirst( dp.m( first( pairRes ) ) ), 255 _massSecond( dp.m( second( pairRes ) ) ), 262 _coupling2( Undefined ), 265 _kmatrix_index( -1 ), 278 _scaleByMOverQ( scaleByMOverQ ), 294 _massFirst( dp.m( first( pairRes ) ) ), 295 _massSecond( dp.m( second( pairRes ) ) ), 302 _coupling2( Undefined ), 305 _kmatrix_index( -1 ), 318 _scaleByMOverQ( false ), 342 return lass( m * m ); 365 double g = ( _g0 <= 0. || _vd. pD() <= 0. ) 444 << "EvtDalitzReso:evaluate(): PANIC, wrong coupling2 state." 481 if ( m > ( ma + mb ) ) { 487 double phaseFactor_analyticalCont = 488 -0.5 * ( sqrt( 4 * ma * ma / s - 1 ) + sqrt( 4 * mb * mb / s - 1 ) ); 489 return EvtComplex( phaseFactor_analyticalCont, 0 ); 494 double& mb2, double& m ) 504 exp( -( m - m0 ) * ( m - m0 ) / 2. / ( s0 * s0 ) ); 516 const double& g0, const double& m ) 519 return 1. / ( m0 * m0 - m * m - EvtComplex( 0., m0 * g0 ) ); 527 return 1. / ( m0 * m0 - m * m - EvtComplex( 0., m0 ) * g0 ); 536 return 1. / ( m0 * m0 - m * m - ( g1 + g2 ) ); 540 const double& k0, const double& m, 541 const double& g, const double& k ) 545 return ( 1. + GS_d( m0, k0 ) * g0 / m0 ) / 547 GS_f( m0, g0, k0, m, k ) ); 551 const double& k0, const double& m, 558 return g0 * m0 * m0 / ( k0 * k0 * k0 ) * 559 ( k * k * ( GS_h( m, k ) - GS_h( m0, k0 ) ) + 560 ( m0 * m0 - m * m ) * k0 * k0 * GS_dhods( m0, k0 ) ); 571 return GS_h( m0, k0 ) * ( 0.125 / ( k0 * k0 ) - 0.5 / ( m0 * m0 ) ) + 578 log( ( m0 + 2. * k0 ) / ( 2. * _massFirst ) ) + 625 double mA = x. m( iA ); 626 double mB = x. m( iB ); 627 double mC = x. m( iC ); 628 double qAB = x. q( combine( iA, iB ) ); 629 double qBC = x. q( combine( iB, iC ) ); 630 double qCA = x. q( combine( iC, iA ) ); 638 double mA2 = mA * mA; 639 double mB2 = mB * mB; 640 double mC2 = mC * mC; 645 ret = qCA - qBC + ( M2 - mC2 ) * ( mB2 - mA2 ) / m02; 647 double x1 = qBC - qCA + ( M2 - mC2 ) * ( mA2 - mB2 ) / m02; 648 double x2 = M2 - mC2; 649 double x3 = qAB - 2 * M2 - 2 * mC2 + x2 * x2 / m02; 650 double x4 = mA2 - mB2; 651 double x5 = qAB - 2 * mB2 - 2 * mA2 + x4 * x4 / m02; 652 ret = x1 * x1 - x3 * x5 / 3.; 664 double cosTh = x. cosTh( 666 if ( fabs( cosTh ) > 1. ) { 679 return 1 / ( 1 - Delta * Delta * prop * prop_mix ) * 680 ( 1 + _amp_mix * Delta * prop_mix ); 685 assert( index >= 1 && index <= 6 ); 704 if ( solution == 0 ) { 705 std::cout << "EvtDalitzReso::Fvector() error. Kmatrix solution incorrectly chosen ! " 710 if ( solution == 3 ) { 750 } else if ( solution == 1 ) { 791 } else if ( solution == 2 ) { 834 double rho1sq, rho2sq, rho4sq, rho5sq; 839 double mpi = 0.13957; 840 double mK = 0.493677; 841 double meta = 0.54775; 842 double metap = 0.95778; 846 for ( int i = 0; i < 5; i++ ) { 847 for ( int j = 0; j < 5; j++ ) { 854 double s_scatt = 0.0; 857 else if ( solution == 1 ) 859 else if ( solution == 2 ) 863 if ( solution == 3 ) { 869 } else if ( solution == 1 ) { 875 } else if ( solution == 2 ) { 889 rho1sq = 1. - pow( mpi + mpi, 2 ) / s; 895 rho2sq = 1. - pow( mK + mK, 2 ) / s; 904 double real = 1.2274 + .00370909 / ( s * s ) - .111203 / s - 905 6.39017 * s + 16.8358 * s * s - 21.8845 * s * s * s + 906 11.3153 * s * s * s * s; 907 double cont32 = sqrt( 1.0 - ( 16.0 * mpi * mpi ) ); 910 rho[2] = EvtComplex( sqrt( 1. - 16. * mpi * mpi / s ), 0 ); 912 rho4sq = 1. - pow( meta + meta, 2 ) / s; 918 rho5sq = 1. - pow( meta + metap, 2 ) / s; 924 double smallTerm = 1; 927 for ( int pole = 0; pole < 5; pole++ ) 928 if ( fabs( pow( ma[pole], 2 ) - s ) < PRECISION ) 929 smallTerm = pow( ma[pole], 2 ) - s; 933 for ( int i = 0; i < 5; i++ ) { 934 for ( int j = 0; j < 5; j++ ) { 935 for ( int pole_index = 0; pole_index < 5; pole_index++ ) { 936 double A = g[pole_index][i] * g[pole_index][j]; 937 double B = ma[pole_index] * ma[pole_index] - s; 948 for ( int i = 0; i < 5; i++ ) { 949 for ( int j = 0; j < 5; j++ ) { 950 double C = f[i][j] * ( 1.0 - s_scatt ); 951 double D = ( s - s_scatt ); 958 for ( int i = 0; i < 5; i++ ) { 959 for ( int j = 0; j < 5; j++ ) { 960 double E = ( s - ( sa * mpi * mpi * 0.5 ) ) * ( 1.0 - sa_0 ); 961 double F = ( s - sa_0 ); 972 for ( int row = 0; row < 5; row++ ) 973 for ( int col = 0; col < 5; col++ ) 974 mat( row, col ) = ( row == col ) * smallTerm - 975 EvtComplex( 0., 1. ) * K[row][col] * rho[col]; 979 vector<EvtComplex> U1j; 980 for ( int j = 0; j < 5; j++ ) 981 U1j.push_back( ( *matInverse )[0][j] ); 989 for ( int j = 0; j < 5; j++ ) { 991 double bottom = ma[index - 1] * ma[index - 1] - s; 996 value += top / bottom * smallTerm; 1020 double cot_deltaB = 1.0 / ( _a * q ) + 0.5 * _r * q; 1021 double deltaB = atan( 1.0 / cot_deltaB ); 1022 double totalB = deltaB + _phiB; 1025 double deltaR = atan( ( _m0 * GammaM / ( _m0 * _m0 - s ) ) ); 1026 double totalR = deltaR + _phiR; 1034 EvtComplex( cos( 2 * totalB ), sin( 2 * totalB ) ); 1043 T *= ( sqrt( s ) / q ); 1052 for ( vector<EvtFlatteParam>::const_iterator param = _flatteParams.begin(); 1054 double m1 = ( *param ).m1(); 1055 double m2 = ( *param ).m2(); 1056 double g = ( *param ).g(); 1058 sqrtCplx( ( 1 - ( ( m1 - m2 ) * ( m1 - m2 ) ) / ( m * m ) ) * 1059 ( 1 - ( ( m1 + m2 ) * ( m1 + m2 ) ) / ( m * m ) ) ) );
std::vector< EvtFlatteParam > _flatteParams
EvtComplex sqrtCplx(double in)
double GS_d(const double &m0, const double &k0)
EvtComplex propGauss(const double &m0, const double &s0, const double &m)
EvtSpinType::spintype _spin
EvtComplex mixFactor(EvtComplex prop, EvtComplex prop_mix)
EvtComplex evaluate(const EvtDalitzPoint &p)
double m(EvtCyclic3::Index) const
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
EvtCyclic3::Pair _pairAng
Pair combine(Index i, Index j)
EvtComplex lass(double s)
EvtComplex Fvector(double s, int index)
static const double twoPi
double GS_h(const double &m, const double &k)
double formFactor(EvtTwoBodyKine x) const
EvtComplex propGounarisSakurai(const double &m0, const double &g0, const double &k0, const double &m, const double &g, const double &k)
double m(EvtCyclic3::Index i) const
double widthFactor(EvtTwoBodyKine x) const
EvtComplex propBreitWigner(const double &m0, const double &g0, const double &m)
EvtComplex propBreitWignerRel(const double &m0, const double &g0, const double &m)
Index common(Pair i, Pair j)
EvtComplex propBreitWignerRelCoupled(const double &m0, const EvtComplex &g1, const EvtComplex &g2, const double &m)
double GS_f(const double &m0, const double &g0, const double &k0, const double &m, const double &k)
EvtCyclic3::Pair _pairRes
static EvtId getId(const std::string &name)
static int getSpin2(spintype stype)
double angDep(const EvtDalitzPoint &p)
EvtComplex exp(const EvtComplex &c)
EvtComplex flatte(const double &m)
double q(EvtCyclic3::Pair) const
double p(Index i=AB) const
EvtComplex psFactor(double &ma, double &mb, double &m)
double cosTh(EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes) const
static double getMass(EvtId i)
static double d(int j, int m1, int m2, double theta)
EvtComplex numerator(const EvtDalitzPoint &p, const EvtTwoBodyKine &vb, const EvtTwoBodyKine &vd)
double real(const EvtComplex &c)
Index other(Index i, Index j)
double GS_dhods(const double &m0, const double &k0)
double phaseSpaceFactor(EvtTwoBodyKine x, EvtTwoBodyKine::Index) const
|