00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "Quad1F.h"
00011 #include "Minuit2/FunctionMinimum.h"
00012 #include "Minuit2/MnPrint.h"
00013 #include "Minuit2/VariableMetricMinimizer.h"
00014 #include "Minuit2/MnMigrad.h"
00015 #include "Minuit2/MnMinos.h"
00016
00017 using namespace ROOT::Minuit2;
00018
00019 int main() {
00020
00021 {
00022
00023 {
00024 Quad1F fcn;
00025 MnUserParameters upar;
00026 upar.Add("x", 1., 0.1);
00027 MnMigrad migrad(fcn, upar);
00028 FunctionMinimum min = migrad();
00029 std::cout<<"min= "<<min<<std::endl;
00030 }
00031 {
00032
00033 Quad1F fcn;
00034 std::vector<double> par(1, 1.);
00035 std::vector<double> err(1, 0.1);
00036 VariableMetricMinimizer mini;
00037 FunctionMinimum min = mini.Minimize(fcn, par, err);
00038 std::cout<<"min= "<<min<<std::endl;
00039 }
00040 {
00041
00042 Quad1F fcn;
00043 std::vector<double> par(1, 1.);
00044 std::vector<double> err(1, 0.1);
00045 VariableMetricMinimizer mini;
00046 FunctionMinimum min = mini.Minimize(fcn, par, err);
00047 MnMinos Minos(fcn, min);
00048 std::pair<double,double> e0 = Minos(0);
00049 std::cout<<"par0: "<<min.UserState().Value(unsigned(0))<<" "<<e0.first<<" "<<e0.second<<std::endl;
00050 fcn.SetErrorDef(4.);
00051 MnMinos minos2(fcn, min);
00052 std::pair<double,double> e02 = minos2(0);
00053 std::cout<<"par0: "<<min.UserState().Value(unsigned(0))<<" "<<e02.first<<" "<<e02.second<<std::endl;
00054 }
00055
00056 }
00057
00058 return 0;
00059 }