13#ifndef ROOT_Fit_FitData
14#define ROOT_Fit_FitData
70 explicit FitData(
unsigned int maxpoints = 0,
unsigned int dim = 1);
73 explicit FitData(
const DataOptions &opt,
unsigned int maxpoints = 0,
unsigned int dim = 1);
77 explicit FitData(
const DataRange &range,
unsigned int maxpoints = 0,
unsigned int dim = 1);
81 unsigned int maxpoints = 0,
unsigned int dim = 1);
84 FitData(
unsigned int n,
const double *dataX);
87 FitData(
unsigned int n,
const double *dataX,
const double *dataY);
90 FitData(
unsigned int n,
const double *dataX,
const double *dataY,
98 FitData(
const DataRange &range,
unsigned int maxpoints,
const double *dataX);
105 FitData(
const DataRange &range,
unsigned int maxpoints,
const double *dataX,
const double *dataY);
112 FitData(
const DataRange &range,
unsigned int maxpoints,
const double *dataX,
const double *dataY,
113 const double *dataZ);
122 template<
class Iterator>
123 FitData(
unsigned int n,
unsigned int dim, Iterator dataItr) :
132 for (
unsigned int i = 0; i <
fDim; i++) {
149 template<
class Iterator>
150 FitData(
const DataRange &range,
unsigned int maxpoints,
unsigned int dim, Iterator dataItr) :
171 void Append(
unsigned int newPoints,
unsigned int dim = 1);
186 for (
unsigned int i = 0; i <
fDim; i++) {
199 template<
class Iterator>
202 for (
unsigned int i = 0; i <
fMaxPoints; i++) {
203 bool isInside =
true;
204 Iterator tmpItr = dataItr;
206 for (
unsigned int j = 0; j <
fDim; j++)
212 for (
unsigned int k = 0; k <
fDim; k++)
232 assert(icoord <
fDim);
246 const double *
Coords(
unsigned int ipoint)
const
251 for (
unsigned int i = 0; i <
fDim; i++) {
285 for (
unsigned int i = 0; i <
fDim; i++) {
352 for (
unsigned int i = 0; i <
fDim; i++) {
370 unsigned padding = 0;
371 unsigned modP = (dataSize) % vecCore::VectorSize<ROOT::Double_v>();
373 padding = vecCore::VectorSize<ROOT::Double_v>() - modP;
class describing the range in the coordinates it supports multiple range in a coordinate.
bool IsInside(double x, unsigned int icoord=0) const
check if a point is inside the range for the given coordinate
Base class for all the fit data types: Stores the coordinates and the DataOptions.
double * fpTmpCoordVector
FitData(unsigned int n, unsigned int dim, Iterator dataItr)
constructor for multi-dim external data (data are not copied inside) Uses as argument an iterator of ...
unsigned int Size() const
return number of fit points
void InitCoordsVector()
initializer routines to set the corresponding pointers right The vectors must NOT be resized after th...
void Add(double x)
add one dim data with only coordinate and values
void Append(unsigned int newPoints, unsigned int dim=1)
std::vector< std::vector< double > > fCoords
This vector stores the vectorizable data: The inner vectors contain the coordinates data fCoords[0] i...
std::vector< const double * > fCoordsPtr
static constexpr unsigned VectorPadding(const unsigned)
If VecCore is not defined, there is no vectorization available and the SIMD vector size will always b...
const double * GetCoordComponent(unsigned int ipoint, unsigned int icoord) const
returns a single coordinate component of a point.
void InitFromRange(Iterator dataItr)
unsigned int NPoints() const
return number of fit points
void Add(const double *x)
add multi-dim coordinate data with only value
const std::vector< const double * > & GetCoordDataPtrs() const
direct access to coord data ptrs
FitData(const DataRange &range, unsigned int maxpoints, unsigned int dim, Iterator dataItr)
constructor for multi-dim external data and a range (data are copied inside according to the range) U...
unsigned int NDim() const
return coordinate data dimension
FitData & operator=(const FitData &rhs)
const DataOptions & Opt() const
access to options
const double * Coords(unsigned int ipoint) const
return a pointer to the coordinates data for the given fit point
const DataRange & Range() const
access to range
virtual ~FitData()
dummy virtual destructor
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
DataOptions : simple structure holding the options on how the data are filled.