Quad4FMain.cxx

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: Quad4FMain.cxx 24400 2008-06-20 07:28:49Z moneta $
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 "Quad4F.h"
00011 #include "Minuit2/FunctionMinimum.h"
00012 #include "Minuit2/MnMigrad.h"
00013 #include "Minuit2/MnHesse.h"
00014 #include "Minuit2/MnUserParameters.h"
00015 #include "Minuit2/MnPrint.h"
00016 // #include "TimingUtilities/PentiumTimer.h"
00017 
00018 // StackAllocator gStackAllocator;
00019 
00020 using namespace ROOT::Minuit2;
00021 
00022 int main() {
00023 
00024   Quad4F fcn;
00025 
00026 //   PentiumTimer stopwatch;
00027 //   stopwatch.start();
00028 
00029 //   long long int start = stopwatch.lap().ticks();
00030 //   long long int stop = stopwatch.lap().ticks();
00031 //   std::cout<<"stop-start: "<<stop - start<<std::endl;
00032 //   start = stopwatch.lap().ticks();
00033   {
00034   //test constructor
00035   MnUserParameters upar;
00036   upar.Add("x", 1., 0.1);
00037   upar.Add("y", 1., 0.1);
00038   upar.Add("z", 1., 0.1);
00039   upar.Add("w", 1., 0.1);
00040 
00041   MnMigrad migrad(fcn, upar);
00042   FunctionMinimum min = migrad();
00043   std::cout<<"minimum: "<<min<<std::endl;
00044   }
00045   {
00046      // use analytical derivatives 
00047      Quad4FGrad gfcn;
00048 
00049      MnUserParameters upar;
00050      upar.Add("x", 1., 0.1);
00051      upar.Add("y", 1., 0.1);
00052      upar.Add("z", 1., 0.1);
00053      upar.Add("w", 1., 0.1);
00054 
00055      MnMigrad migrad(gfcn, upar);
00056      FunctionMinimum min = migrad();
00057      std::cout<<"minimum with grad calculation : "<<min<<std::endl;
00058 
00059      // try to run hesse 
00060      MnHesse hesse; 
00061      hesse( gfcn, min); 
00062      std::cout<<"minimum after hesse: "<<min<<std::endl;
00063   }
00064 
00065 //   stop = stopwatch.lap().ticks();
00066 //   std::cout<<"stop-start: "<<stop - start<<std::endl;
00067 /*
00068 
00069   {
00070   //test constructor
00071   std::vector<double> par(4); 
00072   std::vector<double> err(4);
00073   for(int i = 0; i < 4; i++) {
00074     par[i] = 1.;
00075     err[i] = 0.1;
00076   }
00077   MnMigrad migrad(fcn, par, err);
00078   FunctionMinimum min = migrad();
00079   std::cout<<"minimum: "<<min<<std::endl;
00080   }
00081 
00082   {
00083   //test edm Value
00084   std::vector<double> par(4); 
00085   std::vector<double> err(4);
00086   for(int i = 0; i < 4; i++) {
00087     par[i] = 1.;
00088     err[i] = 0.1;
00089   }
00090   MnMigrad migrad(fcn, par, err);
00091   double edm = 1.e-1;
00092   FunctionMinimum min = migrad(20, edm);
00093   std::cout<<"minimum: "<<min<<std::endl;
00094   }
00095 
00096   {
00097   //test # of iterations
00098   std::vector<double> par(4); 
00099   std::vector<double> err(4);
00100   for(int i = 0; i < 4; i++) {
00101     par[i] = 1.;
00102     err[i] = 0.1;
00103   }
00104   MnMigrad migrad(fcn, par, err);
00105   int niter = 2;
00106   FunctionMinimum min = migrad(niter, 1.e-5);
00107   std::cout<<"minimum: "<<min<<std::endl;
00108   }
00109 */
00110 
00111   return 0;
00112 }

Generated on Tue Jul 5 14:37:13 2011 for ROOT_528-00b_version by  doxygen 1.5.1