00001 // @(#)root/minuit2:$Id: Quad8FMain.cxx 20880 2007-11-19 11:23:41Z rdm $ 00002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005 00003 00004 /********************************************************************** 00005 * * 00006 * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT * 00007 * * 00008 **********************************************************************/ 00009 00010 #include "Quad8F.h" 00011 #include "Minuit2/FunctionMinimum.h" 00012 #include "Minuit2/MnMigrad.h" 00013 #include "Minuit2/MnUserParameters.h" 00014 #include "Minuit2/MnPrint.h" 00015 // #include "TimingUtilities/PentiumTimer.h" 00016 00017 // StackAllocator gStackAllocator; 00018 00019 using namespace ROOT::Minuit2; 00020 00021 int main() { 00022 00023 Quad8F fcn; 00024 00025 // PentiumTimer stopwatch; 00026 // stopwatch.start(); 00027 00028 // long long int start = stopwatch.lap().ticks(); 00029 // long long int stop = stopwatch.lap().ticks(); 00030 // std::cout<<"stop-start: "<<stop - start<<std::endl; 00031 // start = stopwatch.lap().ticks(); 00032 { 00033 //test constructor 00034 MnUserParameters upar; 00035 upar.Add("x", 1., 0.1); 00036 upar.Add("y", 1., 0.1); 00037 upar.Add("z", 1., 0.1); 00038 upar.Add("w", 1., 0.1); 00039 upar.Add("x0", 1., 0.1); 00040 upar.Add("y0", 1., 0.1); 00041 upar.Add("z0", 1., 0.1); 00042 upar.Add("w0", 1., 0.1); 00043 00044 MnMigrad migrad(fcn, upar); 00045 FunctionMinimum min = migrad(); 00046 std::cout<<"minimum: "<<min<<std::endl; 00047 } 00048 // stop = stopwatch.lap().ticks(); 00049 // std::cout<<"stop-start: "<<stop - start<<std::endl; 00050 /* 00051 00052 { 00053 //test constructor 00054 std::vector<double> par(8); 00055 std::vector<double> err(8); 00056 for(int i = 0; i < 8; i++) { 00057 par[i] = 1.; 00058 err[i] = 0.1; 00059 } 00060 MnMigrad migrad(fcn, par, err); 00061 FunctionMinimum min = migrad(); 00062 std::cout<<"minimum: "<<min<<std::endl; 00063 } 00064 00065 { 00066 //test edm Value 00067 std::vector<double> par(8); 00068 std::vector<double> err(8); 00069 for(int i = 0; i < 8; i++) { 00070 par[i] = 1.; 00071 err[i] = 0.1; 00072 } 00073 MnMigrad migrad(fcn, par, err); 00074 double edm = 1.e-1; 00075 FunctionMinimum min = migrad(20, edm); 00076 std::cout<<"minimum: "<<min<<std::endl; 00077 } 00078 00079 { 00080 //test # of iterations 00081 std::vector<double> par(4); 00082 std::vector<double> err(4); 00083 for(int i = 0; i < 4; i++) { 00084 par[i] = 1.; 00085 err[i] = 0.1; 00086 } 00087 MnMigrad migrad(fcn, par, err); 00088 int niter = 2; 00089 FunctionMinimum min = migrad(niter, 1.e-5); 00090 std::cout<<"minimum: "<<min<<std::endl; 00091 } 00092 */ 00093 00094 return 0; 00095 }