Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-17 09:14:08

0001 // @(#)root/minuit2:$Id$
0002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005
0003 
0004 /**********************************************************************
0005  *                                                                    *
0006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
0007  *                                                                    *
0008  **********************************************************************/
0009 
0010 #ifndef ROOT_Minuit2_MnScan
0011 #define ROOT_Minuit2_MnScan
0012 
0013 #include "Minuit2/MnApplication.h"
0014 #include "Minuit2/ScanMinimizer.h"
0015 
0016 #include <vector>
0017 #include <utility>
0018 
0019 namespace ROOT {
0020 
0021 namespace Minuit2 {
0022 
0023 class FCNBase;
0024 
0025 //_______________________________________________________________________
0026 /**
0027     API class for minimization using a scan method to find the minimum;
0028     allows for user interaction: set/change parameters, do minimization,
0029     change parameters, re-do minimization etc.;
0030 
0031  */
0032 
0033 class MnScan : public MnApplication {
0034 
0035 public:
0036    /// construct from FCNBase + MnUserParameterState + MnStrategy
0037    MnScan(const FCNBase &fcn, const MnUserParameterState &par, const MnStrategy &str = MnStrategy{})
0038       : MnApplication(fcn, MnUserParameterState(par), str), fMinimizer(ScanMinimizer())
0039    {
0040    }
0041 
0042    MnScan(const MnScan &migr)
0043       : MnApplication(migr.Fcnbase(), migr.State(), migr.Strategy(), migr.NumOfCalls()), fMinimizer(migr.fMinimizer)
0044    {
0045    }
0046 
0047    ModularFunctionMinimizer &Minimizer() override { return fMinimizer; }
0048    const ModularFunctionMinimizer &Minimizer() const override { return fMinimizer; }
0049 
0050    std::vector<std::pair<double, double>>
0051    Scan(unsigned int par, unsigned int maxsteps = 41, double low = 0., double high = 0.);
0052 
0053 private:
0054    ScanMinimizer fMinimizer;
0055 
0056    /// forbidden assignment (const FCNBase& = )
0057    MnScan &operator=(const MnScan &) { return *this; }
0058 };
0059 
0060 } // namespace Minuit2
0061 
0062 } // namespace ROOT
0063 
0064 #endif // ROOT_Minuit2_MnScan