60 x(
"x",
"Dependent",this,_x),
61 mean(
"mean",
"Mean",this,_mean),
62 width(
"width",
"Breit-Wigner Width",this,_width),
63 sigma(
"sigma",
"Gauss Width",this,_sigma),
72 RooAbsPdf(other,
name),
x(
"x",this,other.
x), mean(
"mean",this,other.mean),
74 _doFast(other._doFast)
86 double coef= -0.5/(s*s);
87 double arg =
x -
mean;
90 if (s==0. &&
w==0.)
return 1.;
93 if (s==0.)
return (1./(arg*arg+0.25*
w*
w));
96 if (
w==0.)
return std::exp(coef*arg*arg);
99 double c = 1./(sqrt(2.)*s);
102 std::complex<double> z(u,
a) ;
103 std::complex<double>
v(0.) ;
118 {ctx.at(x), ctx.at(mean), ctx.at(width), ctx.at(sigma)});
Abstract interface for all probability density functions.
Abstract base class for objects that represent a real value and implements functionality common to al...
std::span< double > output()
RooBatchCompute::Config config(RooAbsArg const *arg) const
static std::complex< double > faddeeva(std::complex< double > z)
evaluate Faddeeva function for complex argument
static std::complex< double > faddeeva_fast(std::complex< double > z)
evaluate Faddeeva function for complex argument (fast version)
RooVoigtian is an efficient implementation of the convolution of a Breit-Wigner with a Gaussian,...
void doEval(RooFit::EvalContext &) const override
Compute multiple values of Voigtian distribution.
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
void compute(Config cfg, Computer comp, std::span< double > output, VarSpan vars, ArgSpan extraArgs={})