// @(#)root/ged:$Id$
// Author: Ilka Antcheva

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TPaveStatsEditor                                                    //
//                                                                      //
//  Implements GUI for editing attributes of TPaveStats objects.        //                                             //
//      all text attributes                                             //
//      The following statistics option settings can be set:            //
//      name, mean, RMS, overflow, underflow, integral of bins,         //
//      Fit parameters that can be set are: Values/Names, Probability,  //
//      Errors, Chisquare                                               //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
//Begin_Html
/*
<img src="gif/TPaveStatsEditor.gif">
*/
//End_Html

#include "TPaveStatsEditor.h"
#include "TGButton.h"
#include "TPaveStats.h"

ClassImp(TPaveStatsEditor)

enum EPaveStatsWid {
   kSTAT_NAME,
   kSTAT_ENTRIES,
   kSTAT_MEAN,
   kSTAT_RMS,
   kSTAT_UNDER,
   kSTAT_OVER,
   kSTAT_INTEGRAL,
   kSTAT_SKEWNESS,
   kSTAT_KURTOSIS,
   kSTAT_ERR,
   kFIT_NAME,
   kFIT_ERR,
   kFIT_CHI,
   kFIT_PROB
};


//______________________________________________________________________________
TPaveStatsEditor::TPaveStatsEditor(const TGWindow *p, Int_t width, Int_t height,
   UInt_t options, Pixel_t back) :
   TGedFrame(p, width, height, options | kVerticalFrame, back)
{
   // Constructor of TPaveStats GUI.

   fPaveStats = 0;

   MakeTitle("Stat Options");

   TGCompositeFrame *f1 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   TGCompositeFrame *f2 = new TGCompositeFrame(f1, 40, 20, kVerticalFrame);
   f1->AddFrame(f2, new TGLayoutHints(kLHintsTop, 0, 1, 0, 0));

   fHistoName = new TGCheckButton(f2, "Name", kSTAT_NAME);
   fHistoName->SetToolTipText("Print the histogram name");
   f2->AddFrame(fHistoName, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fOverflow = new TGCheckButton(f2, "Overflow", kSTAT_OVER);
   fOverflow->SetToolTipText("Print the number of overflows");
   f2->AddFrame(fOverflow, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fUnderflow = new TGCheckButton(f2, "Underflow", kSTAT_UNDER);
   fUnderflow->SetToolTipText("Print the number of underflows");
   f2->AddFrame(fUnderflow, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fSkewness = new TGCheckButton(f2, "Skewness", kSTAT_SKEWNESS);
   fSkewness->SetToolTipText("Print the skewness");
   f2->AddFrame(fSkewness, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fKurtosis = new TGCheckButton(f2, "Kurtosis", kSTAT_KURTOSIS);
   fKurtosis->SetToolTipText("Print the kurtosis");
   f2->AddFrame(fKurtosis, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   TGCompositeFrame *f3 = new TGCompositeFrame(f1, 40, 20, kVerticalFrame);
   fEntries = new TGCheckButton(f3, "Entries", kSTAT_ENTRIES);
   fEntries->SetToolTipText("Print the number of entries");
   f3->AddFrame(fEntries, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fMean = new TGCheckButton(f3, "Mean", kSTAT_MEAN);
   fMean->SetToolTipText("Print the mean value");
   f3->AddFrame(fMean, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fRMS = new TGCheckButton(f3, "RMS", kSTAT_RMS);
   fRMS->SetToolTipText("Print root-mean-square (RMS)");
   f3->AddFrame(fRMS, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fIntegral = new TGCheckButton(f3, "Integral", kSTAT_INTEGRAL);
   fIntegral->SetToolTipText("Print the integral of bins");
   f3->AddFrame(fIntegral, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fStatsErrors = new TGCheckButton(f3, "Errors", kSTAT_ERR);
   fStatsErrors->SetToolTipText("Print the errors");
   f3->AddFrame(fStatsErrors, new TGLayoutHints(kLHintsTop, 1, 1, 0, 5));
   f1->AddFrame(f3, new TGLayoutHints(kLHintsTop, 0, 1, 0, 0));

   AddFrame(f1, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   MakeTitle("Fit Options");

   TGCompositeFrame *f4 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   TGCompositeFrame *f5 = new TGCompositeFrame(f4, 40, 20, kVerticalFrame);
   f4->AddFrame(f5, new TGLayoutHints(kLHintsTop, 0, 1, 0, 0));

   fNameValues = new TGCheckButton(f5, "Values", kFIT_NAME);
   fNameValues->SetToolTipText("Print the parameter name and value");
   f5->AddFrame(fNameValues, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fProbability = new TGCheckButton(f5, "Probability", kFIT_PROB);
   fProbability->SetToolTipText("Print probability");
   f5->AddFrame(fProbability, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   TGCompositeFrame *f6 = new TGCompositeFrame(f4, 40, 20, kVerticalFrame);
   fErrors = new TGCheckButton(f6, "Errors", kFIT_ERR);
   fErrors->SetToolTipText("Print the errors");
   f6->AddFrame(fErrors, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   fChisquare = new TGCheckButton(f6, "Chi", kFIT_CHI);
   fChisquare->SetToolTipText("Print Chisquare");
   f6->AddFrame(fChisquare, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   f4->AddFrame(f6, new TGLayoutHints(kLHintsTop, 0, 1, 0, 0));

   AddFrame(f4, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
}

//______________________________________________________________________________
TPaveStatsEditor::~TPaveStatsEditor()
{
  // Destructor of fill editor.
}

//______________________________________________________________________________
void TPaveStatsEditor::ConnectSignals2Slots()
{
   // Connect signals to slots.

   // about stat options
   fHistoName->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fEntries->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fOverflow->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fMean->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fUnderflow->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fRMS->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fIntegral->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fSkewness->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fKurtosis->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");
   fStatsErrors->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoStatOptions()");

   // about fit options
   fNameValues->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoFitOptions()");
   fErrors->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoFitOptions()");
   fErrors->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"SetValuesON(Bool_t");
   fProbability->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoFitOptions()");
   fChisquare->Connect("Toggled(Bool_t)","TPaveStatsEditor",this,"DoFitOptions()");

   fInit = kFALSE;
}

//______________________________________________________________________________
void TPaveStatsEditor::SetModel(TObject* obj)
{
   // Set GUI widgets according to the used TPaveStats attributes.

   fPaveStats = (TPaveStats *)obj;
   fAvoidSignal = kTRUE;

   Int_t stat = fPaveStats->GetOptStat();

   if (stat % 10)  fHistoName->SetState(kButtonDown);
   else fHistoName->SetState(kButtonUp);

   if (stat/10 % 10) fEntries->SetState(kButtonDown);
   else fEntries->SetState(kButtonUp);

   if (stat/100 % 10) fMean->SetState(kButtonDown);
   else fMean->SetState(kButtonUp);

   if (stat/1000 % 10) fRMS->SetState(kButtonDown);
   else fRMS->SetState(kButtonUp);

   if (stat/10000 % 10) fUnderflow->SetState(kButtonDown);
   else fUnderflow->SetState(kButtonUp);

   if (stat/100000 % 10) fOverflow->SetState(kButtonDown);
   else fOverflow->SetState(kButtonUp);

   if (stat/1000000 % 10) fIntegral->SetState(kButtonDown);
   else fIntegral->SetState(kButtonUp);

   if (stat/10000000 % 10) fSkewness->SetState(kButtonDown);
   else fSkewness->SetState(kButtonUp);

   if (stat/100000000 % 10) fKurtosis->SetState(kButtonDown);
   else fKurtosis->SetState(kButtonUp);

   Int_t fit = fPaveStats->GetOptFit();
   if (fit % 10)  fNameValues->SetState(kButtonDown);
   else fNameValues->SetState(kButtonUp);

   if (fit/10 % 10) {
      fErrors->SetState(kButtonDown);
      fNameValues->SetState(kButtonDown);
   } else {
      fErrors->SetState(kButtonUp);
   }

   if (fit/100 % 10) fChisquare->SetState(kButtonDown);
   else fChisquare->SetState(kButtonUp);

   if (fit/1000 % 10) fProbability->SetState(kButtonDown);
   else fProbability->SetState(kButtonUp);

   if (fInit) ConnectSignals2Slots();

   fAvoidSignal = kFALSE;
}

//______________________________________________________________________________
void TPaveStatsEditor::DoStatOptions()
{
   // Slot connected to the stat options.

   if (fAvoidSignal) return;
   Int_t stat = 0;
   if (fHistoName->GetState()   == kButtonDown) stat +=1;
   if (fEntries->GetState()     == kButtonDown) stat +=10;
   if (fMean->GetState()        == kButtonDown) stat +=100;
   if (fRMS->GetState()         == kButtonDown) stat +=1000;
   if (fUnderflow->GetState()   == kButtonDown) stat +=10000;
   if (fOverflow->GetState()    == kButtonDown) stat +=100000;
   if (fIntegral->GetState()    == kButtonDown) stat +=1000000;
   if (fSkewness->GetState()    == kButtonDown) stat +=10000000;
   if (fKurtosis->GetState()    == kButtonDown) stat +=100000000;
   if (fStatsErrors->GetState() == kButtonDown) {
      if (fMean->GetState()     == kButtonDown) stat +=100;
      if (fRMS->GetState()      == kButtonDown) stat +=1000;
      if (fSkewness->GetState() == kButtonDown) stat +=10000000;
      if (fKurtosis->GetState() == kButtonDown) stat +=100000000;
   }

   if (!stat) {
      stat = 1;
      fHistoName->SetState(kButtonDown);
   }
   if (stat == 1) stat = 1000000001;
   fPaveStats->SetOptStat(stat);
   Update();
}

//______________________________________________________________________________
void TPaveStatsEditor::DoFitOptions()
{
   // Slot connected to the fit options.

   if (fAvoidSignal) return;
   Int_t fit = 0;
   if (fNameValues->GetState()  == kButtonDown) fit +=1;
   if (fErrors->GetState()      == kButtonDown) fit +=10;
   if (fChisquare->GetState()   == kButtonDown) fit +=100;
   if (fProbability->GetState() == kButtonDown) fit +=1000;

   if (fit == 1) fit = 10001;
   fPaveStats->SetOptFit(fit);
   Update();
}

//______________________________________________________________________________
void TPaveStatsEditor::SetValuesON(Bool_t on)
{
   // Slot connected to the selection of the button 'Errors':
   // check button Values should be selected if Errors is selected.

   if (fAvoidSignal) return;
   if (on == kTRUE) fNameValues->SetState(kButtonDown);
}
 TPaveStatsEditor.cxx:1
 TPaveStatsEditor.cxx:2
 TPaveStatsEditor.cxx:3
 TPaveStatsEditor.cxx:4
 TPaveStatsEditor.cxx:5
 TPaveStatsEditor.cxx:6
 TPaveStatsEditor.cxx:7
 TPaveStatsEditor.cxx:8
 TPaveStatsEditor.cxx:9
 TPaveStatsEditor.cxx:10
 TPaveStatsEditor.cxx:11
 TPaveStatsEditor.cxx:12
 TPaveStatsEditor.cxx:13
 TPaveStatsEditor.cxx:14
 TPaveStatsEditor.cxx:15
 TPaveStatsEditor.cxx:16
 TPaveStatsEditor.cxx:17
 TPaveStatsEditor.cxx:18
 TPaveStatsEditor.cxx:19
 TPaveStatsEditor.cxx:20
 TPaveStatsEditor.cxx:21
 TPaveStatsEditor.cxx:22
 TPaveStatsEditor.cxx:23
 TPaveStatsEditor.cxx:24
 TPaveStatsEditor.cxx:25
 TPaveStatsEditor.cxx:26
 TPaveStatsEditor.cxx:27
 TPaveStatsEditor.cxx:28
 TPaveStatsEditor.cxx:29
 TPaveStatsEditor.cxx:30
 TPaveStatsEditor.cxx:31
 TPaveStatsEditor.cxx:32
 TPaveStatsEditor.cxx:33
 TPaveStatsEditor.cxx:34
 TPaveStatsEditor.cxx:35
 TPaveStatsEditor.cxx:36
 TPaveStatsEditor.cxx:37
 TPaveStatsEditor.cxx:38
 TPaveStatsEditor.cxx:39
 TPaveStatsEditor.cxx:40
 TPaveStatsEditor.cxx:41
 TPaveStatsEditor.cxx:42
 TPaveStatsEditor.cxx:43
 TPaveStatsEditor.cxx:44
 TPaveStatsEditor.cxx:45
 TPaveStatsEditor.cxx:46
 TPaveStatsEditor.cxx:47
 TPaveStatsEditor.cxx:48
 TPaveStatsEditor.cxx:49
 TPaveStatsEditor.cxx:50
 TPaveStatsEditor.cxx:51
 TPaveStatsEditor.cxx:52
 TPaveStatsEditor.cxx:53
 TPaveStatsEditor.cxx:54
 TPaveStatsEditor.cxx:55
 TPaveStatsEditor.cxx:56
 TPaveStatsEditor.cxx:57
 TPaveStatsEditor.cxx:58
 TPaveStatsEditor.cxx:59
 TPaveStatsEditor.cxx:60
 TPaveStatsEditor.cxx:61
 TPaveStatsEditor.cxx:62
 TPaveStatsEditor.cxx:63
 TPaveStatsEditor.cxx:64
 TPaveStatsEditor.cxx:65
 TPaveStatsEditor.cxx:66
 TPaveStatsEditor.cxx:67
 TPaveStatsEditor.cxx:68
 TPaveStatsEditor.cxx:69
 TPaveStatsEditor.cxx:70
 TPaveStatsEditor.cxx:71
 TPaveStatsEditor.cxx:72
 TPaveStatsEditor.cxx:73
 TPaveStatsEditor.cxx:74
 TPaveStatsEditor.cxx:75
 TPaveStatsEditor.cxx:76
 TPaveStatsEditor.cxx:77
 TPaveStatsEditor.cxx:78
 TPaveStatsEditor.cxx:79
 TPaveStatsEditor.cxx:80
 TPaveStatsEditor.cxx:81
 TPaveStatsEditor.cxx:82
 TPaveStatsEditor.cxx:83
 TPaveStatsEditor.cxx:84
 TPaveStatsEditor.cxx:85
 TPaveStatsEditor.cxx:86
 TPaveStatsEditor.cxx:87
 TPaveStatsEditor.cxx:88
 TPaveStatsEditor.cxx:89
 TPaveStatsEditor.cxx:90
 TPaveStatsEditor.cxx:91
 TPaveStatsEditor.cxx:92
 TPaveStatsEditor.cxx:93
 TPaveStatsEditor.cxx:94
 TPaveStatsEditor.cxx:95
 TPaveStatsEditor.cxx:96
 TPaveStatsEditor.cxx:97
 TPaveStatsEditor.cxx:98
 TPaveStatsEditor.cxx:99
 TPaveStatsEditor.cxx:100
 TPaveStatsEditor.cxx:101
 TPaveStatsEditor.cxx:102
 TPaveStatsEditor.cxx:103
 TPaveStatsEditor.cxx:104
 TPaveStatsEditor.cxx:105
 TPaveStatsEditor.cxx:106
 TPaveStatsEditor.cxx:107
 TPaveStatsEditor.cxx:108
 TPaveStatsEditor.cxx:109
 TPaveStatsEditor.cxx:110
 TPaveStatsEditor.cxx:111
 TPaveStatsEditor.cxx:112
 TPaveStatsEditor.cxx:113
 TPaveStatsEditor.cxx:114
 TPaveStatsEditor.cxx:115
 TPaveStatsEditor.cxx:116
 TPaveStatsEditor.cxx:117
 TPaveStatsEditor.cxx:118
 TPaveStatsEditor.cxx:119
 TPaveStatsEditor.cxx:120
 TPaveStatsEditor.cxx:121
 TPaveStatsEditor.cxx:122
 TPaveStatsEditor.cxx:123
 TPaveStatsEditor.cxx:124
 TPaveStatsEditor.cxx:125
 TPaveStatsEditor.cxx:126
 TPaveStatsEditor.cxx:127
 TPaveStatsEditor.cxx:128
 TPaveStatsEditor.cxx:129
 TPaveStatsEditor.cxx:130
 TPaveStatsEditor.cxx:131
 TPaveStatsEditor.cxx:132
 TPaveStatsEditor.cxx:133
 TPaveStatsEditor.cxx:134
 TPaveStatsEditor.cxx:135
 TPaveStatsEditor.cxx:136
 TPaveStatsEditor.cxx:137
 TPaveStatsEditor.cxx:138
 TPaveStatsEditor.cxx:139
 TPaveStatsEditor.cxx:140
 TPaveStatsEditor.cxx:141
 TPaveStatsEditor.cxx:142
 TPaveStatsEditor.cxx:143
 TPaveStatsEditor.cxx:144
 TPaveStatsEditor.cxx:145
 TPaveStatsEditor.cxx:146
 TPaveStatsEditor.cxx:147
 TPaveStatsEditor.cxx:148
 TPaveStatsEditor.cxx:149
 TPaveStatsEditor.cxx:150
 TPaveStatsEditor.cxx:151
 TPaveStatsEditor.cxx:152
 TPaveStatsEditor.cxx:153
 TPaveStatsEditor.cxx:154
 TPaveStatsEditor.cxx:155
 TPaveStatsEditor.cxx:156
 TPaveStatsEditor.cxx:157
 TPaveStatsEditor.cxx:158
 TPaveStatsEditor.cxx:159
 TPaveStatsEditor.cxx:160
 TPaveStatsEditor.cxx:161
 TPaveStatsEditor.cxx:162
 TPaveStatsEditor.cxx:163
 TPaveStatsEditor.cxx:164
 TPaveStatsEditor.cxx:165
 TPaveStatsEditor.cxx:166
 TPaveStatsEditor.cxx:167
 TPaveStatsEditor.cxx:168
 TPaveStatsEditor.cxx:169
 TPaveStatsEditor.cxx:170
 TPaveStatsEditor.cxx:171
 TPaveStatsEditor.cxx:172
 TPaveStatsEditor.cxx:173
 TPaveStatsEditor.cxx:174
 TPaveStatsEditor.cxx:175
 TPaveStatsEditor.cxx:176
 TPaveStatsEditor.cxx:177
 TPaveStatsEditor.cxx:178
 TPaveStatsEditor.cxx:179
 TPaveStatsEditor.cxx:180
 TPaveStatsEditor.cxx:181
 TPaveStatsEditor.cxx:182
 TPaveStatsEditor.cxx:183
 TPaveStatsEditor.cxx:184
 TPaveStatsEditor.cxx:185
 TPaveStatsEditor.cxx:186
 TPaveStatsEditor.cxx:187
 TPaveStatsEditor.cxx:188
 TPaveStatsEditor.cxx:189
 TPaveStatsEditor.cxx:190
 TPaveStatsEditor.cxx:191
 TPaveStatsEditor.cxx:192
 TPaveStatsEditor.cxx:193
 TPaveStatsEditor.cxx:194
 TPaveStatsEditor.cxx:195
 TPaveStatsEditor.cxx:196
 TPaveStatsEditor.cxx:197
 TPaveStatsEditor.cxx:198
 TPaveStatsEditor.cxx:199
 TPaveStatsEditor.cxx:200
 TPaveStatsEditor.cxx:201
 TPaveStatsEditor.cxx:202
 TPaveStatsEditor.cxx:203
 TPaveStatsEditor.cxx:204
 TPaveStatsEditor.cxx:205
 TPaveStatsEditor.cxx:206
 TPaveStatsEditor.cxx:207
 TPaveStatsEditor.cxx:208
 TPaveStatsEditor.cxx:209
 TPaveStatsEditor.cxx:210
 TPaveStatsEditor.cxx:211
 TPaveStatsEditor.cxx:212
 TPaveStatsEditor.cxx:213
 TPaveStatsEditor.cxx:214
 TPaveStatsEditor.cxx:215
 TPaveStatsEditor.cxx:216
 TPaveStatsEditor.cxx:217
 TPaveStatsEditor.cxx:218
 TPaveStatsEditor.cxx:219
 TPaveStatsEditor.cxx:220
 TPaveStatsEditor.cxx:221
 TPaveStatsEditor.cxx:222
 TPaveStatsEditor.cxx:223
 TPaveStatsEditor.cxx:224
 TPaveStatsEditor.cxx:225
 TPaveStatsEditor.cxx:226
 TPaveStatsEditor.cxx:227
 TPaveStatsEditor.cxx:228
 TPaveStatsEditor.cxx:229
 TPaveStatsEditor.cxx:230
 TPaveStatsEditor.cxx:231
 TPaveStatsEditor.cxx:232
 TPaveStatsEditor.cxx:233
 TPaveStatsEditor.cxx:234
 TPaveStatsEditor.cxx:235
 TPaveStatsEditor.cxx:236
 TPaveStatsEditor.cxx:237
 TPaveStatsEditor.cxx:238
 TPaveStatsEditor.cxx:239
 TPaveStatsEditor.cxx:240
 TPaveStatsEditor.cxx:241
 TPaveStatsEditor.cxx:242
 TPaveStatsEditor.cxx:243
 TPaveStatsEditor.cxx:244
 TPaveStatsEditor.cxx:245
 TPaveStatsEditor.cxx:246
 TPaveStatsEditor.cxx:247
 TPaveStatsEditor.cxx:248
 TPaveStatsEditor.cxx:249
 TPaveStatsEditor.cxx:250
 TPaveStatsEditor.cxx:251
 TPaveStatsEditor.cxx:252
 TPaveStatsEditor.cxx:253
 TPaveStatsEditor.cxx:254
 TPaveStatsEditor.cxx:255
 TPaveStatsEditor.cxx:256
 TPaveStatsEditor.cxx:257
 TPaveStatsEditor.cxx:258
 TPaveStatsEditor.cxx:259
 TPaveStatsEditor.cxx:260
 TPaveStatsEditor.cxx:261
 TPaveStatsEditor.cxx:262
 TPaveStatsEditor.cxx:263
 TPaveStatsEditor.cxx:264
 TPaveStatsEditor.cxx:265
 TPaveStatsEditor.cxx:266
 TPaveStatsEditor.cxx:267
 TPaveStatsEditor.cxx:268
 TPaveStatsEditor.cxx:269
 TPaveStatsEditor.cxx:270
 TPaveStatsEditor.cxx:271
 TPaveStatsEditor.cxx:272
 TPaveStatsEditor.cxx:273
 TPaveStatsEditor.cxx:274
 TPaveStatsEditor.cxx:275
 TPaveStatsEditor.cxx:276
 TPaveStatsEditor.cxx:277
 TPaveStatsEditor.cxx:278
 TPaveStatsEditor.cxx:279