00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 #ifndef ROOT_TMultiGraph
00013 #define ROOT_TMultiGraph
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef ROOT_TNamed
00025 #include "TNamed.h"
00026 #endif
00027 
00028 #include "TF1.h"
00029 
00030 class TH1F;
00031 class TAxis;
00032 class TBrowser;
00033 class TGraph;
00034 
00035 #include "TFitResultPtr.h"
00036 
00037 class TMultiGraph : public TNamed {
00038 
00039 protected:
00040    TList      *fGraphs;     
00041    TList      *fFunctions;  
00042    TH1F       *fHistogram;  
00043    Double_t    fMaximum;    
00044    Double_t    fMinimum;    
00045 
00046    TMultiGraph(const TMultiGraph&);
00047    TMultiGraph& operator=(const TMultiGraph&);
00048 
00049 public:
00050    TMultiGraph();
00051    TMultiGraph(const char *name, const char *title);
00052    virtual ~TMultiGraph();
00053 
00054    virtual void      Add(TGraph *graph, Option_t *chopt="");
00055    virtual void      Add(TMultiGraph *multigraph, Option_t *chopt="");
00056    virtual void      Browse(TBrowser *b);
00057    virtual Int_t     DistancetoPrimitive(Int_t px, Int_t py);
00058    virtual void      Draw(Option_t *chopt="");
00059    virtual TFitResultPtr Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); 
00060    virtual TFitResultPtr Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Axis_t rxmin=0, Axis_t rxmax=0); 
00061    virtual void      FitPanel(); 
00062    virtual Option_t *GetGraphDrawOption(const TGraph *gr) const;
00063    virtual void      LeastSquareLinearFit(Int_t ndata, Double_t &a0, Double_t &a1, Int_t &ifail, Double_t xmin, Double_t xmax);
00064    virtual void      LeastSquareFit(Int_t m, Double_t *a, Double_t xmin, Double_t xmax);
00065    virtual void      InitPolynom(Double_t xmin, Double_t xmax);
00066    virtual void      InitExpo(Double_t xmin, Double_t xmax);
00067    virtual void      InitGaus(Double_t xmin, Double_t xmax);
00068    virtual Int_t     IsInside(Double_t x, Double_t y) const;
00069    TH1F             *GetHistogram() const;
00070    TF1              *GetFunction(const char *name) const;
00071    TList            *GetListOfGraphs() const { return fGraphs; }
00072    TList            *GetListOfFunctions();  
00073    const TList      *GetListOfFunctions() const { return fFunctions; } 
00074    TAxis            *GetXaxis() const;
00075    TAxis            *GetYaxis() const;
00076    virtual void      Paint(Option_t *chopt="");
00077    virtual void      Print(Option_t *chopt="") const;
00078    virtual void      RecursiveRemove(TObject *obj);
00079    virtual void      SavePrimitive(ostream &out, Option_t *option = "");
00080    virtual void      SetMaximum(Double_t maximum=-1111);
00081    virtual void      SetMinimum(Double_t minimum=-1111);
00082   
00083    ClassDef(TMultiGraph,2)  
00084 };
00085 
00086 #endif
00087 
00088