46 x (
"x" ,
"Dependent" , this, _x),
47 mean (
"mean" ,
"Mean" , this, _mean),
48 sigmaL(
"sigmaL",
"Left Sigma" , this, _sigmaL),
49 sigmaR(
"sigmaR",
"Right Sigma", this, _sigmaR)
57 RooAbsPdf(other,
name),
x(
"x",this,other.
x), mean(
"mean",this,other.mean),
58 sigmaL(
"sigmaL",this,other.sigmaL), sigmaR(
"sigmaR", this, other.sigmaR)
79 return exp(coef*arg*arg);
87template<
class Tx,
class Tm,
class Tsl,
class Tsr>
88void compute(
size_t batchSize,
89 double * __restrict
output,
90 Tx X, Tm M, Tsl SL, Tsr SR)
92 for (
size_t i=0; i<batchSize; i++) {
93 const double arg = X[i]-M[i];
94 output[i] = arg / ((arg < 0.0)*SL[i] + (arg >= 0.0)*SR[i]);
97 for (
size_t i=0; i<batchSize; i++) {
98 if (X[i]-M[i]>1
e-30 || X[i]-M[i]<-1
e-30) {
118 if (info.
nBatches==1 && !xData.empty()) {
119 compute(info.
size,
output.data(), xData.data(),
180 return integral*rootPiBy2;
double atan2(double, double)
RooSpan< double > makeWritableBatchUnInit(std::size_t begin, std::size_t batchSize)
Make a batch and return a span pointing to the pdf-local memory.
Little adapter that gives a bracket operator to types that don't have one.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Bool_t matchArgs(const RooArgSet &allDeps, RooArgSet &numDeps, const RooArgProxy &a) const
Utility function for use in getAnalyticalIntegral().
BatchHelpers::BatchData _batchData
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Bifurcated Gaussian p.d.f with different widths on left and right side of maximum value.
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
Double_t evaluate() const
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
RooSpan< double > evaluateBatch(std::size_t begin, std::size_t batchSize) const
Evaluate function for a batch of input data points.
Double_t analyticalIntegral(Int_t code, const char *rangeName=0) const
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
static std::complex< double > erf(const std::complex< double > z)
complex erf function
A simple container to hold a batch of data values.
Double_t min(const char *rname=0) const
Query lower limit of range. This requires the payload to be RooAbsRealLValue or derived.
RooSpan< const double > getValBatch(std::size_t begin, std::size_t batchSize) const
Double_t max(const char *rname=0) const
Query upper limit of range. This requires the payload to be RooAbsRealLValue or derived.
EvaluateInfo getInfo(std::vector< const RooRealProxy * > parameters, size_t begin, size_t batchSize)
static void output(int code)