• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

BCGraphFitter.h

Go to the documentation of this file.
00001 #ifndef __BCMODELGRAPHFITTER__H
00002 #define __BCMODELGRAPHFITTER__H
00003 
00004 /*!
00005  * \class BCGraphFitter
00006  * \brief A class for fitting graphs with functions
00007  * \author Daniel Kollar
00008  * \author Kevin Kröninger
00009  * \version 1.0
00010  * \date 2008
00011  * \detail This class allows fitting of a TGraphErrors using
00012  * a TF1 function. It doeasn't take the x uncertainties into account.
00013  * For that look at BCGraphXFitter (not yet implemented).
00014  */
00015 
00016 /*
00017  * Copyright (C) 2008, Daniel Kollar and Kevin Kroeninger.
00018  * All rights reserved.
00019  *
00020  * For the licensing terms see doc/COPYING.
00021  */
00022 
00023 // ---------------------------------------------------------
00024 
00025 #include <vector>
00026 
00027 #include <BAT/BCModel.h>
00028 
00029 class TGraphErrors;
00030 class TF1;
00031 
00032 // ---------------------------------------------------------
00033 
00034 class BCGraphFitter : public BCModel
00035 {
00036    public:
00037 
00038       /** \name Constructors and destructors */
00039       /* @{ */
00040 
00041       /**
00042        * Default constructor */
00043       BCGraphFitter();
00044 
00045       /**
00046        * Constructor
00047        * @param graph pointer to TGraphErrors
00048        * @param func pointer to TF1 */
00049       BCGraphFitter(TGraphErrors * graph, TF1 * func);
00050 
00051       /**
00052        * The default destructor. */
00053       ~BCGraphFitter();
00054 
00055       /* @} */
00056 
00057       /** \name Member functions (get) */
00058       /* @{ */
00059 
00060       /**
00061        * @return pointer to TGraphErrors */
00062       TGraphErrors * GetGraph()
00063          { return fGraph; };
00064 
00065       /**
00066        * @return pointer to TF1 */
00067       TF1 * GetFitFunction()
00068          { return fFitFunction; };
00069 
00070       /**
00071        * @return pointer to the error band */
00072       TGraph * GetErrorBand()
00073          { return fErrorBand; };
00074 
00075       /**
00076        * @return pointer to a graph for the fit function */
00077       TGraph * GetGraphFitFunction()
00078          { return fGraphFitFunction; };
00079 
00080       /* @} */
00081 
00082       /** \name Member functions (set) */
00083       /* @{ */
00084 
00085       /**
00086        * @param graph pointer to TGraphErrors object */
00087       int SetGraph(TGraphErrors * graph);
00088 
00089       /**
00090        * @param func pointer to TF1 object */
00091       int SetFitFunction(TF1 * func);
00092 
00093       /* @} */
00094       /** \name Member functions (miscellaneous methods) */
00095       /* @{ */
00096 
00097       /**
00098        * The log of the prior probability. It is set to be flat in all parameters.
00099        * @param parameters vector containing the parameter values */
00100       double LogAPrioriProbability(std::vector <double> parameters);
00101 
00102       /**
00103        * The log of the conditional probability.
00104        * @param parameters vector containing the parameter values */
00105       double LogLikelihood(std::vector <double> parameters);
00106 
00107       /**
00108        * Returns the value of the 1D fit function for a given set of parameters
00109        * at a given x.
00110        * @param x point to calculate the function value at
00111        * @param parameters parameters of the function */
00112       double FitFunction(std::vector <double> x, std::vector <double> parameters);
00113 
00114       /**
00115        * Performs the fit. The graph and the function has to beset beforehand.
00116        * @return An error code. */
00117       int Fit()
00118          { return this -> Fit(fGraph, fFitFunction); };
00119 
00120       /**
00121        * Performs the fit of the graph with the function.
00122        * @param graph pointer to TGraphErrors object
00123        * @param func pointer to TF1 object
00124        * @return An error code. */
00125       int Fit(TGraphErrors * graph, TF1 * func);
00126 
00127       /**
00128        * Draw the fit in the current pad. */
00129       void DrawFit(const char * options = "", bool flaglegend = false);
00130 
00131        virtual double CDF(const std::vector<double>& parameters,  int index, bool lower=false);
00132 
00133       /* @} */
00134 
00135    private:
00136 
00137       /**
00138        * The graph containing the data. */
00139       TGraphErrors * fGraph;
00140 
00141       /**
00142        * The fit function */
00143       TF1 * fFitFunction;
00144 
00145       /**
00146        * Pointer to the error band (for legend) */
00147       TGraph * fErrorBand;
00148 
00149       /**
00150        * Pointer to a graph for displaying the fit function */
00151       TGraph * fGraphFitFunction;
00152 
00153 };
00154 
00155 // ---------------------------------------------------------
00156 
00157 #endif

Generated on Mon Aug 30 2010 22:14:54 for Bayesian Analysis Toolkit by  doxygen 1.7.1