13#ifndef ROOT_Math_TUnuranMultiContDist
14#define ROOT_Math_TUnuranMultiContDist
92 unsigned int NDim()
const {
120 if (
fXmin.empty() || (
fXmin.size() !=
fXmax.size() ) )
return nullptr;
127 if (
fXmax.empty() || (
fXmin.size() !=
fXmax.size() ) )
return nullptr;
137 if (
fMode.empty())
return nullptr;
138 return &
fMode.front();
150 double Pdf (
const double *
x)
const;
155 void Gradient(
const double *
x,
double * grad)
const;
160 double Derivative(
const double *
x,
int icoord)
const;
#define ClassDefOverride(name, id)
Documentation for the abstract class IBaseFunctionMultiDim.
virtual unsigned int NDim() const =0
Retrieve the dimension of the function.
TUnuranBaseDist, base class for Unuran distribution classes such as TUnuranContDist (for one-dimensio...
TUnuranMultiContDist class describing multi dimensional continuous distributions.
bool fIsLogPdf
flag to control if function pointer represent log of pdf
void SetMode(const double *x)
set the mode of the distribution (coordinates of the distribution maximum values)
double Derivative(const double *x, int icoord) const
evaluate the partial derivative for the given coordinate.
std::vector< double > fXmax
vector with upper x values of the domain
void Gradient(const double *x, double *grad) const
evaluate the gradient vector of the Pdf.
std::vector< double > fXmin
vector with lower x values of the domain
std::vector< double > fMode
vector representing the x coordinates of the maximum of the pdf
TUnuranMultiContDist & operator=(const TUnuranMultiContDist &rhs)
Assignment operator.
const double * GetMode() const
get the mode (vector of coordinate positions of the maxima of the distribution) If a mode has not def...
bool fOwnFunc
flag to indicate if class manages the function pointers
void SetDomain(const double *xmin, const double *xmax)
set the domain of the distribution giving an array of minimum and maximum values By default otherwise...
const ROOT::Math::IMultiGenFunction * fPdf
unsigned int NDim() const
get number of dimension of the distribution
const double * GetUpperDomain() const
get the distribution upper domain values.
TUnuranMultiContDist * Clone() const override
Clone (required by base class)
const double * GetLowerDomain() const
get the distribution lower domain values.
bool IsLogPdf() const
flag to control if given function represent the log of a pdf
~TUnuranMultiContDist() override
Destructor.