62 double* fp,
double* f0 )
65 const double r = mass / mb;
66 const double w = ( ( mb * mb ) + ( mass * mass ) - t ) / ( 2.0 * mb * mass );
67 const double z = ( std::sqrt( w + 1.0 ) - sqrt( 2. ) ) /
68 ( std::sqrt( w + 1.0 ) + std::sqrt( 2. ) );
69 const double p_i = 1.0;
71 const double phi_sub = ( 1.0 + r ) * ( 1.0 - z ) +
72 2.0 * std::sqrt( r ) * ( 1.0 + z );
73 const double g_sub = ( 4.0 * r ) / std::pow( 1.0 + r, 2 );
74 const double phi_p = 1.1213 * std::pow( 1.0 + z, 2. ) * sqrt( 1.0 - z ) *
75 std::pow( phi_sub, -5 );
76 const double phi_0 = 0.5299 * ( 1.0 + z ) * std::pow( 1.0 - z, 1.5 ) *
77 std::pow( phi_sub, -4 );
92 double* a1f,
double* a2f,
double* vf,
double* a0f )
95 double w = ( ( mb * mb ) + ( mass * mass ) - t ) / ( 2. * mb * mass );
100 const double r = mass / mb;
101 const double z = ( std::sqrt( w + 1. ) - std::sqrt( 2. ) ) /
102 ( std::sqrt( w + 1 ) + std::sqrt( 2. ) );
103 const double rstar = ( 2. * std::sqrt( mb * mass ) ) / ( mb + mass );
104 constexpr double chiT_plus33 = 5.28e-4;
105 constexpr double chiT_minus33 = 3.07e-4;
106 constexpr double n_i = 2.6;
107 constexpr double axialvector_poles[4]{ 6.730, 6.736, 7.135, 7.142 };
108 constexpr double vector_poles[4]{ 6.337, 6.899, 7.012, 7.280 };
110 const double c_0 = ( mb - mass ) / mb * std::sqrt( 0.5 ) /
111 ( 1.0 + r + 2. * std::sqrt( r ) ) *
m_b_0;
113 const double phi_g = std::sqrt( 256. * n_i / ( 3. * M_PI * chiT_plus33 ) ) *
114 r * r * ( 1. + z ) * ( 1. + z ) / std::sqrt( 1. - z ) /
115 std::pow( ( 1. + r ) * ( 1. - z ) +
116 2. * std::sqrt( r ) * ( 1. + z ),
119 1. / ( mb * mb ) * std::sqrt( 16. * n_i / ( 3. * M_PI * chiT_minus33 ) ) *
120 r * ( 1. + z ) * std::pow( 1. - z, 1.5 ) /
121 std::pow( ( 1. + r ) * ( 1. - z ) + 2. * std::sqrt( r ) * ( 1. + z ), 4. );
122 const double phi_F1 =
123 1. / ( mb * mb * mb ) *
124 std::sqrt( 8. * n_i / ( 3. * M_PI * chiT_minus33 ) ) * r * ( 1. + z ) *
125 std::pow( 1. - z, 2.5 ) /
126 std::pow( ( 1. + r ) * ( 1. - z ) + 2 * std::sqrt( r ) * ( 1. + z ), 5. );
130 const double term3 = std::sqrt( ( mb + mass ) * ( mb + mass ) -
131 ( mb - mass ) * ( mb - mass ) );
133 for (
int i = 0; i < 4; i++ ) {
134 const double term1 = std::sqrt( ( mb + mass ) * ( mb + mass ) -
135 vector_poles[i] * vector_poles[i] );
136 const double term2 = std::sqrt( ( mb + mass ) * ( mb + mass ) -
137 axialvector_poles[i] *
138 axialvector_poles[i] );
139 const double z_p1 = ( term1 - term3 ) / ( term1 + term3 );
140 p_g = p_g * ( z - z_p1 ) / ( 1 - z * z_p1 );
141 const double z_p2 = ( term2 - term3 ) / ( term2 + term3 );
142 p_f = p_f * ( z - z_p2 ) / ( 1 - z * z_p2 );
145 const double g = 1. / p_g / phi_g * (
m_a_0 +
m_a_1 * z );
146 const double f = 1. / p_f / phi_f * (
m_b_0 +
m_b_1 * z );
147 const double F1 = 1. / p_f / phi_F1 * ( c_0 +
m_c_1 * z +
m_c_2 * z * z );
149 const double ha1 = f / std::sqrt( mb * mass ) / ( 1. + w );
150 const double r1 = ( w + 1. ) * mb * mass * g / f;
151 const double r2 = ( w - r ) / ( w - 1.0 ) - F1 / mb / ( w - 1.0 ) / f;
153 *a1f = ( w + 1. ) / 2. * rstar * ha1;
154 *a2f = ( r2 / rstar ) * ha1;
155 *vf = ( r1 / rstar ) * ha1;
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
EvtBGLFF(double bglap_0, double bglap_1, double bglap_2, double bglap_3, double bgla0_0, double bgla0_1, double bgla0_2, double bgla0_3)
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override