// @(#)root/fitpanel:$Id$
// Author: Ilka Antcheva, Lorenzo Moneta 03/10/06

/*************************************************************************
 * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TFitParametersDialog                                                //
//                                                                      //
//  Create a dialog for fit function parameter settings.                //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TFitParametersDialog.h"
#include "TF1.h"
#include "TGButton.h"
#include "TGFrame.h"
#include "TGLabel.h"
#include "TGLayout.h"
#include "TGTextEntry.h"
#include "TGMsgBox.h"
#include "TGNumberEntry.h"
#include "TGTripleSlider.h"
#include "TVirtualPad.h"

#include <limits>


enum EParametersDialogWid {
   kNAME,
   kFIX = 10,
   kBND = 20,
   kVAL = 30,
   kMIN = 40,
   kMAX = 50,
   kSLD = 60,
   kSTP = 70,
   kERR = 80,
   kUPDATE = 8888,
   kRESET,
   kAPPLY,
   kOK,
   kCANCEL
};

const Double_t kUnlimit = std::numeric_limits<double>::max();

ClassImp(TFitParametersDialog)

//______________________________________________________________________________
TFitParametersDialog::TFitParametersDialog(const TGWindow *p,
                                           const TGWindow *main,
                                           TF1 *func,
                                           TVirtualPad *pad,
                                           Int_t *ret_code) :
   TGTransientFrame(p, main, 10, 10, kVerticalFrame),
   fFunc           (func),
   fFpad           (pad),
   fHasChanges     (kFALSE),
   fImmediateDraw  (kTRUE),
   fRetCode        (ret_code)

{
   // Create a dialog for fit function parameters' settings.

   SetCleanup(kDeepCleanup);

   fFunc->GetRange(fRangexmin, fRangexmax);
   fNP = fFunc->GetNpar();
   fPmin = new Double_t[fNP];
   fPmax = new Double_t[fNP];
   fPval = new Double_t[fNP];
   fPerr = new Double_t[fNP];
   fPstp = new Double_t[fNP];

   for (Int_t i = 0; i < fNP; i++) {
      fFunc->GetParLimits(i, fPmin[i], fPmax[i]);
      fPval[i] = fFunc->GetParameter(i);
      fPerr[i] = fFunc->GetParError(i);
      if (TMath::Abs(fPval[i]) > 1E-16)
         fPstp[i] = 0.3*TMath::Abs(fPval[i]);
      else
         fPstp[i] = 0.1;
   }
   fParNam = new TGTextEntry*[fNP];
   fParFix = new TGCheckButton*[fNP];
   fParBnd = new TGCheckButton*[fNP];
   fParVal = new TGNumberEntry*[fNP];
   fParMin = new TGNumberEntryField*[fNP];
   fParMax = new TGNumberEntryField*[fNP];
   fParSld = new TGTripleHSlider*[fNP];
   fParStp = new TGNumberEntry*[fNP];
   fParErr = new TGNumberEntryField*[fNP];

   memset(fParNam, 0, sizeof(TGTextEntry*)*fNP);
   memset(fParFix, 0, sizeof(TGCheckButton*)*fNP);
   memset(fParBnd, 0, sizeof(TGCheckButton*)*fNP);
   memset(fParVal, 0, sizeof(TGNumberEntry*)*fNP);
   memset(fParMin, 0, sizeof(TGNumberEntryField*)*fNP);
   memset(fParMax, 0, sizeof(TGNumberEntryField*)*fNP);
   memset(fParSld, 0, sizeof(TGTripleHSlider*)*fNP);
   memset(fParStp, 0, sizeof(TGNumberEntry*)*fNP);
   memset(fParErr, 0, sizeof(TGNumberEntryField*)*fNP);

   TGCompositeFrame *f1 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   AddFrame(f1, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));

   // column 'Name'
   fContNam = new TGCompositeFrame(f1, 80, 20, kVerticalFrame | kFixedWidth);
   fContNam->AddFrame(new TGLabel(fContNam,"Name"),
                      new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParNam[i] = new TGTextEntry(fContNam, new TGTextBuffer(80), kNAME+i);
      fParNam[i]->SetText(Form("%s", fFunc->GetParName(i)));
      fParNam[i]->SetEnabled(kFALSE);
      fContNam->AddFrame(fParNam[i],
                         new TGLayoutHints(kLHintsExpandX, 2, 2, 7, 5));
   }
   f1->AddFrame(fContNam, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Fix'
   fContFix = new TGCompositeFrame(f1, 20, 20, kVerticalFrame | kFixedWidth);
   fContFix->AddFrame(new TGLabel(fContFix,"Fix"),
                      new TGLayoutHints(kLHintsTop, 2, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParFix[i] = new TGCheckButton(fContFix, "", kFIX*fNP+i);
      fParFix[i]->SetToolTipText(Form("Set %s to fixed", fFunc->GetParName(i)));
      fContFix->AddFrame(fParFix[i], new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
                                                       5, 5, 10, 7));
      if ((fPmin[i] == fPmax[i]) && (fPmin[i] || fPmax[i]))
         fParFix[i]->SetState(kButtonDown);
      else
         fParFix[i]->SetState(kButtonUp);
      fParFix[i]->Connect("Toggled(Bool_t)", "TFitParametersDialog", this, "DoParFix(Bool_t)");
   }
   f1->AddFrame(fContFix, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Bound'
   fContBnd = new TGCompositeFrame(f1, 40, 20, kVerticalFrame | kFixedWidth);
   fContBnd->AddFrame(new TGLabel(fContBnd,"Bound"),
                      new TGLayoutHints(kLHintsTop, 2, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParBnd[i] = new TGCheckButton(fContBnd, "", kBND*fNP+i);
      fParBnd[i]->SetToolTipText(Form("Set bound to %s", fFunc->GetParName(i)));
      fContBnd->AddFrame(fParBnd[i], new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
                                                       15, 5, 10, 7));
      fParBnd[i]->Connect("Toggled(Bool_t)", "TFitParametersDialog", this, "DoParBound(Bool_t)");
      if ( ((fPmin[i] != fPmax[i]) && (fPmin[i] || fPmax[i])) || (fParMin[i] < fParMax[i]) )
         fParBnd[i]->SetState(kButtonDown, kFALSE);
      else
         fParBnd[i]->SetState(kButtonUp, kFALSE);
   }
   f1->AddFrame(fContBnd, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Value'
   fContVal = new TGCompositeFrame(f1, 100, 20, kVerticalFrame | kFixedWidth);
   fContVal->AddFrame(new TGLabel(fContVal,"Value"),
                      new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParVal[i] = new TGNumberEntry(fContVal, 1.2E-12, 15, kVAL*fNP+i,
                                     TGNumberFormat::kNESReal);
      fParVal[i]->SetNumber(fPval[i]);
      fParVal[i]->SetFormat(TGNumberFormat::kNESReal, TGNumberFormat::kNEAAnyNumber); //tbs
      fContVal->AddFrame(fParVal[i], new TGLayoutHints(kLHintsExpandX, 2, 2, 7, 5));
      (fParVal[i]->GetNumberEntry())->SetToolTipText(Form("%s", fFunc->GetParName(i)));
      (fParVal[i]->GetNumberEntry())->Connect("ReturnPressed()", "TFitParametersDialog",
                                              this, "DoParValue()");
      fParVal[i]->Connect("ValueSet(Long_t)", "TFitParametersDialog", this, "DoParValue()");
      (fParVal[i]->GetNumberEntry())->Connect("TabPressed()", "TFitParametersDialog", this, "HandleTab()");
      (fParVal[i]->GetNumberEntry())->Connect("ShiftTabPressed()", "TFitParametersDialog", this, "HandleShiftTab()");
      fTextEntries.Add(fParVal[i]->GetNumberEntry());
   }
   f1->AddFrame(fContVal, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Min'
   fContMin = new TGCompositeFrame(f1, 100, 20, kVerticalFrame | kFixedWidth);
   fContMin->AddFrame(new TGLabel(fContMin,"Min"),
                      new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParMin[i] = new TGNumberEntryField(fContMin, kMIN*fNP+i, 0.0,
                                          TGNumberFormat::kNESReal,
                                          TGNumberFormat::kNEAAnyNumber);
      ((TGTextEntry*)fParMin[i])->SetToolTipText(Form("Lower limit of %s",
                                                 fFunc->GetParName(i)));
      fContMin->AddFrame(fParMin[i], new TGLayoutHints(kLHintsExpandX, 2, 2, 7, 5));
      fParMin[i]->SetNumber(fPmin[i]);
      fParMin[i]->Connect("ReturnPressed()", "TFitParametersDialog", this,
                          "DoParMinLimit()");
      fParMin[i]->Connect("TabPressed()", "TFitParametersDialog", this, "HandleTab()");
      fParMin[i]->Connect("ShiftTabPressed()", "TFitParametersDialog", this, "HandleShiftTab()");
      fTextEntries.Add(fParMin[i]);
   }
   f1->AddFrame(fContMin, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Set Range'
   fContSld = new TGCompositeFrame(f1, 120, 20, kVerticalFrame | kFixedWidth);
   fContSld->AddFrame(new TGLabel(fContSld,"Set Range"),
                      new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParSld[i] = new TGTripleHSlider(fContSld, 100, kDoubleScaleBoth, kSLD*fNP+i,
                                       kHorizontalFrame, GetDefaultFrameBackground(),
                                       kFALSE, kFALSE, kFALSE, kFALSE);
      fContSld->AddFrame(fParSld[i], new TGLayoutHints(kLHintsExpandX, 2, 2, 5, 5));
      fParSld[i]->SetConstrained(kTRUE);
   }
   f1->AddFrame(fContSld,  new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Max'
   fContMax = new TGCompositeFrame(f1, 100, 20, kVerticalFrame | kFixedWidth);
   fContMax->AddFrame(new TGLabel(fContMax,"Max"),
                      new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParMax[i] = new TGNumberEntryField(fContMax, kMAX*fNP+i, 0.0,
                                          TGNumberFormat::kNESReal,
                                          TGNumberFormat::kNEAAnyNumber);
      ((TGTextEntry*)fParMax[i])->SetToolTipText(Form("Upper limit of %s",
                                                 fFunc->GetParName(i)));
      fContMax->AddFrame(fParMax[i], new TGLayoutHints(kLHintsExpandX, 2, 2, 7, 5));
      fParMax[i]->SetNumber(fPmax[i]);
      fParMax[i]->Connect("ReturnPressed()", "TFitParametersDialog", this, "DoParMaxLimit()");
      fParMax[i]->Connect("TabPressed()", "TFitParametersDialog", this, "HandleTab()");
      fParMax[i]->Connect("ShiftTabPressed()", "TFitParametersDialog", this, "HandleShiftTab()");
      fTextEntries.Add(fParMax[i]);
   }
   f1->AddFrame(fContMax, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Step'
   fContStp = new TGCompositeFrame(f1, 100, 20, kVerticalFrame | kFixedWidth);
   fContStp->AddFrame(new TGLabel(fContStp,"Step"),
                      new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParStp[i] = new TGNumberEntry(fContStp, 1.2E-12, 15, kSTP*fNP+i,
                                     TGNumberFormat::kNESReal);
      fParStp[i]->SetNumber(fPstp[i]);
      fParStp[i]->SetFormat(TGNumberFormat::kNESReal, TGNumberFormat::kNEAAnyNumber); //tbs
      fContStp->AddFrame(fParStp[i], new TGLayoutHints(kLHintsExpandX, 2, 2, 7, 5));
      (fParStp[i]->GetNumberEntry())->SetToolTipText(Form("%s", fFunc->GetParName(i)));
      (fParStp[i]->GetNumberEntry())->Connect("ReturnPressed()", "TFitParametersDialog",
                                              this, "DoParStep()");
      fParStp[i]->Connect("ValueSet(Long_t)", "TFitParametersDialog", this, "DoParStep()");
      (fParStp[i]->GetNumberEntry())->Connect("TabPressed()", "TFitParametersDialog", this, "HandleTab()");
      (fParStp[i]->GetNumberEntry())->Connect("ShiftTabPressed()", "TFitParametersDialog", this, "HandleShiftTab()");
      fTextEntries.Add(fParStp[i]->GetNumberEntry());
   }
   f1->AddFrame(fContStp, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   // column 'Error'
   fContErr = new TGCompositeFrame(f1, 80, 20, kVerticalFrame | kFixedWidth);
   fContErr->AddFrame(new TGLabel(fContErr,"Errors"),
                      new TGLayoutHints(kLHintsTop, 5, 0, 0, 0));
   for (Int_t i = 0; i < fNP; i++ ) {
      fParErr[i] = new TGNumberEntryField(fContErr, kERR*fNP+i, 0.0,
                                          TGNumberFormat::kNESReal,
                                          TGNumberFormat::kNEAAnyNumber);
      ((TGTextEntry*)fParErr[i])->SetToolTipText(Form("Error of %s",
                                                 fFunc->GetParName(i)));
      fContErr->AddFrame(fParErr[i], new TGLayoutHints(kLHintsExpandX, 2, 2, 7, 5));
      fParErr[i]->SetEnabled(kFALSE);
      if (fPerr[i])
         fParErr[i]->SetNumber(fPerr[i]);
      else
         ((TGTextEntry *)fParErr[i])->SetText("-");
   }
   f1->AddFrame(fContErr, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));

   TGCompositeFrame *f2 = new TGCompositeFrame(this, 270, 20, kHorizontalFrame);
   AddFrame(f2, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX));

   fUpdate = new TGCheckButton(f2, "&Immediate preview", kUPDATE);
   fUpdate->SetToolTipText("Immediate function redrawing");
   fUpdate->SetState(kButtonDown);
   f2->AddFrame(fUpdate, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5, 5, 5, 5));
   fUpdate->Connect("Toggled(Bool_t)", "TFitParametersDialog", this, "HandleButtons(Bool_t)");

   TGCompositeFrame *f3 = new TGCompositeFrame(f2, 270, 20, kHorizontalFrame | kFixedWidth);
   f2->AddFrame(f3, new TGLayoutHints(kLHintsRight));

   fReset = new TGTextButton(f3, "&Reset", kRESET);
   f3->AddFrame(fReset, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,2,2,5,5));
   fReset->SetToolTipText("Reset the parameter settings");
   fReset->SetState(kButtonDisabled);
   fReset->Connect("Clicked()", "TFitParametersDialog", this, "DoReset()");

   fApply = new TGTextButton(f3, "&Apply", kAPPLY);
   f3->AddFrame(fApply, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,2,2,5,5));
   fApply->SetState(kButtonDisabled);
   fApply->Connect("Clicked()", "TFitParametersDialog", this, "DoApply()");
   fApply->SetToolTipText("Apply parameter settings and redraw the function");

   fOK = new TGTextButton(f3, "&OK", kOK);
   f3->AddFrame(fOK, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,2,2,5,5));
   fOK->SetToolTipText("Apply parameter settings, redraw function and close this dialog");
   fOK->Connect("Clicked()", "TFitParametersDialog", this, "DoOK()");

   fCancel = new TGTextButton(f3, "&Cancel", kCANCEL);
   f3->AddFrame(fCancel, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,2,2,5,5));
   fCancel->SetToolTipText("Close this dialog with no parameter changes");
   fCancel->Connect("Clicked()", "TFitParametersDialog", this, "DoCancel()");
   *fRetCode = kFPDNoneBounded; // default setting

   MapSubwindows();
   Resize(GetDefaultSize());
   MapWindow();
   CenterOnParent(kFALSE, kBottomLeft);
   SetWindowName(Form("Set Parameters of %s", fFunc->GetTitle()));

   for (Int_t i = 0; i < fNP; i++ ) {
      if (fParFix[i]->GetState() == kButtonDown) {
         fParVal[i]->SetState(kFALSE);
         fParMin[i]->SetEnabled(kFALSE);
         fParMax[i]->SetEnabled(kFALSE);
         fParSld[i]->UnmapWindow();
      } else {
         if (fPmin[i]*fPmax[i] == 0 && fPmin[i] >= fPmax[i]) { //init
            if (!fPval[i]) {
               fParMin[i]->SetNumber(-10);
               fParMax[i]->SetNumber(10);
            } else {
               fParMin[i]->SetNumber(-3*TMath::Abs(fPval[i]));
               fParMax[i]->SetNumber(3*TMath::Abs(fPval[i]));
            }
         }
         fParSld[i]->SetRange(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
         fParSld[i]->SetPosition(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
         fParSld[i]->SetPointerPosition(fParVal[i]->GetNumber());
         fParSld[i]->Connect("PointerPositionChanged()", "TFitParametersDialog",
                             this, "DoSlider()");
         fParSld[i]->Connect("PositionChanged()", "TFitParametersDialog",
                             this, "DoSlider()");
      }
   }

   gClient->WaitFor(this);
}

//______________________________________________________________________________
TFitParametersDialog::~TFitParametersDialog()
{
   // Destructor.

   DisconnectSlots();
   fTextEntries.Clear();
   Cleanup();
   delete [] fPval;
   delete [] fPmin;
   delete [] fPmax;
   delete [] fPerr;
   delete [] fPstp;

   delete [] fParNam;
   delete [] fParFix;
   delete [] fParBnd;
   delete [] fParVal;
   delete [] fParMin;
   delete [] fParMax;
   delete [] fParSld;
   delete [] fParStp;
   delete [] fParErr;
}

//______________________________________________________________________________
void TFitParametersDialog::CloseWindow()
{
   // Close parameters' dialog.

   if (fHasChanges) {
      Int_t ret;
      const char *txt;
      txt = "Do you want to apply last parameters' setting?";
      new TGMsgBox(fClient->GetRoot(), GetMainFrame(),
                   "Parameters Have Been Changed", txt, kMBIconExclamation,
                   kMBYes | kMBNo | kMBCancel, &ret);
      if (ret == kMBYes)
         SetParameters();
      else if (ret == kMBNo)
         DoReset();
      else return;
   }

   DisconnectSlots();
   DeleteWindow();
}

//______________________________________________________________________________
void TFitParametersDialog::DoCancel()
{
   // Slot related to the Cancel button.

   if (fHasChanges)
      DoReset();
   for (Int_t i = 0; i < fNP; i++ ) {
      if (fParBnd[i]->GetState() == kButtonDown)
         *fRetCode = kFPDBounded;
   }
   CloseWindow();
}

//______________________________________________________________________________
void TFitParametersDialog::DoParBound(Bool_t on)
{
   // Slot related to the Bound check button.

   TGButton *bt = (TGButton *) gTQSender;
   Int_t id = bt->WidgetId();
   fHasChanges = kTRUE;

   for (Int_t i = 0; i < fNP; i++ ) {
      if (id == kBND*fNP+i) {
         if (on) {
            if (fParMin[i]->GetNumber() >= fParMax[i]->GetNumber()) {
               Int_t ret;
               const char *txt;
               txt = "'Min' value cannot be bigger or equal to 'Max' - set the limits first!";
               new TGMsgBox(fClient->GetRoot(), GetMainFrame(),
                            "Parameter Limits", txt, kMBIconExclamation,kMBOk,&ret);

               fParBnd[i]->SetState(kButtonUp, kFALSE);
               return;
            }
            if ((fParVal[i]->GetNumber() < fParMin[i]->GetNumber()) ||
                (fParVal[i]->GetNumber() > fParMax[i]->GetNumber())) {
               Double_t v = (fParMax[i]->GetNumber()+fParMin[i]->GetNumber())/2.;
               fParVal[i]->SetNumber(v);
               fFunc->SetParameter(i, v);
               fClient->NeedRedraw(fParVal[i]);
            }
            fParVal[i]->SetLimits(TGNumberFormat::kNELLimitMinMax,
                                  fParMin[i]->GetNumber(),
                                  fParMax[i]->GetNumber());
            fClient->NeedRedraw(fParVal[i]);
            fFunc->SetParLimits(i, fParMin[i]->GetNumber(),
                                   fParMax[i]->GetNumber());
         } else {
            fParVal[i]->SetLimits(TGNumberFormat::kNELNoLimits);
            fFunc->ReleaseParameter(i);
            fFunc->GetParLimits(i, fPmin[i], fPmax[i]);
            fPval[i] = fFunc->GetParameter(i);
            if (fPmin[i]*fPmax[i] == 0 && fPmin[i] >= fPmax[i]) { //init
               if (!fPval[i]) {
                  fParMin[i]->SetNumber(-10);
                  fParMax[i]->SetNumber(10);
               } else {
                  fParMin[i]->SetNumber(-10*TMath::Abs(fPval[i]));
                  fParMax[i]->SetNumber(10*TMath::Abs(fPval[i]));
               }
            }
            fParSld[i]->SetRange(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
            fParSld[i]->SetPosition(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
            fParSld[i]->SetPointerPosition(fPval[i]);
         }
      }
   }
   if (fUpdate->GetState() == kButtonDown)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges)
      fApply->SetState(kButtonUp);
   *fRetCode = kFPDBounded;
}

//______________________________________________________________________________
void TFitParametersDialog::DoParStep()
{
   // Slot related to parameter step setting.

}

//______________________________________________________________________________
void TFitParametersDialog::DoParFix(Bool_t on)
{
   // Slot related to the Fix check button.

   fReset->SetState(kButtonUp);

   TGButton *bt = (TGButton *) gTQSender;
   Int_t id = bt->WidgetId();
   fHasChanges = kTRUE;

   for (Int_t i = 0; i < fNP; i++ ) {
      if (id == kFIX*fNP+i) {
         if (on) {
            // no bound available
            fParBnd[i]->Disconnect("Toggled(Bool_t)");
            fParBnd[i]->SetEnabled(kFALSE);
            fParBnd[i]->SetToolTipText(Form("DISABLED - %s is fixed", fFunc->GetParName(i)));
            if (fParVal[i]->GetNumber() != 0) {
               fParMin[i]->SetNumber(fParVal[i]->GetNumber());
               fParMin[i]->SetEnabled(kFALSE);
               fParMax[i]->SetNumber(fParVal[i]->GetNumber());
               fParMax[i]->SetEnabled(kFALSE);
            } else {
               fParMin[i]->SetNumber(1.);
               fParMin[i]->SetEnabled(kFALSE);
               fParMax[i]->SetNumber(1.);
               fParMax[i]->SetEnabled(kFALSE);
            }
            fParVal[i]->SetState(kFALSE);
            fParStp[i]->SetState(kFALSE);
            fParSld[i]->Disconnect("PointerPositionChanged()");
            fParSld[i]->Disconnect("PositionChanged()");
            fParSld[i]->UnmapWindow();
            fFunc->FixParameter(i, fParVal[i]->GetNumber());
         } else if (!fParMin[i]->IsEnabled()) {
            if (fPmin[i] != fPmax[i]) {
               if (fPmin[i])
                  fParMin[i]->SetNumber(fPmin[i]);
               else if (fPerr[i])
                  fParMin[i]->SetNumber(fPval[i]-3*fPerr[i]);
               else if (fPval[i])
                  fParMin[i]->SetNumber(fPval[i]-0.1*fPval[i]);
               else
                  fParMin[i]->SetNumber(1.0);
               if (fPmax[i])
                  fParMax[i]->SetNumber(fPmax[i]);
               else if (fPerr[i])
                  fParMax[i]->SetNumber(fPval[i]+3*fPerr[i]);
               else if (fPval[i])
                  fParMax[i]->SetNumber(fPval[i]+0.1*fPval[i]);
               else
                  fParMax[i]->SetNumber(1.0);
            } else if (fPval[i]) {
               fParMin[i]->SetNumber(fPval[i]-0.1*fPval[i]);
               fParMax[i]->SetNumber(fPval[i]+0.1*fPval[i]);
            } else {
               fParMin[i]->SetNumber(1.0);
               fParMax[i]->SetNumber(1.0);
            }
            if (fParMax[i]->GetNumber() < fParMin[i]->GetNumber()){
               Double_t temp;
               temp = fParMax[i]->GetNumber();
               fParMax[i]->SetNumber(fParMin[i]->GetNumber());
               fParMin[i]->SetNumber(temp);
            }
            fParBnd[i]->SetEnabled(kTRUE);
            fParBnd[i]->Connect("Toggled(Bool_t)",  "TFitParametersDialog",
                                this, "DoParBound(Bool_t)");
            fParBnd[i]->SetState(kButtonUp);
            fParMax[i]->SetEnabled(kTRUE);
            fParMin[i]->SetEnabled(kTRUE);
            fParSld[i]->MapWindow();
            fParVal[i]->SetState(kTRUE);
            fParStp[i]->SetState(kTRUE);
            fParSld[i]->SetRange(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
            fParSld[i]->SetPosition(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
            fParSld[i]->SetPointerPosition(fPval[i]);
            fParSld[i]->Connect("PointerPositionChanged()", "TFitParametersDialog",
                                this, "DoSlider()");
            fParSld[i]->Connect("PositionChanged()", "TFitParametersDialog",
                                this, "DoSlider()");
            fFunc->SetParLimits(i, fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
         }
      }
   }
   if (fUpdate->GetState() == kButtonDown)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges)
      fApply->SetState(kButtonUp);
}

//______________________________________________________________________________
void TFitParametersDialog::SetParameters()
{
   // Set the parameter values inside the function
   fFunc->SetRange(fRangexmin, fRangexmax);
   for (Int_t i = 0; i < fNP; i++ ) {
      if (fParFix[i]->GetState() == kButtonDown) {
         fFunc->SetParameter(i, fParVal[i]->GetNumber());
         fFunc->FixParameter(i, fParVal[i]->GetNumber());
         *fRetCode = kFPDBounded;
      } else {
         if (fParBnd[i]->GetState() == kButtonDown) {
            fFunc->SetParameter(i, fParVal[i]->GetNumber());
            fFunc->SetParLimits(i, fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
            *fRetCode = kFPDBounded;
         } else {
            fFunc->ReleaseParameter(i);
         }
      }
   }
}

//______________________________________________________________________________
void TFitParametersDialog::DoOK()
{
   // Slot related to the OK button.

   if (fHasChanges)
      DrawFunction();

   SetParameters();

   CloseWindow();
}

//______________________________________________________________________________
void TFitParametersDialog::DoApply()
{
   // Slot related to the Preview button.

   DrawFunction();
   fApply->SetState(kButtonDisabled);
   if (fReset->GetState() == kButtonDisabled)
      fReset->SetState(kButtonUp);
}

//______________________________________________________________________________
void TFitParametersDialog::DoReset()
{
   // Slot related to the Reset button.

   fHasChanges = kTRUE;
   Int_t k = fNP;
   for (Int_t i = 0; i < fNP; i++) {
      if (fParVal[i]->GetNumber() == fPval[i])
         k--;
      else
         break;
   }

   if (!k) {
      if (fReset->GetState() == kButtonUp)
         fReset->SetState(kButtonDisabled);
      fHasChanges = kFALSE;
      return;
   }
   for (Int_t i = 0; i < fNP; i++) {
      fFunc->SetParameter(i, fPval[i]);
      fFunc->SetParLimits(i, fPmin[i], fPmax[i]);
      fFunc->SetParError(i, fPerr[i]);

      if (fPmin[i])
         fParMin[i]->SetNumber(fPmin[i]);
      else if (fPerr[i])
         fParMin[i]->SetNumber(fPval[i]-3*fPerr[i]);
      else if (fPval[i])
         fParMin[i]->SetNumber(-3*TMath::Abs(fPval[i]));
      else
         fParMin[i]->SetNumber(1.0);

      if (fPmax[i])
         fParMax[i]->SetNumber(fPmax[i]);
      else if (fPerr[i])
         fParMax[i]->SetNumber(fPval[i]+3*fPerr[i]);
      else if (fPval[i])
         fParMax[i]->SetNumber(3*TMath::Abs(fPval[i]));
      else
         fParMax[i]->SetNumber(1.0);
      if (fParMax[i]->GetNumber() < fParMin[i]->GetNumber()){
         Double_t temp;
         temp = fParMax[i]->GetNumber();
         fParMax[i]->SetNumber(fParMin[i]->GetNumber());
         fParMin[i]->SetNumber(temp);
      }
      if (fParMin[i]->GetNumber() == fParMax[i]->GetNumber()) {
         fParVal[i]->SetState(kFALSE);
         fParMin[i]->SetEnabled(kFALSE);
         fParMax[i]->SetEnabled(kFALSE);
         fParStp[i]->SetState(kFALSE);
         fParSld[i]->Disconnect("PointerPositionChanged()");
         fParSld[i]->Disconnect("PositionChanged()");
         fParSld[i]->UnmapWindow();
         fParBnd[i]->Disconnect("Toggled(Bool_t)");
         fParBnd[i]->SetEnabled(kFALSE);
         fFunc->FixParameter(i, fParVal[i]->GetNumber());
         fParFix[i]->SetState(kButtonDown);
      } else {
         fParFix[i]->SetState(kButtonUp);
         if (!fParMax[i]->IsEnabled()) {
            fParMax[i]->SetEnabled(kTRUE);
            fParMin[i]->SetEnabled(kTRUE);
            fParVal[i]->SetState(kTRUE);
            fParStp[i]->SetState(kTRUE);
            fParSld[i]->SetRange(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
            fParSld[i]->SetPosition(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
            fParSld[i]->SetPointerPosition(fPval[i]);
            fParSld[i]->MapWindow();
            fParSld[i]->Connect("PointerPositionChanged()", "TFitParametersDialog",
                                this, "DoSlider()");
            fParSld[i]->Connect("PositionChanged()", "TFitParametersDialog",
                                this, "DoSlider()");
            fParBnd[i]->SetEnabled(kTRUE);
            fParBnd[i]->Connect("Toggled(Bool_t)", "TFitParametersDialog",
                                this, "DoParBound()");
         }
      }
      fParVal[i]->SetNumber(fPval[i]);

      fParSld[i]->SetRange(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
      fParSld[i]->SetPosition(fParMin[i]->GetNumber(), fParMax[i]->GetNumber());
      fParSld[i]->SetPointerPosition(fPval[i]);
   }

   if (fUpdate->GetState() == kButtonDown)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges)
      fApply->SetState(kButtonUp);
   fHasChanges = kFALSE;
   *fRetCode = kFPDBounded;
   fReset->SetState(kButtonDisabled);
}

//______________________________________________________________________________
void TFitParametersDialog::DoSlider()
{
   // Slot related to the parameters' value settings.

   TGTripleHSlider *sl = (TGTripleHSlider *) gTQSender;
   Int_t id = sl->WidgetId();

   fHasChanges = kTRUE;
   for (Int_t i = 0; i < fNP; i++ ) {
      if (id == kSLD*fNP+i) {
         fFunc->SetParameter(i,fParSld[i]->GetPointerPosition());
         fFunc->SetParLimits(i,fParSld[i]->GetMinPosition(),
                               fParSld[i]->GetMaxPosition());
         fParMin[i]->SetNumber(fParSld[i]->GetMinPosition());
         fParMax[i]->SetNumber(fParSld[i]->GetMaxPosition());
         fParVal[i]->SetNumber(fParSld[i]->GetPointerPosition());
      }
   }
   if (fUpdate->GetState() == kButtonDown)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges)
      fApply->SetState(kButtonUp);
   if (fReset->GetState() == kButtonDisabled)
      fReset->SetState(kButtonUp);
}

//______________________________________________________________________________
void TFitParametersDialog::DoParValue()
{
   // Slot related to the parameter value settings.

   TGNumberEntry *ne = (TGNumberEntry *) gTQSender;
   Int_t id = ne->WidgetId();

   for (Int_t i = 0; i < fNP; i++ ) {
      if (id == kVAL*fNP+i)  {
         if (fParVal[i]->GetNumber() < fParMin[i]->GetNumber()) {
            Double_t extraIncrement = (fParMax[i]->GetNumber() - fParMin[i]->GetNumber()) / 4;
            fParMin[i]->SetNumber(fParVal[i]->GetNumber() - extraIncrement );
            fClient->NeedRedraw(fParMin[i]);
            fParSld[i]->SetRange(fParMin[i]->GetNumber(),
                                 fParMax[i]->GetNumber());
            fParSld[i]->SetPosition(fParMin[i]->GetNumber(),
                                    fParMax[i]->GetNumber());
         }
         if (fParVal[i]->GetNumber() > fParMax[i]->GetNumber()) {
            Double_t extraIncrement = (fParMax[i]->GetNumber() - fParMin[i]->GetNumber()) / 4;
            fParMax[i]->SetNumber(fParVal[i]->GetNumber()  + extraIncrement );
            fClient->NeedRedraw(fParMax[i]);
            fParSld[i]->SetRange(fParMin[i]->GetNumber(),
                                 fParMax[i]->GetNumber());
            fParSld[i]->SetPosition(fParMin[i]->GetNumber(),
                                    fParMax[i]->GetNumber());
         }
         fParSld[i]->SetPointerPosition(fParVal[i]->GetNumber());
         fClient->NeedRedraw(fParSld[i]);
         fFunc->SetParameter(i,fParSld[i]->GetPointerPosition());
         if (fParBnd[i]->GetState() == kButtonDown)
            fFunc->SetParLimits(i,fParSld[i]->GetMinPosition(),
                                  fParSld[i]->GetMaxPosition());
         else
            fFunc->ReleaseParameter(i);
      }
   }
   fHasChanges = kTRUE;
   if (fUpdate->GetState() == kButtonDown)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges)
      fApply->SetState(kButtonUp);
   if (fReset->GetState() == kButtonDisabled)
      fReset->SetState(kButtonUp);
}

//______________________________________________________________________________
void TFitParametersDialog::DoParMinLimit()
{
   // Slot related to the minumum parameter limit settings.

   TGNumberEntryField *ne = (TGNumberEntryField *) gTQSender;
   Int_t id = ne->WidgetId();

   for (Int_t i = 0; i < fNP; i++ ) {
      if (id == kMIN*fNP+i) {
         if ((fParMin[i]->GetNumber() >= fParMax[i]->GetNumber()) &&
             (fParBnd[i]->GetState() == kButtonDown)) {
            Int_t ret;
            const char *txt;
            txt = "'Min' cannot be bigger then 'Max' if this parameter is bounded.";
            new TGMsgBox(fClient->GetRoot(), GetMainFrame(),
                         "Parameter Limits", txt, kMBIconExclamation, kMBOk, &ret);
            fParMin[i]->SetNumber(fParVal[i]->GetNumber()-fParStp[i]->GetNumber());
            return;
         }
         if (fParBnd[i]->GetState() == kButtonDown) {
            Double_t val = (fParMax[i]->GetNumber()+fParMin[i]->GetNumber())/2.;
            fParVal[i]->SetNumber(val);
            fParVal[i]->SetLimitValues(fParMin[i]->GetNumber(),
                                       fParMax[i]->GetNumber());
         }
         fParSld[i]->SetRange(fParMin[i]->GetNumber(),
                              fParMax[i]->GetNumber());
         fParSld[i]->SetPosition(fParMin[i]->GetNumber(),
                                 fParMax[i]->GetNumber());
         fParSld[i]->SetPointerPosition(fParVal[i]->GetNumber());
         fClient->NeedRedraw(fParSld[i]);
      }
   }
   fHasChanges = kTRUE;
   if (fUpdate->GetState() == kButtonDown)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges)
      fApply->SetState(kButtonUp);
   if (fReset->GetState() == kButtonDisabled)
      fReset->SetState(kButtonUp);
}

//______________________________________________________________________________
void TFitParametersDialog::DoParMaxLimit()
{
   // Slot related to the maximum parameter limit settings.

   TGNumberEntryField *ne = (TGNumberEntryField *) gTQSender;
   Int_t id = ne->WidgetId();

   for (Int_t i = 0; i < fNP; i++ ) {
      if (id == kMAX*fNP+i) {
         if ((fParMin[i]->GetNumber() >= fParMax[i]->GetNumber()) &&
             (fParBnd[i]->GetState() == kButtonDown)) {
            Int_t ret;
            const char *txt;
            txt = "'Min' cannot be bigger then 'Max' if this parameter is bounded.";
            new TGMsgBox(fClient->GetRoot(), GetMainFrame(),
                         "Parameter Limits", txt, kMBIconExclamation, kMBOk, &ret);
            fParMax[i]->SetNumber(fParVal[i]->GetNumber()+fParStp[i]->GetNumber());
            return;
         }
         if (fParBnd[i]->GetState() == kButtonDown) {
            Double_t val = (fParMax[i]->GetNumber()+(fParMin[i]->GetNumber()))/2.;
            fParVal[i]->SetNumber(val);
            fParVal[i]->SetLimitValues(fParMin[i]->GetNumber(),
                                       fParMax[i]->GetNumber());
         }
         fParSld[i]->SetRange(fParMin[i]->GetNumber(),
                              fParMax[i]->GetNumber());
         fParSld[i]->SetPosition(fParMin[i]->GetNumber(),
                                 fParMax[i]->GetNumber());
         fParSld[i]->SetPointerPosition(fParVal[i]->GetNumber());
         fClient->NeedRedraw(fParSld[i]);
      }
   }
   fHasChanges = kTRUE;
   if (fUpdate->GetState() == kButtonDown)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges)
      fApply->SetState(kButtonUp);
   if (fReset->GetState() == kButtonDisabled)
      fReset->SetState(kButtonUp);
}

//______________________________________________________________________________
void TFitParametersDialog::DrawFunction()
{
   // Redraw function graphics.

   if ( !fFpad ) return;
   TVirtualPad *save = 0;
   save = gPad;
   gPad = fFpad;
   gPad->cd();

   Style_t st = fFunc->GetLineStyle();
   fFunc->SetLineStyle(2);

   TString opt = fFunc->GetDrawOption();
   opt.ToUpper();
   if (!opt.Contains("SAME"))
      opt += "SAME";
   //fFunc->SetRange(fRXmin, fRXmax);
   fFunc->Draw(opt);
   gPad->Modified();
   gPad->Update();
   fHasChanges = kFALSE;

   fFunc->SetLineStyle(st);
   if (save) gPad = save;
   *fRetCode = kFPDBounded;
}

//______________________________________________________________________________
void TFitParametersDialog::HandleButtons(Bool_t update)
{
   // Handle the button dependent states in this dialog.

   if (update && fHasChanges)
      DrawFunction();
   else if ((fApply->GetState() == kButtonDisabled) && fHasChanges) {
      fApply->SetState(kButtonUp);
   }
}

//______________________________________________________________________________
void TFitParametersDialog::DisconnectSlots()
{
   // Disconnect signals from slot methods.

   for (Int_t i = 0; i < fNP; i++ ) {
      fParFix[i]->Disconnect("Toggled(Bool_t)");
      fParBnd[i]->Disconnect("Toggled(Bool_t)");
      fParVal[i]->Disconnect("ValueSet(Long_t)");
      fParMin[i]->Disconnect("ReturnPressed()");
      fParMax[i]->Disconnect("ReturnPressed()");
      fParSld[i]->Disconnect("PointerPositionChanged()");
      fParSld[i]->Disconnect("PositionChanged()");
      fParStp[i]->Disconnect("ValueSet(Long_t)");
      fParVal[i]->Disconnect("TabPressed(Long_t)");
      fParVal[i]->Disconnect("ShiftTabPressed(Long_t)");
      fParMin[i]->Disconnect("TabPressed(Long_t)");
      fParMin[i]->Disconnect("ShiftTabPressed(Long_t)");
      fParMax[i]->Disconnect("TabPressed(Long_t)");
      fParMax[i]->Disconnect("ShiftTabPressed(Long_t)");
      fParStp[i]->Disconnect("TabPressed(Long_t)");
      fParStp[i]->Disconnect("ShiftTabPressed(Long_t)");
   }
   fUpdate->Disconnect("Toggled(Bool_t)");
   fReset->Disconnect("Clicked()");
   fApply->Disconnect("Clicked()");
   fOK->Disconnect("Clicked()");
   fCancel->Disconnect("Clicked()");
}

//______________________________________________________________________________
void TFitParametersDialog::HandleShiftTab()
{
   // Handle Shift+Tab key event (set focus to the previous number entry field)

   TGNumberEntryField *next, *sender = (TGNumberEntryField *)gTQSender;
   next = (TGNumberEntryField *)fTextEntries.Before((TObject *)sender);
   if (next == 0)
      next = (TGNumberEntryField *)fTextEntries.Last();
   if (next) {
      next->SetFocus();
      next->Home();
   }
}

//______________________________________________________________________________
void TFitParametersDialog::HandleTab()
{
   // Handle Tab key event (set focus to the next number entry field)

   TGNumberEntryField *next, *sender = (TGNumberEntryField *)gTQSender;
   next = (TGNumberEntryField *)fTextEntries.After((TObject *)sender);
   if (next == 0)
      next = (TGNumberEntryField *)fTextEntries.First();
   if (next) {
      next->SetFocus();
      next->Home();
   }
}



 TFitParametersDialog.cxx:1
 TFitParametersDialog.cxx:2
 TFitParametersDialog.cxx:3
 TFitParametersDialog.cxx:4
 TFitParametersDialog.cxx:5
 TFitParametersDialog.cxx:6
 TFitParametersDialog.cxx:7
 TFitParametersDialog.cxx:8
 TFitParametersDialog.cxx:9
 TFitParametersDialog.cxx:10
 TFitParametersDialog.cxx:11
 TFitParametersDialog.cxx:12
 TFitParametersDialog.cxx:13
 TFitParametersDialog.cxx:14
 TFitParametersDialog.cxx:15
 TFitParametersDialog.cxx:16
 TFitParametersDialog.cxx:17
 TFitParametersDialog.cxx:18
 TFitParametersDialog.cxx:19
 TFitParametersDialog.cxx:20
 TFitParametersDialog.cxx:21
 TFitParametersDialog.cxx:22
 TFitParametersDialog.cxx:23
 TFitParametersDialog.cxx:24
 TFitParametersDialog.cxx:25
 TFitParametersDialog.cxx:26
 TFitParametersDialog.cxx:27
 TFitParametersDialog.cxx:28
 TFitParametersDialog.cxx:29
 TFitParametersDialog.cxx:30
 TFitParametersDialog.cxx:31
 TFitParametersDialog.cxx:32
 TFitParametersDialog.cxx:33
 TFitParametersDialog.cxx:34
 TFitParametersDialog.cxx:35
 TFitParametersDialog.cxx:36
 TFitParametersDialog.cxx:37
 TFitParametersDialog.cxx:38
 TFitParametersDialog.cxx:39
 TFitParametersDialog.cxx:40
 TFitParametersDialog.cxx:41
 TFitParametersDialog.cxx:42
 TFitParametersDialog.cxx:43
 TFitParametersDialog.cxx:44
 TFitParametersDialog.cxx:45
 TFitParametersDialog.cxx:46
 TFitParametersDialog.cxx:47
 TFitParametersDialog.cxx:48
 TFitParametersDialog.cxx:49
 TFitParametersDialog.cxx:50
 TFitParametersDialog.cxx:51
 TFitParametersDialog.cxx:52
 TFitParametersDialog.cxx:53
 TFitParametersDialog.cxx:54
 TFitParametersDialog.cxx:55
 TFitParametersDialog.cxx:56
 TFitParametersDialog.cxx:57
 TFitParametersDialog.cxx:58
 TFitParametersDialog.cxx:59
 TFitParametersDialog.cxx:60
 TFitParametersDialog.cxx:61
 TFitParametersDialog.cxx:62
 TFitParametersDialog.cxx:63
 TFitParametersDialog.cxx:64
 TFitParametersDialog.cxx:65
 TFitParametersDialog.cxx:66
 TFitParametersDialog.cxx:67
 TFitParametersDialog.cxx:68
 TFitParametersDialog.cxx:69
 TFitParametersDialog.cxx:70
 TFitParametersDialog.cxx:71
 TFitParametersDialog.cxx:72
 TFitParametersDialog.cxx:73
 TFitParametersDialog.cxx:74
 TFitParametersDialog.cxx:75
 TFitParametersDialog.cxx:76
 TFitParametersDialog.cxx:77
 TFitParametersDialog.cxx:78
 TFitParametersDialog.cxx:79
 TFitParametersDialog.cxx:80
 TFitParametersDialog.cxx:81
 TFitParametersDialog.cxx:82
 TFitParametersDialog.cxx:83
 TFitParametersDialog.cxx:84
 TFitParametersDialog.cxx:85
 TFitParametersDialog.cxx:86
 TFitParametersDialog.cxx:87
 TFitParametersDialog.cxx:88
 TFitParametersDialog.cxx:89
 TFitParametersDialog.cxx:90
 TFitParametersDialog.cxx:91
 TFitParametersDialog.cxx:92
 TFitParametersDialog.cxx:93
 TFitParametersDialog.cxx:94
 TFitParametersDialog.cxx:95
 TFitParametersDialog.cxx:96
 TFitParametersDialog.cxx:97
 TFitParametersDialog.cxx:98
 TFitParametersDialog.cxx:99
 TFitParametersDialog.cxx:100
 TFitParametersDialog.cxx:101
 TFitParametersDialog.cxx:102
 TFitParametersDialog.cxx:103
 TFitParametersDialog.cxx:104
 TFitParametersDialog.cxx:105
 TFitParametersDialog.cxx:106
 TFitParametersDialog.cxx:107
 TFitParametersDialog.cxx:108
 TFitParametersDialog.cxx:109
 TFitParametersDialog.cxx:110
 TFitParametersDialog.cxx:111
 TFitParametersDialog.cxx:112
 TFitParametersDialog.cxx:113
 TFitParametersDialog.cxx:114
 TFitParametersDialog.cxx:115
 TFitParametersDialog.cxx:116
 TFitParametersDialog.cxx:117
 TFitParametersDialog.cxx:118
 TFitParametersDialog.cxx:119
 TFitParametersDialog.cxx:120
 TFitParametersDialog.cxx:121
 TFitParametersDialog.cxx:122
 TFitParametersDialog.cxx:123
 TFitParametersDialog.cxx:124
 TFitParametersDialog.cxx:125
 TFitParametersDialog.cxx:126
 TFitParametersDialog.cxx:127
 TFitParametersDialog.cxx:128
 TFitParametersDialog.cxx:129
 TFitParametersDialog.cxx:130
 TFitParametersDialog.cxx:131
 TFitParametersDialog.cxx:132
 TFitParametersDialog.cxx:133
 TFitParametersDialog.cxx:134
 TFitParametersDialog.cxx:135
 TFitParametersDialog.cxx:136
 TFitParametersDialog.cxx:137
 TFitParametersDialog.cxx:138
 TFitParametersDialog.cxx:139
 TFitParametersDialog.cxx:140
 TFitParametersDialog.cxx:141
 TFitParametersDialog.cxx:142
 TFitParametersDialog.cxx:143
 TFitParametersDialog.cxx:144
 TFitParametersDialog.cxx:145
 TFitParametersDialog.cxx:146
 TFitParametersDialog.cxx:147
 TFitParametersDialog.cxx:148
 TFitParametersDialog.cxx:149
 TFitParametersDialog.cxx:150
 TFitParametersDialog.cxx:151
 TFitParametersDialog.cxx:152
 TFitParametersDialog.cxx:153
 TFitParametersDialog.cxx:154
 TFitParametersDialog.cxx:155
 TFitParametersDialog.cxx:156
 TFitParametersDialog.cxx:157
 TFitParametersDialog.cxx:158
 TFitParametersDialog.cxx:159
 TFitParametersDialog.cxx:160
 TFitParametersDialog.cxx:161
 TFitParametersDialog.cxx:162
 TFitParametersDialog.cxx:163
 TFitParametersDialog.cxx:164
 TFitParametersDialog.cxx:165
 TFitParametersDialog.cxx:166
 TFitParametersDialog.cxx:167
 TFitParametersDialog.cxx:168
 TFitParametersDialog.cxx:169
 TFitParametersDialog.cxx:170
 TFitParametersDialog.cxx:171
 TFitParametersDialog.cxx:172
 TFitParametersDialog.cxx:173
 TFitParametersDialog.cxx:174
 TFitParametersDialog.cxx:175
 TFitParametersDialog.cxx:176
 TFitParametersDialog.cxx:177
 TFitParametersDialog.cxx:178
 TFitParametersDialog.cxx:179
 TFitParametersDialog.cxx:180
 TFitParametersDialog.cxx:181
 TFitParametersDialog.cxx:182
 TFitParametersDialog.cxx:183
 TFitParametersDialog.cxx:184
 TFitParametersDialog.cxx:185
 TFitParametersDialog.cxx:186
 TFitParametersDialog.cxx:187
 TFitParametersDialog.cxx:188
 TFitParametersDialog.cxx:189
 TFitParametersDialog.cxx:190
 TFitParametersDialog.cxx:191
 TFitParametersDialog.cxx:192
 TFitParametersDialog.cxx:193
 TFitParametersDialog.cxx:194
 TFitParametersDialog.cxx:195
 TFitParametersDialog.cxx:196
 TFitParametersDialog.cxx:197
 TFitParametersDialog.cxx:198
 TFitParametersDialog.cxx:199
 TFitParametersDialog.cxx:200
 TFitParametersDialog.cxx:201
 TFitParametersDialog.cxx:202
 TFitParametersDialog.cxx:203
 TFitParametersDialog.cxx:204
 TFitParametersDialog.cxx:205
 TFitParametersDialog.cxx:206
 TFitParametersDialog.cxx:207
 TFitParametersDialog.cxx:208
 TFitParametersDialog.cxx:209
 TFitParametersDialog.cxx:210
 TFitParametersDialog.cxx:211
 TFitParametersDialog.cxx:212
 TFitParametersDialog.cxx:213
 TFitParametersDialog.cxx:214
 TFitParametersDialog.cxx:215
 TFitParametersDialog.cxx:216
 TFitParametersDialog.cxx:217
 TFitParametersDialog.cxx:218
 TFitParametersDialog.cxx:219
 TFitParametersDialog.cxx:220
 TFitParametersDialog.cxx:221
 TFitParametersDialog.cxx:222
 TFitParametersDialog.cxx:223
 TFitParametersDialog.cxx:224
 TFitParametersDialog.cxx:225
 TFitParametersDialog.cxx:226
 TFitParametersDialog.cxx:227
 TFitParametersDialog.cxx:228
 TFitParametersDialog.cxx:229
 TFitParametersDialog.cxx:230
 TFitParametersDialog.cxx:231
 TFitParametersDialog.cxx:232
 TFitParametersDialog.cxx:233
 TFitParametersDialog.cxx:234
 TFitParametersDialog.cxx:235
 TFitParametersDialog.cxx:236
 TFitParametersDialog.cxx:237
 TFitParametersDialog.cxx:238
 TFitParametersDialog.cxx:239
 TFitParametersDialog.cxx:240
 TFitParametersDialog.cxx:241
 TFitParametersDialog.cxx:242
 TFitParametersDialog.cxx:243
 TFitParametersDialog.cxx:244
 TFitParametersDialog.cxx:245
 TFitParametersDialog.cxx:246
 TFitParametersDialog.cxx:247
 TFitParametersDialog.cxx:248
 TFitParametersDialog.cxx:249
 TFitParametersDialog.cxx:250
 TFitParametersDialog.cxx:251
 TFitParametersDialog.cxx:252
 TFitParametersDialog.cxx:253
 TFitParametersDialog.cxx:254
 TFitParametersDialog.cxx:255
 TFitParametersDialog.cxx:256
 TFitParametersDialog.cxx:257
 TFitParametersDialog.cxx:258
 TFitParametersDialog.cxx:259
 TFitParametersDialog.cxx:260
 TFitParametersDialog.cxx:261
 TFitParametersDialog.cxx:262
 TFitParametersDialog.cxx:263
 TFitParametersDialog.cxx:264
 TFitParametersDialog.cxx:265
 TFitParametersDialog.cxx:266
 TFitParametersDialog.cxx:267
 TFitParametersDialog.cxx:268
 TFitParametersDialog.cxx:269
 TFitParametersDialog.cxx:270
 TFitParametersDialog.cxx:271
 TFitParametersDialog.cxx:272
 TFitParametersDialog.cxx:273
 TFitParametersDialog.cxx:274
 TFitParametersDialog.cxx:275
 TFitParametersDialog.cxx:276
 TFitParametersDialog.cxx:277
 TFitParametersDialog.cxx:278
 TFitParametersDialog.cxx:279
 TFitParametersDialog.cxx:280
 TFitParametersDialog.cxx:281
 TFitParametersDialog.cxx:282
 TFitParametersDialog.cxx:283
 TFitParametersDialog.cxx:284
 TFitParametersDialog.cxx:285
 TFitParametersDialog.cxx:286
 TFitParametersDialog.cxx:287
 TFitParametersDialog.cxx:288
 TFitParametersDialog.cxx:289
 TFitParametersDialog.cxx:290
 TFitParametersDialog.cxx:291
 TFitParametersDialog.cxx:292
 TFitParametersDialog.cxx:293
 TFitParametersDialog.cxx:294
 TFitParametersDialog.cxx:295
 TFitParametersDialog.cxx:296
 TFitParametersDialog.cxx:297
 TFitParametersDialog.cxx:298
 TFitParametersDialog.cxx:299
 TFitParametersDialog.cxx:300
 TFitParametersDialog.cxx:301
 TFitParametersDialog.cxx:302
 TFitParametersDialog.cxx:303
 TFitParametersDialog.cxx:304
 TFitParametersDialog.cxx:305
 TFitParametersDialog.cxx:306
 TFitParametersDialog.cxx:307
 TFitParametersDialog.cxx:308
 TFitParametersDialog.cxx:309
 TFitParametersDialog.cxx:310
 TFitParametersDialog.cxx:311
 TFitParametersDialog.cxx:312
 TFitParametersDialog.cxx:313
 TFitParametersDialog.cxx:314
 TFitParametersDialog.cxx:315
 TFitParametersDialog.cxx:316
 TFitParametersDialog.cxx:317
 TFitParametersDialog.cxx:318
 TFitParametersDialog.cxx:319
 TFitParametersDialog.cxx:320
 TFitParametersDialog.cxx:321
 TFitParametersDialog.cxx:322
 TFitParametersDialog.cxx:323
 TFitParametersDialog.cxx:324
 TFitParametersDialog.cxx:325
 TFitParametersDialog.cxx:326
 TFitParametersDialog.cxx:327
 TFitParametersDialog.cxx:328
 TFitParametersDialog.cxx:329
 TFitParametersDialog.cxx:330
 TFitParametersDialog.cxx:331
 TFitParametersDialog.cxx:332
 TFitParametersDialog.cxx:333
 TFitParametersDialog.cxx:334
 TFitParametersDialog.cxx:335
 TFitParametersDialog.cxx:336
 TFitParametersDialog.cxx:337
 TFitParametersDialog.cxx:338
 TFitParametersDialog.cxx:339
 TFitParametersDialog.cxx:340
 TFitParametersDialog.cxx:341
 TFitParametersDialog.cxx:342
 TFitParametersDialog.cxx:343
 TFitParametersDialog.cxx:344
 TFitParametersDialog.cxx:345
 TFitParametersDialog.cxx:346
 TFitParametersDialog.cxx:347
 TFitParametersDialog.cxx:348
 TFitParametersDialog.cxx:349
 TFitParametersDialog.cxx:350
 TFitParametersDialog.cxx:351
 TFitParametersDialog.cxx:352
 TFitParametersDialog.cxx:353
 TFitParametersDialog.cxx:354
 TFitParametersDialog.cxx:355
 TFitParametersDialog.cxx:356
 TFitParametersDialog.cxx:357
 TFitParametersDialog.cxx:358
 TFitParametersDialog.cxx:359
 TFitParametersDialog.cxx:360
 TFitParametersDialog.cxx:361
 TFitParametersDialog.cxx:362
 TFitParametersDialog.cxx:363
 TFitParametersDialog.cxx:364
 TFitParametersDialog.cxx:365
 TFitParametersDialog.cxx:366
 TFitParametersDialog.cxx:367
 TFitParametersDialog.cxx:368
 TFitParametersDialog.cxx:369
 TFitParametersDialog.cxx:370
 TFitParametersDialog.cxx:371
 TFitParametersDialog.cxx:372
 TFitParametersDialog.cxx:373
 TFitParametersDialog.cxx:374
 TFitParametersDialog.cxx:375
 TFitParametersDialog.cxx:376
 TFitParametersDialog.cxx:377
 TFitParametersDialog.cxx:378
 TFitParametersDialog.cxx:379
 TFitParametersDialog.cxx:380
 TFitParametersDialog.cxx:381
 TFitParametersDialog.cxx:382
 TFitParametersDialog.cxx:383
 TFitParametersDialog.cxx:384
 TFitParametersDialog.cxx:385
 TFitParametersDialog.cxx:386
 TFitParametersDialog.cxx:387
 TFitParametersDialog.cxx:388
 TFitParametersDialog.cxx:389
 TFitParametersDialog.cxx:390
 TFitParametersDialog.cxx:391
 TFitParametersDialog.cxx:392
 TFitParametersDialog.cxx:393
 TFitParametersDialog.cxx:394
 TFitParametersDialog.cxx:395
 TFitParametersDialog.cxx:396
 TFitParametersDialog.cxx:397
 TFitParametersDialog.cxx:398
 TFitParametersDialog.cxx:399
 TFitParametersDialog.cxx:400
 TFitParametersDialog.cxx:401
 TFitParametersDialog.cxx:402
 TFitParametersDialog.cxx:403
 TFitParametersDialog.cxx:404
 TFitParametersDialog.cxx:405
 TFitParametersDialog.cxx:406
 TFitParametersDialog.cxx:407
 TFitParametersDialog.cxx:408
 TFitParametersDialog.cxx:409
 TFitParametersDialog.cxx:410
 TFitParametersDialog.cxx:411
 TFitParametersDialog.cxx:412
 TFitParametersDialog.cxx:413
 TFitParametersDialog.cxx:414
 TFitParametersDialog.cxx:415
 TFitParametersDialog.cxx:416
 TFitParametersDialog.cxx:417
 TFitParametersDialog.cxx:418
 TFitParametersDialog.cxx:419
 TFitParametersDialog.cxx:420
 TFitParametersDialog.cxx:421
 TFitParametersDialog.cxx:422
 TFitParametersDialog.cxx:423
 TFitParametersDialog.cxx:424
 TFitParametersDialog.cxx:425
 TFitParametersDialog.cxx:426
 TFitParametersDialog.cxx:427
 TFitParametersDialog.cxx:428
 TFitParametersDialog.cxx:429
 TFitParametersDialog.cxx:430
 TFitParametersDialog.cxx:431
 TFitParametersDialog.cxx:432
 TFitParametersDialog.cxx:433
 TFitParametersDialog.cxx:434
 TFitParametersDialog.cxx:435
 TFitParametersDialog.cxx:436
 TFitParametersDialog.cxx:437
 TFitParametersDialog.cxx:438
 TFitParametersDialog.cxx:439
 TFitParametersDialog.cxx:440
 TFitParametersDialog.cxx:441
 TFitParametersDialog.cxx:442
 TFitParametersDialog.cxx:443
 TFitParametersDialog.cxx:444
 TFitParametersDialog.cxx:445
 TFitParametersDialog.cxx:446
 TFitParametersDialog.cxx:447
 TFitParametersDialog.cxx:448
 TFitParametersDialog.cxx:449
 TFitParametersDialog.cxx:450
 TFitParametersDialog.cxx:451
 TFitParametersDialog.cxx:452
 TFitParametersDialog.cxx:453
 TFitParametersDialog.cxx:454
 TFitParametersDialog.cxx:455
 TFitParametersDialog.cxx:456
 TFitParametersDialog.cxx:457
 TFitParametersDialog.cxx:458
 TFitParametersDialog.cxx:459
 TFitParametersDialog.cxx:460
 TFitParametersDialog.cxx:461
 TFitParametersDialog.cxx:462
 TFitParametersDialog.cxx:463
 TFitParametersDialog.cxx:464
 TFitParametersDialog.cxx:465
 TFitParametersDialog.cxx:466
 TFitParametersDialog.cxx:467
 TFitParametersDialog.cxx:468
 TFitParametersDialog.cxx:469
 TFitParametersDialog.cxx:470
 TFitParametersDialog.cxx:471
 TFitParametersDialog.cxx:472
 TFitParametersDialog.cxx:473
 TFitParametersDialog.cxx:474
 TFitParametersDialog.cxx:475
 TFitParametersDialog.cxx:476
 TFitParametersDialog.cxx:477
 TFitParametersDialog.cxx:478
 TFitParametersDialog.cxx:479
 TFitParametersDialog.cxx:480
 TFitParametersDialog.cxx:481
 TFitParametersDialog.cxx:482
 TFitParametersDialog.cxx:483
 TFitParametersDialog.cxx:484
 TFitParametersDialog.cxx:485
 TFitParametersDialog.cxx:486
 TFitParametersDialog.cxx:487
 TFitParametersDialog.cxx:488
 TFitParametersDialog.cxx:489
 TFitParametersDialog.cxx:490
 TFitParametersDialog.cxx:491
 TFitParametersDialog.cxx:492
 TFitParametersDialog.cxx:493
 TFitParametersDialog.cxx:494
 TFitParametersDialog.cxx:495
 TFitParametersDialog.cxx:496
 TFitParametersDialog.cxx:497
 TFitParametersDialog.cxx:498
 TFitParametersDialog.cxx:499
 TFitParametersDialog.cxx:500
 TFitParametersDialog.cxx:501
 TFitParametersDialog.cxx:502
 TFitParametersDialog.cxx:503
 TFitParametersDialog.cxx:504
 TFitParametersDialog.cxx:505
 TFitParametersDialog.cxx:506
 TFitParametersDialog.cxx:507
 TFitParametersDialog.cxx:508
 TFitParametersDialog.cxx:509
 TFitParametersDialog.cxx:510
 TFitParametersDialog.cxx:511
 TFitParametersDialog.cxx:512
 TFitParametersDialog.cxx:513
 TFitParametersDialog.cxx:514
 TFitParametersDialog.cxx:515
 TFitParametersDialog.cxx:516
 TFitParametersDialog.cxx:517
 TFitParametersDialog.cxx:518
 TFitParametersDialog.cxx:519
 TFitParametersDialog.cxx:520
 TFitParametersDialog.cxx:521
 TFitParametersDialog.cxx:522
 TFitParametersDialog.cxx:523
 TFitParametersDialog.cxx:524
 TFitParametersDialog.cxx:525
 TFitParametersDialog.cxx:526
 TFitParametersDialog.cxx:527
 TFitParametersDialog.cxx:528
 TFitParametersDialog.cxx:529
 TFitParametersDialog.cxx:530
 TFitParametersDialog.cxx:531
 TFitParametersDialog.cxx:532
 TFitParametersDialog.cxx:533
 TFitParametersDialog.cxx:534
 TFitParametersDialog.cxx:535
 TFitParametersDialog.cxx:536
 TFitParametersDialog.cxx:537
 TFitParametersDialog.cxx:538
 TFitParametersDialog.cxx:539
 TFitParametersDialog.cxx:540
 TFitParametersDialog.cxx:541
 TFitParametersDialog.cxx:542
 TFitParametersDialog.cxx:543
 TFitParametersDialog.cxx:544
 TFitParametersDialog.cxx:545
 TFitParametersDialog.cxx:546
 TFitParametersDialog.cxx:547
 TFitParametersDialog.cxx:548
 TFitParametersDialog.cxx:549
 TFitParametersDialog.cxx:550
 TFitParametersDialog.cxx:551
 TFitParametersDialog.cxx:552
 TFitParametersDialog.cxx:553
 TFitParametersDialog.cxx:554
 TFitParametersDialog.cxx:555
 TFitParametersDialog.cxx:556
 TFitParametersDialog.cxx:557
 TFitParametersDialog.cxx:558
 TFitParametersDialog.cxx:559
 TFitParametersDialog.cxx:560
 TFitParametersDialog.cxx:561
 TFitParametersDialog.cxx:562
 TFitParametersDialog.cxx:563
 TFitParametersDialog.cxx:564
 TFitParametersDialog.cxx:565
 TFitParametersDialog.cxx:566
 TFitParametersDialog.cxx:567
 TFitParametersDialog.cxx:568
 TFitParametersDialog.cxx:569
 TFitParametersDialog.cxx:570
 TFitParametersDialog.cxx:571
 TFitParametersDialog.cxx:572
 TFitParametersDialog.cxx:573
 TFitParametersDialog.cxx:574
 TFitParametersDialog.cxx:575
 TFitParametersDialog.cxx:576
 TFitParametersDialog.cxx:577
 TFitParametersDialog.cxx:578
 TFitParametersDialog.cxx:579
 TFitParametersDialog.cxx:580
 TFitParametersDialog.cxx:581
 TFitParametersDialog.cxx:582
 TFitParametersDialog.cxx:583
 TFitParametersDialog.cxx:584
 TFitParametersDialog.cxx:585
 TFitParametersDialog.cxx:586
 TFitParametersDialog.cxx:587
 TFitParametersDialog.cxx:588
 TFitParametersDialog.cxx:589
 TFitParametersDialog.cxx:590
 TFitParametersDialog.cxx:591
 TFitParametersDialog.cxx:592
 TFitParametersDialog.cxx:593
 TFitParametersDialog.cxx:594
 TFitParametersDialog.cxx:595
 TFitParametersDialog.cxx:596
 TFitParametersDialog.cxx:597
 TFitParametersDialog.cxx:598
 TFitParametersDialog.cxx:599
 TFitParametersDialog.cxx:600
 TFitParametersDialog.cxx:601
 TFitParametersDialog.cxx:602
 TFitParametersDialog.cxx:603
 TFitParametersDialog.cxx:604
 TFitParametersDialog.cxx:605
 TFitParametersDialog.cxx:606
 TFitParametersDialog.cxx:607
 TFitParametersDialog.cxx:608
 TFitParametersDialog.cxx:609
 TFitParametersDialog.cxx:610
 TFitParametersDialog.cxx:611
 TFitParametersDialog.cxx:612
 TFitParametersDialog.cxx:613
 TFitParametersDialog.cxx:614
 TFitParametersDialog.cxx:615
 TFitParametersDialog.cxx:616
 TFitParametersDialog.cxx:617
 TFitParametersDialog.cxx:618
 TFitParametersDialog.cxx:619
 TFitParametersDialog.cxx:620
 TFitParametersDialog.cxx:621
 TFitParametersDialog.cxx:622
 TFitParametersDialog.cxx:623
 TFitParametersDialog.cxx:624
 TFitParametersDialog.cxx:625
 TFitParametersDialog.cxx:626
 TFitParametersDialog.cxx:627
 TFitParametersDialog.cxx:628
 TFitParametersDialog.cxx:629
 TFitParametersDialog.cxx:630
 TFitParametersDialog.cxx:631
 TFitParametersDialog.cxx:632
 TFitParametersDialog.cxx:633
 TFitParametersDialog.cxx:634
 TFitParametersDialog.cxx:635
 TFitParametersDialog.cxx:636
 TFitParametersDialog.cxx:637
 TFitParametersDialog.cxx:638
 TFitParametersDialog.cxx:639
 TFitParametersDialog.cxx:640
 TFitParametersDialog.cxx:641
 TFitParametersDialog.cxx:642
 TFitParametersDialog.cxx:643
 TFitParametersDialog.cxx:644
 TFitParametersDialog.cxx:645
 TFitParametersDialog.cxx:646
 TFitParametersDialog.cxx:647
 TFitParametersDialog.cxx:648
 TFitParametersDialog.cxx:649
 TFitParametersDialog.cxx:650
 TFitParametersDialog.cxx:651
 TFitParametersDialog.cxx:652
 TFitParametersDialog.cxx:653
 TFitParametersDialog.cxx:654
 TFitParametersDialog.cxx:655
 TFitParametersDialog.cxx:656
 TFitParametersDialog.cxx:657
 TFitParametersDialog.cxx:658
 TFitParametersDialog.cxx:659
 TFitParametersDialog.cxx:660
 TFitParametersDialog.cxx:661
 TFitParametersDialog.cxx:662
 TFitParametersDialog.cxx:663
 TFitParametersDialog.cxx:664
 TFitParametersDialog.cxx:665
 TFitParametersDialog.cxx:666
 TFitParametersDialog.cxx:667
 TFitParametersDialog.cxx:668
 TFitParametersDialog.cxx:669
 TFitParametersDialog.cxx:670
 TFitParametersDialog.cxx:671
 TFitParametersDialog.cxx:672
 TFitParametersDialog.cxx:673
 TFitParametersDialog.cxx:674
 TFitParametersDialog.cxx:675
 TFitParametersDialog.cxx:676
 TFitParametersDialog.cxx:677
 TFitParametersDialog.cxx:678
 TFitParametersDialog.cxx:679
 TFitParametersDialog.cxx:680
 TFitParametersDialog.cxx:681
 TFitParametersDialog.cxx:682
 TFitParametersDialog.cxx:683
 TFitParametersDialog.cxx:684
 TFitParametersDialog.cxx:685
 TFitParametersDialog.cxx:686
 TFitParametersDialog.cxx:687
 TFitParametersDialog.cxx:688
 TFitParametersDialog.cxx:689
 TFitParametersDialog.cxx:690
 TFitParametersDialog.cxx:691
 TFitParametersDialog.cxx:692
 TFitParametersDialog.cxx:693
 TFitParametersDialog.cxx:694
 TFitParametersDialog.cxx:695
 TFitParametersDialog.cxx:696
 TFitParametersDialog.cxx:697
 TFitParametersDialog.cxx:698
 TFitParametersDialog.cxx:699
 TFitParametersDialog.cxx:700
 TFitParametersDialog.cxx:701
 TFitParametersDialog.cxx:702
 TFitParametersDialog.cxx:703
 TFitParametersDialog.cxx:704
 TFitParametersDialog.cxx:705
 TFitParametersDialog.cxx:706
 TFitParametersDialog.cxx:707
 TFitParametersDialog.cxx:708
 TFitParametersDialog.cxx:709
 TFitParametersDialog.cxx:710
 TFitParametersDialog.cxx:711
 TFitParametersDialog.cxx:712
 TFitParametersDialog.cxx:713
 TFitParametersDialog.cxx:714
 TFitParametersDialog.cxx:715
 TFitParametersDialog.cxx:716
 TFitParametersDialog.cxx:717
 TFitParametersDialog.cxx:718
 TFitParametersDialog.cxx:719
 TFitParametersDialog.cxx:720
 TFitParametersDialog.cxx:721
 TFitParametersDialog.cxx:722
 TFitParametersDialog.cxx:723
 TFitParametersDialog.cxx:724
 TFitParametersDialog.cxx:725
 TFitParametersDialog.cxx:726
 TFitParametersDialog.cxx:727
 TFitParametersDialog.cxx:728
 TFitParametersDialog.cxx:729
 TFitParametersDialog.cxx:730
 TFitParametersDialog.cxx:731
 TFitParametersDialog.cxx:732
 TFitParametersDialog.cxx:733
 TFitParametersDialog.cxx:734
 TFitParametersDialog.cxx:735
 TFitParametersDialog.cxx:736
 TFitParametersDialog.cxx:737
 TFitParametersDialog.cxx:738
 TFitParametersDialog.cxx:739
 TFitParametersDialog.cxx:740
 TFitParametersDialog.cxx:741
 TFitParametersDialog.cxx:742
 TFitParametersDialog.cxx:743
 TFitParametersDialog.cxx:744
 TFitParametersDialog.cxx:745
 TFitParametersDialog.cxx:746
 TFitParametersDialog.cxx:747
 TFitParametersDialog.cxx:748
 TFitParametersDialog.cxx:749
 TFitParametersDialog.cxx:750
 TFitParametersDialog.cxx:751
 TFitParametersDialog.cxx:752
 TFitParametersDialog.cxx:753
 TFitParametersDialog.cxx:754
 TFitParametersDialog.cxx:755
 TFitParametersDialog.cxx:756
 TFitParametersDialog.cxx:757
 TFitParametersDialog.cxx:758
 TFitParametersDialog.cxx:759
 TFitParametersDialog.cxx:760
 TFitParametersDialog.cxx:761
 TFitParametersDialog.cxx:762
 TFitParametersDialog.cxx:763
 TFitParametersDialog.cxx:764
 TFitParametersDialog.cxx:765
 TFitParametersDialog.cxx:766
 TFitParametersDialog.cxx:767
 TFitParametersDialog.cxx:768
 TFitParametersDialog.cxx:769
 TFitParametersDialog.cxx:770
 TFitParametersDialog.cxx:771
 TFitParametersDialog.cxx:772
 TFitParametersDialog.cxx:773
 TFitParametersDialog.cxx:774
 TFitParametersDialog.cxx:775
 TFitParametersDialog.cxx:776
 TFitParametersDialog.cxx:777
 TFitParametersDialog.cxx:778
 TFitParametersDialog.cxx:779
 TFitParametersDialog.cxx:780
 TFitParametersDialog.cxx:781
 TFitParametersDialog.cxx:782
 TFitParametersDialog.cxx:783
 TFitParametersDialog.cxx:784
 TFitParametersDialog.cxx:785
 TFitParametersDialog.cxx:786
 TFitParametersDialog.cxx:787
 TFitParametersDialog.cxx:788
 TFitParametersDialog.cxx:789
 TFitParametersDialog.cxx:790
 TFitParametersDialog.cxx:791
 TFitParametersDialog.cxx:792
 TFitParametersDialog.cxx:793
 TFitParametersDialog.cxx:794
 TFitParametersDialog.cxx:795
 TFitParametersDialog.cxx:796
 TFitParametersDialog.cxx:797
 TFitParametersDialog.cxx:798
 TFitParametersDialog.cxx:799
 TFitParametersDialog.cxx:800
 TFitParametersDialog.cxx:801
 TFitParametersDialog.cxx:802
 TFitParametersDialog.cxx:803
 TFitParametersDialog.cxx:804
 TFitParametersDialog.cxx:805
 TFitParametersDialog.cxx:806
 TFitParametersDialog.cxx:807
 TFitParametersDialog.cxx:808
 TFitParametersDialog.cxx:809
 TFitParametersDialog.cxx:810
 TFitParametersDialog.cxx:811
 TFitParametersDialog.cxx:812
 TFitParametersDialog.cxx:813
 TFitParametersDialog.cxx:814
 TFitParametersDialog.cxx:815
 TFitParametersDialog.cxx:816
 TFitParametersDialog.cxx:817
 TFitParametersDialog.cxx:818
 TFitParametersDialog.cxx:819
 TFitParametersDialog.cxx:820
 TFitParametersDialog.cxx:821
 TFitParametersDialog.cxx:822
 TFitParametersDialog.cxx:823
 TFitParametersDialog.cxx:824
 TFitParametersDialog.cxx:825
 TFitParametersDialog.cxx:826
 TFitParametersDialog.cxx:827
 TFitParametersDialog.cxx:828
 TFitParametersDialog.cxx:829
 TFitParametersDialog.cxx:830
 TFitParametersDialog.cxx:831
 TFitParametersDialog.cxx:832
 TFitParametersDialog.cxx:833
 TFitParametersDialog.cxx:834
 TFitParametersDialog.cxx:835
 TFitParametersDialog.cxx:836
 TFitParametersDialog.cxx:837
 TFitParametersDialog.cxx:838
 TFitParametersDialog.cxx:839
 TFitParametersDialog.cxx:840
 TFitParametersDialog.cxx:841
 TFitParametersDialog.cxx:842
 TFitParametersDialog.cxx:843
 TFitParametersDialog.cxx:844
 TFitParametersDialog.cxx:845
 TFitParametersDialog.cxx:846
 TFitParametersDialog.cxx:847
 TFitParametersDialog.cxx:848
 TFitParametersDialog.cxx:849
 TFitParametersDialog.cxx:850
 TFitParametersDialog.cxx:851
 TFitParametersDialog.cxx:852
 TFitParametersDialog.cxx:853
 TFitParametersDialog.cxx:854
 TFitParametersDialog.cxx:855
 TFitParametersDialog.cxx:856
 TFitParametersDialog.cxx:857
 TFitParametersDialog.cxx:858
 TFitParametersDialog.cxx:859
 TFitParametersDialog.cxx:860
 TFitParametersDialog.cxx:861
 TFitParametersDialog.cxx:862
 TFitParametersDialog.cxx:863
 TFitParametersDialog.cxx:864
 TFitParametersDialog.cxx:865
 TFitParametersDialog.cxx:866
 TFitParametersDialog.cxx:867
 TFitParametersDialog.cxx:868
 TFitParametersDialog.cxx:869
 TFitParametersDialog.cxx:870
 TFitParametersDialog.cxx:871
 TFitParametersDialog.cxx:872
 TFitParametersDialog.cxx:873
 TFitParametersDialog.cxx:874
 TFitParametersDialog.cxx:875
 TFitParametersDialog.cxx:876
 TFitParametersDialog.cxx:877
 TFitParametersDialog.cxx:878
 TFitParametersDialog.cxx:879
 TFitParametersDialog.cxx:880
 TFitParametersDialog.cxx:881
 TFitParametersDialog.cxx:882
 TFitParametersDialog.cxx:883
 TFitParametersDialog.cxx:884
 TFitParametersDialog.cxx:885
 TFitParametersDialog.cxx:886
 TFitParametersDialog.cxx:887
 TFitParametersDialog.cxx:888
 TFitParametersDialog.cxx:889
 TFitParametersDialog.cxx:890
 TFitParametersDialog.cxx:891
 TFitParametersDialog.cxx:892
 TFitParametersDialog.cxx:893
 TFitParametersDialog.cxx:894
 TFitParametersDialog.cxx:895
 TFitParametersDialog.cxx:896
 TFitParametersDialog.cxx:897
 TFitParametersDialog.cxx:898
 TFitParametersDialog.cxx:899
 TFitParametersDialog.cxx:900
 TFitParametersDialog.cxx:901
 TFitParametersDialog.cxx:902
 TFitParametersDialog.cxx:903
 TFitParametersDialog.cxx:904
 TFitParametersDialog.cxx:905
 TFitParametersDialog.cxx:906
 TFitParametersDialog.cxx:907
 TFitParametersDialog.cxx:908
 TFitParametersDialog.cxx:909
 TFitParametersDialog.cxx:910
 TFitParametersDialog.cxx:911
 TFitParametersDialog.cxx:912
 TFitParametersDialog.cxx:913
 TFitParametersDialog.cxx:914
 TFitParametersDialog.cxx:915
 TFitParametersDialog.cxx:916
 TFitParametersDialog.cxx:917
 TFitParametersDialog.cxx:918
 TFitParametersDialog.cxx:919
 TFitParametersDialog.cxx:920
 TFitParametersDialog.cxx:921
 TFitParametersDialog.cxx:922
 TFitParametersDialog.cxx:923
 TFitParametersDialog.cxx:924
 TFitParametersDialog.cxx:925
 TFitParametersDialog.cxx:926
 TFitParametersDialog.cxx:927
 TFitParametersDialog.cxx:928
 TFitParametersDialog.cxx:929
 TFitParametersDialog.cxx:930
 TFitParametersDialog.cxx:931
 TFitParametersDialog.cxx:932
 TFitParametersDialog.cxx:933
 TFitParametersDialog.cxx:934
 TFitParametersDialog.cxx:935
 TFitParametersDialog.cxx:936
 TFitParametersDialog.cxx:937
 TFitParametersDialog.cxx:938
 TFitParametersDialog.cxx:939
 TFitParametersDialog.cxx:940
 TFitParametersDialog.cxx:941
 TFitParametersDialog.cxx:942
 TFitParametersDialog.cxx:943
 TFitParametersDialog.cxx:944
 TFitParametersDialog.cxx:945
 TFitParametersDialog.cxx:946
 TFitParametersDialog.cxx:947
 TFitParametersDialog.cxx:948
 TFitParametersDialog.cxx:949
 TFitParametersDialog.cxx:950
 TFitParametersDialog.cxx:951
 TFitParametersDialog.cxx:952
 TFitParametersDialog.cxx:953
 TFitParametersDialog.cxx:954
 TFitParametersDialog.cxx:955
 TFitParametersDialog.cxx:956
 TFitParametersDialog.cxx:957
 TFitParametersDialog.cxx:958
 TFitParametersDialog.cxx:959
 TFitParametersDialog.cxx:960
 TFitParametersDialog.cxx:961
 TFitParametersDialog.cxx:962
 TFitParametersDialog.cxx:963
 TFitParametersDialog.cxx:964
 TFitParametersDialog.cxx:965
 TFitParametersDialog.cxx:966
 TFitParametersDialog.cxx:967
 TFitParametersDialog.cxx:968
 TFitParametersDialog.cxx:969