Logo ROOT  
Reference Guide
RooBatchCompute::RooBatchComputeInterface Class Referenceabstract

The interface which should be implemented to provide optimised computation functions for implementations of RooAbsReal::evaluateSpan().

This interface contains the signatures of the compute functions of every PDF that has an optimised implementation available. These are the functions that perform the actual computations in batches.

Several implementations of this interface may be provided, e.g. SSE, AVX, AVX2 etc. At run time, the fastest implementation of this interface is selected, and using a virtual call, the computation is dispatched to the best backend.

See also
RooBatchCompute::dispatch, RooBatchComputeClass, RF_ARCH

Definition at line 37 of file RooBatchCompute.h.

Public Member Functions

virtual ~RooBatchComputeInterface ()=default
 
virtual RooSpan< doublecomputeArgusBG (const RooAbsReal *, RunContext &, RooSpan< const double > m, RooSpan< const double > m0, RooSpan< const double > c, RooSpan< const double > p)=0
 
virtual void computeBernstein (size_t batchSize, double *__restrict output, const double *__restrict const xData, double xmin, double xmax, std::vector< double > coef)=0
 
virtual RooSpan< doublecomputeBifurGauss (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > mean, RooSpan< const double > sigmaL, RooSpan< const double > sigmaR)=0
 
virtual RooSpan< doublecomputeBreitWigner (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > mean, RooSpan< const double > width)=0
 
virtual RooSpan< doublecomputeBukin (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > Xp, RooSpan< const double > sigp, RooSpan< const double > xi, RooSpan< const double > rho1, RooSpan< const double > rho2)=0
 
virtual RooSpan< doublecomputeCBShape (const RooAbsReal *, RunContext &, RooSpan< const double > m, RooSpan< const double > m0, RooSpan< const double > sigma, RooSpan< const double > alpha, RooSpan< const double > n)=0
 
virtual void computeChebychev (size_t batchSize, double *__restrict output, const double *__restrict const xData, double xmin, double xmax, std::vector< double > coef)=0
 
virtual RooSpan< doublecomputeChiSquare (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > ndof)=0
 
virtual RooSpan< doublecomputeDstD0BG (const RooAbsReal *, RunContext &, RooSpan< const double > dm, RooSpan< const double > dm0, RooSpan< const double > C, RooSpan< const double > A, RooSpan< const double > B)=0
 
virtual RooSpan< doublecomputeExponential (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > c)=0
 
virtual RooSpan< doublecomputeGamma (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > gamma, RooSpan< const double > beta, RooSpan< const double > mu)=0
 
virtual RooSpan< doublecomputeGaussian (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > mean, RooSpan< const double > sigma)=0
 
virtual RooSpan< doublecomputeJohnson (const RooAbsReal *, RunContext &, RooSpan< const double > mass, RooSpan< const double > mu, RooSpan< const double > lambda, RooSpan< const double > gamma, RooSpan< const double > delta, double massThreshold)=0
 
virtual RooSpan< doublecomputeLandau (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > mean, RooSpan< const double > sigma)=0
 
virtual RooSpan< doublecomputeLognormal (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > m0, RooSpan< const double > k)=0
 
virtual RooSpan< doublecomputeNovosibirsk (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > peak, RooSpan< const double > width, RooSpan< const double > tail)=0
 
virtual RooSpan< doublecomputePoisson (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > mean, bool protectNegative, bool noRounding)=0
 
virtual void computePolynomial (size_t batchSize, double *__restrict output, const double *__restrict const xData, int lowestOrder, std::vector< BracketAdapterWithMask > &coef)=0
 
virtual RooSpan< doublecomputeVoigtian (const RooAbsReal *, RunContext &, RooSpan< const double > x, RooSpan< const double > mean, RooSpan< const double > width, RooSpan< const double > sigma)=0
 

#include <RooBatchCompute.h>

Inheritance diagram for RooBatchCompute::RooBatchComputeInterface:
[legend]

Constructor & Destructor Documentation

◆ ~RooBatchComputeInterface()

virtual RooBatchCompute::RooBatchComputeInterface::~RooBatchComputeInterface ( )
virtualdefault

Member Function Documentation

◆ computeArgusBG()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeArgusBG ( const RooAbsReal ,
RunContext ,
RooSpan< const double m,
RooSpan< const double m0,
RooSpan< const double c,
RooSpan< const double p 
)
pure virtual

◆ computeBernstein()

virtual void RooBatchCompute::RooBatchComputeInterface::computeBernstein ( size_t  batchSize,
double *__restrict  output,
const double *__restrict const  xData,
double  xmin,
double  xmax,
std::vector< double coef 
)
pure virtual

◆ computeBifurGauss()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeBifurGauss ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double mean,
RooSpan< const double sigmaL,
RooSpan< const double sigmaR 
)
pure virtual

◆ computeBreitWigner()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeBreitWigner ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double mean,
RooSpan< const double width 
)
pure virtual

◆ computeBukin()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeBukin ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double Xp,
RooSpan< const double sigp,
RooSpan< const double xi,
RooSpan< const double rho1,
RooSpan< const double rho2 
)
pure virtual

◆ computeCBShape()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeCBShape ( const RooAbsReal ,
RunContext ,
RooSpan< const double m,
RooSpan< const double m0,
RooSpan< const double sigma,
RooSpan< const double alpha,
RooSpan< const double n 
)
pure virtual

◆ computeChebychev()

virtual void RooBatchCompute::RooBatchComputeInterface::computeChebychev ( size_t  batchSize,
double *__restrict  output,
const double *__restrict const  xData,
double  xmin,
double  xmax,
std::vector< double coef 
)
pure virtual

◆ computeChiSquare()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeChiSquare ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double ndof 
)
pure virtual

◆ computeDstD0BG()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeDstD0BG ( const RooAbsReal ,
RunContext ,
RooSpan< const double dm,
RooSpan< const double dm0,
RooSpan< const double C,
RooSpan< const double A,
RooSpan< const double B 
)
pure virtual

◆ computeExponential()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeExponential ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double c 
)
pure virtual

◆ computeGamma()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeGamma ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double gamma,
RooSpan< const double beta,
RooSpan< const double mu 
)
pure virtual

◆ computeGaussian()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeGaussian ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double mean,
RooSpan< const double sigma 
)
pure virtual

◆ computeJohnson()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeJohnson ( const RooAbsReal ,
RunContext ,
RooSpan< const double mass,
RooSpan< const double mu,
RooSpan< const double lambda,
RooSpan< const double gamma,
RooSpan< const double delta,
double  massThreshold 
)
pure virtual

◆ computeLandau()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeLandau ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double mean,
RooSpan< const double sigma 
)
pure virtual

◆ computeLognormal()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeLognormal ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double m0,
RooSpan< const double k 
)
pure virtual

◆ computeNovosibirsk()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeNovosibirsk ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double peak,
RooSpan< const double width,
RooSpan< const double tail 
)
pure virtual

◆ computePoisson()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computePoisson ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double mean,
bool  protectNegative,
bool  noRounding 
)
pure virtual

◆ computePolynomial()

virtual void RooBatchCompute::RooBatchComputeInterface::computePolynomial ( size_t  batchSize,
double *__restrict  output,
const double *__restrict const  xData,
int  lowestOrder,
std::vector< BracketAdapterWithMask > &  coef 
)
pure virtual

◆ computeVoigtian()

virtual RooSpan< double > RooBatchCompute::RooBatchComputeInterface::computeVoigtian ( const RooAbsReal ,
RunContext ,
RooSpan< const double x,
RooSpan< const double mean,
RooSpan< const double width,
RooSpan< const double sigma 
)
pure virtual

The documentation for this class was generated from the following file: