LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
Performs a linear regression of data. More...
#include "SimpleFits.h"
Public Types | |
using | FitParameters_t = std::array< Data_t, NParams > |
type of set of fit parameters More... | |
using | FitMatrix_t = std::array< Data_t, sqr(NParams)> |
using | Data_t = typename Base_t::Data_t |
type of the data More... | |
using | MatrixOps = FastMatrixOperations< Data_t, NParams > |
using | Measurement_t = typename Collector_t::Measurement_t |
type of measurement without uncertainty More... | |
using | MeasurementAndUncertainty_t = typename Collector_t::MeasurementAndUncertainty_t |
type of measurement with uncertainty More... | |
Public Member Functions | |
Data_t | Intercept () const |
Returns the intercept of the fit. More... | |
Data_t | Slope () const |
Returns the slope of the fit. More... | |
Data_t | InterceptError () const |
Returns the error on intercept of the fit. More... | |
Data_t | SlopeError () const |
Returns the error in slope of the fit. More... | |
Data_t | InterceptSlopeCovariance () const |
Returns the covariance between intercept and slope of the fit. More... | |
virtual Data_t | ChiSquare () const override |
Returns the of the fit. More... | |
virtual bool | isValid () const override |
Returns if the fit has valid results. More... | |
bool | FillResults (FitParameters_t ¶ms, FitMatrix_t &Xmat, Data_t &det, FitMatrix_t &Smat) const override |
Fills the specified parameters. More... | |
bool | FillResults (FitParameters_t ¶ms, FitParameters_t ¶merrors, FitMatrix_t &Xmat, Data_t &det, FitMatrix_t &Smat) const override |
Fills the specified parameters. More... | |
bool | FillResults (FitParameters_t ¶ms, FitParameters_t ¶merrors) const override |
Fills the specified parameters. More... | |
virtual bool | FillResults (FitParameters_t ¶ms, FitMatrix_t &Xmat, Data_t &det, FitMatrix_t &Smat) const =0 |
Fills the specified parameters. More... | |
virtual bool | FillResults (FitParameters_t ¶ms, FitParameters_t ¶merrors, FitMatrix_t &Xmat, Data_t &det, FitMatrix_t &Smat) const =0 |
Fills the specified parameters. More... | |
virtual Data_t | Evaluate (Data_t x) const override |
Evaluates the fitted function at the specified point. More... | |
virtual Data_t | Evaluate (Data_t x) const =0 |
Evaluates the fitted function at the specified point. More... | |
Data_t | operator() (Data_t x) const |
Evaluates the fitted function; alias of Evaluate() More... | |
void | clear () |
Clears all the statistics. More... | |
template<typename Stream > | |
void | PrintStats (Stream &out) const |
Prints the collected statistics into a stream. More... | |
Fitting | |
virtual FitParameters_t | FitParameters () const override |
Computes and returns all the parameters of the fit result. More... | |
virtual FitParameters_t | FitParameterErrors () const override |
Computes and returns all the parameter errors of the fit result. More... | |
virtual FitMatrix_t | FitParameterCovariance () const override |
Computes and returns all the covariance matrix of the fit result. More... | |
virtual Data_t | FitParameter (unsigned int n) const override |
Returns the parameter n of the fit result. More... | |
virtual Data_t | FitParameterError (unsigned int n) const override |
Returns the error on parameter n of the fit result. More... | |
virtual int | NDF () const override |
Returns the degrees of freedom in the determination of the fit. More... | |
Add elements | |
| |
bool | add (Data_t x, Data_t y, Data_t sy=Data_t(1.0)) |
bool | add (Measurement_t value, Data_t sy=Data_t(1.0)) |
bool | add (MeasurementAndUncertainty_t value) |
template<typename Iter > | |
void | add_without_uncertainty (Iter begin, Iter end) |
template<typename Iter , typename Pred > | |
void | add_without_uncertainty (Iter begin, Iter end, Pred extractor) |
template<typename Cont , typename Pred > | |
void | add_without_uncertainty (Cont cont, Pred extractor) |
template<typename Cont > | |
void | add_without_uncertainty (Cont cont) |
template<typename VIter , typename UIter , typename VPred , typename UPred = identity> | |
unsigned int | add_with_uncertainty (VIter begin_value, VIter end_value, UIter begin_uncertainty, VPred value_extractor, UPred uncertainty_extractor=UPred()) |
template<typename Iter > | |
unsigned int | add_with_uncertainty (Iter begin, Iter end) |
template<typename Cont > | |
unsigned int | add_with_uncertainty (Cont cont) |
Statistic retrieval | |
| |
int | N () const |
Data_t | AverageUncertainty () const |
Static Public Member Functions | |
static FitParameters_t | ExtractParameterErrors (FitMatrix_t const &Smat) |
Extracts parameter errors from diagonal of the covarriance matrix. More... | |
static constexpr Data_t | sqr (Data_t v) |
Returns the square of the specified data value. More... | |
template<typename V > | |
static constexpr V | sqr (V const &v) |
Returns the square of the specified value. More... | |
static constexpr Data_t | cube (Data_t v) |
Returns the cube of the specified data value. More... | |
Static Public Attributes | |
static constexpr unsigned int | Degree |
Degree of the fit. More... | |
static constexpr unsigned int | NParams |
Number of parameters in the fit. More... | |
Protected Member Functions | |
virtual FitParameters_t | FitParameterErrors (FitMatrix_t const &Smat) const |
Computes and returns all the parameter errors of the fit result. More... | |
virtual FitMatrix_t | MakeMatrixX () const |
Fills and returns the matrix of x^n sum coefficients ( { x^(i+j) } ) More... | |
virtual FitParameters_t | MakeMatrixY () const |
Fills and returns the matrix (vector) of x^n y sum coefficients. More... | |
virtual Data_t | Determinant (FitMatrix_t const &mat) const |
Computes the determinant of a matrix. More... | |
virtual FitMatrix_t | InvertMatrix (FitMatrix_t const &mat, Data_t det) const |
Computes the inverse of a matrix (using provided determinant) More... | |
virtual FitMatrix_t | InvertMatrix (FitMatrix_t const &mat) const |
Computes the inverse of a matrix. More... | |
virtual FitParameters_t | MatrixProduct (FitMatrix_t const &mat, FitParameters_t const &vec) const |
Computes the product of a FitMatrix_t and a FitParameters_t. More... | |
Data_t | XN (unsigned int n) const |
Returns the weighted sum of x^n. More... | |
Data_t | XNY (unsigned int n) const |
Returns the weighted sum of x^n y. More... | |
Data_t | I () const |
Aliases. More... | |
Data_t | X () const |
Aliases. More... | |
Data_t | X2 () const |
Aliases. More... | |
Data_t | Y () const |
Aliases. More... | |
Data_t | XY () const |
Aliases. More... | |
Data_t | Y2 () const |
Aliases. More... | |
virtual FitParameters_t | FitParameters (FitMatrix_t const &Xmat) const |
Returns the fitted parameters using the provided information. More... | |
virtual FitParameters_t | FitParameters (FitMatrix_t const &Smat, Data_t) const |
Returns the fitted parameters using the provided information. More... | |
virtual Data_t | Param (unsigned int n, FitMatrix_t const &Xmat) const |
Computes a single fit parameter using the given information. More... | |
virtual Data_t | Param (unsigned int n, FitMatrix_t const &Xmat, Data_t detXmat) const |
Computes a single fit parameter using the given information. More... | |
Protected Attributes | |
Collector_t | stats |
statistics collected from fit data input More... | |
Private Types | |
using | Base_t = details::SimplePolyFitterBase< T, 1U > |
Performs a linear regression of data.
T | type of the quantities |
W | type of the weight (as T by default) |
The linear regression connects measurements with a parameter not affected by uncertainty. The returned parameters describe a straight line obtained by minimization of
This saves having to link to ROOT for the simplest cases.
This simple linear fitter does not store any result: each time a result is requested, it is computed anew. In particular that is true also for ChiSquare(), that requires the full parameters set and therefore reruns the full fit (FitParameters()) and for the covariance matrix of the parameters.
Definition at line 833 of file SimpleFits.h.
|
private |
Definition at line 834 of file SimpleFits.h.
using lar::util::details::SimplePolyFitterBase< T, D >::Data_t = typename Base_t::Data_t |
type of the data
Definition at line 649 of file SimpleFits.h.
using lar::util::LinearFit< T >::FitMatrix_t = std::array<Data_t, sqr(NParams)> |
Definition at line 851 of file SimpleFits.h.
using lar::util::LinearFit< T >::FitParameters_t = std::array<Data_t, NParams> |
type of set of fit parameters
Definition at line 850 of file SimpleFits.h.
|
inherited |
Definition at line 465 of file SimpleFits.h.
|
inherited |
type of measurement without uncertainty
Definition at line 352 of file SimpleFits.h.
|
inherited |
type of measurement with uncertainty
Definition at line 355 of file SimpleFits.h.
|
inlineinherited |
Definition at line 363 of file SimpleFits.h.
Referenced by cluster::ClusterParamsAlg::IntegrateFitCharge().
|
inlineinherited |
Definition at line 365 of file SimpleFits.h.
|
inlineinherited |
Definition at line 367 of file SimpleFits.h.
|
inlineinherited |
Definition at line 394 of file SimpleFits.h.
|
inlineinherited |
Definition at line 405 of file SimpleFits.h.
|
inlineinherited |
Definition at line 411 of file SimpleFits.h.
|
inlineinherited |
Definition at line 370 of file SimpleFits.h.
|
inlineinherited |
Definition at line 376 of file SimpleFits.h.
|
inlineinherited |
Definition at line 382 of file SimpleFits.h.
|
inlineinherited |
Definition at line 388 of file SimpleFits.h.
|
inlineinherited |
Definition at line 427 of file SimpleFits.h.
|
overridevirtual |
Returns the of the fit.
Reimplemented from lar::util::details::SimplePolyFitterBase< T, 1U >.
Definition at line 1690 of file SimpleFits.h.
References lar::util::details::FitDataCollector< T, D >::sqr(), X2, Y, and lar::util::details::FitDataCollector< T, D >::Y2().
|
inlineinherited |
Clears all the statistics.
Definition at line 419 of file SimpleFits.h.
|
inlinestaticinherited |
Returns the cube of the specified data value.
Definition at line 603 of file SimpleFits.h.
|
inlineprotectedvirtualinherited |
Computes the determinant of a matrix.
Definition at line 607 of file SimpleFits.h.
|
pure virtualinherited |
Evaluates the fitted function at the specified point.
x | the point where to evaluate the fit function |
No check is performed whether the fit is valid.
|
overridevirtualinherited |
Evaluates the fitted function at the specified point.
x | the point where to evaluate the fit function |
No check is performed whether the fit is valid.
|
staticinherited |
Extracts parameter errors from diagonal of the covarriance matrix.
|
pure virtualinherited |
Fills the specified parameters.
params | the fitted values of the parameters |
Xmat | the matrix of the x^n/s^2 sums |
Smat | the covariance matrix |
det | the determinant of Xmat |
|
pure virtualinherited |
Fills the specified parameters.
params | the fitted values of the parameters |
paramerrors | the uncertainty on the fitted parameters |
Xmat | the matrix of the x^n/s^2 sums |
Smat | the covariance matrix |
det | the determinant of Xmat |
|
overrideinherited |
Fills the specified parameters.
params | the fitted values of the parameters |
Xmat | the matrix of the x^n/s^2 sums |
Smat | the covariance matrix |
det | the determinant of Xmat |
|
overrideinherited |
Fills the specified parameters.
params | the fitted values of the parameters |
paramerrors | the uncertainty on the fitted parameters |
Xmat | the matrix of the x^n/s^2 sums |
Smat | the covariance matrix |
det | the determinant of Xmat |
|
overridevirtualinherited |
Fills the specified parameters.
params | the fitted values of the parameters |
paramerrors | the uncertainty on the fitted parameters |
Implements lar::util::details::SimpleFitterInterface< T, D+1 >.
|
overridevirtualinherited |
Returns the parameter n of the fit result.
n | degree of the parameter; must be no larger than Degree |
std::range_error | if there is no unique solution |
Reimplemented from lar::util::details::SimpleFitterInterface< T, D+1 >.
|
overridevirtualinherited |
Computes and returns all the covariance matrix of the fit result.
std::range_error | if there is no unique solution |
The matrix is symmetric, and stored in a linear way (say, first row, then second row).
Implements lar::util::details::SimpleFitterInterface< T, D+1 >.
|
overridevirtualinherited |
Returns the error on parameter n of the fit result.
n | degree of the parameter; must be no larger than Degree |
std::range_error | if there is no unique solution |
Reimplemented from lar::util::details::SimpleFitterInterface< T, D+1 >.
|
overridevirtualinherited |
Computes and returns all the parameter errors of the fit result.
std::range_error | if there is no unique solution |
Implements lar::util::details::SimpleFitterInterface< T, D+1 >.
|
inlineprotectedvirtualinherited |
Computes and returns all the parameter errors of the fit result.
Definition at line 785 of file SimpleFits.h.
|
overridevirtualinherited |
Computes and returns all the parameters of the fit result.
std::range_error | if there is no unique solution |
Implements lar::util::details::SimpleFitterInterface< T, D+1 >.
Referenced by cluster::ClusterParamsAlg::IntegrateFitCharge().
|
protectedvirtualinherited |
Returns the fitted parameters using the provided information.
|
protectedvirtualinherited |
Returns the fitted parameters using the provided information.
|
inlineprotected |
Aliases.
Definition at line 902 of file SimpleFits.h.
|
inline |
Returns the intercept of the fit.
std::range_error | if there is no unique solution |
Definition at line 860 of file SimpleFits.h.
|
inline |
Returns the error on intercept of the fit.
std::range_error | if there is no unique solution |
Definition at line 874 of file SimpleFits.h.
|
inline |
Returns the covariance between intercept and slope of the fit.
std::range_error | if there is no unique solution |
Definition at line 888 of file SimpleFits.h.
|
inlineprotectedvirtualinherited |
Computes the inverse of a matrix (using provided determinant)
Definition at line 613 of file SimpleFits.h.
|
inlineprotectedvirtualinherited |
Computes the inverse of a matrix.
Definition at line 619 of file SimpleFits.h.
|
overridevirtualinherited |
Returns if the fit has valid results.
The fit has no valid results if:
Note that checking point 2 is expensive in terms of time.
Implements lar::util::details::SimpleFitterInterface< T, D+1 >.
|
protectedvirtualinherited |
Fills and returns the matrix of x^n sum coefficients ( { x^(i+j) } )
|
protectedvirtualinherited |
Fills and returns the matrix (vector) of x^n y sum coefficients.
|
inlineprotectedvirtualinherited |
Computes the product of a FitMatrix_t and a FitParameters_t.
Definition at line 625 of file SimpleFits.h.
|
inlineinherited |
Definition at line 425 of file SimpleFits.h.
|
inlineoverridevirtualinherited |
Returns the degrees of freedom in the determination of the fit.
The return value may be 0 or negative if insufficient points have been added.
Implements lar::util::details::SimpleFitterInterface< T, D+1 >.
Definition at line 725 of file SimpleFits.h.
|
inlineinherited |
Evaluates the fitted function; alias of Evaluate()
Definition at line 597 of file SimpleFits.h.
|
protectedvirtualinherited |
Computes a single fit parameter using the given information.
|
protectedvirtualinherited |
Computes a single fit parameter using the given information.
|
inlineinherited |
Prints the collected statistics into a stream.
Definition at line 433 of file SimpleFits.h.
|
inline |
Returns the slope of the fit.
std::range_error | if there is no unique solution |
Definition at line 867 of file SimpleFits.h.
|
inline |
Returns the error in slope of the fit.
std::range_error | if there is no unique solution |
Definition at line 881 of file SimpleFits.h.
|
inlinestaticinherited |
Returns the square of the specified value.
Definition at line 440 of file SimpleFits.h.
References sqr().
|
inlinestaticinherited |
Returns the square of the specified data value.
Definition at line 600 of file SimpleFits.h.
|
inlineprotected |
Aliases.
Definition at line 903 of file SimpleFits.h.
|
inlineprotected |
Aliases.
Definition at line 904 of file SimpleFits.h.
|
inlineprotectedinherited |
Returns the weighted sum of x^n.
Definition at line 449 of file SimpleFits.h.
References lar::util::details::FitDataCollector< T, D >::XN().
|
inlineprotectedinherited |
Returns the weighted sum of x^n y.
Definition at line 452 of file SimpleFits.h.
References lar::util::details::FitDataCollector< T, D >::XNY().
|
inlineprotected |
Aliases.
Definition at line 906 of file SimpleFits.h.
|
inlineprotected |
Aliases.
Definition at line 905 of file SimpleFits.h.
|
inlineprotected |
Aliases.
Definition at line 907 of file SimpleFits.h.
|
staticinherited |
Degree of the fit.
Definition at line 644 of file SimpleFits.h.
|
staticinherited |
Number of parameters in the fit.
Definition at line 647 of file SimpleFits.h.
|
protectedinherited |
statistics collected from fit data input
Definition at line 446 of file SimpleFits.h.