75 :
RooAbsPdf(
name, title), x_(
"x",
"Dependent",
this,
x), x0_(
"x0",
"X0",
this, x0),
76 sigmaL_(
"sigmaL",
"Left Sigma",
this, sigmaL), sigmaR_(
"sigmaR",
"Right Sigma",
this, sigmaR),
77 alphaL_{
"alphaL",
"Left Alpha",
this, alphaL}, nL_{
"nL",
"Left Order",
this, nL},
78 alphaR_{std::make_unique<
RooRealProxy>(
"alphaR",
"Right Alpha",
this, alphaR)},
103 :
RooAbsPdf(
name, title), x_(
"x",
"Dependent",
this,
x), x0_(
"x0",
"X0",
this, x0),
105 alphaL_{
"alphaL",
"Left Alpha",
this, alphaL}, nL_{
"nL",
"Left Order",
this, nL},
106 alphaR_{std::make_unique<
RooRealProxy>(
"alphaR",
"Right Alpha",
this, alphaR)},
130 :
RooAbsPdf(
name, title), x_(
"x",
"Dependent",
this,
x), x0_(
"x0",
"X0",
this, x0),
132 alphaL_{
"alphaL",
"Left Alpha",
this, alpha},
133 nL_{
"nL",
"Left Order",
this,
n}
136 alphaR_ = std::make_unique<RooRealProxy>(
"alphaR",
"Right Alpha",
this, alpha);
137 nR_ = std::make_unique<RooRealProxy>(
"nR",
"Right Order",
this,
n);
165 double a = std::pow(
n / alpha,
n) * std::exp(-0.5 * alpha * alpha);
166 double b =
n / alpha - alpha;
168 return a / std::pow(
b - t,
n);
171inline double integrateGaussian(
double sigmaL,
double sigmaR,
double tmin,
double tmax)
174 constexpr double sqrt2 = 1.4142135624;
176 const double sigmaMin = tmin < 0 ? sigmaL : sigmaR;
177 const double sigmaMax = tmax < 0 ? sigmaL : sigmaR;
184 double a = std::pow(
n / alpha,
n) * exp(-0.5 * alpha * alpha);
185 double b =
n / alpha - alpha;
187 return a *
sigma * (log(
b - tmin) - log(
b - tmax));
192 double a = std::pow(
n / alpha,
n) * exp(-0.5 * alpha * alpha);
193 double b =
n / alpha - alpha;
195 return a *
sigma / (1.0 -
n) * (1.0 / (std::pow(
b - tmin,
n - 1.0)) - 1.0 / (std::pow(
b - tmax,
n - 1.0)));
205 const double x0 =
x0_;
225 return std::exp(-0.5 * t * t);
244 const double x0 =
x0_;
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Abstract interface for all probability density functions.
Abstract base class for objects that represent a real value and implements functionality common to al...
bool matchArgs(const RooArgSet &allDeps, RooArgSet &numDeps, const RooArgProxy &a) const
Utility function for use in getAnalyticalIntegral().
RooArgSet is a container object that can hold multiple RooAbsArg objects.
PDF implementing the generalized Asymmetrical Double-Sided Crystall Ball line shape.
std::unique_ptr< RooRealProxy > nR_
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=nullptr) const override
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
RooAbsReal const * nR() const
RooAbsReal const * alphaR() const
RooAbsReal const & sigmaR() const
std::unique_ptr< RooRealProxy > alphaR_
RooAbsReal const & nL() const
RooAbsReal const & x0() const
RooAbsReal const & x() const
double maxVal(Int_t code) const override
Return maximum value for set of observables identified by code assigned in getMaxVal.
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
RooAbsReal const & sigmaL() const
Int_t getMaxVal(const RooArgSet &vars) const override
Advertise that we know the maximum of self for given (m0,alpha,n,sigma).
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
RooAbsReal const & alphaL() const
double max(const char *rname=nullptr) const
Query upper limit of range. This requires the payload to be RooAbsRealLValue or derived.
double min(const char *rname=nullptr) const
Query lower limit of range. This requires the payload to be RooAbsRealLValue or derived.
void checkRangeOfParameters(const RooAbsReal *callingClass, std::initializer_list< const RooAbsReal * > pars, double min=-std::numeric_limits< double >::max(), double max=std::numeric_limits< double >::max(), bool limitsInAllowedRange=false, std::string const &extraMessage="")
Check if the parameters have a range, and warn if the range extends below / above the set limits.