1#ifndef AMPGEN_ERRORPROPAGATOR_H
2#define AMPGEN_ERRORPROPAGATOR_H
45 return getError( std::function<
double(
void)>(
fcn) );
49 double getError(
const std::function<
double(
void)>&
fcn )
const;
52 std::vector<double>
getVectorError(
const std::function<std::vector<double>(
void)>&
fcn,
size_t RANK )
const;
55 std::vector<double>
combinationWeights(
const std::vector<std::function<
double(
void)>>& functions );
67 const TMatrixD&
cov()
const;
68 const std::map<std::string, size_t>
posMap()
const;
69 const std::vector<MinuitParameter*>&
params()
const;
73 std::vector<MinuitParameter*> m_parameters;
75 template <
class FCN>
double derivative( FCN
fcn,
const size_t& i )
const
77 double startingValue = m_parameters[i]->mean();
78 m_parameters[i]->setCurrentFitVal( startingValue + std::sqrt( m_cov( i, i ) ) );
79 double plus_variation =
fcn();
80 m_parameters[i]->setCurrentFitVal( startingValue - std::sqrt( m_cov( i, i ) ) );
81 double minus_variation =
fcn();
82 m_parameters[i]->setCurrentFitVal( startingValue );
83 return ( plus_variation - minus_variation ) / ( 2 * std::sqrt( m_cov( i, i ) ) );
91 const std::vector<MinuitParameter*>& params,
98 std::vector<MinuitParameter*> m_parameters;
99 std::vector<double> m_startingValues;
101 TMatrixD m_decomposedCholesky;
108 TMatrixD
correlationMatrix(
const std::vector<std::function<
double(
void)>>& functions, TRandom3* rnd,
const unsigned& nSamples = 50000);
110 std::function<double(
void)> m_fcn;
112 std::vector<MinuitParameter*> m_parameters;
GaussErrorPropagator(const TMatrixD &reducedCovariance, const std::vector< MinuitParameter * > ¶ms, TRandom3 *rnd)
LinearErrorPropagator(const MinuitParameterSet ¶ms)
Constructor for LinearErrorPropagator, taking a covariance matrix and a vector parameters.
LinearErrorPropagator(const TMatrixD &reducedCovarianceMatrix, const std::vector< MinuitParameter * > ¶ms)
Calculates the uncertainty on functor fcn.
double getError(const std::function< double(void)> &fcn) const
Calculate the uncertainties on a functor that returns a vector of size RANK.
const std::map< std::string, size_t > posMap() const
std::pair< double, double > combinationCovWeighted(const std::vector< std::function< double(void)> > &functions)
Calculate the covariance-matrix weighted combination of functor set functions.
double operator()(FCN fcn) const
Calculates the error on functor fcn (should take no arguments and return a double).
const TMatrixD & cov() const
TMatrixD correlationMatrix(const std::vector< std::function< double(void)> > &functions)
Calculate the correlation matrix of functor set functions.
const std::vector< MinuitParameter * > & params() const
std::vector< double > combinationWeights(const std::vector< std::function< double(void)> > &functions)
Calculate the variance-covariance matrix of functor set functions.
TMatrixD covarianceMatrix(const std::vector< std::function< double(void)> > &functions)
LinearErrorPropagator(const std::vector< MinuitParameter * > ¶ms)
< Constructor for LinearErrorPropagator taking a vector of free parameters, assumes a diagonal covari...
void add(const LinearErrorPropagator &p2)
std::vector< double > getVectorError(const std::function< std::vector< double >(void)> &fcn, size_t RANK) const
TMatrixD correlationMatrix(const std::vector< std::function< double(void)> > &functions, TRandom3 *rnd, const unsigned &nSamples=50000)
NonlinearErrorPropagator(const std::function< double(void)> &, const TMatrixD &, const std::vector< MinuitParameter * > &)