MinuitMigrad.h

Go to the documentation of this file.
00001 /* -*- mode: c++ -*- */
00002 
00014 // for have minuit
00015 #ifdef HAVE_CONFIG_H
00016 #include "config.h"
00017 #endif
00018 
00019 #ifndef _MinuitMigrad_H_
00020 #define _MinuitMigrad_H_
00021 
00022 #include "Fitter.h"
00023 
00024 #ifdef HAVE_MINUIT
00025 class MnMigrad;
00026 #endif
00027 
00028 #ifdef HAVE_MINUIT2
00029 namespace ROOT {
00030   namespace Minuit2 {
00031     class MnMigrad;
00032   }
00033 }
00034 #endif
00035 
00036 namespace hippodraw {
00037 
00054 class MDL_HIPPOPLOT_API MinuitMigrad : public Fitter
00055 {
00056 
00057 private:
00058 
00061   MinuitMigrad ( const MinuitMigrad & );
00062 
00068   struct limit {
00069     double lower; 
00070     double upper; 
00071     bool set; 
00072   };
00073 
00076   std::vector < limit > m_limits;
00077 
00080   void initLimits ();
00081 
00087 #ifdef HAVE_MINUIT
00088   MnMigrad * m_minimizer;
00089 #endif
00090 #ifdef HAVE_MINUIT2
00091   ROOT::Minuit2::MnMigrad * m_minimizer;
00092 #endif
00093 
00096   void initialize ();
00097 
00100   void checkIndex ( unsigned int index );
00101 
00102 public:
00103 
00105   MinuitMigrad ( const char * name );
00106 
00107   virtual Fitter * clone () const;
00108 
00111   virtual void setLimits ( unsigned int i, double lower, double upper );
00112 
00115   virtual void setStepSize ( unsigned int i, double size );
00116 
00119   virtual bool calcBestFit ();
00120 
00122   virtual int calcCovariance ( std::vector< std::vector < double > >& cov );
00123 
00124 };
00125 
00126 } // namespace hippodraw
00127 
00128 #endif // _MinuitMigrad_H_

Generated for HippoDraw Class Library by doxygen