00001 // @(#)root/tmva $Id: MinuitFitter.h 20882 2007-11-19 11:31:26Z rdm $ 00002 // Author: Andreas Hoecker 00003 00004 /********************************************************************************** 00005 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis * 00006 * Package: TMVA * 00007 * Class : MinuitFitter * 00008 * Web : http://tmva.sourceforge.net * 00009 * * 00010 * Description: * 00011 * Fitter using MINUIT * 00012 * * 00013 * Authors (alphabetical): * 00014 * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland * 00015 * * 00016 * Copyright (c) 2005: * 00017 * CERN, Switzerland * 00018 * MPI-K Heidelberg, Germany * 00019 * * 00020 * Redistribution and use in source and binary forms, with or without * 00021 * modification, are permitted according to the terms listed in LICENSE * 00022 * (http://tmva.sourceforge.net/LICENSE) * 00023 **********************************************************************************/ 00024 00025 #ifndef ROOT_TMVA_MinuitFitter 00026 #define ROOT_TMVA_MinuitFitter 00027 00028 ////////////////////////////////////////////////////////////////////////// 00029 // // 00030 // MinuitFitter // 00031 // // 00032 // Fitter using MINUIT // 00033 // // 00034 ////////////////////////////////////////////////////////////////////////// 00035 00036 #ifndef ROOT_TMVA_FitterBase 00037 #include "TMVA/FitterBase.h" 00038 #endif 00039 #ifndef ROOT_TMVA_IFitterTarget 00040 #include "TMVA/IFitterTarget.h" 00041 #endif 00042 00043 class TFitter; 00044 00045 namespace TMVA { 00046 00047 class IFitterTarget; 00048 class Interval; 00049 class MinuitWrapper; 00050 00051 class MinuitFitter : public FitterBase, public IFitterTarget { 00052 00053 public: 00054 00055 MinuitFitter( IFitterTarget& target, const TString& name, 00056 std::vector<TMVA::Interval*>& ranges, const TString& theOption ); 00057 00058 virtual ~MinuitFitter(); 00059 00060 void Init(); 00061 00062 Double_t Run( std::vector<Double_t>& pars ); 00063 Double_t EstimatorFunction( std::vector<Double_t>& pars ); 00064 00065 protected: 00066 00067 MinuitWrapper *fMinWrap; // holds a wrapper around TMinuit 00068 00069 private: 00070 00071 void DeclareOptions(); 00072 00073 Int_t fErrorLevel; // minuit error level 00074 Int_t fPrintLevel; // minuit printout level 00075 Int_t fFitStrategy; // minuit strategy level 00076 Bool_t fPrintWarnings; // minuit warnings level 00077 Bool_t fUseImprove; // flag for 'IMPROVE' use 00078 Bool_t fUseMinos; // flag for 'MINOS' use 00079 Bool_t fBatch; // batch mode 00080 Int_t fMaxCalls; // (approximate) maximum number of function calls 00081 Double_t fTolerance; // tolerance to the function value at the minimum 00082 00083 ClassDef(MinuitFitter,0) // Fitter using a Genetic Algorithm 00084 }; 00085 00086 } // namespace TMVA 00087 00088 #endif 00089 00090