31 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
32 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
47 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
48 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
59 unsigned int maxpoints,
unsigned int dim,
ErrorType err ) :
60 FitData( opt, range, maxpoints, dim ),
63 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
64 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
76 const double *
ex ,
const double * eval ) :
79 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
80 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
85 if (
nullptr != eval )
114 const double * val,
const double *
ex ,
const double *
ey,
115 const double * eval ) :
117 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
118 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
123 if (
nullptr != eval )
129 if (
nullptr !=
ex ||
nullptr !=
ey )
152 const double * dataZ,
const double * val,
const double *
ex ,
153 const double *
ey ,
const double * ez ,
const double * eval ) :
155 fDataErrorPtr( nullptr ), fDataErrorHighPtr( nullptr ), fDataErrorLowPtr( nullptr ),
156 fpTmpCoordErrorVector( nullptr ), fpTmpBinEdgeVector( nullptr )
161 if (
nullptr != eval )
167 if (
nullptr !=
ex ||
nullptr !=
ey ||
nullptr != ez )
202 for (
unsigned int i=0; i <
fDim; i++ )
226 fDataErrorPtr(nullptr), fDataErrorHighPtr(nullptr), fDataErrorLowPtr(nullptr),
227 fpTmpCoordErrorVector(nullptr), fpTmpBinEdgeVector(nullptr)
275 if ( !
fData.empty() )
283 for (
unsigned int i = 0; i <
fDim; i++) {
365 for (
unsigned int i=0; i <
fNPoints; i++ )
367 double val =
fData[i];
371 MATH_ERROR_MSG(
"BinData::TransformLog",
"Some points have negative values - cannot apply a log transformation");
375 fData[i] = std::log( val );
499 if (
y != 0 || eyl != 1.0 || eyh != 1.0)
fSumError2 += (eyl+eyh)*(eyl+eyh)/4;
540 if (val != 0 || eval != 1.0)
fSumError2 += eval*eval;
542 if (val != 0 && std::abs( eval*eval/val - 1.0) > 1.E-12)
fIsWeighted =
true;
560 for(
unsigned int i=0; i<
fDim; i++ )
571 if (val != 0 || eval != 1.0)
fSumError2 += eval*eval;
573 if (val != 0 && std::abs( eval*eval/val - 1.0) > 1.E-12)
fIsWeighted =
true;
579 void BinData::Add(
const double*
x,
double val,
const double*
ex,
double elval,
double ehval )
592 for(
unsigned int i=0; i<
fDim; i++ )
604 if (val != 0 || elval != 1.0 || ehval != 1.0 )
622 for (
unsigned int i=0; i<
fDim; i++ )
633 double binVolume = 1.0;
634 for (
unsigned int j = 0; j <
fDim; j++ )
636 binVolume *= ( xup[j] - xlow[j] );
685 for(
unsigned int i=0; i <
fDim; i++ )
731 for(
unsigned int i=0; i<
fDim; i++ )
755 assert(
fData.empty() );
763 for (
unsigned int i=0; i <
fDim; i++ )
781 for (
unsigned int i=0; i <
fNPoints; i++ )
790 for(
unsigned int i=0; i <
fDim; i++ )
817 unsigned int n =
Size();
821 for (
unsigned int i = 0; i <
n; ++i) {
823 double err =
Error(i);
831 for (
unsigned int i = 0; i <
n; ++i) {
834 double elval,ehval = 0;
836 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)
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
DataOptions : simple structure holding the options on how the data are filled.