13 #ifndef VOIGT_FUNCTION_HPP 14 #define VOIGT_FUNCTION_HPP 56 double sqrtS = sqrt(mSq);
63 double argu = sqrtS - mR;
64 double c = 1.0 / (sqrt(2.0) * sigma);
65 double a = c * 0.5 * wR;
67 std::complex<double> z(u, a);
69 double val = c * 1.0 / sqrt(M_PI) * v.real();
70 double sqrtVal = sqrt(val);
73 std::complex<double> invBW(argu, 0.5 * wR);
74 std::complex<double> BW = 1.0 / invBW;
75 double phi = std::arg(BW);
76 std::complex<double> result(sqrtVal * cos(phi), sqrtVal * sin(phi));
87 std::complex<double> g_final = sqrt(M_PI);
88 double g_production = 1;
89 result *= g_production;
92 assert((!std::isnan(result.real()) || !std::isinf(result.real())) &&
93 "Voigtian::dynamicalFunction() | Result is NaN or Inf!");
94 assert((!std::isnan(result.imag()) || !std::isinf(result.imag())) &&
95 "Voigtian::dynamicalFunction() | Result is NaN or Inf!");
111 "Voigtian" + name) {}
114 std::shared_ptr<ComPWA::FunctionTree::Parameter> &out);
cmplx FADDEEVA() w(cmplx z, double relerr)
std::shared_ptr< ComPWA::FunctionTree::TreeNode > createFunctionTree(InputInfo Params, std::shared_ptr< ComPWA::FunctionTree::Value< std::vector< double >>> InvMassSquared)
This file contains Functions implementing the Strategy interface so they can be used inside a node of...
VoigtianStrategy(std::string name="")
This file contains the declaration of the Faddeeva package, which is used only in the Voigtian class ...
ParType
Enums for the type of the parameter, should be extended if an new parameter type is added...
std::complex< double > dynamicalFunction(double mSq, double mR, double wR, double sigma)
Dynamical voigt function.
Virtual base class for operations of FunctionTree nodes.
Voigtian is the convolution of a non-relativisitc Breit-Wigner with a Gaussian, see Wikipedia In the...
This class provides a list of parameters and values of different types.