36 <<
"Too large number of coefficients!\n";
45 double* fpf,
double* f0f )
49 <<
"Wrong number of arguments for EvtBCLFF::getscalarff!\n";
56 const auto tplus = ( mB + mM ) * ( mB + mM );
57 const auto tzero = ( mB + mM ) * ( std::sqrt( mB ) - std::sqrt( mM ) ) *
58 ( std::sqrt( mB ) - std::sqrt( mM ) );
61 const auto pole = 1.0 / ( 1.0 - t / mR2 );
72 const auto N_fpf = bplus.size();
73 const auto N_f0f = bzero.size();
75 auto z = [tplus, tzero](
decltype( t ) q2 ) {
76 const auto term1 = std::sqrt( tplus - q2 );
77 const auto term2 = std::sqrt( tplus - tzero );
78 return ( term1 - term2 ) / ( term1 + term2 );
82 for (
unsigned int n = 0; n < N_fpf; ++n ) {
83 sum_fpf += bplus[n] * ( std::pow( z( t ), n ) -
84 std::pow( -1, n - N_fpf ) * n / N_fpf *
85 std::pow( z( t ), N_fpf ) );
87 *fpf = pole * sum_fpf;
90 for (
unsigned int n = 0; n < N_f0f; ++n ) {
91 sum_f0f += bzero[n] * std::pow( z( t ), n );
97 double* a1f,
double* a2f,
double* vf,
double* a0f )
101 <<
"Wrong number of arguments for EvtBCLFF::getvectorff!\n";
106 const auto mB2 = mB * mB;
108 const auto mM2 = mM * mM;
110 const auto tplus = ( mB + mM ) * ( mB + mM );
111 const auto tminus = ( mB - mM ) * ( mB - mM );
112 const auto tzero = tplus * ( 1.0 - std::sqrt( 1.0 - tminus / tplus ) );
119 const auto poleA0 = 1.0 / ( 1.0 - t / mR2A0 );
120 const auto poleA1 = 1.0 / ( 1.0 - t / mR2A1 );
121 const auto poleA12 = 1.0 / ( 1.0 - t / mR2A12 );
122 const auto poleV = 1.0 / ( 1.0 - t / mR2V );
124 const std::array<double, 3> A0{
136 auto z = [tplus, tzero](
decltype( t ) q2 ) {
137 const auto term1 = std::sqrt( tplus - q2 );
138 const auto term2 = std::sqrt( tplus - tzero );
139 return ( term1 - term2 ) / ( term1 + term2 );
142 auto sum = [&z](
decltype( t ) q2, std::array<double, 3> par ) {
144 for (
unsigned int n = 0; n < par.size(); ++n ) {
145 tot += par[n] * std::pow( z( q2 ) - z( 0.0 ), n );
150 auto kaellen = [mB, mM](
decltype( t ) q2 ) {
151 return ( ( mB + mM ) * ( mB + mM ) - q2 ) *
152 ( ( mB - mM ) * ( mB - mM ) - q2 );
155 const auto ffA0 = poleA0 * sum( t, A0 );
156 const auto ffA1 = poleA1 * sum( t, A1 );
157 const auto ffA12 = poleA12 * sum( t, A12 );
158 const auto ffV = poleV * sum( t, V );
160 const auto ffA2 = ( ( mB + mM ) * ( mB + mM ) * ( mB2 - mM2 - t ) * ffA1 -
161 ( 16 * mB * mM2 * ( mB + mM ) ) * ffA12 ) /
174 <<
"Not implemented :gettensorff in EvtBCLFF.\n";
182 <<
"Not implemented :getbaryonff in EvtBCLFF.\n";
187 double*,
double*,
double*,
double* )
190 <<
"Not implemented :getdiracff in EvtBCLFF.\n";
195 double*,
double*,
double*,
double*,
double*,
double* )
198 <<
"Not implemented :getraritaff in EvtBCLFF.\n";
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Not Implemented.
std::array< double, 19 > m_BCLFFCoefficients
Parameters passed to the model; BCL expansion coefficients.
int m_numBCLFFCoefficients
Total number of parameters passed to the model.
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
Not Implemented.
void getvectorff(EvtId parent, EvtId daughter, double t, double, double *a1f, double *a2f, double *vf, double *a0f) override
static constexpr double m_resonance1Minus
Mass of the 1- resonance for the parametrization of the vector FF.
EvtBCLFF(int numarg, double *arglist)
void getscalarff(EvtId parent, EvtId daughter, double t, double, double *fpf, double *f0f) override
static constexpr double m_resonance0Minus
Mass of the 0- resonance for the parametrization of the vector FF.
void gettensorff(EvtId parent, EvtId daughter, double t, double, double *hf, double *kf, double *bp, double *bm) override
Not Implemented.
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
Not Implemented.
static constexpr double m_resonance1Plus
Mass of the 1+ resonance for the parametrization of the vector FF.
static double getMeanMass(EvtId i)