Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Minuit2] Code improvements #17869

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions math/minuit2/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ if(CMAKE_PROJECT_NAME STREQUAL ROOT)
Minuit2/GradientCalculator.h
Minuit2/HessianGradientCalculator.h
Minuit2/InitialGradientCalculator.h
Minuit2/MPIProcess.h
Minuit2/MinimumBuilder.h
Minuit2/MinimumError.h
Minuit2/MinimumErrorUpdator.h
Expand Down Expand Up @@ -75,23 +74,21 @@ if(CMAKE_PROJECT_NAME STREQUAL ROOT)
Minuit2/MnMinos.h
Minuit2/MnParabola.h
Minuit2/MnParabolaFactory.h
Minuit2/MnParabolaPoint.h
Minuit2/MnParameterScan.h
Minuit2/MnPlot.h
Minuit2/MnPoint.h
Minuit2/MnPosDef.h
Minuit2/MnPrint.h
Minuit2/MnScan.h
Minuit2/MnSeedGenerator.h
Minuit2/MnSimplex.h
Minuit2/MnStrategy.h
Minuit2/MnTiny.h
Minuit2/MnTraceObject.h
Minuit2/MnUserCovariance.h
Minuit2/MnUserFcn.h
Minuit2/MnUserParameterState.h
Minuit2/MnUserParameters.h
Minuit2/MnUserTransformation.h
Minuit2/MnVectorTransform.h
Minuit2/ModularFunctionMinimizer.h
Minuit2/NegativeG2LineSearch.h
Minuit2/Numerical2PGradientCalculator.h
Expand Down Expand Up @@ -150,7 +147,6 @@ if(CMAKE_PROJECT_NAME STREQUAL ROOT)
src/MnScan.cxx
src/MnSeedGenerator.cxx
src/MnStrategy.cxx
src/MnTiny.cxx
src/MnTraceObject.cxx
src/MnUserFcn.cxx
src/MnUserParameterState.cxx
Expand Down
4 changes: 0 additions & 4 deletions math/minuit2/doc/Minuit2.md
Original file line number Diff line number Diff line change
Expand Up @@ -1872,8 +1872,6 @@ The user's model function is a Gaussian.
GaussFunction(double mean, double sig, double constant) :
theMean(mean), theSigma(sig), theConstant(constant) {}

~GaussFunction() {}

double m() const {return theMean;}
double s() const {return theSigma;}
double c() const {return theConstant;}
Expand Down Expand Up @@ -1917,8 +1915,6 @@ The user's `FCN` (GaussFcn) to calculate the $\chi^2$
theMVariances(mvar),
theErrorDef(1.) {}

~GaussFcn() {}

virtual double up() const {return theErrorDef;}
virtual double operator()(const std::vector<double>&) const;

Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/AnalyticalGradientCalculator.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ class AnalyticalGradientCalculator : public GradientCalculator {
{
}

~AnalyticalGradientCalculator() override {}

FunctionGradient operator()(const MinimumParameters &) const override;

FunctionGradient operator()(const MinimumParameters &, const FunctionGradient &) const override;
Expand Down
7 changes: 0 additions & 7 deletions math/minuit2/inc/Minuit2/BFGSErrorUpdator.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,8 @@ namespace Minuit2 {
Update of the covariance matrix for the Variable Metric minimizer (MIGRAD)
*/
class BFGSErrorUpdator : public MinimumErrorUpdator {

public:
BFGSErrorUpdator() {}

~BFGSErrorUpdator() override {}

MinimumError Update(const MinimumState &, const MinimumParameters &, const FunctionGradient &) const override;

private:
};

} // namespace Minuit2
Expand Down
4 changes: 0 additions & 4 deletions math/minuit2/inc/Minuit2/CombinedMinimizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ namespace Minuit2 {
class CombinedMinimizer : public ModularFunctionMinimizer {

public:
CombinedMinimizer() : fMinSeedGen(MnSeedGenerator()), fMinBuilder(CombinedMinimumBuilder()) {}

~CombinedMinimizer() override {}

const MinimumSeedGenerator &SeedGenerator() const override { return fMinSeedGen; }
const MinimumBuilder &Builder() const override { return fMinBuilder; }
MinimumBuilder &Builder() override { return fMinBuilder; }
Expand Down
4 changes: 0 additions & 4 deletions math/minuit2/inc/Minuit2/CombinedMinimumBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@ namespace Minuit2 {
class CombinedMinimumBuilder : public MinimumBuilder {

public:
CombinedMinimumBuilder() : fVMMinimizer(VariableMetricMinimizer()), fSimplexMinimizer(SimplexMinimizer()) {}

~CombinedMinimumBuilder() override {}

FunctionMinimum Minimum(const MnFcn &, const GradientCalculator &, const MinimumSeed &, const MnStrategy &,
unsigned int, double) const override;

Expand Down
7 changes: 0 additions & 7 deletions math/minuit2/inc/Minuit2/DavidonErrorUpdator.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,8 @@ namespace Minuit2 {
Update of the covariance matrix for the Variable Metric minimizer (MIGRAD)
*/
class DavidonErrorUpdator : public MinimumErrorUpdator {

public:
DavidonErrorUpdator() {}

~DavidonErrorUpdator() override {}

MinimumError Update(const MinimumState &, const MinimumParameters &, const FunctionGradient &) const override;

private:
};

} // namespace Minuit2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ class ExternalInternalGradientCalculator : public AnalyticalGradientCalculator {
{
}

~ExternalInternalGradientCalculator() override {}

FunctionGradient operator()(const MinimumParameters &) const override;

FunctionGradient operator()(const MinimumParameters &, const FunctionGradient &) const override;
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/FCNGradAdapter.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ class FCNGradAdapter : public FCNBase {
public:
FCNGradAdapter(const Function &f, double up = 1.) : fFunc(f), fUp(up), fGrad(std::vector<double>(fFunc.NDim())) {}

~FCNGradAdapter() override {}

bool HasGradient() const override { return true; }

double operator()(std::vector<double> const& v) const override { return fFunc.operator()(&v[0]); }
Expand Down
4 changes: 0 additions & 4 deletions math/minuit2/inc/Minuit2/FumiliBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,6 @@ section 5
class FumiliBuilder : public MinimumBuilder {

public:
FumiliBuilder() : fEstimator(VariableMetricEDMEstimator()), fErrorUpdator(FumiliErrorUpdator()) {}

~FumiliBuilder() override {}

/**

Class the member function calculating the Minimum and verifies the result
Expand Down
4 changes: 0 additions & 4 deletions math/minuit2/inc/Minuit2/FumiliChi2FCN.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,6 @@ section 5
class FumiliChi2FCN : public FumiliFCNBase {

public:
FumiliChi2FCN() {}

~FumiliChi2FCN() override {}

/**

Sets the model function for the data (for example gaussian+linear for a peak)
Expand Down
6 changes: 0 additions & 6 deletions math/minuit2/inc/Minuit2/FumiliErrorUpdator.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,6 @@ section 5
class FumiliErrorUpdator : public MinimumErrorUpdator {

public:
FumiliErrorUpdator() {}

~FumiliErrorUpdator() override {}

/**

Member function that calculates the Error matrix (or the Hessian
Expand Down Expand Up @@ -88,8 +84,6 @@ class FumiliErrorUpdator : public MinimumErrorUpdator {
*/

MinimumError Update(const MinimumState &, const MinimumParameters &, const FunctionGradient &) const override;

private:
};

} // namespace Minuit2
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/FumiliFCNBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,6 @@ class FumiliFCNBase : public FCNBase {

// FumiliFCNBase(const ParametricFunction& modelFCN) { fModelFunction = &modelFCN; }

~FumiliFCNBase() override {}

/**

Evaluate function Value, Gradient and Hessian using Fumili approximation, for values of parameters p
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/FumiliGradientCalculator.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ class FumiliGradientCalculator : public AnalyticalGradientCalculator {
public:
FumiliGradientCalculator(const FumiliFCNBase &fcn, const MnUserTransformation &trafo, int n);

~FumiliGradientCalculator() override {}

FunctionGradient operator()(const MinimumParameters &) const override;

FunctionGradient operator()(const MinimumParameters &, const FunctionGradient &) const override;
Expand Down
23 changes: 1 addition & 22 deletions math/minuit2/inc/Minuit2/InitialGradientCalculator.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,9 @@ namespace ROOT {

namespace Minuit2 {

class MnFcn;
class MnUserTransformation;
class MnMachinePrecision;

/**
Class to calculate an initial estimate of the gradient
*/
class InitialGradientCalculator : public GradientCalculator {

public:
InitialGradientCalculator(const MnFcn &fcn, const MnUserTransformation &par) : fFcn(fcn), fTransformation(par) {}

FunctionGradient operator()(const MinimumParameters &) const override;

FunctionGradient operator()(const MinimumParameters &, const FunctionGradient &) const override;

const MnFcn &Fcn() const { return fFcn; }
const MnUserTransformation &Trafo() const { return fTransformation; }
const MnMachinePrecision &Precision() const;

private:
const MnFcn &fFcn;
const MnUserTransformation &fTransformation;
};
FunctionGradient calculateInitialGradient(const MinimumParameters &, const MnUserTransformation &, double errorDef);

} // namespace Minuit2

Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/MinosError.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ class MinosError {
{
}

~MinosError() {}

MinosError(const MinosError &err)
: fParameter(err.fParameter), fMinParValue(err.fMinParValue), fUpper(err.fUpper), fLower(err.fLower)
{
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/MinuitParameter.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ class MinuitParameter {
}
}

~MinuitParameter() {}

MinuitParameter(const MinuitParameter &par)
: fNum(par.fNum), fValue(par.fValue), fError(par.fError), fConst(par.fConst), fFix(par.fFix),
fLoLimit(par.fLoLimit), fUpLimit(par.fUpLimit), fLoLimValid(par.fLoLimValid), fUpLimValid(par.fUpLimValid),
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/MnContours.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,6 @@ class MnContours {
{
}

~MnContours() {}

/// ask for one Contour (points only) from number of points (>=4) and parameter indices
std::vector<std::pair<double, double>> operator()(unsigned int, unsigned int, unsigned int npoints = 20) const;

Expand Down
7 changes: 0 additions & 7 deletions math/minuit2/inc/Minuit2/MnCovarianceSqueeze.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,12 @@ class MinimumError;
removing the corresponding row and index
*/
class MnCovarianceSqueeze {

public:
MnCovarianceSqueeze() {}

~MnCovarianceSqueeze() {}

MnUserCovariance operator()(const MnUserCovariance &, unsigned int) const;

MinimumError operator()(const MinimumError &, unsigned int) const;

MnAlgebraicSymMatrix operator()(const MnAlgebraicSymMatrix &, unsigned int) const;

private:
};

} // namespace Minuit2
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/MnCross.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,6 @@ class MnCross {
{
}

~MnCross() {}

MnCross(const MnCross &cross)
: fValue(cross.fValue), fState(cross.fState), fNFcn(cross.fNFcn), fValid(cross.fValid), fLimset(cross.fLimset),
fMaxFcn(cross.fMaxFcn), fNewMin(cross.fNewMin)
Expand Down
7 changes: 0 additions & 7 deletions math/minuit2/inc/Minuit2/MnEigen.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,9 @@ class MnUserCovariance;
*/

class MnEigen {

public:
MnEigen() {}

~MnEigen() {}

/// calculate the eigenvalues
std::vector<double> operator()(const MnUserCovariance &) const;

private:
};

} // namespace Minuit2
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/MnFunctionCross.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ class MnFunctionCross {
{
}

~MnFunctionCross() {}

MnCross operator()(std::span<const unsigned int> , std::span<const double>, std::span<const double>,
double, unsigned int) const;

Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/MnGlobalCorrelationCoeff.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ class MnGlobalCorrelationCoeff {

MnGlobalCorrelationCoeff(const MnAlgebraicSymMatrix &);

~MnGlobalCorrelationCoeff() {}

const std::vector<double> &GlobalCC() const { return fGlobalCC; }

bool IsValid() const { return fValid; }
Expand Down
20 changes: 7 additions & 13 deletions math/minuit2/inc/Minuit2/MnLineSearch.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#define ROOT_Minuit2_MnLineSearch

#include "Minuit2/MnMatrix.h"
#include "Minuit2/MnPoint.h"

namespace ROOT {

Expand All @@ -19,7 +20,6 @@ namespace Minuit2 {
class MnFcn;
class MinimumParameters;
class MnMachinePrecision;
class MnParabolaPoint;

/**

Expand All @@ -40,22 +40,16 @@ and Lorenzo Moneta
class MnLineSearch {

public:
MnLineSearch() {}

~MnLineSearch() {}

MnParabolaPoint operator()(const MnFcn &, const MinimumParameters &, const MnAlgebraicVector &, double,
const MnMachinePrecision &) const;
MnPoint operator()(const MnFcn &, const MinimumParameters &, const MnAlgebraicVector &, double,
const MnMachinePrecision &) const;

#ifdef USE_OTHER_LS
MnParabolaPoint CubicSearch(const MnFcn &, const MinimumParameters &, const MnAlgebraicVector &, double, double,
const MnMachinePrecision &) const;
MnPoint CubicSearch(const MnFcn &, const MinimumParameters &, const MnAlgebraicVector &, double, double,
const MnMachinePrecision &) const;

MnParabolaPoint BrentSearch(const MnFcn &, const MinimumParameters &, const MnAlgebraicVector &, double, double,
const MnMachinePrecision &) const;
MnPoint BrentSearch(const MnFcn &, const MinimumParameters &, const MnAlgebraicVector &, double, double,
const MnMachinePrecision &) const;
#endif

private:
};

} // namespace Minuit2
Expand Down
4 changes: 4 additions & 0 deletions math/minuit2/inc/Minuit2/MnMachinePrecision.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,12 @@ class MnMachinePrecision {
void ComputePrecision();

private:
double One() const;
double Tiny(double epsp1) const;

double fEpsMac;
double fEpsMa2;
double fOne = 1.;
};

} // namespace Minuit2
Expand Down
2 changes: 0 additions & 2 deletions math/minuit2/inc/Minuit2/MnMinos.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ class MnMinos {
/// construct from FCN + Minimum + strategy
MnMinos(const FCNBase &fcn, const FunctionMinimum &min, const MnStrategy &stra);

~MnMinos() {}

/// returns the negative (pair.first) and the positive (pair.second)
/// Minos Error of the Parameter
std::pair<double, double> operator()(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
Expand Down
Loading
Loading