29 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
30 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
45 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
46 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
57 unsigned int maxpoints,
unsigned int dim,
ErrorType err ) :
58 FitData( opt, range, maxpoints, dim ),
61 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
62 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
74 const double *
ex ,
const double * eval ) :
77 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
78 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
83 if (
nullptr != eval )
112 const double * val,
const double *
ex ,
const double *
ey,
113 const double * eval ) :
115 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
116 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
121 if (
nullptr != eval )
127 if (
nullptr !=
ex ||
nullptr !=
ey )
150 const double * dataZ,
const double * val,
const double *
ex ,
151 const double *
ey ,
const double * ez ,
const double * eval ) :
153 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
154 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
159 if (
nullptr != eval )
165 if (
nullptr !=
ex ||
nullptr !=
ey ||
nullptr != ez )
200 for (
unsigned int i=0; i <
fDim; i++ )
224 fDataErrorPtr(nullptr), fDataErrorHighPtr(nullptr), fDataErrorLowPtr(nullptr),
225 fpTmpCoordErrorVector(nullptr), fpTmpBinEdgeVector(nullptr)
273 if ( !
fData.empty() )
281 for (
unsigned int i = 0; i <
fDim; i++) {
363 for (
unsigned int i=0; i <
fNPoints; i++ )
365 double val =
fData[i];
369 MATH_ERROR_MSG(
"BinData::TransformLog",
"Some points have negative values - cannot apply a log transformation");
373 fData[i] = std::log( val );
497 if (
y != 0 || eyl != 1.0 || eyh != 1.0)
fSumError2 += (eyl+eyh)*(eyl+eyh)/4;
538 if (val != 0 || eval != 1.0)
fSumError2 += eval*eval;
540 if (val != 0 && std::abs( eval*eval/val - 1.0) > 1.E-12)
fIsWeighted =
true;
558 for(
unsigned int i=0; i<
fDim; i++ )
569 if (val != 0 || eval != 1.0)
fSumError2 += eval*eval;
571 if (val != 0 && std::abs( eval*eval/val - 1.0) > 1.E-12)
fIsWeighted =
true;
577 void BinData::Add(
const double*
x,
double val,
const double*
ex,
double elval,
double ehval )
590 for(
unsigned int i=0; i<
fDim; i++ )
602 if (val != 0 || elval != 1.0 || ehval != 1.0 )
620 for (
unsigned int i=0; i<
fDim; i++ )
631 double binVolume = 1.0;
632 for (
unsigned int j = 0; j <
fDim; j++ )
634 binVolume *= ( xup[j] - xlow[j] );
683 for(
unsigned int i=0; i <
fDim; i++ )
729 for(
unsigned int i=0; i<
fDim; i++ )
753 assert(
fData.empty() );
761 for (
unsigned int i=0; i <
fDim; i++ )
779 for (
unsigned int i=0; i <
fNPoints; i++ )
788 for(
unsigned int i=0; i <
fDim; i++ )
815 unsigned int n =
Size();
819 for (
unsigned int i = 0; i <
n; ++i) {
821 double err =
Error(i);
829 for (
unsigned int i = 0; i <
n; ++i) {
832 double elval,ehval = 0;
834 if (
y != 0 || elval != 1.0 || ehval != 1.0)
#define MATH_ERROR_MSG(loc, str)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
const double * fDataErrorHighPtr
~BinData() override
destructor
std::vector< double > fData
Stores the data values the same way as the coordinates.
bool HasBinEdges() const
query if the data store the bin edges instead of the center
std::vector< const double * > fCoordErrorsPtr
void Append(unsigned int newPoints, unsigned int dim=1, ErrorType err=kValueError)
Equivalent to Initialize()
std::vector< double > fDataErrorLow
void AddBinUpEdge(const double *xup)
add the bin width data, a pointer to an array with the bin upper edge information.
const double * fDataErrorLowPtr
std::vector< double > fDataErrorHigh
BinData & LogTransform()
apply a Log transformation of the data values can be used for example when fitting an exponential or ...
BinData(unsigned int maxpoints=0, unsigned int dim=1, ErrorType err=kValueError)
constructor from dimension of point and max number of points (to pre-allocate vector) Give a zero val...
double * fpTmpCoordErrorVector
not threadsafe stuff!
bool fIsWeighted
flag to indicate weighted data
std::vector< std::vector< double > > fCoordErrors
void Add(double x, double y)
add one dim data with only coordinate and values
double fSumContent
total sum of the bin data content
BinData & operator=(const BinData &rhs)
assignment operator
std::vector< std::vector< double > > fBinEdge
void GetAsymError(unsigned int ipoint, double &lowError, double &highError) const
double fRefVolume
reference bin volume - used to normalize the bins in case of variable bins data
const double * fDataErrorPtr
double fSumError2
total sum square of the errors
double * fpTmpBinEdgeVector
not threadsafe stuff!
std::vector< double > fDataError
double Error(unsigned int ipoint) const
Return the error on the given point.
class describing the range in the coordinates it supports multiple range in a coordinate.
Base class for all the fit data types: Stores the coordinates and the DataOptions.
unsigned int Size() const
return number of fit points
void Add(double x)
add one dim data with only coordinate and values
void Append(unsigned int newPoints, unsigned int dim=1)
static constexpr unsigned VectorPadding(const unsigned)
If VecCore is not defined, there is no vectorization available and the SIMD vector size will always b...
FitData & operator=(const FitData &rhs)
const double * Coords(unsigned int ipoint) const
return a pointer to the coordinates data for the given fit point
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.