ROOT logo
#ifndef FIT1DIMDIALOG
#define FIT1DIMDIALOG
#include "TH2.h"
#include "TF2.h"
#include "TVirtualPad.h"
#include "TPad.h"
#include "TRootCanvas.h"
#include "TString.h"
#include "FhMarker.h"
#include "TGMrbValuesAndText.h"
//_____________________________________________________________________________________

static const Int_t MAXP = 5;
class Fit2DimDialog : public TObject {

private:
   TRootCanvas* fParentWindow;
   TGMrbValuesAndText *fDialog;
   TString fFuncName;
   Int_t   fFuncNumber;
   TString fFuncFromFile;
   TCanvas *fSelPad;
   TH2     *fSelHist;
   TH2     *fHistFitResult;
   TF2     *fSelFunc;
   TF2     *fFitFunc;
   Color_t fColor;
   Width_t fWidth;
   Style_t fStyle;
   TString fName;
   TString fGausFuncName;
   FhMarkerList * fMarkers;
   Int_t fNpar;
   Double_t fFromX;
   Double_t fToX;
   Double_t fFromY;
   Double_t fToY;
	Int_t fNpeaks;
   Double_t fSigmaX[MAXP]  ;
   Double_t fSigmaY[MAXP]  ;
   Double_t fConstant[MAXP];
   Double_t fOffX[MAXP]    ;
   Double_t fOffY[MAXP]    ;
   Double_t fPhi[MAXP]     ;
   Int_t fFixSigmaX[MAXP];
   Int_t fFixSigmaY[MAXP];
   Int_t fFixConstant[MAXP];
   Int_t fFixOffX[MAXP];
   Int_t fFixOffY[MAXP];
   Int_t fFixPhi[MAXP];
   Double_t fBgX0;
   Double_t fBgY0;
   Double_t fBgSlopeX;
   Double_t fBgSlopeY;

   Int_t fUseoldpars;        // use parameters of previous fit
   Int_t fUsedbg;            // use prederminated linear background
   Int_t fReqNmarks;
   Int_t fNmarks;
   Int_t fNevents;
   Int_t fFitOptAddAll;      // Add all fitted functions to histogram
   Int_t fAutoClearMarks;    // Clear marks after fit
// The following parameters should be set with "FitPeakList"
   Int_t    fInteractive;    // Run interactivly, ie. really present dialog widgets
   Int_t fShowcof;           // Display components of fit
   Int_t fFitOptLikelihood;  // Use Likelihood method (default chi2)
   Int_t fFitOptQuiet;       // Suppress printout during fitting
   Int_t fFitOptOneLine;     // One line / peak
    Int_t fFitOptVerbose;     // Verbose printout during fitting
   Int_t fFitOptMinos;       // Use minos to improve fit after migrad
   Int_t fFitOptErrors1;     // Set all errors to 1`
   Int_t fFitOptIntegral;    // Use integral of bin
   Int_t fFitOptNoDraw;      // dont draw fit result
   Int_t fFitPrintCovariance;// Print Correlation matrix (normalized covariance)
   Int_t fShowAsHist;

public:
   Fit2DimDialog(TObject *obj, Int_t npeaks = 0, Int_t interactive = 1);
   void DisplayMenu();
   virtual ~Fit2DimDialog();
   void RecursiveRemove(TObject * obj);
   //fit function as class member
   Double_t TwoDimGaus(Double_t *x, Double_t *p);
   Double_t MultTwoDimGaus(Double_t *x, Double_t *p);
   void GausExecute(Int_t draw_only);
   void FitGausExecute();
   void DrawGausExecute();
   void FillHistRandom();
   TH1  *FindHistInPad();
   void PrintCorrelation();
   void SetFitOptions(){};
//   Int_t GetMaxBin(TH2 * h1, Int_t binlX, Int_t binuX, Int_t binlY, Int_t binuY);
/*   void GetGaussEstimate(TH2 *h, Double_t fromX, Double_t toX,
                                 Double_t fromY, Double_t toY,
                                 Double_t bg,TArrayD & par);*/
//   void DetLinearBackground();
   Int_t GetMarkers();
   void ClearMarkers();
   void ClearFunctionList();
   void PrintMarkers();
   Int_t SetMarkers();
   void SetFittingOptions();
   
   void SaveDefaults();
   void RestoreDefaults();
   void CloseDialog();
   void CloseDown(Int_t wid);
   void IncrementIndex(TString * arg);
   void SaveFunction();
   TF2* GetFitFunction() { return fFitFunc; };
//   void ExecuteGetFunction();
//
   void SetUseoldpars( Int_t useoldpars) { fUseoldpars = useoldpars; };
   void SetUsedbg( Int_t usedbg) { fUsedbg = usedbg; };
   void SetReqNmarks( Int_t reqnmarks) { fReqNmarks = reqnmarks; };
   void SetNmarks( Int_t nmarks) { fNmarks = nmarks; };
   void SetNevents( Int_t nevents) { fNevents = nevents; };
   void SetShowcof( Int_t showcof) { fShowcof = showcof; };
   void SetAutoClearMarks( Int_t autoclearmarks) { fAutoClearMarks = autoclearmarks; };
   void SetFitOptLikelihood( Int_t fitoptlikelihood) { fFitOptLikelihood = fitoptlikelihood; };
   void SetFitOptQuiet( Int_t fitoptquiet) { fFitOptQuiet = fitoptquiet; };
   void SetFitOptOneLine( Int_t val) {fFitOptOneLine  = val; };
   void SetFitOptVerbose( Int_t fitoptverbose) { fFitOptVerbose = fitoptverbose; };
   void SetFitOptMinos( Int_t fitoptminos) { fFitOptMinos = fitoptminos; };
   void SetFitOptErrors1( Int_t fitopterrors1) { fFitOptErrors1 = fitopterrors1; };
   void SetFitOptIntegral( Int_t fitoptintegral) { fFitOptIntegral = fitoptintegral; };
   void SetFitOptNoDraw( Int_t fitoptnodraw) { fFitOptNoDraw = fitoptnodraw; };
   void SetFitOptAddAll( Int_t fitoptaddall) { fFitOptAddAll = fitoptaddall; };
   void SetFitPrintCovariance( Int_t fitprintcovariance) { fFitPrintCovariance = fitprintcovariance; };
//
   Int_t GetUseoldpars() { return fUseoldpars; };
   Int_t GetUsedbg() { return fUsedbg; };
   Int_t GetReqNmarks() { return fReqNmarks; };
   Int_t GetNmarks() { return fNmarks; };
   Int_t GetNevents() { return fNevents; };
   Int_t GetShowcof() { return fShowcof; };
   Int_t GetAutoClearMarks() { return fAutoClearMarks; };
   Int_t GetFitOptLikelihood() { return fFitOptLikelihood; };
   Int_t GetFitOptQuiet() { return fFitOptQuiet; };
   Int_t GetFitOptOneLine() {return fFitOptOneLine; };
   Int_t GetFitOptVerbose() { return fFitOptVerbose; };
   Int_t GetFitOptMinos() { return fFitOptMinos; };
   Int_t GetFitOptErrors1() { return fFitOptErrors1; };
   Int_t GetFitOptIntegral() { return fFitOptIntegral; };
   Int_t GetFitOptNoDraw() { return fFitOptNoDraw; };
   Int_t GetFitOptAddAll() { return fFitOptAddAll; };
   Int_t GetFitPrintCovariance() { return fFitPrintCovariance; };
   void CRButtonPressed(Int_t, Int_t, TObject *){};

ClassDef(Fit2DimDialog,0)
};
#endif
 Fit2DimDialog.h:1
 Fit2DimDialog.h:2
 Fit2DimDialog.h:3
 Fit2DimDialog.h:4
 Fit2DimDialog.h:5
 Fit2DimDialog.h:6
 Fit2DimDialog.h:7
 Fit2DimDialog.h:8
 Fit2DimDialog.h:9
 Fit2DimDialog.h:10
 Fit2DimDialog.h:11
 Fit2DimDialog.h:12
 Fit2DimDialog.h:13
 Fit2DimDialog.h:14
 Fit2DimDialog.h:15
 Fit2DimDialog.h:16
 Fit2DimDialog.h:17
 Fit2DimDialog.h:18
 Fit2DimDialog.h:19
 Fit2DimDialog.h:20
 Fit2DimDialog.h:21
 Fit2DimDialog.h:22
 Fit2DimDialog.h:23
 Fit2DimDialog.h:24
 Fit2DimDialog.h:25
 Fit2DimDialog.h:26
 Fit2DimDialog.h:27
 Fit2DimDialog.h:28
 Fit2DimDialog.h:29
 Fit2DimDialog.h:30
 Fit2DimDialog.h:31
 Fit2DimDialog.h:32
 Fit2DimDialog.h:33
 Fit2DimDialog.h:34
 Fit2DimDialog.h:35
 Fit2DimDialog.h:36
 Fit2DimDialog.h:37
 Fit2DimDialog.h:38
 Fit2DimDialog.h:39
 Fit2DimDialog.h:40
 Fit2DimDialog.h:41
 Fit2DimDialog.h:42
 Fit2DimDialog.h:43
 Fit2DimDialog.h:44
 Fit2DimDialog.h:45
 Fit2DimDialog.h:46
 Fit2DimDialog.h:47
 Fit2DimDialog.h:48
 Fit2DimDialog.h:49
 Fit2DimDialog.h:50
 Fit2DimDialog.h:51
 Fit2DimDialog.h:52
 Fit2DimDialog.h:53
 Fit2DimDialog.h:54
 Fit2DimDialog.h:55
 Fit2DimDialog.h:56
 Fit2DimDialog.h:57
 Fit2DimDialog.h:58
 Fit2DimDialog.h:59
 Fit2DimDialog.h:60
 Fit2DimDialog.h:61
 Fit2DimDialog.h:62
 Fit2DimDialog.h:63
 Fit2DimDialog.h:64
 Fit2DimDialog.h:65
 Fit2DimDialog.h:66
 Fit2DimDialog.h:67
 Fit2DimDialog.h:68
 Fit2DimDialog.h:69
 Fit2DimDialog.h:70
 Fit2DimDialog.h:71
 Fit2DimDialog.h:72
 Fit2DimDialog.h:73
 Fit2DimDialog.h:74
 Fit2DimDialog.h:75
 Fit2DimDialog.h:76
 Fit2DimDialog.h:77
 Fit2DimDialog.h:78
 Fit2DimDialog.h:79
 Fit2DimDialog.h:80
 Fit2DimDialog.h:81
 Fit2DimDialog.h:82
 Fit2DimDialog.h:83
 Fit2DimDialog.h:84
 Fit2DimDialog.h:85
 Fit2DimDialog.h:86
 Fit2DimDialog.h:87
 Fit2DimDialog.h:88
 Fit2DimDialog.h:89
 Fit2DimDialog.h:90
 Fit2DimDialog.h:91
 Fit2DimDialog.h:92
 Fit2DimDialog.h:93
 Fit2DimDialog.h:94
 Fit2DimDialog.h:95
 Fit2DimDialog.h:96
 Fit2DimDialog.h:97
 Fit2DimDialog.h:98
 Fit2DimDialog.h:99
 Fit2DimDialog.h:100
 Fit2DimDialog.h:101
 Fit2DimDialog.h:102
 Fit2DimDialog.h:103
 Fit2DimDialog.h:104
 Fit2DimDialog.h:105
 Fit2DimDialog.h:106
 Fit2DimDialog.h:107
 Fit2DimDialog.h:108
 Fit2DimDialog.h:109
 Fit2DimDialog.h:110
 Fit2DimDialog.h:111
 Fit2DimDialog.h:112
 Fit2DimDialog.h:113
 Fit2DimDialog.h:114
 Fit2DimDialog.h:115
 Fit2DimDialog.h:116
 Fit2DimDialog.h:117
 Fit2DimDialog.h:118
 Fit2DimDialog.h:119
 Fit2DimDialog.h:120
 Fit2DimDialog.h:121
 Fit2DimDialog.h:122
 Fit2DimDialog.h:123
 Fit2DimDialog.h:124
 Fit2DimDialog.h:125
 Fit2DimDialog.h:126
 Fit2DimDialog.h:127
 Fit2DimDialog.h:128
 Fit2DimDialog.h:129
 Fit2DimDialog.h:130
 Fit2DimDialog.h:131
 Fit2DimDialog.h:132
 Fit2DimDialog.h:133
 Fit2DimDialog.h:134
 Fit2DimDialog.h:135
 Fit2DimDialog.h:136
 Fit2DimDialog.h:137
 Fit2DimDialog.h:138
 Fit2DimDialog.h:139
 Fit2DimDialog.h:140
 Fit2DimDialog.h:141
 Fit2DimDialog.h:142
 Fit2DimDialog.h:143
 Fit2DimDialog.h:144
 Fit2DimDialog.h:145
 Fit2DimDialog.h:146
 Fit2DimDialog.h:147
 Fit2DimDialog.h:148
 Fit2DimDialog.h:149
 Fit2DimDialog.h:150
 Fit2DimDialog.h:151
 Fit2DimDialog.h:152