00001 // @(#)root/minuit2:$Id: MnStrategy.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 "Minuit2/MnStrategy.h" 00011 00012 namespace ROOT { 00013 00014 namespace Minuit2 { 00015 00016 00017 00018 MnStrategy::MnStrategy() { 00019 //default strategy 00020 SetMediumStrategy(); 00021 } 00022 00023 00024 MnStrategy::MnStrategy(unsigned int stra) { 00025 //user defined strategy (0, 1, >=2) 00026 if(stra == 0) SetLowStrategy(); 00027 else if(stra == 1) SetMediumStrategy(); 00028 else SetHighStrategy(); 00029 } 00030 00031 void MnStrategy::SetLowStrategy() { 00032 // set low strategy (0) values 00033 fStrategy = 0; 00034 SetGradientNCycles(2); 00035 SetGradientStepTolerance(0.5); 00036 SetGradientTolerance(0.1); 00037 SetHessianNCycles(3); 00038 SetHessianStepTolerance(0.5); 00039 SetHessianG2Tolerance(0.1); 00040 SetHessianGradientNCycles(1); 00041 } 00042 00043 void MnStrategy::SetMediumStrategy() { 00044 // set minimum strategy (1) the default 00045 fStrategy = 1; 00046 SetGradientNCycles(3); 00047 SetGradientStepTolerance(0.3); 00048 SetGradientTolerance(0.05); 00049 SetHessianNCycles(5); 00050 SetHessianStepTolerance(0.3); 00051 SetHessianG2Tolerance(0.05); 00052 SetHessianGradientNCycles(2); 00053 } 00054 00055 void MnStrategy::SetHighStrategy() { 00056 // set high strategy (2) 00057 fStrategy = 2; 00058 SetGradientNCycles(5); 00059 SetGradientStepTolerance(0.1); 00060 SetGradientTolerance(0.02); 00061 SetHessianNCycles(7); 00062 SetHessianStepTolerance(0.1); 00063 SetHessianG2Tolerance(0.02); 00064 SetHessianGradientNCycles(6); 00065 } 00066 00067 } // namespace Minuit2 00068 00069 } // namespace ROOT