47 x(
"x",
"Dependent",this,_x),
48 mean(
"mean",
"Mean",this,_mean),
49 width(
"width",
"Breit-Wigner Width",this,_width),
50 sigma(
"sigma",
"Gauss Width",this,_sigma),
59 RooAbsPdf(other,
name),
x(
"x",this,other.
x), mean(
"mean",this,other.mean),
61 _doFast(other._doFast)
73 double coef= -0.5/(
s*
s);
74 double arg =
x -
mean;
77 if (
s==0. &&
w==0.)
return 1.;
80 if (
s==0.)
return (1./(arg*arg+0.25*
w*
w));
83 if (
w==0.)
return exp(coef*arg*arg);
86 double c = 1./(
sqrt(2.)*
s);
89 std::complex<double> z(u,
a) ;
90 std::complex<double>
v(0.) ;
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
virtual void compute(cudaStream_t *, Computer, RestrictArr, size_t, const VarVector &, const ArgVector &={})=0
auto & at(RooAbsArg const *arg, RooAbsArg const *=nullptr)
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 computeBatch(cudaStream_t *, double *output, size_t nEvents, RooFit::Detail::DataMap const &) 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.
RVec< PromoteType< T > > exp(const RVec< T > &v)
VecExpr< UnaryOp< Sqrt< T >, VecExpr< A, T, D >, T >, T, D > sqrt(const VecExpr< A, T, D > &rhs)
R__EXTERN RooBatchComputeInterface * dispatchCUDA
R__EXTERN RooBatchComputeInterface * dispatchCPU
This dispatch pointer points to an implementation of the compute library, provided one has been loade...
static constexpr double s