42 MATH_ERROR_MSG(
"DistSampler::SetRange",
"Need to set function before setting the range");
51 MATH_ERROR_MSG(
"DistSampler::SetRange",
"Need to set function before setting the range");
54 for (
unsigned int icoord = 0; icoord <
NDim(); ++icoord)
87 if (
NDim() == 0)
return false;
88 if (
fFunc == 0)
return false;
101 MATH_ERROR_MSG(
"DistSampler::Generate",
"unbin data not consistent with distribution");
106 MATH_WARN_MSG(
"DistSampler::Generate",
"sampler has not been initialized correctly");
111 for (
unsigned int i = 0; i < nevt; ++i) {
124 MATH_WARN_MSG(
"DistSampler::Generate",
"sampler has not been initialized correctly");
130 for (
unsigned int j = 0; j <
NDim(); ++j) {
131 ntotbins *= nbins[j];
136 std::vector<double> dx(
NDim() );
137 std::vector<double>
x(
NDim() );
138 double binVolume = 1;
139 for (
unsigned int j = 0; j < dx.size(); ++j) {
140 double x1 = 0,
x2 = 0;
142 MATH_WARN_MSG(
"DistSampler::Generate",
"sampler has not a range defined for all coordinates");
146 dx[j] = (
x2-
x1)/
double(nbins[j]);
147 assert(dx[j] > 0 && 1./dx[j] > 0 );
151 double nnorm = nevt * binVolume;
156 for (
int j =
NDim()-1; j >=0; --j) {
157 for (
int i = 0; i < nbins[j]; ++i) {
162 double nexp = yval * nnorm;
164 data.
Add(&x.front(), val, eval);
168 MATH_WARN_MSG(
"DistSampler::Generate",
"error returned from SampleBin");
174 MATH_WARN_MSG(
"DistSampler::Generate",
"generation with fixed events not yet impelmented");
void Initialize(unsigned int maxpoints, unsigned int dim=1, ErrorType err=kValueError)
preallocate a data set with given size , dimension and error type (to get the full point size) If the...
std::vector< double > fData
This namespace contains pre-defined functions to be used in conjuction with TExecutor::Map and TExecu...
const std::string & Algorithm() const
type of algorithm
const double * Sample()
sample one event and rerturning array x with coordinates
Class describing the unbinned data sets (just x coordinates values) of any dimensions.
#define MATH_WARN_MSG(loc, str)
virtual bool Generate(unsigned int nevt, ROOT::Fit::UnBinData &data)
generate a un-binned data sets (fill the given data set) if dataset has already data append to it ...
static const double x2[5]
unsigned int DataSize() const
return size of internal data vector (is 0 for external data)
virtual ~DistSampler()
virtual destructor
#define MATH_ERROR_MSG(loc, str)
void SetRange(unsigned int icoord, double xmin, double xmax)
set a range [xmin,xmax] for the new coordinate icoord If more range exists for other coordinates...
DistSampler options class.
virtual unsigned int NDim() const =0
Retrieve the dimension of the function.
unsigned int Size(unsigned int icoord=0) const
return range size for coordinate icoord (starts from zero) Size == 0 indicates no range is present [-...
ROOT::Fit::DataRange * fRange
unsigned int NDim() const
return the dimension of the parent distribution (and the data)
const ROOT::Math::IMultiGenFunction * fFunc
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
void SetRange(double xmin, double xmax, int icoord=0)
set range in a given dimension
static const double x1[5]
class describing the range in the coordinates it supports multiple range in a coordinate.
void Add(double x, double y)
add one dim data with only coordinate and values
void Add(double x)
add one dim coordinate data (unweighted)
double func(double *x, double *p)
void GetRange(unsigned int icoord, double &xmin, double &xmax) const
get the first range for given coordinate.
Namespace for new Math classes and functions.
virtual bool Init(const char *="")
initialize the generators with the given algorithm Implemented by derived classes who needs it (like ...
virtual bool SampleBin(double prob, double &value, double *error=0)
sample one bin given an estimated of the pdf in the bin (this can be function value at the center or ...
unsigned int NDim() const
get range dimension
virtual void DoSetFunction(const ROOT::Math::IMultiGenFunction &func, bool copy)
unsigned int PointSize() const
return point size.
Documentation for the abstract class IBaseFunctionMultiDim.
const ROOT::Math::IMultiGenFunction & ParentPdf() const
get the parent distribution function (must be called after setting the function)
virtual IBaseFunctionMultiDim * Clone() const =0
Clone a function.
void Initialize(unsigned int maxpoints, unsigned int dim=1, bool isWeighted=false)
preallocate a data set given size and dimension of the coordinates if a vector already exists with co...