ROOT logo
// @(#)root/ged:$Id: TH1Editor.cxx 22488 2008-03-06 16:04:47Z rdm $
// Author: Carsten Hof   16/08/04

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TH1Editor                                                           //
//  Editor for changing TH1 histogram attributes, rebinning & fitting.  //
//  For all possible draw options (there are a few which are not imple- //
//  mentable in graphical user interface) see THistPainter::Paint in    //
//  root/histpainter/THistPainter.cxx                                   //
//
//Begin_Html
/*
<img src="gif/TH1Editor_1.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/TH1Editor_2.gif">
*/
//End_Html
//
//  These changes can be made via the TH1Editor:                        //
//    Style Tab:                                                        //
//      'Line'     : change Line attributes (color, thickness)          //
//                   see TAttLineEditor                                 //
//      'Fill'     : change Fill attributes (color, pattern)            //
//                   see TAttFillEditor                                 //
//      'Title'    : TextEntry: set the title of the histogram          //
//      'Histogram': change the draw options of the histogram           //
//          'Plot' : Radiobutton: draw a 2D or 3D plot of the histogram //
//                   according to the Plot dimension there will be      //
//                   different drawing possibilities (ComboBoxes/       //
//                   CheckBoxes)                                        //
//    2d Plot:                                                          //
//      'Error'   : ComboBox: add different error bars to the histogram //
//                  (no errors, simple, ...,  see THistPainter::Paint   //
//      'Add'     : ComboBox: further things which can be added to the  //
//                  histogram (None, simple/smooth line, fill area      //
//      'Simple Drawing': CheckBox: draw a simple histogram without     //
//                  errors (= "HIST" drawoption). In combination with   //
//                  some other draw options an outer line is drawn on   //
//                  top of the histogram                                //
//      'Show markers': CheckBox: draw a marker on to of each bin (="P" //
//                  drawoption)                                         //
//      'Draw bar chart': CheckBox: draw a bar chart (="B" drawoption)  //
//                  change the Fill Color with Fill in the Style Tab    //
//                  => will show Bar menue in the Style Tab             //
//      'Bar option': CheckBox: draw a bar chart (="BAR" drawoption)    //
//                  => will show Bar menue in the Style Tab             //
//    3d Plot:                                                          //
//      'Type'    : ComboBox: set histogram type Lego-Plot or Surface   //
//                  draw(Lego, Lego1.2, Surf, Surf1..5)                 //
//                  see THistPainter::Paint                             //
//      'Coords'  : ComboBox: set the coordinate system (Cartesian, ..  //
//                  Spheric) see THistPainter::Paint                    //
//      'Error'   : see 2D plot                                         //
//      'Bar'     : change the bar attributes                           //
//            'W' : change Bar Width                                    //
//            'O' : change Bar Offset                                   //
//      'Percentage': specifies the percentage of the bar which is drawn//
//                    brighter and darker (10% == BAR1 drawoption)      //
//      'Horizontal Bar': draw a horizontal bar chart                   //
//                                                                      //
//      'Marker'   : change the Marker attributes (color, appearance,   //
//                   thickness) see TAttMarkerEditor                    //
//Begin_Html
/*
<img src="gif/TH1Editor1.gif">
*/
//End_Html
//      This Tab has two different layouts. One is for a histogram which//
//      is not drawn from an ntuple. The other one is available for a   //
//      histogram which is drawn from an ntuple. In this case the rebin //
//      algorithm can create a rebinned histogram from the original data//
//      i.e. the ntuple.                                                //
//      To see te differences do:                                       //
//         TFile f("hsimple.root");                                     //
//         hpx->Draw("BAR1");        // non ntuple histogram            //
//         ntuple->Draw("px");       // ntuple histogram                //
//    Non ntuple histogram:                                             //
//       'Rebin': with the Slider the number of bins (shown in the field//
//                below the Slider) can be changed to any number which  //
//                divides the number of bins of the original histogram. //
//                Pushing 'Apply' will delete the origin histogram and  //
//                replace it by the rebinned one on the screen          //
//                Pushing 'Ignore' the origin histogram will be restored//
//    Histogram drawn from an ntuple:                                   //
//       'Rebin'  with the slider the number of bins can be enlarged by //
//                a factor of 2,3,4,5 (moving to the right) or reduced  //
//                by a factor of 1/2, 1/3, 1/4, 1/5                     //
//       'BinOffset': with the BinOffset slider the origin of the       //
//                histogram can be changed within one binwidth          //
//                Using this slider the effect of binning the data into //
//                bins can be made visible => statistical fluctuations  //
//       'Axis Range': with the DoubleSlider it is possible to zoom into//
//                the specified axis range. It is also possible to set  //
//                the upper and lower limit in fields below the slider  //
//       'Delayed drawing': all the Binning sliders can set to delay    //
//                draw mode. Then the changes on the histogram are only //
//                updated, when the Slider is released. This should be  //
//                activated if the redrawing of the histogram is too    //
//                time consuming.                                       //
//////////////////////////////////////////////////////////////////////////
//
//Begin_Html
/*
<img src="gif/TH1Editor1_1.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/TH1Editor1_2.gif">
*/
//End_Html


#include "TH1Editor.h"
#include "TH1.h"
#include "TGedEditor.h"
#include "TGComboBox.h"
#include "TGTextEntry.h"
#include "TGToolTip.h"
#include "TGLabel.h"
#include "TVirtualPad.h"
#include "TStyle.h"
#include "TString.h"
#include "TGButtonGroup.h"
#include "TGNumberEntry.h"
#include <stdlib.h>
#include "TG3DLine.h"
#include "TGDoubleSlider.h"
#include "TGSlider.h"
#include "TView.h"
#include "TCanvas.h"
#include "TTreePlayer.h"
#include "TSelectorDraw.h"
#include "TGMsgBox.h"
#include "TGTab.h"


ClassImp(TH1Editor)

enum ETH1Wid{
   kTH1_TITLE,
   kTYPE_HIST,  kTYPE_LEGO,  kTYPE_LEGO1, kTYPE_LEGO2, 
   kTYPE_SURF,  kTYPE_SURF1, kTYPE_SURF2, kTYPE_SURF3, kTYPE_SURF4, kTYPE_SURF5,
   kCOORDS_CAR, kCOORDS_CYL, kCOORDS_POL, kCOORDS_PSR, kCOORDS_SPH,
   kERRORS_NO,  kERRORS_SIMPLE, kERRORS_EDGES, 
   kERRORS_REC, kERRORS_FILL,   kERRORS_CONTOUR,
   kHIST_TYPE,  kCOORD_TYPE, kERROR_TYPE, kMARKER_ONOFF, kB_ONOFF,  kBAR_ONOFF,
   kADD_TYPE,   kADD_NONE,   kADD_SIMPLE, kADD_SMOOTH,   kADD_FILL, 
   kADD_BAR,    kADD_LINE,
   kDIM_SIMPLE, kDIM_COMPLEX,
   kPERCENT_TYPE, kPER_0, kPER_10, kPER_20, kPER_30, kPER_40,
   kBAR_H,      kBAR_WIDTH, kBAR_OFFSET,
   kSLIDER_MAX, kSLIDER_MIN, 
   kDELAYED_DRAWING,
   kBINSLIDER, kBINSLIDER1, kBINOFFSET
};


//______________________________________________________________________________
TH1Editor::TH1Editor(const TGWindow *p,  Int_t width,
                     Int_t height, UInt_t options, Pixel_t back)
   : TGedFrame(p, width, height, options | kVerticalFrame, back),
     fHist(0),
     fSameOpt(kFALSE),
     fBin(0),
     fBinHist(0)
{
   // Constructor of histogram attribute GUI.
   
   // TextEntry for changing the title of the histogram
   MakeTitle("Title");
   fTitlePrec = 2;
   fTitle = new TGTextEntry(this, new TGTextBuffer(50), kTH1_TITLE);
   fTitle->Resize(135, fTitle->GetDefaultHeight());
   fTitle->SetToolTipText("Enter the histogram title string");
   AddFrame(fTitle, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));
  
   // Histogram draw options
   TGCompositeFrame *fHistLbl = new TGCompositeFrame(this, 145, 10, 
                                                           kHorizontalFrame | 
                                                           kLHintsExpandX   | 
                                                           kFixedWidth      | 
                                                           kOwnBackground);
   fHistLbl->AddFrame(new TGLabel(fHistLbl,"Histogram"), 
                      new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   fHistLbl->AddFrame(new TGHorizontal3DLine(fHistLbl), 
                      new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 0));
   AddFrame(fHistLbl, new TGLayoutHints(kLHintsTop,0,0,2,0));

   // TGButtonGroup to change: 2D plot <-> 3D plot   
   TGCompositeFrame *f2 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   fDimGroup = new TGHButtonGroup(f2,"Plot");
   fDimGroup->SetRadioButtonExclusive();
   fDim = new TGRadioButton(fDimGroup,"2-D",kDIM_SIMPLE);
   fDim->SetToolTipText("A 2-d plot of the histogram is dawn");
   fDim0 = new TGRadioButton(fDimGroup,"3-D",kDIM_COMPLEX);
   fDim0->SetToolTipText("A 3-d plot of the histogram is dawn");
   fDimGroup->SetLayoutHints(fDimlh=new TGLayoutHints(kLHintsLeft ,-2,3,3,-7),fDim);
   fDimGroup->SetLayoutHints(fDim0lh=new TGLayoutHints(kLHintsLeft ,16,-1,3,-7),fDim0);   
   fDimGroup->Show();
   fDimGroup->ChangeOptions(kFitWidth | kChildFrame | kHorizontalFrame);
   f2->AddFrame(fDimGroup, new TGLayoutHints(kLHintsTop, 4, 1, 0, 0));
   AddFrame(f2, new TGLayoutHints(kLHintsTop, 1, 1, 2, 8));

   // Set the type of histogram (Lego0..2, Surf0..5) for 3D plot 
   f3 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   AddFrame(f3, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   TGCompositeFrame *f3a = new TGCompositeFrame(f3, 40, 20);
   f3->AddFrame(f3a, new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   TGLabel *fType = new TGLabel(f3a, "Add: "); 
   f3a->AddFrame(fType, new TGLayoutHints(kLHintsLeft, 6, 1, 4, 4));
   TGLabel *fCoords = new TGLabel(f3a, "Coords:"); 
   f3a->AddFrame(fCoords, new TGLayoutHints(kLHintsLeft, 6, 1, 4, 1));

   TGCompositeFrame *f3b = new TGCompositeFrame(f3, 40, 20);
   f3->AddFrame(f3b, new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   fTypeCombo = BuildHistTypeComboBox(f3b, kHIST_TYPE);
   f3b->AddFrame(fTypeCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 1));
   fTypeCombo->Resize(80, 20);
   fTypeCombo->Associate(this);
   //Set the coordinate system (Cartesian, Spheric, ...)      
   fCoordsCombo = BuildHistCoordsComboBox(f3b, kCOORD_TYPE);
   f3b->AddFrame(fCoordsCombo, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 1));
   fCoordsCombo->Resize(80, 20);
   fCoordsCombo->Associate(this);
   
   // Set the Error (No error, error1..5)
   TGCompositeFrame *f5 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   AddFrame(f5, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   TGCompositeFrame *f5a = new TGCompositeFrame(f5, 40, 20);
   f5->AddFrame(f5a, new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   TGLabel *fError = new TGLabel(f5a, "Error:"); 
   f5a->AddFrame(fError, new TGLayoutHints(kLHintsLeft, 6, 2, 4, 1));

   TGCompositeFrame *f5b = new TGCompositeFrame(f5, 40, 20);
   f5->AddFrame(f5b, new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   fErrorCombo = BuildHistErrorComboBox(f5b, kERROR_TYPE);
   f5b->AddFrame(fErrorCombo, new TGLayoutHints(kLHintsLeft, 15, 1, 2, 1));
   fErrorCombo->Resize(80, 20);
   fErrorCombo->Associate(this);

   // Further draw options: Smooth/Simple Line, Fill Area for 2D plot
   f6 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   AddFrame(f6, new TGLayoutHints(kLHintsTop, 1, 1, 0, 3));

   TGCompositeFrame *f6a = new TGCompositeFrame(f6, 40, 20);
   f6->AddFrame(f6a, new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   TGLabel *fAddLabel = new TGLabel(f6a, "Style:"); 
   f6a->AddFrame(fAddLabel, new TGLayoutHints(kLHintsLeft, 6, 2, 4, 1));
 
   TGCompositeFrame *f6b = new TGCompositeFrame(f6, 40, 20);
   f6->AddFrame(f6b, new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   fAddCombo = BuildHistAddComboBox(f6b, kADD_TYPE);
   f6b->AddFrame(fAddCombo, new TGLayoutHints(kLHintsLeft, 15, 1, 2, 1));
   fAddCombo->Resize(80, 20);
   fAddCombo->Associate(this);

   // option related to HIST: some changes needed here! 
   // because of inconsistencies   
   f15 = new TGCompositeFrame(this, 80, 20, kVerticalFrame); 
   fAddSimple = new TGCheckButton(f15, "Simple Drawing", kADD_LINE);
   fAddSimple ->SetToolTipText("A simple histogram without errors is drawn (draw option: Hist)");
   f15->AddFrame(fAddSimple, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
   AddFrame(f15, new TGLayoutHints(kLHintsTop, 1, 1, 0, -1)); 

   // Show Marker Checkbox: draw marker (or not)
   f7 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
   fAddMarker = new TGCheckButton(f7, "Show markers", kMARKER_ONOFF);
   fAddMarker ->SetToolTipText("Make marker visible/invisible");
   f7->AddFrame(fAddMarker, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
   AddFrame(f7, new TGLayoutHints(kLHintsTop, 1, 1, 2, 0));

   // Bar Chart Checkbox: draw with option B
   f8 = new TGCompositeFrame(this, 80, 20, kVerticalFrame); 
   fAddB = new TGCheckButton(f8, "Draw bar chart", kB_ONOFF);
   fAddB ->SetToolTipText("Draw a bar chart");
   f8->AddFrame(fAddB, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
   AddFrame(f8, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));

   // Bar CheckBox: draw with option BAR +option selected by 
   // fPercentCombo (0..4) e.g. BAR2
   f9 = new TGCompositeFrame(this, 80, 20, kVerticalFrame); 
   fAddBar = new TGCheckButton(f9, "Bar option", kBAR_ONOFF);
   fAddBar ->SetToolTipText("Draw bar chart with bar-option");
   f9->AddFrame(fAddBar, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
   AddFrame(f9, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0)); 

   // Bar Menu => appears when the BAR checkbox is set
   f10 = new TGCompositeFrame(this, 145, 10, kHorizontalFrame | 
                                             kLHintsExpandX   | 
                                             kFixedWidth      | 
                                             kOwnBackground);
   f10->AddFrame(new TGLabel(f10,"Bar"), 
                 new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f10->AddFrame(new TGHorizontal3DLine(f10), 
                 new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   AddFrame(f10, new TGLayoutHints(kLHintsTop,0,0,6,4));

   // NumberEntry to change the Bar Width   
   f11 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   TGLabel *fWidthLbl = new TGLabel(f11, "W:");                              
   f11->AddFrame(fWidthLbl, new TGLayoutHints(kLHintsLeft, 1, 3, 4, 1));
   fBarWidth = new TGNumberEntry(f11, 1.00, 6, kBAR_WIDTH, 
                                 TGNumberFormat::kNESRealTwo,
                                 TGNumberFormat::kNEANonNegative, 
                                 TGNumberFormat::kNELLimitMinMax, 0.01, 1.);
   fBarWidth->GetNumberEntry()->SetToolTipText("Set bin bar width");
   fBarWidth->Resize(45,20);
   f11->AddFrame(fBarWidth, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 1));

   // NumberEntry to change the Bar OFfset 
   TGLabel *foffsetLbl = new TGLabel(f11, "O:");                              
   f11->AddFrame(foffsetLbl, new TGLayoutHints(kLHintsLeft, 6,3, 4, 1));
   fBarOffset = new TGNumberEntry(f11, 0.00, 5, kBAR_OFFSET, 
                                  TGNumberFormat::kNESRealTwo,
                                  TGNumberFormat::kNEAAnyNumber, 
                                  TGNumberFormat::kNELLimitMinMax, -1., 1.);
   fBarOffset->GetNumberEntry()->SetToolTipText("Set bin bar offset");
   fBarOffset->Resize(50,20);
   f11->AddFrame(fBarOffset, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 1));
   AddFrame(f11, new TGLayoutHints(kLHintsTop, 1, 1, 0, 4));
 
   // ComboBox which specifies the width of the Bar which should be drawn 
   // in another color i.e. specifies the number in BAR option e.g. BAR2   
   f12 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
   TGCompositeFrame *f13 = new TGCompositeFrame(f12, 80, 20, kHorizontalFrame);
   TGLabel *percentLabel = new TGLabel(f13, "Percentage:"); 
   f13->AddFrame(percentLabel, new TGLayoutHints(kLHintsLeft, 6, 1, 3, 1));
   fPercentCombo = BuildPercentComboBox(f13, kPERCENT_TYPE);
   fPercentCombo->Resize(51, 20);
   fPercentCombo->Associate(f13);
   f13->AddFrame(fPercentCombo, new TGLayoutHints(kLHintsLeft, 14, 1, 2, 1));
   f12->AddFrame(f13,new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));

   // CHeckBox for horizontal drawing of the Histogram
   fMakeHBar = new TGCheckButton(f12, "Horizontal Bar", kBAR_H);
   fMakeHBar ->SetToolTipText("Draw a horizontal bar chart with hBar-Option");
   f12->AddFrame(fMakeHBar, new TGLayoutHints(kLHintsLeft, 6, 1, 3, 0));
   AddFrame(f12, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0)); 

   CreateBinTab();
}

//______________________________________________________________________________
void TH1Editor::CreateBinTab()
{
   // Create binning tab.

   fBin = CreateEditorTabSubFrame("Binning");

   TGCompositeFrame *title1 = new TGCompositeFrame(fBin, 145, 10, 
                                                         kHorizontalFrame | 
                                                         kLHintsExpandX   | 
                                                         kFixedWidth      | 
                                                         kOwnBackground);
   title1->AddFrame(new TGLabel(title1, "Rebin"), 
                    new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   title1->AddFrame(new TGHorizontal3DLine(title1),
                    new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   fBin->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));

   // Widgets for rebinning a histogram which does NOT derive from a ntuple
   fBinCont = new TGCompositeFrame(fBin, 80, 20, kVerticalFrame);
   TGCompositeFrame *f18 = new TGCompositeFrame(fBinCont, 80, 20, 
                                                          kHorizontalFrame);
   fBinSlider  = new TGHSlider(f18, 100, kSlider1 | kScaleBoth);
   fBinSlider->Resize(107,20); 
   f18->AddFrame(fBinSlider, new TGLayoutHints(kLHintsLeft, 3,0,0,3));
   fBinCont->AddFrame(f18, new TGLayoutHints(kLHintsTop, 15, 7, 3, 5));
   
   TGCompositeFrame *f20 = new TGCompositeFrame(fBinCont, 80, 20, 
                                                          kHorizontalFrame);
   TGLabel *binLabel1 = new TGLabel(f20, "# of Bins:");
   f20->AddFrame(binLabel1, new TGLayoutHints(kLHintsLeft, 7, 1, 2, 1));
   fBinNumberEntry = new TGNumberEntryField(f20, kBINSLIDER, 0.0,  
                                            TGNumberFormat::kNESInteger);
   ((TGTextEntry*)fBinNumberEntry)->SetToolTipText("Set the number of bins in the rebinned histogram");
   fBinNumberEntry->Resize(57,20);
   f20->AddFrame(fBinNumberEntry, new TGLayoutHints(kLHintsRight, 21, 0, 0, 0));
   fBinCont->AddFrame(f20, new TGLayoutHints(kLHintsTop, 0, 7, 3, 4));
   
   // Text buttons to Apply or Delete the rebinned histogram
   TGCompositeFrame *f23 = new TGCompositeFrame(fBinCont, 118, 20, 
                                                          kHorizontalFrame | 
                                                          kFixedWidth);
   fApply = new TGTextButton(f23, " &Apply ");
   f23->AddFrame(fApply, 
                 new TGLayoutHints(kLHintsExpandX | kLHintsLeft , 0, 3, 4, 4));
   fCancel = new TGTextButton(f23, " &Ignore ");
   f23->AddFrame(fCancel, 
                 new TGLayoutHints(kLHintsExpandX | kLHintsLeft, 3, 0, 4, 4));
   fBinCont->AddFrame(f23, new TGLayoutHints(kLHintsTop, 20, 3, 3, 4));
   fBin->AddFrame(fBinCont,new TGLayoutHints(kLHintsTop| kLHintsExpandX)); 
   
   // Widgets for rebinning a histogram which derives from a ntuple
   fBinCont1 = new TGCompositeFrame(fBin, 80, 20, kVerticalFrame);   
   TGCompositeFrame *f21 = new TGCompositeFrame(fBinCont1, 80, 20, 
                                                           kHorizontalFrame);
   fBinSlider1  = new TGHSlider(f21, 100, kSlider1 | kScaleBoth);
   fBinSlider1->Resize(107,20); 
   fBinSlider1->SetRange(1,9);
   fBinSlider1->SetScale(12);
   fBinSlider1->SetPosition(5);
   f21->AddFrame(fBinSlider1, new TGLayoutHints(kLHintsLeft, 3,0,0,3));
   fBinCont1->AddFrame(f21, new TGLayoutHints(kLHintsTop, 15, 7, 5, 0));

   //  Lettering of the Rebin Slider
   TGCompositeFrame *f24 = new TGCompositeFrame(fBinCont1, 80, 20, 
                                                           kHorizontalFrame);   
   TGLabel *l1 = new TGLabel(f24, "-5");
   f24->AddFrame(l1, new TGLayoutHints(kLHintsLeft, 18, 1, -1, 0));
   TGLabel *l2 = new TGLabel(f24, "-2");
   f24->AddFrame(l2, new TGLayoutHints(kLHintsLeft, 26, 2, -1, 0));
   TGLabel *l3 = new TGLabel(f24, "2");
   f24->AddFrame(l3, new TGLayoutHints(kLHintsLeft, 17, 2, -1, 0));
   TGLabel *l4 = new TGLabel(f24, "5");
   f24->AddFrame(l4, new TGLayoutHints(kLHintsLeft, 32, 3, -1, 0));
   fBinCont1->AddFrame(f24, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
      
   TGCompositeFrame *f22 = new TGCompositeFrame(fBinCont1, 140, 20, 
                                                kHorizontalFrame);
   TGLabel *binLabel2 = new TGLabel(f22, "# of Bins:");
   f22->AddFrame(binLabel2, new TGLayoutHints(kLHintsLeft, 7, 1, 4, 1));

   fBinNumberEntry1 = new TGNumberEntryField(f22, kBINSLIDER1, 0.0,  
                                             TGNumberFormat::kNESInteger);
   ((TGTextEntry*)fBinNumberEntry1)->SetToolTipText("Set the number of bins in the rebinned histogram");
   fBinNumberEntry1->Resize(57,20);
   f22->AddFrame(fBinNumberEntry1, new TGLayoutHints(kLHintsLeft, 21, 0, 2, 0));
   fBinCont1->AddFrame(f22, new TGLayoutHints(kLHintsTop, 0, 7, 2, 4));

   TGCompositeFrame *f26 = new TGCompositeFrame(fBinCont1, 80, 20, 
                                                kHorizontalFrame);
   TGLabel *offsetLbl = new TGLabel(f26, "BinOffset:");
   f26->AddFrame(offsetLbl, new TGLayoutHints(kLHintsLeft, 6, 1, 2, 1));
   fOffsetNumberEntry = new TGNumberEntryField(f26, kBINOFFSET, 0.0,  
                                               TGNumberFormat::kNESRealFour,
                                               TGNumberFormat::kNEAAnyNumber,
                                               TGNumberFormat::kNELLimitMinMax, 
                                               0., 1.);
   ((TGTextEntry*)fOffsetNumberEntry)->SetToolTipText("Add an offset to the origin of the histogram");
   fOffsetNumberEntry->Resize(57,20);
   f26->AddFrame(fOffsetNumberEntry, 
                 new TGLayoutHints(kLHintsRight, 21, 0, 0, 0));
   fBinCont1->AddFrame(f26, new TGLayoutHints(kLHintsTop, 0, 7, 3, 1));

   TGCompositeFrame *f25 = new TGCompositeFrame(fBinCont1, 80, 20, 
                                                           kHorizontalFrame);
   fBinOffsetSld  = new TGHSlider(f25, 100, kSlider1 | kScaleBoth);
   fBinOffsetSld->Resize(107,20); 
   f25->AddFrame(fBinOffsetSld, new TGLayoutHints(kLHintsLeft, 15,0,0,2));
   fBinCont1->AddFrame(f25, new TGLayoutHints(kLHintsTop, 3, 7, 3, 3));
   fBin->AddFrame(fBinCont1, new TGLayoutHints(kLHintsTop));
   
   // Sliders for axis range
   TGCompositeFrame *sldCont = new TGCompositeFrame(fBin, 80, 20, 
                                                    kVerticalFrame); 
   TGCompositeFrame *title2 = new TGCompositeFrame(sldCont, 145, 10, 
                                                            kHorizontalFrame | 
                                                            kLHintsExpandX   | 
                                                            kFixedWidth      | 
                                                            kOwnBackground);
   title2->AddFrame(new TGLabel(title2, "Axis Range"), 
                    new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   title2->AddFrame(new TGHorizontal3DLine(title2),
                    new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   sldCont->AddFrame(title2, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));

   TGCompositeFrame *f14 = new TGCompositeFrame(sldCont, 80, 20, 
                                                         kHorizontalFrame);
   TGLabel *fSliderLbl = new TGLabel(f14,"x:");
   f14->AddFrame(fSliderLbl, 
                 new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 4,4, 4, 1)); 
   fSlider = new TGDoubleHSlider(f14, 1, 2);
   fSlider->Resize(118,20);
   f14->AddFrame(fSlider, new TGLayoutHints(kLHintsLeft));
   sldCont->AddFrame(f14, new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));
   
   TGCompositeFrame *f16 = new TGCompositeFrame(sldCont, 80, 20, 
                                                         kHorizontalFrame);
   fSldMin = new TGNumberEntryField(f16, kSLIDER_MIN, 0.0,  
                                    TGNumberFormat::kNESRealTwo,
                                    TGNumberFormat::kNEAAnyNumber);
   ((TGTextEntry*)fSldMin)->SetToolTipText("Set the minimum value of the x-axis");
   fSldMin->Resize(57,20);
   f16->AddFrame(fSldMin, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   fSldMax = new TGNumberEntryField(f16, kSLIDER_MAX, 0.0,  
                                    TGNumberFormat::kNESRealTwo,
                                    TGNumberFormat::kNEAAnyNumber);
   ((TGTextEntry*)fSldMax)->SetToolTipText("Set the maximum value of the x-axis");
   fSldMax->Resize(57,20);
   f16->AddFrame(fSldMax, new TGLayoutHints(kLHintsLeft, 4, 0, 0, 0));
   sldCont->AddFrame(f16, new TGLayoutHints(kLHintsTop, 20, 3, 5, 0));

   TGCompositeFrame *f17 = new TGCompositeFrame(sldCont, 80, 20, kVerticalFrame); 
   fDelaydraw = new TGCheckButton(f17, "Delayed drawing", kDELAYED_DRAWING);
   fDelaydraw ->SetToolTipText("Draw the new histogram only when any Slider is released");
   f17->AddFrame(fDelaydraw, new TGLayoutHints(kLHintsLeft, 6, 1, 2, 0));
   sldCont->AddFrame(f17, new TGLayoutHints(kLHintsTop, 1, 1, 5, 0)); 
   fBin->AddFrame(sldCont, new TGLayoutHints(kLHintsTop)); 

   // to avoid jumping from DoAddBar to DoAddB and vice versa
   fMakeB=kTRUE;
   // to avoid calling SetDrawoption after every change
   fMake=kTRUE;

   fBinHist = 0; // used to save a copy of the histogram 

   // (when not drawn from an ntuple)
   fBinOffsetSld->SetRange(0,100);
   fBinOffsetSld->SetPosition(0);
   fOffsetNumberEntry->SetNumber(0.0000);
   fCancel->SetState(kButtonDisabled);  
   fApply->SetState(kButtonDisabled);

}  // end bin tab

//______________________________________________________________________________
TH1Editor::~TH1Editor()
{
   // Destructor of TH1 editor.

   // children of TGButonGroup are not deleted 
   delete fDim;
   delete fDim0;
   delete fDimlh;
   delete fDim0lh;

   if (fBinHist) delete fBinHist;
   fBinHist = 0;
}

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

   //widgets for draw options
   fAddB->Connect("Toggled(Bool_t)", "TH1Editor", this, "DoAddB(Bool_t)");
   fAddBar->Connect("Toggled(Bool_t)", "TH1Editor", this, "DoAddBar(Bool_t)");
   fTitle->Connect("TextChanged(const char *)", "TH1Editor", this, "DoTitle(const char *)");
   fTypeCombo->Connect("Selected(Int_t)", "TH1Editor", this, "DoHistChanges()");
   fCoordsCombo->Connect("Selected(Int_t)", "TH1Editor", this, "DoHistChanges()");
   fErrorCombo->Connect("Selected(Int_t)", "TH1Editor", this, "DoHistChanges()");
   fAddCombo->Connect("Selected(Int_t)", "TH1Editor", this, "DoHistChanges()");
   fAddMarker->Connect("Toggled(Bool_t)", "TH1Editor", this, "DoAddMarker(Bool_t)");
   fAddSimple->Connect("Toggled(Bool_t)", "TH1Editor", this, "DoAddSimple(Bool_t)");

   //change 2D <-> 3D plot
   fDimGroup->Connect("Clicked(Int_t)","TH1Editor",this,"DoHistView()");

   // change Bar Width/Offset, the second connection is needed to have the ability to confirm the value also with enter
   fBarWidth->Connect("ValueSet(Long_t)", "TH1Editor", this, "DoBarWidth()");
   (fBarWidth->GetNumberEntry())->Connect("ReturnPressed()", "TH1Editor", this, "DoBarWidth()");   
   fBarOffset->Connect("ValueSet(Long_t)", "TH1Editor", this, "DoBarOffset()");
   (fBarOffset->GetNumberEntry())->Connect("ReturnPressed()", "TH1Editor", this, "DoBarOffset()");
   fPercentCombo->Connect("Selected(Int_t)", "TH1Editor", this, "DoPercent()");
   fMakeHBar-> Connect("Toggled(Bool_t)","TH1Editor",this,"DoHBar(Bool_t))"); 

   // Connections for rebinning are created - i.e. slider is
   // connected to the slots that perform the rebinning in the  
   // case of a histogram not derived from an ntuple.
   fBinSlider->Connect("PositionChanged(Int_t)","TH1Editor",this, "DoBinMoved(Int_t)");  
   fBinSlider->Connect("Released()","TH1Editor",this, "DoBinReleased()"); 
   fBinSlider->Connect("Pressed()","TH1Editor",this, "DoBinPressed()");    
   // numberEntry which shows/sets the actual number of bins
   fBinNumberEntry->Connect("ReturnPressed()", "TH1Editor", this, "DoBinLabel()");
   // Buttons to accept/reject the rebinned histogram
   fApply->Connect("Clicked()", "TH1Editor", this, "DoApply()");   
   fCancel->Connect("Pressed()", "TH1Editor", this, "DoCancel()");   
   // in case of a histogram which is derived from an ntuple these slots are used
   fBinSlider1->Connect("Released()","TH1Editor",this, "DoBinReleased1()");  
   fBinSlider1->Connect("PositionChanged(Int_t)","TH1Editor",this, "DoBinMoved1()");     
   fBinNumberEntry1->Connect("ReturnPressed()", "TH1Editor", this, "DoBinLabel1()");
   // slider/slots to change the offset of the histogram
   fBinOffsetSld->Connect("PositionChanged(Int_t)", "TH1Editor", this,"DoOffsetMoved(Int_t)");
   fBinOffsetSld->Connect("Released()", "TH1Editor", this, "DoOffsetReleased()");
   fBinOffsetSld->Connect("Pressed()", "TH1Editor", this, "DoOffsetPressed()");
   fOffsetNumberEntry->Connect("ReturnPressed()", "TH1Editor", this, "DoBinOffset()");
   // slider/slots to set the visible axisrange 
   fSlider->Connect("PositionChanged()","TH1Editor", this,"DoSliderMoved()");
   fSlider->Connect("Pressed()","TH1Editor", this, "DoSliderPressed()"); 
   fSlider->Connect("Released()","TH1Editor", this, "DoSliderReleased()");     
   fSldMin->Connect("ReturnPressed()", "TH1Editor", this, "DoAxisRange()");
   fSldMax->Connect("ReturnPressed()", "TH1Editor", this, "DoAxisRange()"); 
   fInit = kFALSE;
}

//______________________________________________________________________________
Bool_t TH1Editor::AcceptModel(TObject* obj)
{
   // Check if object is able to configure with this editor.

   if (obj == 0 || !obj->InheritsFrom(TH1::Class()) || 
       ((TH1*)obj)->GetDimension()!=1 || 
       ((TH1*)obj)->GetEntries() == 0 
       /*|| obj->InheritsFrom("TH2")  || obj->InheritsFrom("TProfile")*/) {
      return kFALSE;                 
   }
   return kTRUE;
}

//______________________________________________________________________________
void TH1Editor::SetModel(TObject* obj)
{
   // Pick up current values of histogram attributes.

   if (fBinHist && (obj != fHist)) {
      //we have probably moved to a different pad.
      //let's restore the original histogram
      fHist->Reset();
      fHist->SetBins(fBinHist->GetXaxis()->GetNbins(),
                     fBinHist->GetXaxis()->GetXmin(),
                     fBinHist->GetXaxis()->GetXmax());
      fHist->Add(fBinHist);
      delete fBinHist; fBinHist = 0;
   }

   fHist = (TH1*)obj;
   fAvoidSignal = kTRUE;

     const char *text = fHist->GetTitle();
   fTitle->SetText(text);
   
   fMake=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();
   if (str.Contains("SAME"))
      fSameOpt = kTRUE;
   else
      fSameOpt = kFALSE;
   Bool_t errorset = kFALSE;
   // if no draw option is specified: (default options)
   if (str.IsNull() || str=="" ) {        
      fDimGroup->SetButton(kDIM_SIMPLE, kTRUE);
      fDimGroup->SetButton(kDIM_COMPLEX, kFALSE);      
      HideFrame(f3);  // Hiding the histogram type combo box
      ShowFrame(f6);
      ShowFrame(f7);
      ShowFrame(f8);
      ShowFrame(f9);
      HideFrame(f10);
      HideFrame(f11);
      HideFrame(f12);
      ShowFrame(f15);
      fCoordsCombo->Select(kCOORDS_CAR);
      fErrorCombo->Select(kERRORS_NO);
      errorset=kTRUE;
      fAddCombo->Select(kADD_NONE);
      fAddMarker->SetState(kButtonUp);
      fAddB->SetState(kButtonUp);
      fAddSimple->SetState(kButtonDisabled);
      ChangeErrorCombo(1);
   // in case of a 2D plot:
   } else if (!str.Contains("LEGO") && !str.Contains("SURF")){
      fDimGroup->SetButton(kDIM_SIMPLE,kTRUE);
      fDimGroup->SetButton(kDIM_COMPLEX,kFALSE);      
      HideFrame(f3);  // Hiding the histogram type combo box
      ShowFrame(f7);
      ShowFrame(f8);
      ShowFrame(f9);
      ShowFrame(f15);
      fCoordsCombo->Select(kCOORDS_CAR);
      // initialising fAddCombo
      if (str.Contains("C")) {
         if (str.Contains("CYL")) {
            TString dum = str;
            dum.Remove(strstr(dum.Data(),"CYL")-dum.Data(),3);
            if (dum.Contains("C")) fAddCombo->Select(kADD_SMOOTH);
         } else fAddCombo->Select(kADD_SMOOTH);
      } 
      else if (str.Contains("LF2")) fAddCombo->Select(kADD_FILL);
      else if (str.Contains("L")){
         TString dum = str;
         if (str.Contains("CYL")) {
            dum.Remove(strstr(dum.Data(),"CYL")-dum.Data(),3);
            if (dum.Contains("L")) fAddCombo->Select(kADD_SIMPLE);
         }
         if (str.Contains("POL")) {
            dum.Remove(strstr(dum.Data(),"POL")-dum.Data(),3);
            if (dum.Contains("L")) fAddCombo->Select(kADD_SIMPLE);
         } else fAddCombo->Select(kADD_SIMPLE);
      } else fAddCombo->Select(kADD_NONE);

      if (fAddCombo->GetSelected()!=kADD_NONE) 
         fAddSimple->SetState(kButtonDisabled);
      else if (str.Contains("HIST")) {
         if (str=="HIST") fAddSimple->SetState(kButtonDisabled);
         else fAddSimple->SetState(kButtonDown);
      } else fAddSimple->SetState(kButtonUp);
      
      if (str.Contains("B")) {
         TString dum = str;
         if (str.Contains("BAR")) {
            fAddBar->SetState(kButtonDown);
            fAddB->SetState(kButtonDisabled);
            ShowFrame(f10);
            ShowFrame(f11);
            ShowFrame(f12);
         } else {
            fAddB->SetState(kButtonDown);
            fAddBar->SetState(kButtonDisabled);
            fAddSimple->SetState(kButtonDisabled);
            ShowFrame(f10);
            ShowFrame(f11);      
            HideFrame(f12);
         }
      } else {
         fAddB->SetState(kButtonUp);
         fAddBar->SetState(kButtonUp);
         HideFrame(f10);
         HideFrame(f11);
         HideFrame(f12);
      }
      if (str.Contains("P") ) {
         fAddMarker->SetState(kButtonDown);
         fAddSimple->SetState(kButtonDisabled);
      } else if (!str.Contains("BAR")) fAddMarker->SetState(kButtonUp);
      ChangeErrorCombo(1);

   // in case of a 3D plot
   } else if (str.Contains("LEGO") || str.Contains("SURF")){
      fDimGroup->SetButton(kDIM_COMPLEX,kTRUE);
      fDimGroup->SetButton(kDIM_SIMPLE,kFALSE);      
      TGListBox* lb;
      ChangeErrorCombo(0);
      // set Coordinate ComboBox
      if (str.Contains("SURF")){ 
         // surf cannot be combined with spheric and cartesian coordinates 
         // i.e. remove them from the combobox
         fCoordsCombo->RemoveEntry(kCOORDS_SPH);
         fCoordsCombo->RemoveEntry(kCOORDS_CAR);
         lb = fCoordsCombo->GetListBox();
         lb->Resize(lb->GetWidth(), 49);
      } else {
         // surf cannot be combined with spheric and cartesian coordinates 
         // if surf was selected before here the removed items were added the combobox again
         if (((TGLBContainer*)((TGListBox*)fCoordsCombo->GetListBox())->GetContainer())->GetPos(kCOORDS_SPH)==-1) 
            fCoordsCombo->AddEntry("Spheric", kCOORDS_SPH);
         if (((TGLBContainer*)((TGListBox*)fCoordsCombo->GetListBox())->GetContainer())->GetPos(kCOORDS_CAR)==-1) {
            fCoordsCombo->AddEntry("Cartesian", kCOORDS_CAR);
            lb = fCoordsCombo->GetListBox();
            lb->Resize(lb->GetWidth(), 83);
         }
      }
      // initialising the Type Combobox
      if (str.Contains("LEGO2")) fTypeCombo->Select(kTYPE_LEGO2);
      else if (str.Contains("LEGO1")) fTypeCombo->Select(kTYPE_LEGO1);
      else if (str.Contains("LEGO")) fTypeCombo->Select(kTYPE_LEGO);
      else if (str.Contains("SURF5")) fTypeCombo->Select(kTYPE_SURF5);
      else if (str.Contains("SURF4")) fTypeCombo->Select(kTYPE_SURF4);
      else if (str.Contains("SURF3")) fTypeCombo->Select(kTYPE_SURF3);
      else if (str.Contains("SURF2")) fTypeCombo->Select(kTYPE_SURF2);
      else if (str.Contains("SURF1")) fTypeCombo->Select(kTYPE_SURF1);
      else if (str.Contains("SURF")) fTypeCombo->Select(kTYPE_SURF);

      if (str.Contains("CYL")) fCoordsCombo->Select(kCOORDS_CYL);
      else if (str.Contains("POL")) fCoordsCombo->Select(kCOORDS_POL);
      else if (str.Contains("SPH")) fCoordsCombo->Select(kCOORDS_SPH);
      else if (str.Contains("PSR")) fCoordsCombo->Select(kCOORDS_PSR);
      else fCoordsCombo->Select(kCOORDS_CAR); //default

      HideFrame(f6); 
      HideFrame(f7); 
      HideFrame(f8); 
      HideFrame(f9);
      HideFrame(f15);
      if (str.Contains("LEGO")) {
         ShowFrame(f10);
         ShowFrame(f11); 
         HideFrame(f12);
      } else {
         HideFrame(f10);
         HideFrame(f11); 
         HideFrame(f12);
      }
      fAddMarker->SetState(kButtonDisabled);
      fAddB->SetState(kButtonDisabled);
   }
   
   if (!errorset) {   
      if (str.Contains("E1")) fErrorCombo->Select(kERRORS_EDGES);
      else if (str.Contains("E2")) fErrorCombo->Select(kERRORS_REC);
      else if (str.Contains("E3")) fErrorCombo->Select(kERRORS_FILL);
      else if (str.Contains("E4")) fErrorCombo->Select(kERRORS_CONTOUR);
      else if (str.Contains("E")) {
         if (str.Contains("LEGO")) {
            TString dum=str;
            dum.Remove(strstr(dum.Data(),"LEGO")-dum.Data(),4);
            if (dum.Contains("E")) fErrorCombo->Select(kERRORS_SIMPLE);
         } else fErrorCombo->Select(kERRORS_SIMPLE); 
      } else fErrorCombo->Select(kERRORS_NO); //default
   }     
    
   if (fErrorCombo->GetSelected() != kERRORS_NO){
      HideFrame(f7);
      HideFrame(f8);
   }
   if (str.Contains("BAR") || ((fAddBar->GetState()==kButtonDown) && 
       (fDim->GetState()==kButtonDown))) {
      ShowFrame(f10);
      ShowFrame(f11);
      ShowFrame(f12);
      fBarWidth->SetNumber(fHist->GetBarWidth());
      fBarOffset->SetNumber(fHist->GetBarOffset());
      if (str.Contains("HBAR")) fMakeHBar->SetState(kButtonDown);
      else fMakeHBar->SetState(kButtonUp);
      
      if (str.Contains("BAR4")) fPercentCombo->Select(kPER_40);
      else if (str.Contains("BAR3")) fPercentCombo->Select(kPER_30);
      else if (str.Contains("BAR2")) fPercentCombo->Select(kPER_20);
      else if (str.Contains("BAR1")) fPercentCombo->Select(kPER_10);
      else fPercentCombo->Select(kPER_0);
   }

   Int_t nx = fHist -> GetXaxis() -> GetNbins();
   Int_t nxbinmin = fHist -> GetXaxis() -> GetFirst();
   Int_t nxbinmax = fHist -> GetXaxis() -> GetLast();
   
   if (fDelaydraw->GetState()!=kButtonDown) fDelaydraw->SetState(kButtonUp);

   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   
   if (!player || player->GetHistogram()!=fHist ) {
      Int_t n = 0;
      if (fBinHist) n = fBinHist->GetXaxis()->GetNbins();
      else n = nx;
      fBin->HideFrame(fBinCont1);
      fBin->ShowFrame(fBinCont);
      Int_t* div = Dividers(n);
      Int_t up = 0;
      if (div[0]-1 <= 1) up = 2;
      else up = div[0]-1;  
      fBinSlider->SetRange(1,up);
      Int_t i = 1;
      if (fBinSlider->GetMaxPosition()==2 && fBinSlider->GetPosition()==2) 
         fBinSlider->SetPosition(2);
      else { 
         while ( div[i] != nx) i ++;
         fBinSlider->SetPosition(div[0] - i + 1);
      }
      fBinNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax , 2, n);
      fBinNumberEntry->SetIntNumber(nx);
   }
   else if (fHist==player->GetHistogram()) {
      fBin->HideFrame(fBinCont);
      fBin->ShowFrame(fBinCont1);      
      fBinSlider->SetRange(0,1);
      fBinSlider->SetPosition(0);
      fBinSlider1->SetPosition(5);      
      fBinNumberEntry1->SetLimits(TGNumberFormat::kNELLimitMinMax , 2, 10000);
      fBinNumberEntry1->SetIntNumber(nxbinmax-nxbinmin+1);
   }

   fSlider->SetRange(1,nx);
   fSlider->SetPosition((Double_t)nxbinmin,(Double_t)nxbinmax);

   fSldMin->SetNumber(fHist->GetXaxis()->GetBinLowEdge(nxbinmin));
   fSldMax->SetNumber(fHist->GetXaxis()->GetBinUpEdge(nxbinmax));

   fOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 
                                 fHist->GetXaxis()->GetBinWidth(1));
      
   if (fInit) ConnectSignals2Slots();
   fMake=kTRUE;
   fGedEditor->GetTab()->SetEnabled(1, kTRUE);
   fAvoidSignal = kFALSE;
}

//______________________________________________________________________________
void TH1Editor::DoTitle(const char *text)
{
   // Slot connected to the histogram title setting.
  
   if (fAvoidSignal) return;
   fHist->SetTitle(text);
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoAddMarker(Bool_t on)
{
   // Slot connected to the show markers check box.
   
   if (fAvoidSignal) return;
   TString str = GetDrawOption();
   str.ToUpper(); 
   if (str.Contains("SAME"))
      fSameOpt = kTRUE;
   else
      fSameOpt = kFALSE;
   TString dum = str;
   
   if (dum.Contains("POL")) dum.Remove(strstr(dum.Data(),"POL")-dum.Data(),3);
   if (dum.Contains("SPH")) dum.Remove(strstr(dum.Data(),"SPH")-dum.Data(),3); 
   if (dum.Contains("PSR")) dum.Remove(strstr(dum.Data(),"PSR")-dum.Data(),3);      
   if (on) {
      if (!dum.Contains("P")) str += "P"; 
      fAddSimple->SetState(kButtonDisabled);
      if (str.Contains("HIST")) 
         str.Remove(strstr(str.Data(),"HIST")-str.Data(),4);
   } else if (fAddMarker->GetState()==kButtonUp) {
      if (str.Contains("POL") || str.Contains("SPH")) {
         while (dum.Contains("P")) 
            dum.Remove(strstr(dum.Data(),"P")-dum.Data(),1);
         if (str.Contains("POL")) str = dum + "POL";
         if (str.Contains("SPH")) str = dum + "SPH";
         if (str.Contains("PSR")) str = dum + "PSR";	 
      } else if (str.Contains("P")) str.Remove(str.First("P"),1); 
      if ((str=="HIST") || (str=="") || 
          (fAddB->GetState()==kButtonDown) || 
          fAddCombo->GetSelected() != kADD_NONE) 
         fAddSimple->SetState(kButtonDisabled);
      else if (str.Contains("HIST")) 
         fAddSimple->SetState(kButtonDown);
      else 
         fAddSimple->SetState(kButtonUp);
   }
   if (fMake) {
      if (fSameOpt) str += "SAME";
      SetDrawOption(str);
      Update();
   }
}

//______________________________________________________________________________
void TH1Editor::DoAddB(Bool_t on)
{
   // Slot connected to the bar Add check box.
   
   if (fAvoidSignal) return;
   TString str = GetDrawOption();
   str.ToUpper();
   if (str.Contains("SAME"))
      fSameOpt = kTRUE;
   else
      fSameOpt = kFALSE;
   if (fMakeB) {
      fMakeB=kFALSE;
      if (on) {
         if (!str.Contains("B")) str += "B";
         ShowFrame(f10);
         ShowFrame(f11);
         HideFrame(f12);
         fAddBar->SetState(kButtonDisabled);
         fAddSimple->SetState(kButtonDisabled);
         fBarOffset->SetNumber(fHist->GetBarOffset());
         fBarWidth->SetNumber(fHist->GetBarWidth());      
      } else if (fAddB->GetState()==kButtonUp) {
         while (str.Contains("B")) 
            str.Remove(str.First("B"),1);
         HideFrame(f10);
         HideFrame(f11);
         HideFrame(f12);
         fAddBar->SetState(kButtonUp);
         if (fAddMarker->GetState()!=kButtonDown && 
             !(str=="" || str=="HIST" || 
             fAddCombo->GetSelected()!=kADD_NONE)) 
            fAddSimple->SetState(kButtonUp);
      }
      if (fSameOpt) str += "SAME";
      if (fMake) SetDrawOption(str);
      Update(); 

      fMakeB=kTRUE;
   }
}

//______________________________________________________________________________
void TH1Editor::DoAddBar(Bool_t on)
{
   // Slot connected to the bar Add check box.
   
   if (fAvoidSignal) return;
   Disconnect(fAddMarker);
   TString str = GetDrawOption();
   str.ToUpper();
   if (str.Contains("SAME"))
      fSameOpt = kTRUE;
   else
      fSameOpt = kFALSE;
   if (fMakeB) {
      fMakeB=kFALSE;
      Int_t o = 0;
      if (str.Contains("HBAR")) o=1;
      if (str.Contains("BAR4")) 
         str.Remove(strstr(str.Data(),"BAR4")-str.Data()-o,4+o);
      else if (str.Contains("BAR3")) 
         str.Remove(strstr(str.Data(),"BAR3")-str.Data()-o,4+o);
      else if (str.Contains("BAR2")) 
         str.Remove(strstr(str.Data(),"BAR2")-str.Data()-o,4+o);
      else if (str.Contains("BAR1")) 
         str.Remove(strstr(str.Data(),"BAR1")-str.Data()-o,4+o);            
      else if (str.Contains("BAR0")) 
         str.Remove(strstr(str.Data(),"BAR0")-str.Data()-o,4+o);      
      else if (str.Contains("BAR")) 
         str.Remove(strstr(str.Data(),"BAR")-str.Data()-o,3+o);      
      if (on) {
         if ((fAddMarker->GetState()==kButtonDown) && 
             (fErrorCombo->GetSelected()==kERRORS_NO) && 
             (fAddSimple->GetState()!=kButtonDisabled)) 
            fAddSimple->SetState(kButtonDisabled);
         else if ((fAddMarker->GetState()!=kButtonDown) && 
                  (fAddSimple->GetState()==kButtonDisabled)) {
            if (str.Contains("HIST")) 
               fAddSimple->SetState(kButtonDown);  
            else if (fAddCombo->GetSelected()!=kADD_NONE) 
               fAddSimple->SetState(kButtonDisabled);
            else 
               fAddSimple->SetState(kButtonUp);
         }
         switch (fPercentCombo->GetSelected()){
            case(-1): { 
               str += "BAR";
               fPercentCombo->Select(kPER_0);
               break;
            }
            case(kPER_0): { 
               str += "BAR"; 
               break;
            }
            case(kPER_10): { 
               str += "BAR1"; 
               break;
            }
            case(kPER_20): { 
               str += "BAR2"; 
               break;
            }
            case(kPER_30): { 
               str += "BAR3"; 
               break;
            }
            case(kPER_40): { 
               str += "BAR4"; 
               break;
            }	 
         }
         ShowFrame(f10);
         ShowFrame(f11);
         ShowFrame(f12);
         if (fMakeHBar->GetState()==kButtonDown) 
            str.Insert(strstr(str.Data(),"BAR")-str.Data(),"H");
         fBarOffset->SetNumber(fHist->GetBarOffset());
         fBarWidth->SetNumber(fHist->GetBarWidth());      
         fAddB->SetState(kButtonDisabled);
      } else if (fAddBar->GetState()==kButtonUp) {
         HideFrame(f10);
         HideFrame(f11); 
         HideFrame(f12);
         fAddB->SetState(kButtonUp);
         if (fAddMarker->GetState()==kButtonDisabled) 
            fAddMarker->SetState(kButtonUp);
         if (str=="" || str=="HIST" || fAddCombo->GetSelected() != kADD_NONE || 
             ((fAddMarker->GetState() == kButtonDown) && 
               fErrorCombo->GetSelected() == kERRORS_NO) ) 
            fAddSimple->SetState(kButtonDisabled);
      }
      if (fSameOpt) str += "SAME";
      if (fMake) SetDrawOption(str);
      Update(); 
      ((TGMainFrame*)GetMainFrame())->Layout();
      fMakeB=kTRUE;
   }
   fAddMarker->Connect("Toggled(Bool_t)", "TH1Editor", this, "DoAddMarker(Bool_t)");
}

//______________________________________________________________________________
void TH1Editor::DoAddSimple(Bool_t on)
{
   // Slot connected to fAddSimple check box for drawing a simple histogram
   // without errors (== HIST draw option) in combination with some other 
   // draw options. It draws an additional line on the top of the bins.

   if (fAvoidSignal) return;
   Disconnect(fAddMarker);
   //   Bool_t make=kFALSE;
   fMake = kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();
   if (str.Contains("SAME"))
      fSameOpt = kTRUE;
   else
      fSameOpt = kFALSE;
   if (on) {
      if (!str.Contains("HIST")) {
         str += "HIST";
         fAddMarker->SetState(kButtonDisabled);
         fMake=kTRUE;
      }
   } else if (fAddSimple->GetState()==kButtonUp) {
      if (str.Contains("HIST")) {
         str.Remove(strstr(str.Data(),"HIST")-str.Data(),4);
         fAddMarker->SetState(kButtonUp);	 
         fMake=kTRUE;
      }
   }
   if (fSameOpt) str += "SAME";
   if (fMake) SetDrawOption(str);
   fAddMarker->Connect("Toggled(Bool_t)", "TH1Editor", this, "DoAddMarker(Bool_t)");
   Update();   
}    

//______________________________________________________________________________
void TH1Editor::DoHistView()
{
   // Slot connected to the 'Plot' button group.

   if (gPad) gPad->GetVirtCanvas()->SetCursor(kWatch);
   gVirtualX->SetCursor(GetId(), gVirtualX->CreateCursor(kWatch));

   if (fDim->GetState() == kButtonDown) 
      DoHistSimple();
   else 
      DoHistComplex();

   if (gPad) gPad->GetVirtCanvas()->SetCursor(kPointer);
   gVirtualX->SetCursor(GetId(), gVirtualX->CreateCursor(kPointer));
}

//______________________________________________________________________________
void TH1Editor::DoHistSimple()
{
   // Slot connected to the 2D radio button.

   if (fAvoidSignal) return;
   if (fDim->GetState()==kButtonDown){
      TString str ="";
      fMake=kFALSE;
      TGListBox* lb;
      HideFrame(f3);
      ShowFrame(f6);
      ShowFrame(f9);
      ShowFrame(f15);
      ChangeErrorCombo(1);
      if ((fAddBar->GetState() != kButtonDown || 
           fAddMarker->GetState()==kButtonDown ) &&
          (fErrorCombo->GetSelected()==kERRORS_NO)) 
         fAddSimple->SetState(kButtonDisabled);
      else if ((fAddSimple->GetState()==kButtonDisabled) && 
               (fAddMarker->GetState()!=kButtonDown)) 
         fAddSimple->SetState(kButtonUp);
      else if (fAddSimple->GetState()!=kButtonUp) 
         fAddSimple->SetState(kButtonDown);
      if (fAddMarker->GetState()==kButtonDisabled && 
          fAddSimple->GetState()!=kButtonDown) 
         fAddMarker->SetState(kButtonUp);

      if (fErrorCombo->GetSelected()==kERRORS_NO) {   
         ShowFrame(f7);
         ShowFrame(f8);
      } else {
         HideFrame(f7);
         HideFrame(f8);
         if (fAddBar->GetState()==kButtonDisabled)
            fAddBar->SetState(kButtonUp);
      } 

      if ((fAddB->GetState() == kButtonDisabled)) {
         if (fAddBar->GetState()==kButtonDown) {
            ShowFrame(f10);
            ShowFrame(f11);
            ShowFrame(f12);
         } else {
            HideFrame(f10);  
            HideFrame(f11);
            HideFrame(f12);
         }	    
      } 
      if (fAddBar->GetState() == kButtonDisabled){
         ShowFrame(f10);  
         ShowFrame(f11);
         HideFrame(f12);
      } 
      if ((fAddBar->GetState() == kButtonUp) && 
          (fAddB->GetState() == kButtonUp)) {
         HideFrame(f10);  
         HideFrame(f11);
         HideFrame(f12);
      }
      if (fAddCombo->GetSelected()== -1 )fAddCombo->Select(kADD_NONE);
      if (fErrorCombo->GetSelected()!=kERRORS_NO) {
         fAddCombo->RemoveEntries(kADD_SIMPLE,kADD_FILL);
         lb = fAddCombo->GetListBox();
         lb->Resize(lb->GetWidth(),19);	 
         Disconnect(fAddCombo);
         fAddCombo->Select(kADD_NONE);
         fAddCombo->Connect("Selected(Int_t)", "TH1Editor", this, "DoHistChanges()"); 
      } else {
         if (((TGLBContainer*)((TGListBox*)fAddCombo->GetListBox())->GetContainer())->GetPos(kADD_SIMPLE)==-1)
            ((TGListBox*)fAddCombo->GetListBox())->AddEntry("Simple Line", kADD_SIMPLE);
         if (((TGLBContainer*)((TGListBox*)fAddCombo->GetListBox())->GetContainer())->GetPos(kADD_SMOOTH)==-1)
            ((TGListBox*)fAddCombo->GetListBox())->AddEntry("Smooth Line", kADD_SMOOTH);
         if (((TGLBContainer*)((TGListBox*)fAddCombo->GetListBox())->GetContainer())->GetPos(kADD_FILL)==-1) {
            ((TGListBox*)fAddCombo->GetListBox())->AddEntry("Fill Area",kADD_FILL);
            lb = fAddCombo->GetListBox();
            lb->Resize(lb->GetWidth(),76);	 
         }    
      }
      if (fAddSimple->GetState()==kButtonDown) str+="HIST";
      str += GetHistErrorLabel()+GetHistAddLabel();
      if (fSameOpt) str += "SAME";
      SetDrawOption(str);
      Update();
      //fGedEditor->GetTab()->Layout();
      ((TGMainFrame*)GetMainFrame())->Layout();      
      fMake=kTRUE;
   }
}

//______________________________________________________________________________
void TH1Editor::DoHistComplex()
{
   // Slot connected to the 3D radio button.

   if (fAvoidSignal) return;
   if (fDim0->GetState()==kButtonDown) {
      TString str ="";
      fMake=kFALSE;
      ShowFrame(f3);
      HideFrame(f6);
      HideFrame(f7);
      HideFrame(f8);
      HideFrame(f9);
      HideFrame(f15);  
      ChangeErrorCombo(0); 
      if (fTypeCombo->GetSelected()==-1 && fCoordsCombo->GetSelected()==-1) {
         str = "LEGO"+GetHistErrorLabel();
         fTypeCombo->Select(kTYPE_LEGO);
         fCoordsCombo->Select(kCOORDS_CAR);
      } else if (fTypeCombo->GetSelected()==-1){
         str = "LEGO"+GetHistErrorLabel();
         fTypeCombo->Select(kTYPE_LEGO);
      } else if (fCoordsCombo->GetSelected()==-1) {
         str = GetHistTypeLabel()+GetHistErrorLabel();
         fCoordsCombo->Select(kCOORDS_CAR);
      } else {
         str = GetHistTypeLabel()+GetHistCoordsLabel()+GetHistErrorLabel();
      }
      if (str.Contains("LEGO")) {
         ShowFrame(f10);
         ShowFrame(f11); 
         HideFrame(f12);
      } else {
         HideFrame(f10);
         HideFrame(f11); 
         HideFrame(f12);
      }
      if (fSameOpt) str += "SAME";
      SetDrawOption(str);
      Update();
      ((TGMainFrame*)GetMainFrame())->Layout();            
      fGedEditor->GetTab()->Layout();
      fMake=kTRUE;
   }
}    

//______________________________________________________________________________
void TH1Editor::DoHistChanges()
{
   // Slot connected to the histogram type, the coordinate type, the error type
   // and the Add combo box.
   
   if (fAvoidSignal) return;
   fMakeB= kFALSE;
   TGListBox* lb;
   if (GetHistTypeLabel().Contains("SURF")) { 
      if (fCoordsCombo->GetSelected()==kCOORDS_CAR || 
          fCoordsCombo->GetSelected()==kCOORDS_SPH) 
         fCoordsCombo->Select(kCOORDS_POL); 
      fCoordsCombo->RemoveEntry(kCOORDS_SPH);
      fCoordsCombo->RemoveEntry(kCOORDS_CAR);
      lb = fCoordsCombo->GetListBox();
      lb->Resize(lb->GetWidth(), 49);
   } else {
      if (((TGLBContainer*)((TGListBox*)fCoordsCombo->GetListBox())->GetContainer())->GetPos(kCOORDS_SPH)==-1)
         ((TGListBox*)fCoordsCombo->GetListBox())->AddEntrySort("Spheric", kCOORDS_SPH);
      if (((TGLBContainer*)((TGListBox*)fCoordsCombo->GetListBox())->GetContainer())->GetPos(kCOORDS_CAR)==-1) {
         ((TGListBox*)fCoordsCombo->GetListBox())->AddEntrySort("Cartesian", kCOORDS_CAR);
         lb = fCoordsCombo->GetListBox();
         lb->Resize(lb->GetWidth(), 83);
      }
   }
   if (fDim->GetState()!=kButtonUp){
      if (fErrorCombo->GetSelected() != kERRORS_NO){
         HideFrame(f7);
         HideFrame(f8);
         ShowFrame(f9);
         fAddMarker->SetState(kButtonDisabled);
         fAddB->SetState(kButtonDisabled);
         if (fAddBar->GetState()==kButtonDisabled) 
            fAddBar->SetState(kButtonUp);
         if (fAddSimple->GetState()==kButtonDisabled) 
            fAddSimple->SetState(kButtonUp);
         fAddCombo->RemoveEntries(kADD_SIMPLE,kADD_FILL);
         lb = fAddCombo->GetListBox();
         lb->Resize(lb->GetWidth(),19);	 
         Disconnect(fAddCombo);
         fAddCombo->Select(kADD_NONE);
         fAddCombo->Connect("Selected(Int_t)", "TH1Editor", this, "DoHistChanges()");
         if (fAddBar->GetState()==kButtonDown) {
            ShowFrame(f10);	
            ShowFrame(f11);
            ShowFrame(f12);
         } else {
            HideFrame(f10);
            HideFrame(f11);
            HideFrame(f12);
         }	    
      } else {
         Bool_t on = fMake;
         fMake=kFALSE;
         ShowFrame(f7);
         ShowFrame(f8);
         ShowFrame(f9);
         if (fAddMarker->GetState()==kButtonDisabled) 
            fAddMarker->SetState(kButtonUp);
         if (fAddBar->GetState() != kButtonDown && 
             fAddB->GetState()==kButtonDisabled) 
            fAddB->SetState(kButtonUp);
         if (((TGLBContainer*)((TGListBox*)fAddCombo->GetListBox())->GetContainer())->GetPos(kADD_SIMPLE)==-1)
            ((TGListBox*)fAddCombo->GetListBox())->AddEntry("Simple Line", kADD_SIMPLE);
         if (((TGLBContainer*)((TGListBox*)fAddCombo->GetListBox())->GetContainer())->GetPos(kADD_SMOOTH)==-1)
            ((TGListBox*)fAddCombo->GetListBox())->AddEntry("Smooth Line", kADD_SMOOTH);
         if (((TGLBContainer*)((TGListBox*)fAddCombo->GetListBox())->GetContainer())->GetPos(kADD_FILL)==-1) { 
            ((TGListBox*)fAddCombo->GetListBox())->AddEntry("Fill Area",kADD_FILL);
            lb = fAddCombo->GetListBox();
            lb->Resize(lb->GetWidth(),76);	
         }
         fMake=on;
      }
      if (fAddCombo->GetSelected()!=kADD_NONE) {
         fAddSimple->SetState(kButtonDisabled);
      } else {
         if (fAddMarker->GetState()==kButtonDown) 
            fAddSimple->SetState(kButtonDisabled);
         else if (fAddSimple->GetState()==kButtonDisabled) 
            fAddSimple->SetState(kButtonUp);
      }
   } else if (fDim0->GetState()==kButtonDown) {
      if (GetHistTypeLabel().Contains("LEGO")) {
         ShowFrame(f10);
         ShowFrame(f11);
         HideFrame(f12);
      } else {
         HideFrame(f10);
         HideFrame(f11);
         HideFrame(f12);
      }
   }        
   if (fMake) {
      TString str = "";
      if (fDim->GetState()==kButtonDown) 
         str = GetHistErrorLabel()+GetHistAddLabel();
      else if (fDim0->GetState()==kButtonDown) 
         str = GetHistTypeLabel()+GetHistCoordsLabel()+GetHistErrorLabel();
      if (fAddSimple->GetState()==kButtonDown) 
         str += "HIST";   
      if (fSameOpt) 
         str += "SAME";
      SetDrawOption(str);
      if (str=="" || str=="HIST") fAddSimple->SetState(kButtonDisabled);
      Update();
   }
   ((TGMainFrame*)GetMainFrame())->Layout();            
   //   fGedEditor->GetTab()->Layout();
   fMakeB=kTRUE;
}

//______________________________________________________________________________
void TH1Editor::DoBarWidth()
{
   // Slot connected to the Bar Width of the Bar Charts.
   
   if (fAvoidSignal) return;
   fHist->SetBarWidth(fBarWidth->GetNumber());
   Update();
}
   
//______________________________________________________________________________
void TH1Editor::DoBarOffset()
{
   // Slot connected to the Bar Offset of the Bar Charts.
   
   if (fAvoidSignal) return;
   Float_t f = fBarOffset->GetNumber();
   fHist->SetBarOffset(f);
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoPercent()
{
   // Slot connected to the bar percentage settings.
      
   if (fAvoidSignal) return;
   TString str = GetDrawOption();
   str.ToUpper();
   if (str.Contains("SAME"))
      fSameOpt = kTRUE;
   else
      fSameOpt = kFALSE;
   Int_t o = 0;
   if (str.Contains("HBAR")) o=1;
   if (str.Contains("BAR4")) 
      str.Remove(strstr(str.Data(),"BAR4")-str.Data()-1,4+o);
   else if (str.Contains("BAR3")) 
      str.Remove(strstr(str.Data(),"BAR3")-str.Data()-o,4+o);
   else if (str.Contains("BAR2")) 
      str.Remove(strstr(str.Data(),"BAR2")-str.Data()-o,4+o);   
   else if (str.Contains("BAR1")) 
      str.Remove(strstr(str.Data(),"BAR1")-str.Data()-o,4+o);
   else if (str.Contains("BAR0")) 
      str.Remove(strstr(str.Data(),"BAR0")-str.Data()-o,4+o);
   else if (str.Contains("BAR")) 
      str.Remove(strstr(str.Data(),"BAR")-str.Data()-o,3+o);
   
   if (fMakeHBar->GetState()==kButtonDown) str+="H";
   switch (fPercentCombo->GetSelected()){
      case (kPER_0) :{ str += "BAR"; break;}
      case (kPER_10):{ str += "BAR1"; break;}
      case (kPER_20):{ str += "BAR2"; break;}            
      case (kPER_30):{ str += "BAR3"; break;} 
      case (kPER_40):{ str += "BAR4"; break;}                  
   }
   if (fSameOpt) str += "SAME";
   if (fMake) SetDrawOption(str);
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoHBar(Bool_t on)
{
   // Slot connected to the Horizontal Bar check button.
   
   if (fAvoidSignal) return;
   TString str = GetDrawOption();
   str.ToUpper();
   if (str.Contains("SAME"))
      fSameOpt = kTRUE;
   else
      fSameOpt = kFALSE;
   if (on) {
      if (!str.Contains("HBAR")) 
         str.Insert(strstr(str.Data(),"BAR")-str.Data(),"H");
   }
   else if (fMakeHBar->GetState()==kButtonUp) {
      if (str.Contains("HBAR")) 
         str.Remove(strstr(str.Data(),"BAR")-str.Data()-1,1);
   }
   if (fSameOpt) str += "SAME";
   if (fMake) SetDrawOption(str);
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoSliderMoved()
{
   // Slot connected to the x-Slider for redrawing of the histogram 
   // according to the new Slider range.

   if (fAvoidSignal) return;
   fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
   fGedEditor->GetPad()->cd();
   if (fDelaydraw->GetState()==kButtonDown && fDim->GetState()==kButtonDown) {  
      static Int_t px1,py1,px2,py2;
      static Float_t ymin,ymax,xleft,xright;
      xleft = fHist->GetXaxis()->GetBinLowEdge((Int_t)((fSlider->GetMinPosition())+0.5));
      xright =  fHist->GetXaxis()->GetBinUpEdge((Int_t)((fSlider->GetMaxPosition())+0.5));
      ymin  = fGedEditor->GetPad()->GetUymin();
      ymax  = fGedEditor->GetPad()->GetUymax();
      px1   = fGedEditor->GetPad()->XtoAbsPixel(xleft);
      py1   = fGedEditor->GetPad()->YtoAbsPixel(ymin);
      px2   = fGedEditor->GetPad()->XtoAbsPixel(xright);
      py2   = fGedEditor->GetPad()->YtoAbsPixel(ymax);
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      fGedEditor->GetPad()->cd();
      gVirtualX->DrawBox(fPx1old, fPy1old, fPx2old, fPy2old, TVirtualX::kHollow);
      gVirtualX->DrawBox(px1, py1, px2, py2, TVirtualX::kHollow);
      fPx1old = px1;
      fPy1old = py1;
      fPx2old = px2 ;
      fPy2old = py2;
      gVirtualX->Update(0);
      fSldMin->SetNumber(xleft);
      fSldMax->SetNumber(xright);
   }  else  if (fDelaydraw->GetState() == kButtonDown && 
                fDim0->GetState() == kButtonDown && 
                fCoordsCombo->GetSelected() == kCOORDS_CAR) {
      static Float_t p1[3], p2[3], p3[3], p4[3], p5[3], p6[3], p7[3], p8[3];
      TView *fView = fGedEditor->GetPad()->GetView();
      Double_t *rmin = fView->GetRmin();
      Double_t *rmax = fView->GetRmax();
      p1[0] = p4[0] = p5[0] = p8[0] = 
            fHist->GetXaxis()->GetBinLowEdge((Int_t)((fSlider->GetMinPosition())+0.5));
      p2[0] = p3[0] = p6[0] = p7[0] = 
            fHist->GetXaxis()->GetBinUpEdge((Int_t)((fSlider->GetMaxPosition())+0.5));
      p1[1] = p2[1] = p3[1] = p4[1] = rmin[1];
      p5[1] = p6[1] = p7[1] = p8[1] = rmax[1];
      p1[2] = p2[2] = p5[2] = p6[2] = rmin[2];
      p3[2] = p4[2] = p7[2] = p8[2] = rmax[2];
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      PaintBox3D(fP2old, fP3old, fP7old, fP6old);
      PaintBox3D(fP1old, fP4old, fP8old, fP5old);
      PaintBox3D(p2, p3, p7, p6);
      PaintBox3D(p1, p4, p8, p5);
      for (Int_t i = 0; i<3; i++){
         fP1old[i] = p1[i];
         fP2old[i] = p2[i];      
         fP3old[i] = p3[i];      
         fP4old[i] = p4[i];                              
         fP5old[i] = p5[i];
         fP6old[i] = p6[i];      
         fP7old[i] = p7[i];      
         fP8old[i] = p8[i];                              
      }
      fSldMin->SetNumber(p1[0]);
      fSldMax->SetNumber(p2[0]);
   } else  if (fDelaydraw->GetState() == kButtonDown && 
               fDim0->GetState() == kButtonDown) {
      fSldMin->SetNumber(fHist->GetXaxis()->GetBinLowEdge((Int_t)((fSlider->GetMinPosition())+0.5)));
      fSldMax->SetNumber(fHist->GetXaxis()->GetBinUpEdge((Int_t)((fSlider->GetMaxPosition())+0.5)));
   } else {
      fHist->GetXaxis()->SetRange((Int_t)((fSlider->GetMinPosition())+0.5),
                                  (Int_t)((fSlider->GetMaxPosition())+0.5));
      fSldMin->SetNumber(fHist->GetXaxis()->GetBinLowEdge(fHist->GetXaxis()->GetFirst()));
      fSldMax->SetNumber(fHist->GetXaxis()->GetBinUpEdge(fHist->GetXaxis()->GetLast())); 
      fClient->NeedRedraw(fSlider,kTRUE);  
      Update();   
   }
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();   
   if (player && player->GetHistogram() == fHist) {
      Int_t last = fHist->GetXaxis()->GetLast();
      Int_t first = fHist->GetXaxis()->GetFirst();
      fBinNumberEntry1->SetIntNumber(last-first+1);
      // How to redraw the NumberEntry without calling Update?? 
      // Update kills the "virtual" painted box in Delayed draw mode  
      fClient->NeedRedraw(fBinNumberEntry1,kTRUE);
      //      fGedEditor->GetTab()->Layout();
   }
   fClient->NeedRedraw(fSldMin,kTRUE);
   fClient->NeedRedraw(fSldMax,kTRUE);   
}

//______________________________________________________________________________
void TH1Editor::DoSliderPressed()
{
   // Slot connected to the x-axis Range slider for initialising the
   // values of the slider movement.
   
   if (fAvoidSignal) return;
   fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
   fGedEditor->GetPad()->cd();
   static Float_t ymin,ymax,xleft,xright;
   Int_t sldmin = (Int_t)((fSlider->GetMinPosition())+0.5);
   Int_t sldmax = (Int_t)((fSlider->GetMaxPosition())+0.5);
   if (fDelaydraw->GetState() == kButtonDown && 
       fDim->GetState()==kButtonDown) {
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      xleft = fHist->GetXaxis()->GetBinLowEdge(sldmin);
      xright =  fHist->GetXaxis()->GetBinUpEdge(sldmax);
      ymin  = fGedEditor->GetPad()->GetUymin();
      ymax  = fGedEditor->GetPad()->GetUymax();
      fPx1old   = fGedEditor->GetPad()->XtoAbsPixel(xleft);
      fPy1old   = fGedEditor->GetPad()->YtoAbsPixel(ymin);
      fPx2old   = fGedEditor->GetPad()->XtoAbsPixel(xright);
      fPy2old   = fGedEditor->GetPad()->YtoAbsPixel(ymax);
      gVirtualX->DrawBox(fPx1old, fPy1old, fPx2old, fPy2old, TVirtualX::kHollow);
   } else if (fDelaydraw->GetState() == kButtonDown && 
              fDim0->GetState() == kButtonDown && 
              fCoordsCombo->GetSelected() == kCOORDS_CAR) {
      TView *fView = fGedEditor->GetPad()->GetView();
      Double_t *rmin = fView->GetRmin();
      Double_t *rmax = fView->GetRmax();
      fP1old[0] = fP4old[0] = fP5old[0] = fP8old[0] = 
                  fHist->GetXaxis()->GetBinLowEdge(sldmin);
      fP2old[0] = fP3old[0] = fP6old[0] = fP7old[0] = 
                  fHist->GetXaxis()->GetBinUpEdge(sldmax);
      fP1old[1] = fP2old[1] = fP3old[1] = fP4old[1] = rmin[1];
      fP5old[1] = fP6old[1] = fP7old[1] = fP8old[1] = rmax[1];
      fP1old[2] = fP2old[2] = fP5old[2] = fP6old[2] = rmin[2]; 
      fP3old[2] = fP4old[2] = fP7old[2] = fP8old[2] = rmax[2];
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      PaintBox3D(fP2old, fP3old, fP7old, fP6old);
      PaintBox3D(fP1old, fP4old, fP8old, fP5old);
   }
   Update();
}
   
//______________________________________________________________________________
void TH1Editor::DoSliderReleased()
{
   // Slot connected to the x-axis Range slider for finalizing the 
   // values of the slider movement. 

   if (fAvoidSignal) return;
   if (fDelaydraw->GetState()==kButtonDown) {
      fHist->GetXaxis()->SetRange((Int_t)((fSlider->GetMinPosition())+0.5),
                                  (Int_t)((fSlider->GetMaxPosition())+0.5));
      fSldMin->SetNumber(fHist->GetXaxis()->GetBinLowEdge(fHist->GetXaxis()->GetFirst()));
      fSldMax->SetNumber(fHist->GetXaxis()->GetBinUpEdge(fHist->GetXaxis()->GetLast()));
      Update();
   } 
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();   
   if (player) if (player->GetHistogram() == fHist) {
      Int_t last = fHist->GetXaxis()->GetLast();
      Int_t first = fHist->GetXaxis()->GetFirst();
      fBinNumberEntry1->SetIntNumber(last-first+1);
      Update();
   }
}

//______________________________________________________________________________
void TH1Editor::DoAxisRange()
{
   // Slot connected to the number entry fields containing the Max/Min 
   // value of the x-axis.
   
   if (fAvoidSignal) return;
   Int_t nx = fHist->GetXaxis()->GetNbins();
   Double_t width = fHist->GetXaxis()->GetBinWidth(1);
   Double_t lowLimit = fHist->GetXaxis()->GetBinLowEdge(1);
   Double_t upLimit = fHist->GetXaxis()->GetBinUpEdge(nx);
   if ((fSldMin->GetNumber()+width/2) < (lowLimit)) 
      fSldMin->SetNumber(lowLimit); 
   if ((fSldMax->GetNumber()-width/2) > (upLimit)) 
      fSldMax->SetNumber(upLimit); 
// Set the histogram range and the axis range slider
   fHist->GetXaxis()->SetRangeUser(fSldMin->GetNumber()+width/2, 
                                   fSldMax->GetNumber()-width/2);
   Int_t nxbinmin = fHist->GetXaxis()->GetFirst();
   Int_t nxbinmax = fHist->GetXaxis()->GetLast();
   fSlider->SetPosition((Double_t)(nxbinmin),(Double_t)(nxbinmax));
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoBinReleased()
{
   // Slot connected to the rebin slider in case of a not ntuple histogram
   // Updates some other widgets which are related to the rebin slider.

   // draw the rebinned histogram in case of delay draw mode
   if (fAvoidSignal) return;
   if (fDelaydraw->GetState()==kButtonDown){
      if (!fBinHist) {
         fBinHist = (TH1*)fHist->Clone("BinHist");
      }
      Int_t nx = fBinHist->GetXaxis()->GetNbins();
      Int_t numx = fBinSlider->GetPosition();
      Int_t* divx = Dividers(nx);   
      if (divx[0]==2) fBinSlider->SetPosition(2);
      if (divx[0]==2) return;
      // delete the histogram which is on the screen
      fGedEditor->GetPad()->cd();
      fHist->Reset();
      fHist->SetBins(nx,fBinHist->GetXaxis()->GetXmin(),
                     fBinHist->GetXaxis()->GetXmax());
      fHist->Add(fBinHist);
      fHist->ResetBit(TH1::kCanRebin);
      fHist->Rebin(divx[numx]);
      // fModel=fHist;
      if (divx[0]!=2) {
         TAxis* xaxis = fHist->GetXaxis();
         Double_t xBinWidth = xaxis->GetBinWidth(1);      
         xaxis->SetRangeUser(fSldMin->GetNumber()+xBinWidth/2, 
                             fSldMax->GetNumber()-xBinWidth/2);      
         fSlider->SetRange(1,(Int_t)nx/divx[numx]);   
         fSlider->SetPosition(xaxis->FindBin(fSldMin->GetNumber()+xBinWidth/2),
                              xaxis->FindBin(fSldMax->GetNumber()-xBinWidth/2));
         // the x-axis range could be changed a little bit by Rebin algorithm
         fSldMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
         fSldMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
      }
      if (fCancel->GetState()==kButtonDisabled) 
         fCancel->SetState(kButtonUp);
      if (fApply->GetState()==kButtonDisabled) 
         fApply->SetState(kButtonUp);
      Update();
   }
//   fGedEditor->GetPad()->GetCanvas()->Selected(fGedEditor->GetPad(), fHist,  0);      
   //  fModel = fHist;
      Refresh(fHist);
}

//______________________________________________________________________________
void TH1Editor::DoBinMoved(Int_t numx)
{
   // Slot connected to the rebin slider in case of a not ntuple histogram
   // (does the Rebinning of the histogram). 

   // create a clone in the background, when the slider is moved for 
   // the first time
   if (fAvoidSignal) return;
   if (!fBinHist /*&& fDelaydraw->GetState()!=kButtonDown*/) {
      Int_t* divx = Dividers(fHist->GetXaxis()->GetNbins());
      if (divx[0]==2) return;
      fBinHist = (TH1*)fHist->Clone("BinHist");
   } 
   // if the slider already has been moved and the clone is saved
   Int_t nx = fBinHist->GetXaxis()->GetNbins();
   Int_t* divx = Dividers(nx);   
   if (divx[0]==2) {
      fBinSlider->SetPosition(2);
      numx=1;
      return;
   }
   Int_t maxx = (Int_t)nx/divx[numx];
   if (maxx==1) maxx=2;
   if (fDelaydraw->GetState() == kButtonUp) {
      fGedEditor->GetPad()->cd();
      fHist->Reset();
      fHist->SetBins(nx,fBinHist->GetXaxis()->GetXmin(),
                     fBinHist->GetXaxis()->GetXmax());
      fHist->Add(fBinHist);
      fHist->ResetBit(TH1::kCanRebin);
      fHist->Rebin(divx[numx]);
      //fModel=fHist;
      TAxis* xaxis = fHist->GetXaxis();
      Double_t xBinWidth = xaxis->GetBinWidth(1);
      xaxis->SetRangeUser(fSldMin->GetNumber()+xBinWidth/2,
                          fSldMax->GetNumber()-xBinWidth/2);
      fSlider->SetRange(1,maxx);
      fSlider->SetPosition(xaxis->FindBin(fSldMin->GetNumber()+xBinWidth/2),
                           xaxis->FindBin(fSldMax->GetNumber()-xBinWidth/2));
      // the axis range could be changed a little bit by the Rebin algorithm
      fSldMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
      fSldMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
      fClient->NeedRedraw(fBinSlider,kTRUE);
      Update();
   }
   if (fCancel->GetState()==kButtonDisabled) 
      fCancel->SetState(kButtonUp);
   if (fApply->GetState()==kButtonDisabled) 
      fApply->SetState(kButtonUp);
   if (fBinNumberEntry->GetNumber()!=maxx) 
      fBinNumberEntry->SetNumber(maxx);
}

//______________________________________________________________________________
void TH1Editor::DoBinPressed()
{
   // Slot connected to the rebin slider in case of a not ntuple histogram.

   if (fAvoidSignal) return;
   Int_t* d = Dividers(fHist->GetXaxis()->GetNbins());
   if (d[0]==2 && !fBinHist) {
      new TGMsgBox(fClient->GetDefaultRoot(), this->GetMainFrame(),
                   "TH1 Editor", "It is not possible to rebin the histogram", 
                   kMBIconExclamation, kMBOk, 0, kVerticalFrame);
      gVirtualX->GrabPointer(fBinSlider->GetId(),0,0,0); 
   }
   // calling the MessageBox again does NOT work!*/
}

//______________________________________________________________________________
void TH1Editor::DoBinReleased1()
{               
   // Slot connected to the BinNumber Slider in case of a ntuple histogram
   // (does the Rebinning of the histogram). 

   if (fAvoidSignal) return;
   Double_t oldOffset = fOffsetNumberEntry->GetNumber();   
   Int_t number = fBinSlider1->GetPosition();
   if (number==5) return;
   Int_t fact = 0;
   Int_t binNumber = 0;   
   TAxis* xaxis = fHist->GetXaxis();
   // "compute" the scaling factor:
   if (number > 5) fact = number - 4;
   else fact = number - 6;
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   if (!player) return;
   Int_t first = xaxis->GetFirst();
   Int_t last = xaxis->GetLast();
   Int_t nx = xaxis->GetNbins();
   Double_t min = xaxis->GetBinLowEdge(1);       // overall min in user coords
   Double_t max = xaxis->GetBinUpEdge(nx);       // overall max in user coords
   Double_t rmin = xaxis->GetBinLowEdge(first);  // recent min in user coords
   Double_t rmax = xaxis->GetBinUpEdge(last);    // recent max in user coords
   
   ((TH1*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
   ((TH1*)player->GetHistogram())->Reset();

   // get new Number of bins
   if (fact > 0) binNumber = fact*nx;
   if (fact < 0) binNumber = (Int_t) ((-1)*nx/fact+0.5);
   if (binNumber < 1) binNumber = 1;
   if (binNumber > 10000) binNumber= 10000;
   Double_t newOffset = 1.*fBinOffsetSld->GetPosition()/100*((max-min)/binNumber);
   // create new histogram - the main job is done by sel->TakeAction()
   ((TH1*)player->GetHistogram())->SetBins(binNumber,
                                           min-oldOffset+newOffset,
                                           max-oldOffset+newOffset);
   TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
   if (!sel) return;
   sel->TakeAction();

   // restore and set all the attributes which were changed by TakeAction() 
   fHist = (TH1*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();
   fSlider->SetRange(1,binNumber);
   Double_t binWidth = fHist->GetXaxis()->GetBinWidth(1);
   fSlider->SetPosition(xaxis->FindBin(rmin), xaxis->FindBin(rmax));
   Double_t offset = 1.*fBinOffsetSld->GetPosition()/100*binWidth;
   xaxis->SetRange(xaxis->FindBin(rmin+binWidth/2), 
                   xaxis->FindBin(rmax-binWidth/2));   // SetRange in binNumbers!
   fSldMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
   fSldMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
   fBinNumberEntry1->SetNumber(xaxis->GetLast() - xaxis->GetFirst() + 1);   
   fBinSlider1->SetPosition(5);
   fOffsetNumberEntry->SetNumber(offset);
   fOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0,
                                 xaxis->GetBinWidth(1));
   fClient->NeedRedraw(fBinSlider1);
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoBinMoved1()
{
   // Slot connected to the rebin slider in case of an ntuple histogram.
   // It updates the BinNumberEntryField during the BinSlider movement.
   
   if (fAvoidSignal) return;
   TAxis* xaxis = fHist->GetXaxis();
   Int_t first = xaxis->GetFirst();
   Int_t last = xaxis->GetLast();
   Int_t number = fBinSlider1->GetPosition();
   Int_t n = last -first+1;
   Int_t fact = 0;
   Int_t binNumber = 0;   
   if (number >= 5) fact = number - 4;
   else fact = number - 6;
   if (fact > 0) binNumber = fact*n;
   if (fact < 0) binNumber = (Int_t) ((-1)*n/fact+0.5);
   if (binNumber < 1) binNumber = 1;
   if (binNumber > 10000) binNumber= 10000;
   fBinNumberEntry1->SetIntNumber(binNumber);
//   Update();
}

//______________________________________________________________________________
void TH1Editor::DoBinLabel()
{
   // Slot connected to the Bin number entry of the Rebinning tab.
   
   if (fAvoidSignal) return;
   Int_t num = (Int_t)(fBinNumberEntry->GetNumber());
   Int_t nx = 0;
   if (fBinHist) nx = fBinHist->GetXaxis()->GetNbins();
   else nx = fHist->GetXaxis()->GetNbins();
   Int_t *div = Dividers(nx);
   Int_t diff = TMath::Abs(num - div[1]);
   Int_t c = 1;
   for (Int_t i = 2; i <= div[0]; i++) {
      if ((TMath::Abs(num - div[i])) < diff) {
         c = i; 
         diff = TMath::Abs(num - div[i]);
      }
   }
   fBinNumberEntry->SetNumber(div[c]);
   fBinSlider->SetPosition(div[0] - c +1);
   if (fDelaydraw->GetState()==kButtonUp) DoBinMoved(div[0] - c +1);
   else DoBinReleased(); 
//   fGedEditor->GetPad()->GetCanvas()->Selected(fGedEditor->GetPad(), fHist,  0);
   // fModel = fHist;
   Refresh(fHist);
}

//______________________________________________________________________________
void TH1Editor::DoBinLabel1()
{
   // Slot connected to the Bin number entry of the Rebinning tab.
   
   if (fAvoidSignal) return;
   Double_t oldOffset = fOffsetNumberEntry->GetNumber();
   Int_t num = (Int_t)fBinNumberEntry1->GetNumber();   
   TAxis* xaxis = fHist->GetXaxis();
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   if (!player) return;
   Int_t first = xaxis->GetFirst();
   Int_t last = xaxis->GetLast();
   Int_t nx = xaxis->GetNbins();
   Double_t min = xaxis->GetBinLowEdge(1);        // overall min in user coords
   Double_t max = xaxis->GetBinUpEdge(nx);        // overall max in user coords
   Double_t rmin = xaxis->GetBinLowEdge(first);   // recent min in user coords
   Double_t rmax = xaxis->GetBinUpEdge(last);     // recent max in user coords
   
   ((TH1*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
   ((TH1*)player->GetHistogram())->Reset();

// Calculate the new number of bins in the complete range
   Int_t binNumber = (Int_t) ((max-min)/(rmax - rmin)*num + 0.5);
   if (binNumber < 1) binNumber = 1;
   if (binNumber > 10000) binNumber = 10000;
   Double_t offset = 1.*(fBinOffsetSld->GetPosition())/100*(max-min)/binNumber;
// create new histogram - the main job is done by sel->TakeAction()
   ((TH1*)player->GetHistogram())->SetBins(binNumber,
                                           min-oldOffset+offset,
                                           max-oldOffset+offset);
   TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
   if (!sel) return;
   sel->TakeAction();

// Restore and set all the attributes which were changed by TakeAction() 
   fHist = (TH1*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();
   fSlider->SetRange(1,binNumber);
   Double_t binWidth = xaxis->GetBinWidth(1);
   fSlider->SetPosition(xaxis->FindBin(rmin), xaxis->FindBin(rmax));
   offset = 1.*fBinOffsetSld->GetPosition()/100*binWidth;
   xaxis->SetRange(xaxis->FindBin(rmin+binWidth/2), 
                   xaxis->FindBin(rmax-binWidth/2));   // SetRange in binNumbers!
   fSldMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
   fSldMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
   fOffsetNumberEntry->SetNumber(offset);
   fOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, binWidth);
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoOffsetPressed()
{
   // Slot connected to the OffSetSlider that saves the OldBinOffset 
   // (nessesary for delay draw mode).
   
   if (fAvoidSignal) return;
   fOldOffset = fOffsetNumberEntry->GetNumber();
}

//______________________________________________________________________________
void TH1Editor::DoOffsetReleased()
{
   // Slot connected to the OffSetSlider.
   // It changes the origin of the histogram inbetween a binwidth and
   // rebin the histogram with the new Offset given by the Slider.

   // !!problem: histogram with variable binwidth??
   // computes the new histogram in "delay draw" mode
   
   if (fAvoidSignal) return;
   if (fDelaydraw->GetState()==kButtonDown) {
      Int_t num = (Int_t) fBinOffsetSld->GetPosition();
      TAxis* xaxis = fHist->GetXaxis();
      Double_t binWidth = xaxis->GetBinWidth(1);
      Double_t offset =  1.*num/100*binWidth;
      Double_t oldOffset = fOldOffset;
      Int_t nx = xaxis->GetNbins();   
      TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
      if (!player) return;
      Int_t first = xaxis->GetFirst();
      Int_t last = xaxis->GetLast();
      Double_t min = xaxis->GetBinLowEdge(1);          // overall min in user coords
      Double_t max = xaxis->GetBinUpEdge(nx);          // overall max in user coords
      Double_t rmin = xaxis->GetBinLowEdge(first);     // recent min in user coords
      Double_t rmax = xaxis->GetBinUpEdge(last);       // recent max in user coords
   
      ((TH1*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
      ((TH1*)player->GetHistogram())->Reset();
 
      ((TH1*)player->GetHistogram())->SetBins(nx,
                                              min+offset-oldOffset,
                                              max+offset-oldOffset);
      TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
      if (!sel) return;
      sel->TakeAction();
 
      // Restore all the attributes which were changed by TakeAction() 
      fHist = (TH1*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();
      xaxis->SetRange(xaxis->FindBin(rmin+offset-oldOffset+binWidth/2), 
                      xaxis->FindBin(rmax+offset-oldOffset-binWidth/2)); // in binNumbers!
      fSldMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
      fSldMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
      fOffsetNumberEntry->SetNumber(offset);
      Update();
   } 
}

//______________________________________________________________________________
void TH1Editor::DoOffsetMoved(Int_t num)
{
   // Slot connected to the OffSetSlider.
   // It changes the origin of the histogram inbetween a binwidth and
   // rebin the histogram with the new offset given by the Slider.

   // !!histogram with variable binwidth??
   // !!only works for histograms with fixed binwidth

   if (fAvoidSignal) return;
   TAxis* xaxis = fHist->GetXaxis();   
   Double_t binWidth = xaxis->GetBinWidth(1);
   Double_t offset =  1.*num/100*binWidth;
   if (fDelaydraw->GetState()==kButtonUp) {
      Double_t oldOffset = fOffsetNumberEntry->GetNumber();
      Int_t nx = xaxis->GetNbins();   
      TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
      if (!player) return;
      Int_t first = xaxis->GetFirst();
      Int_t last = xaxis->GetLast();
      Double_t min = xaxis->GetBinLowEdge(1);          // overall min in user coords
      Double_t max = xaxis->GetBinUpEdge(nx);          // overall max in user coords
      Double_t rmin = xaxis->GetBinLowEdge(first);     // recent min in user coords
      Double_t rmax = xaxis->GetBinUpEdge(last);       // recent max in user coords
   
      ((TH1*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
      ((TH1*)player->GetHistogram())->Reset();
 
      ((TH1*)player->GetHistogram())->SetBins(nx,
                                              min+offset-oldOffset,
                                              max+offset-oldOffset);
      TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
      if (!sel) return;
      sel->TakeAction();
 
   // Restore all the attributes which were changed by TakeAction() 
      fHist = (TH1*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();
      xaxis->SetRange(xaxis->FindBin(rmin+offset-oldOffset+binWidth/2), 
                      xaxis->FindBin(rmax+offset-oldOffset-binWidth/2)); // in binNumbers!
      fSldMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
      fSldMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
      fClient->NeedRedraw(fBinOffsetSld,kTRUE);
   } 
   fOffsetNumberEntry->SetNumber(offset);
   fClient->NeedRedraw(fOffsetNumberEntry,kTRUE);
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoBinOffset()
{
   // Slot connected to the OffSetNumberEntry which is related to the 
   // OffSetSlider changes the origin of the histogram inbetween a binwidth.

   if (fAvoidSignal) return;
   TAxis* xaxis = fHist->GetXaxis();   
   Double_t binWidth = xaxis->GetBinWidth(1);
   Double_t offset =  fOffsetNumberEntry->GetNumber();
   Double_t oldOffset = 1.*fBinOffsetSld->GetPosition()/100*binWidth;
   Int_t nx = xaxis->GetNbins();   
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   if (!player) return;
   Int_t first = xaxis->GetFirst();
   Int_t last = xaxis->GetLast();
   Double_t min = xaxis->GetBinLowEdge(1);          // overall min in user coords
   Double_t max = xaxis->GetBinUpEdge(nx);          // overall max in user coords
   Double_t rmin = xaxis->GetBinLowEdge(first);     // recent min in user coords
   Double_t rmax = xaxis->GetBinUpEdge(last);       // recent max in user coords
   
   ((TH1*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
   ((TH1*)player->GetHistogram())->Reset();

   ((TH1*)player->GetHistogram())->SetBins(nx,
                                           min+offset-oldOffset,
                                           max+offset-oldOffset);
   TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
   if (!sel) return;
   sel->TakeAction();

    // Restore all the attributes which were changed by TakeAction() 
   fHist = (TH1*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();
   xaxis->SetRange(xaxis->FindBin(rmin+offset-oldOffset+binWidth/2),
                   xaxis->FindBin(rmax+offset-oldOffset-binWidth/2)); // in binNumbers!
   fSldMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
   fSldMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
   fBinOffsetSld->SetPosition((Int_t)(offset/binWidth*100));
   Update();
}

//______________________________________________________________________________
void TH1Editor::DoApply()
{
   // Slot connected to the Apply button of the Binning tab.
   
   Int_t ret = 0;
   new TGMsgBox(fClient->GetDefaultRoot(), this->GetMainFrame(), 
                "TH1 Editor", "Replace origin histogram with rebinned one?", 
                kMBIconQuestion, kMBYes | kMBNo, &ret, kVerticalFrame);
   if (ret==1) {
      if (fBinHist) {
         delete fBinHist;
         fBinHist = 0;
      }
      Int_t nx = fHist->GetXaxis()->GetNbins();
      Int_t *div = Dividers(nx);
      Int_t up = 0;
      if (div[0]-1 <= 1) up = 2;
      else up = div[0]-1; 
      fBinSlider->SetRange(1,up);
      if (fBinSlider->GetMaxPosition()==2 && div[0]==2 ) 
         fBinSlider->SetPosition(2);
      else 
         fBinSlider->SetPosition(1);
      fCancel->SetState(kButtonDisabled);
      fApply->SetState(kButtonDisabled);
      Update();
   } else if (ret==2) DoCancel();
}

//______________________________________________________________________________
void TH1Editor::DoCancel()
{
   // Slot connected to the Cancel button of the Binning tab.
   
   if (fBinHist) {
      fGedEditor->GetPad()->cd();
      fHist->Reset();
      fHist->SetBins(fBinHist->GetXaxis()->GetNbins(),
                     fBinHist->GetXaxis()->GetXmin(),
                     fBinHist->GetXaxis()->GetXmax());
      fHist->Add(fBinHist);
      delete fBinHist;
      fBinHist = 0;
      fCancel->SetState(kButtonDisabled);
      fApply->SetState(kButtonDisabled);
      Int_t* divx = Dividers(fHist->GetXaxis()->GetNbins());
      if (divx[0]!=2) fBinSlider->SetPosition(1);
      // Consigning the new Histogram to all other Editors
//      fGedEditor->GetPad()->GetCanvas()->Selected(fGedEditor->GetPad(), fHist,  0);
      Update();    
      //fModel = fHist;
      Refresh(fHist);
   }
}

//______________________________________________________________________________
TString TH1Editor::GetHistTypeLabel()
{
   // Returns the selected histogram type (HIST, LEGO1-2, SURF1-5).

   TString s="";
   switch (fTypeCombo->GetSelected()){
      case (-1)         : {s = "LEGO"; break;}
      case (kTYPE_LEGO ): {s = "LEGO"; break;}
      case (kTYPE_LEGO1): {s = "LEGO1"; break;}
      case (kTYPE_LEGO2): {s = "LEGO2"; break;}
      case (kTYPE_SURF ): {s = "SURF"; break;}
      case (kTYPE_SURF1): {s = "SURF1"; break;}
      case (kTYPE_SURF2): {s = "SURF2"; break;}
      case (kTYPE_SURF3): {s = "SURF3"; break;}
      case (kTYPE_SURF4): {s = "SURF4"; break;}
      case (kTYPE_SURF5): {s = "SURF5"; break;}
      default:  break;
   }

   return s;
}

//______________________________________________________________________________
TString TH1Editor::GetHistCoordsLabel()
{
   // Return the selected coordinate system of the histogram (POL,CYL,SPH,PSR).

   TString s="";
   if (fDim->GetState()!=kButtonDown) {
      switch (fCoordsCombo->GetSelected()){
         case (-1)         : {s = "POL"; break;}
         case (kCOORDS_CAR): {s = ""; break;}
         case (kCOORDS_POL): {s = "POL"; break;}
         case (kCOORDS_CYL): {s = "CYL"; break;}
         case (kCOORDS_SPH): {s = "SPH"; break;}
         case (kCOORDS_PSR): {s = "PSR"; break;}
         default:  break;
      }
   }

   return s;
}

//______________________________________________________________________________
TString TH1Editor::GetHistErrorLabel()
{
   // Return the selected error type (E,E1-5).
   
   TString s="";
   switch (fErrorCombo->GetSelected()){
      case (-1)             : {s = ""; break;}
      case (kERRORS_NO)     : {s = ""; break;}
      case (kERRORS_SIMPLE) : {s = "E"; break;}
      case (kERRORS_EDGES)  : {s = "E1"; break;}
      case (kERRORS_REC)    : {s = "E2"; break;}
      case (kERRORS_FILL)   : {s = "E3"; break;}
      case (kERRORS_CONTOUR): {s = "E4"; break;}
      default:  break;
   }

   return s;
}

//______________________________________________________________________________
TString TH1Editor::GetHistAddLabel()
{
   // Return the selected shape of the histogram (C, L, LF2).
   
   TString s="";
   switch (fAddCombo->GetSelected()){
      case (-1)         : {s = "" ; break;}
      case (kADD_NONE)  : {s = "" ; break;}
      case (kADD_SMOOTH): {s = "C"; break;}
      case (kADD_SIMPLE): {s = "L"; break;}
      case (kADD_FILL)  : {s = "LF2"; break;}
      default           :  break;
   }
   if (fAddMarker->GetState()==kButtonDown) s += "P";
   if (fAddB->GetState()==kButtonDown) s += "B";
   if (fAddBar->GetState()==kButtonDown){
      if (fMakeHBar->GetState()==kButtonDown) s+="H";
      switch (fPercentCombo->GetSelected()){
         case (kPER_0) : { s += "BAR" ; break;}
         case (kPER_10): { s += "BAR1"; break;}
         case (kPER_20): { s += "BAR2"; break;}            
         case (kPER_30): { s += "BAR3"; break;} 
         case (kPER_40): { s += "BAR4"; break;}                  
      }
   }    

   return s;
}

//______________________________________________________________________________
TGComboBox* TH1Editor::BuildHistTypeComboBox(TGFrame* parent, Int_t id)
{
   // Create histogram type combo box.

   TGComboBox *c = new TGComboBox(parent, id);

   c->AddEntry("Lego" , kTYPE_LEGO);
   c->AddEntry("Lego1", kTYPE_LEGO1);
   c->AddEntry("Lego2", kTYPE_LEGO2);
   c->AddEntry("Surf" , kTYPE_SURF);
   c->AddEntry("Surf1", kTYPE_SURF1);
   c->AddEntry("Surf2", kTYPE_SURF2);
   c->AddEntry("Surf3", kTYPE_SURF3);   
   c->AddEntry("Surf4", kTYPE_SURF4);   
   c->AddEntry("Surf5", kTYPE_SURF5); 
   
   return c;
}

//______________________________________________________________________________
TGComboBox* TH1Editor::BuildHistCoordsComboBox(TGFrame* parent, Int_t id)
{
   // Create coordinate system type combo box.

   TGComboBox *c = new TGComboBox(parent, id);

   c->AddEntry("Cartesian", kCOORDS_CAR);
   c->AddEntry("Cylindric", kCOORDS_CYL);
   c->AddEntry("Polar", kCOORDS_POL);
   c->AddEntry("Rapidity", kCOORDS_PSR);   
   c->AddEntry("Spheric", kCOORDS_SPH);   
   TGListBox* lb = c->GetListBox();
   lb->Resize(lb->GetWidth(), 83);
 
   return c;
}

//______________________________________________________________________________
TGComboBox* TH1Editor::BuildHistErrorComboBox(TGFrame* parent, Int_t id)
{
   // Create error type combo box.

   TGComboBox *c = new TGComboBox(parent, id);

   c->AddEntry("No Errors", kERRORS_NO);
   c->AddEntry("Simple", kERRORS_SIMPLE);
   c->AddEntry("Edges", kERRORS_EDGES);
   c->AddEntry("Rectangles",kERRORS_REC);
   c->AddEntry("Fill", kERRORS_FILL);   
   c->AddEntry("Contour", kERRORS_CONTOUR);   
 
   return c;
}

//______________________________________________________________________________
TGComboBox* TH1Editor::BuildHistAddComboBox(TGFrame* parent, Int_t id)
{
   // Create Line/Bar combo box.

   TGComboBox *c = new TGComboBox(parent, id);

   c->AddEntry("No Line", kADD_NONE);
   c->AddEntry("Simple Line", kADD_SIMPLE);
   c->AddEntry("Smooth Line", kADD_SMOOTH);
   c->AddEntry("Fill Area",kADD_FILL);
   TGListBox* lb = c->GetListBox();
   lb->Resize(lb->GetWidth(), 76);
   return c;
}

//______________________________________________________________________________
TGComboBox* TH1Editor::BuildPercentComboBox(TGFrame* parent, Int_t id)
{
   // Create Percentage combo box for bar option.
   
   TGComboBox *c = new TGComboBox(parent, id);
   
   c->AddEntry(" 0 %", kPER_0);   
   c->AddEntry("10 %", kPER_10);   
   c->AddEntry("20 %", kPER_20);
   c->AddEntry("30 %", kPER_30);
   c->AddEntry("40 %", kPER_40);   
   TGListBox* lb = c->GetListBox();
   lb->Resize(lb->GetWidth(), 83);   
   
   return c;
}

//______________________________________________________________________________
void TH1Editor::ChangeErrorCombo(Int_t i)
{
   // Change the error combo box entry.
   
   switch (i){
      case 0: {
         if (((TGLBContainer*)((TGListBox*)fErrorCombo->GetListBox())->GetContainer())->GetPos(kERRORS_EDGES)!=-1)
            fErrorCombo->RemoveEntries(kERRORS_EDGES,kERRORS_CONTOUR);
         if (!((fErrorCombo->GetSelected()== kERRORS_NO) || (fErrorCombo->GetSelected()== kERRORS_SIMPLE))) 
            fErrorCombo->Select(kERRORS_NO);
         TGListBox* lb = fErrorCombo->GetListBox();
         lb->Resize(lb->GetWidth(),36);	 
         break;
      }
      case 1: {   
         if (((TGLBContainer*)((TGListBox*)fErrorCombo->GetListBox())->GetContainer())->GetPos(kERRORS_EDGES)==-1) {
            fErrorCombo->AddEntry("Edges", kERRORS_EDGES);
            fErrorCombo->AddEntry("Rectangles",kERRORS_REC);
            fErrorCombo->AddEntry("Fill", kERRORS_FILL);   
            fErrorCombo->AddEntry("Contour", kERRORS_CONTOUR);
            TGListBox* lb = fErrorCombo->GetListBox();
            lb->Resize(lb->GetWidth(),100);	 
         }
         break;
      }
   }
}

 //______________________________________________________________________________
void TH1Editor::PaintBox3D(Float_t *p1, Float_t *p2,Float_t *p3, Float_t *p4) 
{
   // Paint a 3D box.
   
   fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
   fGedEditor->GetPad()->SetLineWidth(1);
   fGedEditor->GetPad()->SetLineColor(2);
   fGedEditor->GetPad()->cd();
   fGedEditor->GetPad()->PaintLine3D(p1, p2);
   fGedEditor->GetPad()->PaintLine3D(p2, p3);
   fGedEditor->GetPad()->PaintLine3D(p3, p4);
   fGedEditor->GetPad()->PaintLine3D(p4, p1);
}

//______________________________________________________________________________
Int_t* TH1Editor::Dividers(Int_t n)
{
   // Return an array of dividers of n (without the trivial divider n).
   // The number of dividers is saved in the first entry.
   
   Int_t* div;
   if (n <= 0) {
      div = new Int_t[1];
      div[0]=0;
   } else if (n == 1) {
      div = new Int_t[2];
      div[0]=div[1]=1;
   } else {
      div = new Int_t[(Int_t) n/2+2];
      div[0]=0; 
      div[1]=1;

      Int_t num = 1;
      for (Int_t i=2; i <= n/2; i++) {
         if (n % i == 0) {
            num++;
            div[num] = i;
         }
      }
      num++;
      div[num]=n;
      div[0] = num;
//   for (Int_t a=0; a <= div[0]; a++) printf("div[%d] = %d\n", a , div[a]);
   }
   return div;
}   
   
 TH1Editor.cxx:1
 TH1Editor.cxx:2
 TH1Editor.cxx:3
 TH1Editor.cxx:4
 TH1Editor.cxx:5
 TH1Editor.cxx:6
 TH1Editor.cxx:7
 TH1Editor.cxx:8
 TH1Editor.cxx:9
 TH1Editor.cxx:10
 TH1Editor.cxx:11
 TH1Editor.cxx:12
 TH1Editor.cxx:13
 TH1Editor.cxx:14
 TH1Editor.cxx:15
 TH1Editor.cxx:16
 TH1Editor.cxx:17
 TH1Editor.cxx:18
 TH1Editor.cxx:19
 TH1Editor.cxx:20
 TH1Editor.cxx:21
 TH1Editor.cxx:22
 TH1Editor.cxx:23
 TH1Editor.cxx:24
 TH1Editor.cxx:25
 TH1Editor.cxx:26
 TH1Editor.cxx:27
 TH1Editor.cxx:28
 TH1Editor.cxx:29
 TH1Editor.cxx:30
 TH1Editor.cxx:31
 TH1Editor.cxx:32
 TH1Editor.cxx:33
 TH1Editor.cxx:34
 TH1Editor.cxx:35
 TH1Editor.cxx:36
 TH1Editor.cxx:37
 TH1Editor.cxx:38
 TH1Editor.cxx:39
 TH1Editor.cxx:40
 TH1Editor.cxx:41
 TH1Editor.cxx:42
 TH1Editor.cxx:43
 TH1Editor.cxx:44
 TH1Editor.cxx:45
 TH1Editor.cxx:46
 TH1Editor.cxx:47
 TH1Editor.cxx:48
 TH1Editor.cxx:49
 TH1Editor.cxx:50
 TH1Editor.cxx:51
 TH1Editor.cxx:52
 TH1Editor.cxx:53
 TH1Editor.cxx:54
 TH1Editor.cxx:55
 TH1Editor.cxx:56
 TH1Editor.cxx:57
 TH1Editor.cxx:58
 TH1Editor.cxx:59
 TH1Editor.cxx:60
 TH1Editor.cxx:61
 TH1Editor.cxx:62
 TH1Editor.cxx:63
 TH1Editor.cxx:64
 TH1Editor.cxx:65
 TH1Editor.cxx:66
 TH1Editor.cxx:67
 TH1Editor.cxx:68
 TH1Editor.cxx:69
 TH1Editor.cxx:70
 TH1Editor.cxx:71
 TH1Editor.cxx:72
 TH1Editor.cxx:73
 TH1Editor.cxx:74
 TH1Editor.cxx:75
 TH1Editor.cxx:76
 TH1Editor.cxx:77
 TH1Editor.cxx:78
 TH1Editor.cxx:79
 TH1Editor.cxx:80
 TH1Editor.cxx:81
 TH1Editor.cxx:82
 TH1Editor.cxx:83
 TH1Editor.cxx:84
 TH1Editor.cxx:85
 TH1Editor.cxx:86
 TH1Editor.cxx:87
 TH1Editor.cxx:88
 TH1Editor.cxx:89
 TH1Editor.cxx:90
 TH1Editor.cxx:91
 TH1Editor.cxx:92
 TH1Editor.cxx:93
 TH1Editor.cxx:94
 TH1Editor.cxx:95
 TH1Editor.cxx:96
 TH1Editor.cxx:97
 TH1Editor.cxx:98
 TH1Editor.cxx:99
 TH1Editor.cxx:100
 TH1Editor.cxx:101
 TH1Editor.cxx:102
 TH1Editor.cxx:103
 TH1Editor.cxx:104
 TH1Editor.cxx:105
 TH1Editor.cxx:106
 TH1Editor.cxx:107
 TH1Editor.cxx:108
 TH1Editor.cxx:109
 TH1Editor.cxx:110
 TH1Editor.cxx:111
 TH1Editor.cxx:112
 TH1Editor.cxx:113
 TH1Editor.cxx:114
 TH1Editor.cxx:115
 TH1Editor.cxx:116
 TH1Editor.cxx:117
 TH1Editor.cxx:118
 TH1Editor.cxx:119
 TH1Editor.cxx:120
 TH1Editor.cxx:121
 TH1Editor.cxx:122
 TH1Editor.cxx:123
 TH1Editor.cxx:124
 TH1Editor.cxx:125
 TH1Editor.cxx:126
 TH1Editor.cxx:127
 TH1Editor.cxx:128
 TH1Editor.cxx:129
 TH1Editor.cxx:130
 TH1Editor.cxx:131
 TH1Editor.cxx:132
 TH1Editor.cxx:133
 TH1Editor.cxx:134
 TH1Editor.cxx:135
 TH1Editor.cxx:136
 TH1Editor.cxx:137
 TH1Editor.cxx:138
 TH1Editor.cxx:139
 TH1Editor.cxx:140
 TH1Editor.cxx:141
 TH1Editor.cxx:142
 TH1Editor.cxx:143
 TH1Editor.cxx:144
 TH1Editor.cxx:145
 TH1Editor.cxx:146
 TH1Editor.cxx:147
 TH1Editor.cxx:148
 TH1Editor.cxx:149
 TH1Editor.cxx:150
 TH1Editor.cxx:151
 TH1Editor.cxx:152
 TH1Editor.cxx:153
 TH1Editor.cxx:154
 TH1Editor.cxx:155
 TH1Editor.cxx:156
 TH1Editor.cxx:157
 TH1Editor.cxx:158
 TH1Editor.cxx:159
 TH1Editor.cxx:160
 TH1Editor.cxx:161
 TH1Editor.cxx:162
 TH1Editor.cxx:163
 TH1Editor.cxx:164
 TH1Editor.cxx:165
 TH1Editor.cxx:166
 TH1Editor.cxx:167
 TH1Editor.cxx:168
 TH1Editor.cxx:169
 TH1Editor.cxx:170
 TH1Editor.cxx:171
 TH1Editor.cxx:172
 TH1Editor.cxx:173
 TH1Editor.cxx:174
 TH1Editor.cxx:175
 TH1Editor.cxx:176
 TH1Editor.cxx:177
 TH1Editor.cxx:178
 TH1Editor.cxx:179
 TH1Editor.cxx:180
 TH1Editor.cxx:181
 TH1Editor.cxx:182
 TH1Editor.cxx:183
 TH1Editor.cxx:184
 TH1Editor.cxx:185
 TH1Editor.cxx:186
 TH1Editor.cxx:187
 TH1Editor.cxx:188
 TH1Editor.cxx:189
 TH1Editor.cxx:190
 TH1Editor.cxx:191
 TH1Editor.cxx:192
 TH1Editor.cxx:193
 TH1Editor.cxx:194
 TH1Editor.cxx:195
 TH1Editor.cxx:196
 TH1Editor.cxx:197
 TH1Editor.cxx:198
 TH1Editor.cxx:199
 TH1Editor.cxx:200
 TH1Editor.cxx:201
 TH1Editor.cxx:202
 TH1Editor.cxx:203
 TH1Editor.cxx:204
 TH1Editor.cxx:205
 TH1Editor.cxx:206
 TH1Editor.cxx:207
 TH1Editor.cxx:208
 TH1Editor.cxx:209
 TH1Editor.cxx:210
 TH1Editor.cxx:211
 TH1Editor.cxx:212
 TH1Editor.cxx:213
 TH1Editor.cxx:214
 TH1Editor.cxx:215
 TH1Editor.cxx:216
 TH1Editor.cxx:217
 TH1Editor.cxx:218
 TH1Editor.cxx:219
 TH1Editor.cxx:220
 TH1Editor.cxx:221
 TH1Editor.cxx:222
 TH1Editor.cxx:223
 TH1Editor.cxx:224
 TH1Editor.cxx:225
 TH1Editor.cxx:226
 TH1Editor.cxx:227
 TH1Editor.cxx:228
 TH1Editor.cxx:229
 TH1Editor.cxx:230
 TH1Editor.cxx:231
 TH1Editor.cxx:232
 TH1Editor.cxx:233
 TH1Editor.cxx:234
 TH1Editor.cxx:235
 TH1Editor.cxx:236
 TH1Editor.cxx:237
 TH1Editor.cxx:238
 TH1Editor.cxx:239
 TH1Editor.cxx:240
 TH1Editor.cxx:241
 TH1Editor.cxx:242
 TH1Editor.cxx:243
 TH1Editor.cxx:244
 TH1Editor.cxx:245
 TH1Editor.cxx:246
 TH1Editor.cxx:247
 TH1Editor.cxx:248
 TH1Editor.cxx:249
 TH1Editor.cxx:250
 TH1Editor.cxx:251
 TH1Editor.cxx:252
 TH1Editor.cxx:253
 TH1Editor.cxx:254
 TH1Editor.cxx:255
 TH1Editor.cxx:256
 TH1Editor.cxx:257
 TH1Editor.cxx:258
 TH1Editor.cxx:259
 TH1Editor.cxx:260
 TH1Editor.cxx:261
 TH1Editor.cxx:262
 TH1Editor.cxx:263
 TH1Editor.cxx:264
 TH1Editor.cxx:265
 TH1Editor.cxx:266
 TH1Editor.cxx:267
 TH1Editor.cxx:268
 TH1Editor.cxx:269
 TH1Editor.cxx:270
 TH1Editor.cxx:271
 TH1Editor.cxx:272
 TH1Editor.cxx:273
 TH1Editor.cxx:274
 TH1Editor.cxx:275
 TH1Editor.cxx:276
 TH1Editor.cxx:277
 TH1Editor.cxx:278
 TH1Editor.cxx:279
 TH1Editor.cxx:280
 TH1Editor.cxx:281
 TH1Editor.cxx:282
 TH1Editor.cxx:283
 TH1Editor.cxx:284
 TH1Editor.cxx:285
 TH1Editor.cxx:286
 TH1Editor.cxx:287
 TH1Editor.cxx:288
 TH1Editor.cxx:289
 TH1Editor.cxx:290
 TH1Editor.cxx:291
 TH1Editor.cxx:292
 TH1Editor.cxx:293
 TH1Editor.cxx:294
 TH1Editor.cxx:295
 TH1Editor.cxx:296
 TH1Editor.cxx:297
 TH1Editor.cxx:298
 TH1Editor.cxx:299
 TH1Editor.cxx:300
 TH1Editor.cxx:301
 TH1Editor.cxx:302
 TH1Editor.cxx:303
 TH1Editor.cxx:304
 TH1Editor.cxx:305
 TH1Editor.cxx:306
 TH1Editor.cxx:307
 TH1Editor.cxx:308
 TH1Editor.cxx:309
 TH1Editor.cxx:310
 TH1Editor.cxx:311
 TH1Editor.cxx:312
 TH1Editor.cxx:313
 TH1Editor.cxx:314
 TH1Editor.cxx:315
 TH1Editor.cxx:316
 TH1Editor.cxx:317
 TH1Editor.cxx:318
 TH1Editor.cxx:319
 TH1Editor.cxx:320
 TH1Editor.cxx:321
 TH1Editor.cxx:322
 TH1Editor.cxx:323
 TH1Editor.cxx:324
 TH1Editor.cxx:325
 TH1Editor.cxx:326
 TH1Editor.cxx:327
 TH1Editor.cxx:328
 TH1Editor.cxx:329
 TH1Editor.cxx:330
 TH1Editor.cxx:331
 TH1Editor.cxx:332
 TH1Editor.cxx:333
 TH1Editor.cxx:334
 TH1Editor.cxx:335
 TH1Editor.cxx:336
 TH1Editor.cxx:337
 TH1Editor.cxx:338
 TH1Editor.cxx:339
 TH1Editor.cxx:340
 TH1Editor.cxx:341
 TH1Editor.cxx:342
 TH1Editor.cxx:343
 TH1Editor.cxx:344
 TH1Editor.cxx:345
 TH1Editor.cxx:346
 TH1Editor.cxx:347
 TH1Editor.cxx:348
 TH1Editor.cxx:349
 TH1Editor.cxx:350
 TH1Editor.cxx:351
 TH1Editor.cxx:352
 TH1Editor.cxx:353
 TH1Editor.cxx:354
 TH1Editor.cxx:355
 TH1Editor.cxx:356
 TH1Editor.cxx:357
 TH1Editor.cxx:358
 TH1Editor.cxx:359
 TH1Editor.cxx:360
 TH1Editor.cxx:361
 TH1Editor.cxx:362
 TH1Editor.cxx:363
 TH1Editor.cxx:364
 TH1Editor.cxx:365
 TH1Editor.cxx:366
 TH1Editor.cxx:367
 TH1Editor.cxx:368
 TH1Editor.cxx:369
 TH1Editor.cxx:370
 TH1Editor.cxx:371
 TH1Editor.cxx:372
 TH1Editor.cxx:373
 TH1Editor.cxx:374
 TH1Editor.cxx:375
 TH1Editor.cxx:376
 TH1Editor.cxx:377
 TH1Editor.cxx:378
 TH1Editor.cxx:379
 TH1Editor.cxx:380
 TH1Editor.cxx:381
 TH1Editor.cxx:382
 TH1Editor.cxx:383
 TH1Editor.cxx:384
 TH1Editor.cxx:385
 TH1Editor.cxx:386
 TH1Editor.cxx:387
 TH1Editor.cxx:388
 TH1Editor.cxx:389
 TH1Editor.cxx:390
 TH1Editor.cxx:391
 TH1Editor.cxx:392
 TH1Editor.cxx:393
 TH1Editor.cxx:394
 TH1Editor.cxx:395
 TH1Editor.cxx:396
 TH1Editor.cxx:397
 TH1Editor.cxx:398
 TH1Editor.cxx:399
 TH1Editor.cxx:400
 TH1Editor.cxx:401
 TH1Editor.cxx:402
 TH1Editor.cxx:403
 TH1Editor.cxx:404
 TH1Editor.cxx:405
 TH1Editor.cxx:406
 TH1Editor.cxx:407
 TH1Editor.cxx:408
 TH1Editor.cxx:409
 TH1Editor.cxx:410
 TH1Editor.cxx:411
 TH1Editor.cxx:412
 TH1Editor.cxx:413
 TH1Editor.cxx:414
 TH1Editor.cxx:415
 TH1Editor.cxx:416
 TH1Editor.cxx:417
 TH1Editor.cxx:418
 TH1Editor.cxx:419
 TH1Editor.cxx:420
 TH1Editor.cxx:421
 TH1Editor.cxx:422
 TH1Editor.cxx:423
 TH1Editor.cxx:424
 TH1Editor.cxx:425
 TH1Editor.cxx:426
 TH1Editor.cxx:427
 TH1Editor.cxx:428
 TH1Editor.cxx:429
 TH1Editor.cxx:430
 TH1Editor.cxx:431
 TH1Editor.cxx:432
 TH1Editor.cxx:433
 TH1Editor.cxx:434
 TH1Editor.cxx:435
 TH1Editor.cxx:436
 TH1Editor.cxx:437
 TH1Editor.cxx:438
 TH1Editor.cxx:439
 TH1Editor.cxx:440
 TH1Editor.cxx:441
 TH1Editor.cxx:442
 TH1Editor.cxx:443
 TH1Editor.cxx:444
 TH1Editor.cxx:445
 TH1Editor.cxx:446
 TH1Editor.cxx:447
 TH1Editor.cxx:448
 TH1Editor.cxx:449
 TH1Editor.cxx:450
 TH1Editor.cxx:451
 TH1Editor.cxx:452
 TH1Editor.cxx:453
 TH1Editor.cxx:454
 TH1Editor.cxx:455
 TH1Editor.cxx:456
 TH1Editor.cxx:457
 TH1Editor.cxx:458
 TH1Editor.cxx:459
 TH1Editor.cxx:460
 TH1Editor.cxx:461
 TH1Editor.cxx:462
 TH1Editor.cxx:463
 TH1Editor.cxx:464
 TH1Editor.cxx:465
 TH1Editor.cxx:466
 TH1Editor.cxx:467
 TH1Editor.cxx:468
 TH1Editor.cxx:469
 TH1Editor.cxx:470
 TH1Editor.cxx:471
 TH1Editor.cxx:472
 TH1Editor.cxx:473
 TH1Editor.cxx:474
 TH1Editor.cxx:475
 TH1Editor.cxx:476
 TH1Editor.cxx:477
 TH1Editor.cxx:478
 TH1Editor.cxx:479
 TH1Editor.cxx:480
 TH1Editor.cxx:481
 TH1Editor.cxx:482
 TH1Editor.cxx:483
 TH1Editor.cxx:484
 TH1Editor.cxx:485
 TH1Editor.cxx:486
 TH1Editor.cxx:487
 TH1Editor.cxx:488
 TH1Editor.cxx:489
 TH1Editor.cxx:490
 TH1Editor.cxx:491
 TH1Editor.cxx:492
 TH1Editor.cxx:493
 TH1Editor.cxx:494
 TH1Editor.cxx:495
 TH1Editor.cxx:496
 TH1Editor.cxx:497
 TH1Editor.cxx:498
 TH1Editor.cxx:499
 TH1Editor.cxx:500
 TH1Editor.cxx:501
 TH1Editor.cxx:502
 TH1Editor.cxx:503
 TH1Editor.cxx:504
 TH1Editor.cxx:505
 TH1Editor.cxx:506
 TH1Editor.cxx:507
 TH1Editor.cxx:508
 TH1Editor.cxx:509
 TH1Editor.cxx:510
 TH1Editor.cxx:511
 TH1Editor.cxx:512
 TH1Editor.cxx:513
 TH1Editor.cxx:514
 TH1Editor.cxx:515
 TH1Editor.cxx:516
 TH1Editor.cxx:517
 TH1Editor.cxx:518
 TH1Editor.cxx:519
 TH1Editor.cxx:520
 TH1Editor.cxx:521
 TH1Editor.cxx:522
 TH1Editor.cxx:523
 TH1Editor.cxx:524
 TH1Editor.cxx:525
 TH1Editor.cxx:526
 TH1Editor.cxx:527
 TH1Editor.cxx:528
 TH1Editor.cxx:529
 TH1Editor.cxx:530
 TH1Editor.cxx:531
 TH1Editor.cxx:532
 TH1Editor.cxx:533
 TH1Editor.cxx:534
 TH1Editor.cxx:535
 TH1Editor.cxx:536
 TH1Editor.cxx:537
 TH1Editor.cxx:538
 TH1Editor.cxx:539
 TH1Editor.cxx:540
 TH1Editor.cxx:541
 TH1Editor.cxx:542
 TH1Editor.cxx:543
 TH1Editor.cxx:544
 TH1Editor.cxx:545
 TH1Editor.cxx:546
 TH1Editor.cxx:547
 TH1Editor.cxx:548
 TH1Editor.cxx:549
 TH1Editor.cxx:550
 TH1Editor.cxx:551
 TH1Editor.cxx:552
 TH1Editor.cxx:553
 TH1Editor.cxx:554
 TH1Editor.cxx:555
 TH1Editor.cxx:556
 TH1Editor.cxx:557
 TH1Editor.cxx:558
 TH1Editor.cxx:559
 TH1Editor.cxx:560
 TH1Editor.cxx:561
 TH1Editor.cxx:562
 TH1Editor.cxx:563
 TH1Editor.cxx:564
 TH1Editor.cxx:565
 TH1Editor.cxx:566
 TH1Editor.cxx:567
 TH1Editor.cxx:568
 TH1Editor.cxx:569
 TH1Editor.cxx:570
 TH1Editor.cxx:571
 TH1Editor.cxx:572
 TH1Editor.cxx:573
 TH1Editor.cxx:574
 TH1Editor.cxx:575
 TH1Editor.cxx:576
 TH1Editor.cxx:577
 TH1Editor.cxx:578
 TH1Editor.cxx:579
 TH1Editor.cxx:580
 TH1Editor.cxx:581
 TH1Editor.cxx:582
 TH1Editor.cxx:583
 TH1Editor.cxx:584
 TH1Editor.cxx:585
 TH1Editor.cxx:586
 TH1Editor.cxx:587
 TH1Editor.cxx:588
 TH1Editor.cxx:589
 TH1Editor.cxx:590
 TH1Editor.cxx:591
 TH1Editor.cxx:592
 TH1Editor.cxx:593
 TH1Editor.cxx:594
 TH1Editor.cxx:595
 TH1Editor.cxx:596
 TH1Editor.cxx:597
 TH1Editor.cxx:598
 TH1Editor.cxx:599
 TH1Editor.cxx:600
 TH1Editor.cxx:601
 TH1Editor.cxx:602
 TH1Editor.cxx:603
 TH1Editor.cxx:604
 TH1Editor.cxx:605
 TH1Editor.cxx:606
 TH1Editor.cxx:607
 TH1Editor.cxx:608
 TH1Editor.cxx:609
 TH1Editor.cxx:610
 TH1Editor.cxx:611
 TH1Editor.cxx:612
 TH1Editor.cxx:613
 TH1Editor.cxx:614
 TH1Editor.cxx:615
 TH1Editor.cxx:616
 TH1Editor.cxx:617
 TH1Editor.cxx:618
 TH1Editor.cxx:619
 TH1Editor.cxx:620
 TH1Editor.cxx:621
 TH1Editor.cxx:622
 TH1Editor.cxx:623
 TH1Editor.cxx:624
 TH1Editor.cxx:625
 TH1Editor.cxx:626
 TH1Editor.cxx:627
 TH1Editor.cxx:628
 TH1Editor.cxx:629
 TH1Editor.cxx:630
 TH1Editor.cxx:631
 TH1Editor.cxx:632
 TH1Editor.cxx:633
 TH1Editor.cxx:634
 TH1Editor.cxx:635
 TH1Editor.cxx:636
 TH1Editor.cxx:637
 TH1Editor.cxx:638
 TH1Editor.cxx:639
 TH1Editor.cxx:640
 TH1Editor.cxx:641
 TH1Editor.cxx:642
 TH1Editor.cxx:643
 TH1Editor.cxx:644
 TH1Editor.cxx:645
 TH1Editor.cxx:646
 TH1Editor.cxx:647
 TH1Editor.cxx:648
 TH1Editor.cxx:649
 TH1Editor.cxx:650
 TH1Editor.cxx:651
 TH1Editor.cxx:652
 TH1Editor.cxx:653
 TH1Editor.cxx:654
 TH1Editor.cxx:655
 TH1Editor.cxx:656
 TH1Editor.cxx:657
 TH1Editor.cxx:658
 TH1Editor.cxx:659
 TH1Editor.cxx:660
 TH1Editor.cxx:661
 TH1Editor.cxx:662
 TH1Editor.cxx:663
 TH1Editor.cxx:664
 TH1Editor.cxx:665
 TH1Editor.cxx:666
 TH1Editor.cxx:667
 TH1Editor.cxx:668
 TH1Editor.cxx:669
 TH1Editor.cxx:670
 TH1Editor.cxx:671
 TH1Editor.cxx:672
 TH1Editor.cxx:673
 TH1Editor.cxx:674
 TH1Editor.cxx:675
 TH1Editor.cxx:676
 TH1Editor.cxx:677
 TH1Editor.cxx:678
 TH1Editor.cxx:679
 TH1Editor.cxx:680
 TH1Editor.cxx:681
 TH1Editor.cxx:682
 TH1Editor.cxx:683
 TH1Editor.cxx:684
 TH1Editor.cxx:685
 TH1Editor.cxx:686
 TH1Editor.cxx:687
 TH1Editor.cxx:688
 TH1Editor.cxx:689
 TH1Editor.cxx:690
 TH1Editor.cxx:691
 TH1Editor.cxx:692
 TH1Editor.cxx:693
 TH1Editor.cxx:694
 TH1Editor.cxx:695
 TH1Editor.cxx:696
 TH1Editor.cxx:697
 TH1Editor.cxx:698
 TH1Editor.cxx:699
 TH1Editor.cxx:700
 TH1Editor.cxx:701
 TH1Editor.cxx:702
 TH1Editor.cxx:703
 TH1Editor.cxx:704
 TH1Editor.cxx:705
 TH1Editor.cxx:706
 TH1Editor.cxx:707
 TH1Editor.cxx:708
 TH1Editor.cxx:709
 TH1Editor.cxx:710
 TH1Editor.cxx:711
 TH1Editor.cxx:712
 TH1Editor.cxx:713
 TH1Editor.cxx:714
 TH1Editor.cxx:715
 TH1Editor.cxx:716
 TH1Editor.cxx:717
 TH1Editor.cxx:718
 TH1Editor.cxx:719
 TH1Editor.cxx:720
 TH1Editor.cxx:721
 TH1Editor.cxx:722
 TH1Editor.cxx:723
 TH1Editor.cxx:724
 TH1Editor.cxx:725
 TH1Editor.cxx:726
 TH1Editor.cxx:727
 TH1Editor.cxx:728
 TH1Editor.cxx:729
 TH1Editor.cxx:730
 TH1Editor.cxx:731
 TH1Editor.cxx:732
 TH1Editor.cxx:733
 TH1Editor.cxx:734
 TH1Editor.cxx:735
 TH1Editor.cxx:736
 TH1Editor.cxx:737
 TH1Editor.cxx:738
 TH1Editor.cxx:739
 TH1Editor.cxx:740
 TH1Editor.cxx:741
 TH1Editor.cxx:742
 TH1Editor.cxx:743
 TH1Editor.cxx:744
 TH1Editor.cxx:745
 TH1Editor.cxx:746
 TH1Editor.cxx:747
 TH1Editor.cxx:748
 TH1Editor.cxx:749
 TH1Editor.cxx:750
 TH1Editor.cxx:751
 TH1Editor.cxx:752
 TH1Editor.cxx:753
 TH1Editor.cxx:754
 TH1Editor.cxx:755
 TH1Editor.cxx:756
 TH1Editor.cxx:757
 TH1Editor.cxx:758
 TH1Editor.cxx:759
 TH1Editor.cxx:760
 TH1Editor.cxx:761
 TH1Editor.cxx:762
 TH1Editor.cxx:763
 TH1Editor.cxx:764
 TH1Editor.cxx:765
 TH1Editor.cxx:766
 TH1Editor.cxx:767
 TH1Editor.cxx:768
 TH1Editor.cxx:769
 TH1Editor.cxx:770
 TH1Editor.cxx:771
 TH1Editor.cxx:772
 TH1Editor.cxx:773
 TH1Editor.cxx:774
 TH1Editor.cxx:775
 TH1Editor.cxx:776
 TH1Editor.cxx:777
 TH1Editor.cxx:778
 TH1Editor.cxx:779
 TH1Editor.cxx:780
 TH1Editor.cxx:781
 TH1Editor.cxx:782
 TH1Editor.cxx:783
 TH1Editor.cxx:784
 TH1Editor.cxx:785
 TH1Editor.cxx:786
 TH1Editor.cxx:787
 TH1Editor.cxx:788
 TH1Editor.cxx:789
 TH1Editor.cxx:790
 TH1Editor.cxx:791
 TH1Editor.cxx:792
 TH1Editor.cxx:793
 TH1Editor.cxx:794
 TH1Editor.cxx:795
 TH1Editor.cxx:796
 TH1Editor.cxx:797
 TH1Editor.cxx:798
 TH1Editor.cxx:799
 TH1Editor.cxx:800
 TH1Editor.cxx:801
 TH1Editor.cxx:802
 TH1Editor.cxx:803
 TH1Editor.cxx:804
 TH1Editor.cxx:805
 TH1Editor.cxx:806
 TH1Editor.cxx:807
 TH1Editor.cxx:808
 TH1Editor.cxx:809
 TH1Editor.cxx:810
 TH1Editor.cxx:811
 TH1Editor.cxx:812
 TH1Editor.cxx:813
 TH1Editor.cxx:814
 TH1Editor.cxx:815
 TH1Editor.cxx:816
 TH1Editor.cxx:817
 TH1Editor.cxx:818
 TH1Editor.cxx:819
 TH1Editor.cxx:820
 TH1Editor.cxx:821
 TH1Editor.cxx:822
 TH1Editor.cxx:823
 TH1Editor.cxx:824
 TH1Editor.cxx:825
 TH1Editor.cxx:826
 TH1Editor.cxx:827
 TH1Editor.cxx:828
 TH1Editor.cxx:829
 TH1Editor.cxx:830
 TH1Editor.cxx:831
 TH1Editor.cxx:832
 TH1Editor.cxx:833
 TH1Editor.cxx:834
 TH1Editor.cxx:835
 TH1Editor.cxx:836
 TH1Editor.cxx:837
 TH1Editor.cxx:838
 TH1Editor.cxx:839
 TH1Editor.cxx:840
 TH1Editor.cxx:841
 TH1Editor.cxx:842
 TH1Editor.cxx:843
 TH1Editor.cxx:844
 TH1Editor.cxx:845
 TH1Editor.cxx:846
 TH1Editor.cxx:847
 TH1Editor.cxx:848
 TH1Editor.cxx:849
 TH1Editor.cxx:850
 TH1Editor.cxx:851
 TH1Editor.cxx:852
 TH1Editor.cxx:853
 TH1Editor.cxx:854
 TH1Editor.cxx:855
 TH1Editor.cxx:856
 TH1Editor.cxx:857
 TH1Editor.cxx:858
 TH1Editor.cxx:859
 TH1Editor.cxx:860
 TH1Editor.cxx:861
 TH1Editor.cxx:862
 TH1Editor.cxx:863
 TH1Editor.cxx:864
 TH1Editor.cxx:865
 TH1Editor.cxx:866
 TH1Editor.cxx:867
 TH1Editor.cxx:868
 TH1Editor.cxx:869
 TH1Editor.cxx:870
 TH1Editor.cxx:871
 TH1Editor.cxx:872
 TH1Editor.cxx:873
 TH1Editor.cxx:874
 TH1Editor.cxx:875
 TH1Editor.cxx:876
 TH1Editor.cxx:877
 TH1Editor.cxx:878
 TH1Editor.cxx:879
 TH1Editor.cxx:880
 TH1Editor.cxx:881
 TH1Editor.cxx:882
 TH1Editor.cxx:883
 TH1Editor.cxx:884
 TH1Editor.cxx:885
 TH1Editor.cxx:886
 TH1Editor.cxx:887
 TH1Editor.cxx:888
 TH1Editor.cxx:889
 TH1Editor.cxx:890
 TH1Editor.cxx:891
 TH1Editor.cxx:892
 TH1Editor.cxx:893
 TH1Editor.cxx:894
 TH1Editor.cxx:895
 TH1Editor.cxx:896
 TH1Editor.cxx:897
 TH1Editor.cxx:898
 TH1Editor.cxx:899
 TH1Editor.cxx:900
 TH1Editor.cxx:901
 TH1Editor.cxx:902
 TH1Editor.cxx:903
 TH1Editor.cxx:904
 TH1Editor.cxx:905
 TH1Editor.cxx:906
 TH1Editor.cxx:907
 TH1Editor.cxx:908
 TH1Editor.cxx:909
 TH1Editor.cxx:910
 TH1Editor.cxx:911
 TH1Editor.cxx:912
 TH1Editor.cxx:913
 TH1Editor.cxx:914
 TH1Editor.cxx:915
 TH1Editor.cxx:916
 TH1Editor.cxx:917
 TH1Editor.cxx:918
 TH1Editor.cxx:919
 TH1Editor.cxx:920
 TH1Editor.cxx:921
 TH1Editor.cxx:922
 TH1Editor.cxx:923
 TH1Editor.cxx:924
 TH1Editor.cxx:925
 TH1Editor.cxx:926
 TH1Editor.cxx:927
 TH1Editor.cxx:928
 TH1Editor.cxx:929
 TH1Editor.cxx:930
 TH1Editor.cxx:931
 TH1Editor.cxx:932
 TH1Editor.cxx:933
 TH1Editor.cxx:934
 TH1Editor.cxx:935
 TH1Editor.cxx:936
 TH1Editor.cxx:937
 TH1Editor.cxx:938
 TH1Editor.cxx:939
 TH1Editor.cxx:940
 TH1Editor.cxx:941
 TH1Editor.cxx:942
 TH1Editor.cxx:943
 TH1Editor.cxx:944
 TH1Editor.cxx:945
 TH1Editor.cxx:946
 TH1Editor.cxx:947
 TH1Editor.cxx:948
 TH1Editor.cxx:949
 TH1Editor.cxx:950
 TH1Editor.cxx:951
 TH1Editor.cxx:952
 TH1Editor.cxx:953
 TH1Editor.cxx:954
 TH1Editor.cxx:955
 TH1Editor.cxx:956
 TH1Editor.cxx:957
 TH1Editor.cxx:958
 TH1Editor.cxx:959
 TH1Editor.cxx:960
 TH1Editor.cxx:961
 TH1Editor.cxx:962
 TH1Editor.cxx:963
 TH1Editor.cxx:964
 TH1Editor.cxx:965
 TH1Editor.cxx:966
 TH1Editor.cxx:967
 TH1Editor.cxx:968
 TH1Editor.cxx:969
 TH1Editor.cxx:970
 TH1Editor.cxx:971
 TH1Editor.cxx:972
 TH1Editor.cxx:973
 TH1Editor.cxx:974
 TH1Editor.cxx:975
 TH1Editor.cxx:976
 TH1Editor.cxx:977
 TH1Editor.cxx:978
 TH1Editor.cxx:979
 TH1Editor.cxx:980
 TH1Editor.cxx:981
 TH1Editor.cxx:982
 TH1Editor.cxx:983
 TH1Editor.cxx:984
 TH1Editor.cxx:985
 TH1Editor.cxx:986
 TH1Editor.cxx:987
 TH1Editor.cxx:988
 TH1Editor.cxx:989
 TH1Editor.cxx:990
 TH1Editor.cxx:991
 TH1Editor.cxx:992
 TH1Editor.cxx:993
 TH1Editor.cxx:994
 TH1Editor.cxx:995
 TH1Editor.cxx:996
 TH1Editor.cxx:997
 TH1Editor.cxx:998
 TH1Editor.cxx:999
 TH1Editor.cxx:1000
 TH1Editor.cxx:1001
 TH1Editor.cxx:1002
 TH1Editor.cxx:1003
 TH1Editor.cxx:1004
 TH1Editor.cxx:1005
 TH1Editor.cxx:1006
 TH1Editor.cxx:1007
 TH1Editor.cxx:1008
 TH1Editor.cxx:1009
 TH1Editor.cxx:1010
 TH1Editor.cxx:1011
 TH1Editor.cxx:1012
 TH1Editor.cxx:1013
 TH1Editor.cxx:1014
 TH1Editor.cxx:1015
 TH1Editor.cxx:1016
 TH1Editor.cxx:1017
 TH1Editor.cxx:1018
 TH1Editor.cxx:1019
 TH1Editor.cxx:1020
 TH1Editor.cxx:1021
 TH1Editor.cxx:1022
 TH1Editor.cxx:1023
 TH1Editor.cxx:1024
 TH1Editor.cxx:1025
 TH1Editor.cxx:1026
 TH1Editor.cxx:1027
 TH1Editor.cxx:1028
 TH1Editor.cxx:1029
 TH1Editor.cxx:1030
 TH1Editor.cxx:1031
 TH1Editor.cxx:1032
 TH1Editor.cxx:1033
 TH1Editor.cxx:1034
 TH1Editor.cxx:1035
 TH1Editor.cxx:1036
 TH1Editor.cxx:1037
 TH1Editor.cxx:1038
 TH1Editor.cxx:1039
 TH1Editor.cxx:1040
 TH1Editor.cxx:1041
 TH1Editor.cxx:1042
 TH1Editor.cxx:1043
 TH1Editor.cxx:1044
 TH1Editor.cxx:1045
 TH1Editor.cxx:1046
 TH1Editor.cxx:1047
 TH1Editor.cxx:1048
 TH1Editor.cxx:1049
 TH1Editor.cxx:1050
 TH1Editor.cxx:1051
 TH1Editor.cxx:1052
 TH1Editor.cxx:1053
 TH1Editor.cxx:1054
 TH1Editor.cxx:1055
 TH1Editor.cxx:1056
 TH1Editor.cxx:1057
 TH1Editor.cxx:1058
 TH1Editor.cxx:1059
 TH1Editor.cxx:1060
 TH1Editor.cxx:1061
 TH1Editor.cxx:1062
 TH1Editor.cxx:1063
 TH1Editor.cxx:1064
 TH1Editor.cxx:1065
 TH1Editor.cxx:1066
 TH1Editor.cxx:1067
 TH1Editor.cxx:1068
 TH1Editor.cxx:1069
 TH1Editor.cxx:1070
 TH1Editor.cxx:1071
 TH1Editor.cxx:1072
 TH1Editor.cxx:1073
 TH1Editor.cxx:1074
 TH1Editor.cxx:1075
 TH1Editor.cxx:1076
 TH1Editor.cxx:1077
 TH1Editor.cxx:1078
 TH1Editor.cxx:1079
 TH1Editor.cxx:1080
 TH1Editor.cxx:1081
 TH1Editor.cxx:1082
 TH1Editor.cxx:1083
 TH1Editor.cxx:1084
 TH1Editor.cxx:1085
 TH1Editor.cxx:1086
 TH1Editor.cxx:1087
 TH1Editor.cxx:1088
 TH1Editor.cxx:1089
 TH1Editor.cxx:1090
 TH1Editor.cxx:1091
 TH1Editor.cxx:1092
 TH1Editor.cxx:1093
 TH1Editor.cxx:1094
 TH1Editor.cxx:1095
 TH1Editor.cxx:1096
 TH1Editor.cxx:1097
 TH1Editor.cxx:1098
 TH1Editor.cxx:1099
 TH1Editor.cxx:1100
 TH1Editor.cxx:1101
 TH1Editor.cxx:1102
 TH1Editor.cxx:1103
 TH1Editor.cxx:1104
 TH1Editor.cxx:1105
 TH1Editor.cxx:1106
 TH1Editor.cxx:1107
 TH1Editor.cxx:1108
 TH1Editor.cxx:1109
 TH1Editor.cxx:1110
 TH1Editor.cxx:1111
 TH1Editor.cxx:1112
 TH1Editor.cxx:1113
 TH1Editor.cxx:1114
 TH1Editor.cxx:1115
 TH1Editor.cxx:1116
 TH1Editor.cxx:1117
 TH1Editor.cxx:1118
 TH1Editor.cxx:1119
 TH1Editor.cxx:1120
 TH1Editor.cxx:1121
 TH1Editor.cxx:1122
 TH1Editor.cxx:1123
 TH1Editor.cxx:1124
 TH1Editor.cxx:1125
 TH1Editor.cxx:1126
 TH1Editor.cxx:1127
 TH1Editor.cxx:1128
 TH1Editor.cxx:1129
 TH1Editor.cxx:1130
 TH1Editor.cxx:1131
 TH1Editor.cxx:1132
 TH1Editor.cxx:1133
 TH1Editor.cxx:1134
 TH1Editor.cxx:1135
 TH1Editor.cxx:1136
 TH1Editor.cxx:1137
 TH1Editor.cxx:1138
 TH1Editor.cxx:1139
 TH1Editor.cxx:1140
 TH1Editor.cxx:1141
 TH1Editor.cxx:1142
 TH1Editor.cxx:1143
 TH1Editor.cxx:1144
 TH1Editor.cxx:1145
 TH1Editor.cxx:1146
 TH1Editor.cxx:1147
 TH1Editor.cxx:1148
 TH1Editor.cxx:1149
 TH1Editor.cxx:1150
 TH1Editor.cxx:1151
 TH1Editor.cxx:1152
 TH1Editor.cxx:1153
 TH1Editor.cxx:1154
 TH1Editor.cxx:1155
 TH1Editor.cxx:1156
 TH1Editor.cxx:1157
 TH1Editor.cxx:1158
 TH1Editor.cxx:1159
 TH1Editor.cxx:1160
 TH1Editor.cxx:1161
 TH1Editor.cxx:1162
 TH1Editor.cxx:1163
 TH1Editor.cxx:1164
 TH1Editor.cxx:1165
 TH1Editor.cxx:1166
 TH1Editor.cxx:1167
 TH1Editor.cxx:1168
 TH1Editor.cxx:1169
 TH1Editor.cxx:1170
 TH1Editor.cxx:1171
 TH1Editor.cxx:1172
 TH1Editor.cxx:1173
 TH1Editor.cxx:1174
 TH1Editor.cxx:1175
 TH1Editor.cxx:1176
 TH1Editor.cxx:1177
 TH1Editor.cxx:1178
 TH1Editor.cxx:1179
 TH1Editor.cxx:1180
 TH1Editor.cxx:1181
 TH1Editor.cxx:1182
 TH1Editor.cxx:1183
 TH1Editor.cxx:1184
 TH1Editor.cxx:1185
 TH1Editor.cxx:1186
 TH1Editor.cxx:1187
 TH1Editor.cxx:1188
 TH1Editor.cxx:1189
 TH1Editor.cxx:1190
 TH1Editor.cxx:1191
 TH1Editor.cxx:1192
 TH1Editor.cxx:1193
 TH1Editor.cxx:1194
 TH1Editor.cxx:1195
 TH1Editor.cxx:1196
 TH1Editor.cxx:1197
 TH1Editor.cxx:1198
 TH1Editor.cxx:1199
 TH1Editor.cxx:1200
 TH1Editor.cxx:1201
 TH1Editor.cxx:1202
 TH1Editor.cxx:1203
 TH1Editor.cxx:1204
 TH1Editor.cxx:1205
 TH1Editor.cxx:1206
 TH1Editor.cxx:1207
 TH1Editor.cxx:1208
 TH1Editor.cxx:1209
 TH1Editor.cxx:1210
 TH1Editor.cxx:1211
 TH1Editor.cxx:1212
 TH1Editor.cxx:1213
 TH1Editor.cxx:1214
 TH1Editor.cxx:1215
 TH1Editor.cxx:1216
 TH1Editor.cxx:1217
 TH1Editor.cxx:1218
 TH1Editor.cxx:1219
 TH1Editor.cxx:1220
 TH1Editor.cxx:1221
 TH1Editor.cxx:1222
 TH1Editor.cxx:1223
 TH1Editor.cxx:1224
 TH1Editor.cxx:1225
 TH1Editor.cxx:1226
 TH1Editor.cxx:1227
 TH1Editor.cxx:1228
 TH1Editor.cxx:1229
 TH1Editor.cxx:1230
 TH1Editor.cxx:1231
 TH1Editor.cxx:1232
 TH1Editor.cxx:1233
 TH1Editor.cxx:1234
 TH1Editor.cxx:1235
 TH1Editor.cxx:1236
 TH1Editor.cxx:1237
 TH1Editor.cxx:1238
 TH1Editor.cxx:1239
 TH1Editor.cxx:1240
 TH1Editor.cxx:1241
 TH1Editor.cxx:1242
 TH1Editor.cxx:1243
 TH1Editor.cxx:1244
 TH1Editor.cxx:1245
 TH1Editor.cxx:1246
 TH1Editor.cxx:1247
 TH1Editor.cxx:1248
 TH1Editor.cxx:1249
 TH1Editor.cxx:1250
 TH1Editor.cxx:1251
 TH1Editor.cxx:1252
 TH1Editor.cxx:1253
 TH1Editor.cxx:1254
 TH1Editor.cxx:1255
 TH1Editor.cxx:1256
 TH1Editor.cxx:1257
 TH1Editor.cxx:1258
 TH1Editor.cxx:1259
 TH1Editor.cxx:1260
 TH1Editor.cxx:1261
 TH1Editor.cxx:1262
 TH1Editor.cxx:1263
 TH1Editor.cxx:1264
 TH1Editor.cxx:1265
 TH1Editor.cxx:1266
 TH1Editor.cxx:1267
 TH1Editor.cxx:1268
 TH1Editor.cxx:1269
 TH1Editor.cxx:1270
 TH1Editor.cxx:1271
 TH1Editor.cxx:1272
 TH1Editor.cxx:1273
 TH1Editor.cxx:1274
 TH1Editor.cxx:1275
 TH1Editor.cxx:1276
 TH1Editor.cxx:1277
 TH1Editor.cxx:1278
 TH1Editor.cxx:1279
 TH1Editor.cxx:1280
 TH1Editor.cxx:1281
 TH1Editor.cxx:1282
 TH1Editor.cxx:1283
 TH1Editor.cxx:1284
 TH1Editor.cxx:1285
 TH1Editor.cxx:1286
 TH1Editor.cxx:1287
 TH1Editor.cxx:1288
 TH1Editor.cxx:1289
 TH1Editor.cxx:1290
 TH1Editor.cxx:1291
 TH1Editor.cxx:1292
 TH1Editor.cxx:1293
 TH1Editor.cxx:1294
 TH1Editor.cxx:1295
 TH1Editor.cxx:1296
 TH1Editor.cxx:1297
 TH1Editor.cxx:1298
 TH1Editor.cxx:1299
 TH1Editor.cxx:1300
 TH1Editor.cxx:1301
 TH1Editor.cxx:1302
 TH1Editor.cxx:1303
 TH1Editor.cxx:1304
 TH1Editor.cxx:1305
 TH1Editor.cxx:1306
 TH1Editor.cxx:1307
 TH1Editor.cxx:1308
 TH1Editor.cxx:1309
 TH1Editor.cxx:1310
 TH1Editor.cxx:1311
 TH1Editor.cxx:1312
 TH1Editor.cxx:1313
 TH1Editor.cxx:1314
 TH1Editor.cxx:1315
 TH1Editor.cxx:1316
 TH1Editor.cxx:1317
 TH1Editor.cxx:1318
 TH1Editor.cxx:1319
 TH1Editor.cxx:1320
 TH1Editor.cxx:1321
 TH1Editor.cxx:1322
 TH1Editor.cxx:1323
 TH1Editor.cxx:1324
 TH1Editor.cxx:1325
 TH1Editor.cxx:1326
 TH1Editor.cxx:1327
 TH1Editor.cxx:1328
 TH1Editor.cxx:1329
 TH1Editor.cxx:1330
 TH1Editor.cxx:1331
 TH1Editor.cxx:1332
 TH1Editor.cxx:1333
 TH1Editor.cxx:1334
 TH1Editor.cxx:1335
 TH1Editor.cxx:1336
 TH1Editor.cxx:1337
 TH1Editor.cxx:1338
 TH1Editor.cxx:1339
 TH1Editor.cxx:1340
 TH1Editor.cxx:1341
 TH1Editor.cxx:1342
 TH1Editor.cxx:1343
 TH1Editor.cxx:1344
 TH1Editor.cxx:1345
 TH1Editor.cxx:1346
 TH1Editor.cxx:1347
 TH1Editor.cxx:1348
 TH1Editor.cxx:1349
 TH1Editor.cxx:1350
 TH1Editor.cxx:1351
 TH1Editor.cxx:1352
 TH1Editor.cxx:1353
 TH1Editor.cxx:1354
 TH1Editor.cxx:1355
 TH1Editor.cxx:1356
 TH1Editor.cxx:1357
 TH1Editor.cxx:1358
 TH1Editor.cxx:1359
 TH1Editor.cxx:1360
 TH1Editor.cxx:1361
 TH1Editor.cxx:1362
 TH1Editor.cxx:1363
 TH1Editor.cxx:1364
 TH1Editor.cxx:1365
 TH1Editor.cxx:1366
 TH1Editor.cxx:1367
 TH1Editor.cxx:1368
 TH1Editor.cxx:1369
 TH1Editor.cxx:1370
 TH1Editor.cxx:1371
 TH1Editor.cxx:1372
 TH1Editor.cxx:1373
 TH1Editor.cxx:1374
 TH1Editor.cxx:1375
 TH1Editor.cxx:1376
 TH1Editor.cxx:1377
 TH1Editor.cxx:1378
 TH1Editor.cxx:1379
 TH1Editor.cxx:1380
 TH1Editor.cxx:1381
 TH1Editor.cxx:1382
 TH1Editor.cxx:1383
 TH1Editor.cxx:1384
 TH1Editor.cxx:1385
 TH1Editor.cxx:1386
 TH1Editor.cxx:1387
 TH1Editor.cxx:1388
 TH1Editor.cxx:1389
 TH1Editor.cxx:1390
 TH1Editor.cxx:1391
 TH1Editor.cxx:1392
 TH1Editor.cxx:1393
 TH1Editor.cxx:1394
 TH1Editor.cxx:1395
 TH1Editor.cxx:1396
 TH1Editor.cxx:1397
 TH1Editor.cxx:1398
 TH1Editor.cxx:1399
 TH1Editor.cxx:1400
 TH1Editor.cxx:1401
 TH1Editor.cxx:1402
 TH1Editor.cxx:1403
 TH1Editor.cxx:1404
 TH1Editor.cxx:1405
 TH1Editor.cxx:1406
 TH1Editor.cxx:1407
 TH1Editor.cxx:1408
 TH1Editor.cxx:1409
 TH1Editor.cxx:1410
 TH1Editor.cxx:1411
 TH1Editor.cxx:1412
 TH1Editor.cxx:1413
 TH1Editor.cxx:1414
 TH1Editor.cxx:1415
 TH1Editor.cxx:1416
 TH1Editor.cxx:1417
 TH1Editor.cxx:1418
 TH1Editor.cxx:1419
 TH1Editor.cxx:1420
 TH1Editor.cxx:1421
 TH1Editor.cxx:1422
 TH1Editor.cxx:1423
 TH1Editor.cxx:1424
 TH1Editor.cxx:1425
 TH1Editor.cxx:1426
 TH1Editor.cxx:1427
 TH1Editor.cxx:1428
 TH1Editor.cxx:1429
 TH1Editor.cxx:1430
 TH1Editor.cxx:1431
 TH1Editor.cxx:1432
 TH1Editor.cxx:1433
 TH1Editor.cxx:1434
 TH1Editor.cxx:1435
 TH1Editor.cxx:1436
 TH1Editor.cxx:1437
 TH1Editor.cxx:1438
 TH1Editor.cxx:1439
 TH1Editor.cxx:1440
 TH1Editor.cxx:1441
 TH1Editor.cxx:1442
 TH1Editor.cxx:1443
 TH1Editor.cxx:1444
 TH1Editor.cxx:1445
 TH1Editor.cxx:1446
 TH1Editor.cxx:1447
 TH1Editor.cxx:1448
 TH1Editor.cxx:1449
 TH1Editor.cxx:1450
 TH1Editor.cxx:1451
 TH1Editor.cxx:1452
 TH1Editor.cxx:1453
 TH1Editor.cxx:1454
 TH1Editor.cxx:1455
 TH1Editor.cxx:1456
 TH1Editor.cxx:1457
 TH1Editor.cxx:1458
 TH1Editor.cxx:1459
 TH1Editor.cxx:1460
 TH1Editor.cxx:1461
 TH1Editor.cxx:1462
 TH1Editor.cxx:1463
 TH1Editor.cxx:1464
 TH1Editor.cxx:1465
 TH1Editor.cxx:1466
 TH1Editor.cxx:1467
 TH1Editor.cxx:1468
 TH1Editor.cxx:1469
 TH1Editor.cxx:1470
 TH1Editor.cxx:1471
 TH1Editor.cxx:1472
 TH1Editor.cxx:1473
 TH1Editor.cxx:1474
 TH1Editor.cxx:1475
 TH1Editor.cxx:1476
 TH1Editor.cxx:1477
 TH1Editor.cxx:1478
 TH1Editor.cxx:1479
 TH1Editor.cxx:1480
 TH1Editor.cxx:1481
 TH1Editor.cxx:1482
 TH1Editor.cxx:1483
 TH1Editor.cxx:1484
 TH1Editor.cxx:1485
 TH1Editor.cxx:1486
 TH1Editor.cxx:1487
 TH1Editor.cxx:1488
 TH1Editor.cxx:1489
 TH1Editor.cxx:1490
 TH1Editor.cxx:1491
 TH1Editor.cxx:1492
 TH1Editor.cxx:1493
 TH1Editor.cxx:1494
 TH1Editor.cxx:1495
 TH1Editor.cxx:1496
 TH1Editor.cxx:1497
 TH1Editor.cxx:1498
 TH1Editor.cxx:1499
 TH1Editor.cxx:1500
 TH1Editor.cxx:1501
 TH1Editor.cxx:1502
 TH1Editor.cxx:1503
 TH1Editor.cxx:1504
 TH1Editor.cxx:1505
 TH1Editor.cxx:1506
 TH1Editor.cxx:1507
 TH1Editor.cxx:1508
 TH1Editor.cxx:1509
 TH1Editor.cxx:1510
 TH1Editor.cxx:1511
 TH1Editor.cxx:1512
 TH1Editor.cxx:1513
 TH1Editor.cxx:1514
 TH1Editor.cxx:1515
 TH1Editor.cxx:1516
 TH1Editor.cxx:1517
 TH1Editor.cxx:1518
 TH1Editor.cxx:1519
 TH1Editor.cxx:1520
 TH1Editor.cxx:1521
 TH1Editor.cxx:1522
 TH1Editor.cxx:1523
 TH1Editor.cxx:1524
 TH1Editor.cxx:1525
 TH1Editor.cxx:1526
 TH1Editor.cxx:1527
 TH1Editor.cxx:1528
 TH1Editor.cxx:1529
 TH1Editor.cxx:1530
 TH1Editor.cxx:1531
 TH1Editor.cxx:1532
 TH1Editor.cxx:1533
 TH1Editor.cxx:1534
 TH1Editor.cxx:1535
 TH1Editor.cxx:1536
 TH1Editor.cxx:1537
 TH1Editor.cxx:1538
 TH1Editor.cxx:1539
 TH1Editor.cxx:1540
 TH1Editor.cxx:1541
 TH1Editor.cxx:1542
 TH1Editor.cxx:1543
 TH1Editor.cxx:1544
 TH1Editor.cxx:1545
 TH1Editor.cxx:1546
 TH1Editor.cxx:1547
 TH1Editor.cxx:1548
 TH1Editor.cxx:1549
 TH1Editor.cxx:1550
 TH1Editor.cxx:1551
 TH1Editor.cxx:1552
 TH1Editor.cxx:1553
 TH1Editor.cxx:1554
 TH1Editor.cxx:1555
 TH1Editor.cxx:1556
 TH1Editor.cxx:1557
 TH1Editor.cxx:1558
 TH1Editor.cxx:1559
 TH1Editor.cxx:1560
 TH1Editor.cxx:1561
 TH1Editor.cxx:1562
 TH1Editor.cxx:1563
 TH1Editor.cxx:1564
 TH1Editor.cxx:1565
 TH1Editor.cxx:1566
 TH1Editor.cxx:1567
 TH1Editor.cxx:1568
 TH1Editor.cxx:1569
 TH1Editor.cxx:1570
 TH1Editor.cxx:1571
 TH1Editor.cxx:1572
 TH1Editor.cxx:1573
 TH1Editor.cxx:1574
 TH1Editor.cxx:1575
 TH1Editor.cxx:1576
 TH1Editor.cxx:1577
 TH1Editor.cxx:1578
 TH1Editor.cxx:1579
 TH1Editor.cxx:1580
 TH1Editor.cxx:1581
 TH1Editor.cxx:1582
 TH1Editor.cxx:1583
 TH1Editor.cxx:1584
 TH1Editor.cxx:1585
 TH1Editor.cxx:1586
 TH1Editor.cxx:1587
 TH1Editor.cxx:1588
 TH1Editor.cxx:1589
 TH1Editor.cxx:1590
 TH1Editor.cxx:1591
 TH1Editor.cxx:1592
 TH1Editor.cxx:1593
 TH1Editor.cxx:1594
 TH1Editor.cxx:1595
 TH1Editor.cxx:1596
 TH1Editor.cxx:1597
 TH1Editor.cxx:1598
 TH1Editor.cxx:1599
 TH1Editor.cxx:1600
 TH1Editor.cxx:1601
 TH1Editor.cxx:1602
 TH1Editor.cxx:1603
 TH1Editor.cxx:1604
 TH1Editor.cxx:1605
 TH1Editor.cxx:1606
 TH1Editor.cxx:1607
 TH1Editor.cxx:1608
 TH1Editor.cxx:1609
 TH1Editor.cxx:1610
 TH1Editor.cxx:1611
 TH1Editor.cxx:1612
 TH1Editor.cxx:1613
 TH1Editor.cxx:1614
 TH1Editor.cxx:1615
 TH1Editor.cxx:1616
 TH1Editor.cxx:1617
 TH1Editor.cxx:1618
 TH1Editor.cxx:1619
 TH1Editor.cxx:1620
 TH1Editor.cxx:1621
 TH1Editor.cxx:1622
 TH1Editor.cxx:1623
 TH1Editor.cxx:1624
 TH1Editor.cxx:1625
 TH1Editor.cxx:1626
 TH1Editor.cxx:1627
 TH1Editor.cxx:1628
 TH1Editor.cxx:1629
 TH1Editor.cxx:1630
 TH1Editor.cxx:1631
 TH1Editor.cxx:1632
 TH1Editor.cxx:1633
 TH1Editor.cxx:1634
 TH1Editor.cxx:1635
 TH1Editor.cxx:1636
 TH1Editor.cxx:1637
 TH1Editor.cxx:1638
 TH1Editor.cxx:1639
 TH1Editor.cxx:1640
 TH1Editor.cxx:1641
 TH1Editor.cxx:1642
 TH1Editor.cxx:1643
 TH1Editor.cxx:1644
 TH1Editor.cxx:1645
 TH1Editor.cxx:1646
 TH1Editor.cxx:1647
 TH1Editor.cxx:1648
 TH1Editor.cxx:1649
 TH1Editor.cxx:1650
 TH1Editor.cxx:1651
 TH1Editor.cxx:1652
 TH1Editor.cxx:1653
 TH1Editor.cxx:1654
 TH1Editor.cxx:1655
 TH1Editor.cxx:1656
 TH1Editor.cxx:1657
 TH1Editor.cxx:1658
 TH1Editor.cxx:1659
 TH1Editor.cxx:1660
 TH1Editor.cxx:1661
 TH1Editor.cxx:1662
 TH1Editor.cxx:1663
 TH1Editor.cxx:1664
 TH1Editor.cxx:1665
 TH1Editor.cxx:1666
 TH1Editor.cxx:1667
 TH1Editor.cxx:1668
 TH1Editor.cxx:1669
 TH1Editor.cxx:1670
 TH1Editor.cxx:1671
 TH1Editor.cxx:1672
 TH1Editor.cxx:1673
 TH1Editor.cxx:1674
 TH1Editor.cxx:1675
 TH1Editor.cxx:1676
 TH1Editor.cxx:1677
 TH1Editor.cxx:1678
 TH1Editor.cxx:1679
 TH1Editor.cxx:1680
 TH1Editor.cxx:1681
 TH1Editor.cxx:1682
 TH1Editor.cxx:1683
 TH1Editor.cxx:1684
 TH1Editor.cxx:1685
 TH1Editor.cxx:1686
 TH1Editor.cxx:1687
 TH1Editor.cxx:1688
 TH1Editor.cxx:1689
 TH1Editor.cxx:1690
 TH1Editor.cxx:1691
 TH1Editor.cxx:1692
 TH1Editor.cxx:1693
 TH1Editor.cxx:1694
 TH1Editor.cxx:1695
 TH1Editor.cxx:1696
 TH1Editor.cxx:1697
 TH1Editor.cxx:1698
 TH1Editor.cxx:1699
 TH1Editor.cxx:1700
 TH1Editor.cxx:1701
 TH1Editor.cxx:1702
 TH1Editor.cxx:1703
 TH1Editor.cxx:1704
 TH1Editor.cxx:1705
 TH1Editor.cxx:1706
 TH1Editor.cxx:1707
 TH1Editor.cxx:1708
 TH1Editor.cxx:1709
 TH1Editor.cxx:1710
 TH1Editor.cxx:1711
 TH1Editor.cxx:1712
 TH1Editor.cxx:1713
 TH1Editor.cxx:1714
 TH1Editor.cxx:1715
 TH1Editor.cxx:1716
 TH1Editor.cxx:1717
 TH1Editor.cxx:1718
 TH1Editor.cxx:1719
 TH1Editor.cxx:1720
 TH1Editor.cxx:1721
 TH1Editor.cxx:1722
 TH1Editor.cxx:1723
 TH1Editor.cxx:1724
 TH1Editor.cxx:1725
 TH1Editor.cxx:1726
 TH1Editor.cxx:1727
 TH1Editor.cxx:1728
 TH1Editor.cxx:1729
 TH1Editor.cxx:1730
 TH1Editor.cxx:1731
 TH1Editor.cxx:1732
 TH1Editor.cxx:1733
 TH1Editor.cxx:1734
 TH1Editor.cxx:1735
 TH1Editor.cxx:1736
 TH1Editor.cxx:1737
 TH1Editor.cxx:1738
 TH1Editor.cxx:1739
 TH1Editor.cxx:1740
 TH1Editor.cxx:1741
 TH1Editor.cxx:1742
 TH1Editor.cxx:1743
 TH1Editor.cxx:1744
 TH1Editor.cxx:1745
 TH1Editor.cxx:1746
 TH1Editor.cxx:1747
 TH1Editor.cxx:1748
 TH1Editor.cxx:1749
 TH1Editor.cxx:1750
 TH1Editor.cxx:1751
 TH1Editor.cxx:1752
 TH1Editor.cxx:1753
 TH1Editor.cxx:1754
 TH1Editor.cxx:1755
 TH1Editor.cxx:1756
 TH1Editor.cxx:1757
 TH1Editor.cxx:1758
 TH1Editor.cxx:1759
 TH1Editor.cxx:1760
 TH1Editor.cxx:1761
 TH1Editor.cxx:1762
 TH1Editor.cxx:1763
 TH1Editor.cxx:1764
 TH1Editor.cxx:1765
 TH1Editor.cxx:1766
 TH1Editor.cxx:1767
 TH1Editor.cxx:1768
 TH1Editor.cxx:1769
 TH1Editor.cxx:1770
 TH1Editor.cxx:1771
 TH1Editor.cxx:1772
 TH1Editor.cxx:1773
 TH1Editor.cxx:1774
 TH1Editor.cxx:1775
 TH1Editor.cxx:1776
 TH1Editor.cxx:1777
 TH1Editor.cxx:1778
 TH1Editor.cxx:1779
 TH1Editor.cxx:1780
 TH1Editor.cxx:1781
 TH1Editor.cxx:1782
 TH1Editor.cxx:1783
 TH1Editor.cxx:1784
 TH1Editor.cxx:1785
 TH1Editor.cxx:1786
 TH1Editor.cxx:1787
 TH1Editor.cxx:1788
 TH1Editor.cxx:1789
 TH1Editor.cxx:1790
 TH1Editor.cxx:1791
 TH1Editor.cxx:1792
 TH1Editor.cxx:1793
 TH1Editor.cxx:1794
 TH1Editor.cxx:1795
 TH1Editor.cxx:1796
 TH1Editor.cxx:1797
 TH1Editor.cxx:1798
 TH1Editor.cxx:1799
 TH1Editor.cxx:1800
 TH1Editor.cxx:1801
 TH1Editor.cxx:1802
 TH1Editor.cxx:1803
 TH1Editor.cxx:1804
 TH1Editor.cxx:1805
 TH1Editor.cxx:1806
 TH1Editor.cxx:1807
 TH1Editor.cxx:1808
 TH1Editor.cxx:1809
 TH1Editor.cxx:1810
 TH1Editor.cxx:1811
 TH1Editor.cxx:1812
 TH1Editor.cxx:1813
 TH1Editor.cxx:1814
 TH1Editor.cxx:1815
 TH1Editor.cxx:1816
 TH1Editor.cxx:1817
 TH1Editor.cxx:1818
 TH1Editor.cxx:1819
 TH1Editor.cxx:1820
 TH1Editor.cxx:1821
 TH1Editor.cxx:1822
 TH1Editor.cxx:1823
 TH1Editor.cxx:1824
 TH1Editor.cxx:1825
 TH1Editor.cxx:1826
 TH1Editor.cxx:1827
 TH1Editor.cxx:1828
 TH1Editor.cxx:1829
 TH1Editor.cxx:1830
 TH1Editor.cxx:1831
 TH1Editor.cxx:1832
 TH1Editor.cxx:1833
 TH1Editor.cxx:1834
 TH1Editor.cxx:1835
 TH1Editor.cxx:1836
 TH1Editor.cxx:1837
 TH1Editor.cxx:1838
 TH1Editor.cxx:1839
 TH1Editor.cxx:1840
 TH1Editor.cxx:1841
 TH1Editor.cxx:1842
 TH1Editor.cxx:1843
 TH1Editor.cxx:1844
 TH1Editor.cxx:1845
 TH1Editor.cxx:1846
 TH1Editor.cxx:1847
 TH1Editor.cxx:1848
 TH1Editor.cxx:1849
 TH1Editor.cxx:1850
 TH1Editor.cxx:1851
 TH1Editor.cxx:1852
 TH1Editor.cxx:1853
 TH1Editor.cxx:1854
 TH1Editor.cxx:1855
 TH1Editor.cxx:1856
 TH1Editor.cxx:1857
 TH1Editor.cxx:1858
 TH1Editor.cxx:1859
 TH1Editor.cxx:1860
 TH1Editor.cxx:1861
 TH1Editor.cxx:1862
 TH1Editor.cxx:1863
 TH1Editor.cxx:1864
 TH1Editor.cxx:1865
 TH1Editor.cxx:1866
 TH1Editor.cxx:1867
 TH1Editor.cxx:1868
 TH1Editor.cxx:1869
 TH1Editor.cxx:1870
 TH1Editor.cxx:1871
 TH1Editor.cxx:1872
 TH1Editor.cxx:1873
 TH1Editor.cxx:1874
 TH1Editor.cxx:1875
 TH1Editor.cxx:1876
 TH1Editor.cxx:1877
 TH1Editor.cxx:1878
 TH1Editor.cxx:1879
 TH1Editor.cxx:1880
 TH1Editor.cxx:1881
 TH1Editor.cxx:1882
 TH1Editor.cxx:1883
 TH1Editor.cxx:1884
 TH1Editor.cxx:1885
 TH1Editor.cxx:1886
 TH1Editor.cxx:1887
 TH1Editor.cxx:1888
 TH1Editor.cxx:1889
 TH1Editor.cxx:1890
 TH1Editor.cxx:1891
 TH1Editor.cxx:1892
 TH1Editor.cxx:1893
 TH1Editor.cxx:1894
 TH1Editor.cxx:1895
 TH1Editor.cxx:1896
 TH1Editor.cxx:1897
 TH1Editor.cxx:1898
 TH1Editor.cxx:1899
 TH1Editor.cxx:1900
 TH1Editor.cxx:1901
 TH1Editor.cxx:1902
 TH1Editor.cxx:1903
 TH1Editor.cxx:1904
 TH1Editor.cxx:1905
 TH1Editor.cxx:1906
 TH1Editor.cxx:1907
 TH1Editor.cxx:1908
 TH1Editor.cxx:1909
 TH1Editor.cxx:1910
 TH1Editor.cxx:1911
 TH1Editor.cxx:1912
 TH1Editor.cxx:1913
 TH1Editor.cxx:1914
 TH1Editor.cxx:1915
 TH1Editor.cxx:1916
 TH1Editor.cxx:1917
 TH1Editor.cxx:1918
 TH1Editor.cxx:1919
 TH1Editor.cxx:1920
 TH1Editor.cxx:1921
 TH1Editor.cxx:1922
 TH1Editor.cxx:1923
 TH1Editor.cxx:1924
 TH1Editor.cxx:1925
 TH1Editor.cxx:1926
 TH1Editor.cxx:1927
 TH1Editor.cxx:1928
 TH1Editor.cxx:1929
 TH1Editor.cxx:1930
 TH1Editor.cxx:1931
 TH1Editor.cxx:1932
 TH1Editor.cxx:1933
 TH1Editor.cxx:1934
 TH1Editor.cxx:1935
 TH1Editor.cxx:1936
 TH1Editor.cxx:1937
 TH1Editor.cxx:1938
 TH1Editor.cxx:1939
 TH1Editor.cxx:1940
 TH1Editor.cxx:1941
 TH1Editor.cxx:1942
 TH1Editor.cxx:1943
 TH1Editor.cxx:1944
 TH1Editor.cxx:1945
 TH1Editor.cxx:1946
 TH1Editor.cxx:1947
 TH1Editor.cxx:1948
 TH1Editor.cxx:1949
 TH1Editor.cxx:1950
 TH1Editor.cxx:1951
 TH1Editor.cxx:1952
 TH1Editor.cxx:1953
 TH1Editor.cxx:1954
 TH1Editor.cxx:1955
 TH1Editor.cxx:1956
 TH1Editor.cxx:1957
 TH1Editor.cxx:1958
 TH1Editor.cxx:1959
 TH1Editor.cxx:1960
 TH1Editor.cxx:1961
 TH1Editor.cxx:1962
 TH1Editor.cxx:1963
 TH1Editor.cxx:1964
 TH1Editor.cxx:1965
 TH1Editor.cxx:1966
 TH1Editor.cxx:1967
 TH1Editor.cxx:1968
 TH1Editor.cxx:1969
 TH1Editor.cxx:1970
 TH1Editor.cxx:1971
 TH1Editor.cxx:1972
 TH1Editor.cxx:1973
 TH1Editor.cxx:1974
 TH1Editor.cxx:1975
 TH1Editor.cxx:1976
 TH1Editor.cxx:1977
 TH1Editor.cxx:1978
 TH1Editor.cxx:1979
 TH1Editor.cxx:1980
 TH1Editor.cxx:1981
 TH1Editor.cxx:1982
 TH1Editor.cxx:1983
 TH1Editor.cxx:1984
 TH1Editor.cxx:1985
 TH1Editor.cxx:1986
 TH1Editor.cxx:1987
 TH1Editor.cxx:1988
 TH1Editor.cxx:1989
 TH1Editor.cxx:1990
 TH1Editor.cxx:1991
 TH1Editor.cxx:1992
 TH1Editor.cxx:1993
 TH1Editor.cxx:1994
 TH1Editor.cxx:1995
 TH1Editor.cxx:1996
 TH1Editor.cxx:1997
 TH1Editor.cxx:1998
 TH1Editor.cxx:1999
 TH1Editor.cxx:2000
 TH1Editor.cxx:2001
 TH1Editor.cxx:2002
 TH1Editor.cxx:2003
 TH1Editor.cxx:2004
 TH1Editor.cxx:2005
 TH1Editor.cxx:2006
 TH1Editor.cxx:2007
 TH1Editor.cxx:2008
 TH1Editor.cxx:2009
 TH1Editor.cxx:2010
 TH1Editor.cxx:2011
 TH1Editor.cxx:2012
 TH1Editor.cxx:2013
 TH1Editor.cxx:2014
 TH1Editor.cxx:2015
 TH1Editor.cxx:2016
 TH1Editor.cxx:2017
 TH1Editor.cxx:2018
 TH1Editor.cxx:2019
 TH1Editor.cxx:2020
 TH1Editor.cxx:2021
 TH1Editor.cxx:2022
 TH1Editor.cxx:2023
 TH1Editor.cxx:2024
 TH1Editor.cxx:2025
 TH1Editor.cxx:2026
 TH1Editor.cxx:2027
 TH1Editor.cxx:2028
 TH1Editor.cxx:2029
 TH1Editor.cxx:2030
 TH1Editor.cxx:2031
 TH1Editor.cxx:2032
 TH1Editor.cxx:2033
 TH1Editor.cxx:2034
 TH1Editor.cxx:2035
 TH1Editor.cxx:2036
 TH1Editor.cxx:2037
 TH1Editor.cxx:2038
 TH1Editor.cxx:2039
 TH1Editor.cxx:2040
 TH1Editor.cxx:2041
 TH1Editor.cxx:2042
 TH1Editor.cxx:2043
 TH1Editor.cxx:2044
 TH1Editor.cxx:2045
 TH1Editor.cxx:2046
 TH1Editor.cxx:2047
 TH1Editor.cxx:2048
 TH1Editor.cxx:2049
 TH1Editor.cxx:2050
 TH1Editor.cxx:2051
 TH1Editor.cxx:2052
 TH1Editor.cxx:2053
 TH1Editor.cxx:2054
 TH1Editor.cxx:2055
 TH1Editor.cxx:2056
 TH1Editor.cxx:2057
 TH1Editor.cxx:2058
 TH1Editor.cxx:2059
 TH1Editor.cxx:2060
 TH1Editor.cxx:2061
 TH1Editor.cxx:2062
 TH1Editor.cxx:2063
 TH1Editor.cxx:2064
 TH1Editor.cxx:2065
 TH1Editor.cxx:2066
 TH1Editor.cxx:2067
 TH1Editor.cxx:2068
 TH1Editor.cxx:2069
 TH1Editor.cxx:2070
 TH1Editor.cxx:2071
 TH1Editor.cxx:2072
 TH1Editor.cxx:2073
 TH1Editor.cxx:2074
 TH1Editor.cxx:2075
 TH1Editor.cxx:2076
 TH1Editor.cxx:2077
 TH1Editor.cxx:2078
 TH1Editor.cxx:2079
 TH1Editor.cxx:2080
 TH1Editor.cxx:2081
 TH1Editor.cxx:2082
 TH1Editor.cxx:2083
 TH1Editor.cxx:2084
 TH1Editor.cxx:2085
 TH1Editor.cxx:2086
 TH1Editor.cxx:2087
 TH1Editor.cxx:2088
 TH1Editor.cxx:2089
 TH1Editor.cxx:2090
 TH1Editor.cxx:2091
 TH1Editor.cxx:2092
 TH1Editor.cxx:2093
 TH1Editor.cxx:2094
 TH1Editor.cxx:2095
 TH1Editor.cxx:2096
 TH1Editor.cxx:2097
 TH1Editor.cxx:2098
 TH1Editor.cxx:2099
 TH1Editor.cxx:2100
 TH1Editor.cxx:2101
 TH1Editor.cxx:2102
 TH1Editor.cxx:2103
 TH1Editor.cxx:2104
 TH1Editor.cxx:2105
 TH1Editor.cxx:2106
 TH1Editor.cxx:2107
 TH1Editor.cxx:2108
 TH1Editor.cxx:2109
 TH1Editor.cxx:2110
 TH1Editor.cxx:2111
 TH1Editor.cxx:2112
 TH1Editor.cxx:2113
 TH1Editor.cxx:2114
 TH1Editor.cxx:2115
 TH1Editor.cxx:2116
 TH1Editor.cxx:2117
 TH1Editor.cxx:2118
 TH1Editor.cxx:2119
 TH1Editor.cxx:2120
 TH1Editor.cxx:2121
 TH1Editor.cxx:2122
 TH1Editor.cxx:2123
 TH1Editor.cxx:2124
 TH1Editor.cxx:2125
 TH1Editor.cxx:2126
 TH1Editor.cxx:2127
 TH1Editor.cxx:2128
 TH1Editor.cxx:2129
 TH1Editor.cxx:2130
 TH1Editor.cxx:2131
 TH1Editor.cxx:2132
 TH1Editor.cxx:2133
 TH1Editor.cxx:2134
 TH1Editor.cxx:2135
 TH1Editor.cxx:2136
 TH1Editor.cxx:2137
 TH1Editor.cxx:2138
 TH1Editor.cxx:2139
 TH1Editor.cxx:2140
 TH1Editor.cxx:2141
 TH1Editor.cxx:2142
 TH1Editor.cxx:2143
 TH1Editor.cxx:2144
 TH1Editor.cxx:2145
 TH1Editor.cxx:2146
 TH1Editor.cxx:2147
 TH1Editor.cxx:2148
 TH1Editor.cxx:2149
 TH1Editor.cxx:2150
 TH1Editor.cxx:2151
 TH1Editor.cxx:2152
 TH1Editor.cxx:2153
 TH1Editor.cxx:2154
 TH1Editor.cxx:2155
 TH1Editor.cxx:2156
 TH1Editor.cxx:2157
 TH1Editor.cxx:2158
 TH1Editor.cxx:2159
 TH1Editor.cxx:2160
 TH1Editor.cxx:2161
 TH1Editor.cxx:2162
 TH1Editor.cxx:2163
 TH1Editor.cxx:2164
 TH1Editor.cxx:2165
 TH1Editor.cxx:2166
 TH1Editor.cxx:2167
 TH1Editor.cxx:2168
 TH1Editor.cxx:2169
 TH1Editor.cxx:2170
 TH1Editor.cxx:2171
 TH1Editor.cxx:2172
 TH1Editor.cxx:2173
 TH1Editor.cxx:2174
 TH1Editor.cxx:2175
 TH1Editor.cxx:2176
 TH1Editor.cxx:2177
 TH1Editor.cxx:2178
 TH1Editor.cxx:2179
 TH1Editor.cxx:2180
 TH1Editor.cxx:2181
 TH1Editor.cxx:2182
 TH1Editor.cxx:2183
 TH1Editor.cxx:2184
 TH1Editor.cxx:2185
 TH1Editor.cxx:2186
 TH1Editor.cxx:2187
 TH1Editor.cxx:2188
 TH1Editor.cxx:2189
 TH1Editor.cxx:2190
 TH1Editor.cxx:2191
 TH1Editor.cxx:2192
 TH1Editor.cxx:2193
 TH1Editor.cxx:2194
 TH1Editor.cxx:2195
 TH1Editor.cxx:2196
 TH1Editor.cxx:2197
 TH1Editor.cxx:2198
 TH1Editor.cxx:2199
 TH1Editor.cxx:2200
 TH1Editor.cxx:2201
 TH1Editor.cxx:2202
 TH1Editor.cxx:2203
 TH1Editor.cxx:2204
 TH1Editor.cxx:2205
 TH1Editor.cxx:2206
 TH1Editor.cxx:2207
 TH1Editor.cxx:2208
 TH1Editor.cxx:2209
 TH1Editor.cxx:2210
 TH1Editor.cxx:2211
 TH1Editor.cxx:2212
 TH1Editor.cxx:2213
 TH1Editor.cxx:2214
 TH1Editor.cxx:2215
 TH1Editor.cxx:2216
 TH1Editor.cxx:2217
 TH1Editor.cxx:2218
 TH1Editor.cxx:2219
 TH1Editor.cxx:2220
 TH1Editor.cxx:2221
 TH1Editor.cxx:2222
 TH1Editor.cxx:2223
 TH1Editor.cxx:2224
 TH1Editor.cxx:2225
 TH1Editor.cxx:2226
 TH1Editor.cxx:2227
 TH1Editor.cxx:2228
 TH1Editor.cxx:2229
 TH1Editor.cxx:2230
 TH1Editor.cxx:2231
 TH1Editor.cxx:2232
 TH1Editor.cxx:2233
 TH1Editor.cxx:2234
 TH1Editor.cxx:2235
 TH1Editor.cxx:2236
 TH1Editor.cxx:2237
 TH1Editor.cxx:2238
 TH1Editor.cxx:2239
 TH1Editor.cxx:2240
 TH1Editor.cxx:2241
 TH1Editor.cxx:2242
 TH1Editor.cxx:2243
 TH1Editor.cxx:2244
 TH1Editor.cxx:2245
 TH1Editor.cxx:2246
 TH1Editor.cxx:2247
 TH1Editor.cxx:2248
 TH1Editor.cxx:2249
 TH1Editor.cxx:2250
 TH1Editor.cxx:2251
 TH1Editor.cxx:2252
 TH1Editor.cxx:2253
 TH1Editor.cxx:2254
 TH1Editor.cxx:2255
 TH1Editor.cxx:2256
 TH1Editor.cxx:2257
 TH1Editor.cxx:2258
 TH1Editor.cxx:2259
 TH1Editor.cxx:2260
 TH1Editor.cxx:2261
 TH1Editor.cxx:2262
 TH1Editor.cxx:2263
 TH1Editor.cxx:2264
 TH1Editor.cxx:2265
 TH1Editor.cxx:2266
 TH1Editor.cxx:2267
 TH1Editor.cxx:2268
 TH1Editor.cxx:2269
 TH1Editor.cxx:2270
 TH1Editor.cxx:2271
 TH1Editor.cxx:2272
 TH1Editor.cxx:2273
 TH1Editor.cxx:2274
 TH1Editor.cxx:2275
 TH1Editor.cxx:2276
 TH1Editor.cxx:2277
 TH1Editor.cxx:2278
 TH1Editor.cxx:2279
 TH1Editor.cxx:2280
 TH1Editor.cxx:2281
 TH1Editor.cxx:2282
 TH1Editor.cxx:2283
 TH1Editor.cxx:2284
 TH1Editor.cxx:2285
 TH1Editor.cxx:2286
 TH1Editor.cxx:2287
 TH1Editor.cxx:2288
 TH1Editor.cxx:2289
 TH1Editor.cxx:2290
 TH1Editor.cxx:2291
 TH1Editor.cxx:2292
 TH1Editor.cxx:2293
 TH1Editor.cxx:2294
 TH1Editor.cxx:2295
 TH1Editor.cxx:2296
 TH1Editor.cxx:2297
 TH1Editor.cxx:2298
 TH1Editor.cxx:2299
 TH1Editor.cxx:2300
 TH1Editor.cxx:2301
 TH1Editor.cxx:2302
 TH1Editor.cxx:2303
 TH1Editor.cxx:2304
 TH1Editor.cxx:2305
 TH1Editor.cxx:2306
 TH1Editor.cxx:2307
 TH1Editor.cxx:2308
 TH1Editor.cxx:2309
 TH1Editor.cxx:2310
 TH1Editor.cxx:2311
 TH1Editor.cxx:2312
 TH1Editor.cxx:2313
 TH1Editor.cxx:2314
 TH1Editor.cxx:2315
 TH1Editor.cxx:2316
 TH1Editor.cxx:2317
 TH1Editor.cxx:2318
 TH1Editor.cxx:2319
 TH1Editor.cxx:2320
 TH1Editor.cxx:2321
 TH1Editor.cxx:2322
 TH1Editor.cxx:2323
 TH1Editor.cxx:2324
 TH1Editor.cxx:2325
 TH1Editor.cxx:2326
 TH1Editor.cxx:2327
 TH1Editor.cxx:2328
 TH1Editor.cxx:2329
 TH1Editor.cxx:2330
 TH1Editor.cxx:2331
 TH1Editor.cxx:2332
 TH1Editor.cxx:2333
 TH1Editor.cxx:2334
 TH1Editor.cxx:2335
 TH1Editor.cxx:2336
 TH1Editor.cxx:2337
 TH1Editor.cxx:2338
 TH1Editor.cxx:2339
 TH1Editor.cxx:2340
 TH1Editor.cxx:2341
 TH1Editor.cxx:2342
 TH1Editor.cxx:2343
 TH1Editor.cxx:2344
 TH1Editor.cxx:2345
 TH1Editor.cxx:2346
 TH1Editor.cxx:2347
 TH1Editor.cxx:2348
 TH1Editor.cxx:2349
 TH1Editor.cxx:2350
 TH1Editor.cxx:2351
 TH1Editor.cxx:2352
 TH1Editor.cxx:2353
 TH1Editor.cxx:2354
 TH1Editor.cxx:2355
 TH1Editor.cxx:2356
 TH1Editor.cxx:2357
 TH1Editor.cxx:2358
 TH1Editor.cxx:2359
 TH1Editor.cxx:2360
 TH1Editor.cxx:2361
 TH1Editor.cxx:2362
 TH1Editor.cxx:2363
 TH1Editor.cxx:2364
 TH1Editor.cxx:2365
 TH1Editor.cxx:2366
 TH1Editor.cxx:2367
 TH1Editor.cxx:2368
 TH1Editor.cxx:2369
 TH1Editor.cxx:2370
 TH1Editor.cxx:2371
 TH1Editor.cxx:2372
 TH1Editor.cxx:2373
 TH1Editor.cxx:2374
 TH1Editor.cxx:2375
 TH1Editor.cxx:2376
 TH1Editor.cxx:2377
 TH1Editor.cxx:2378
 TH1Editor.cxx:2379
 TH1Editor.cxx:2380
 TH1Editor.cxx:2381
 TH1Editor.cxx:2382
 TH1Editor.cxx:2383
 TH1Editor.cxx:2384
 TH1Editor.cxx:2385
 TH1Editor.cxx:2386
 TH1Editor.cxx:2387
 TH1Editor.cxx:2388
 TH1Editor.cxx:2389
 TH1Editor.cxx:2390
 TH1Editor.cxx:2391
 TH1Editor.cxx:2392
 TH1Editor.cxx:2393
 TH1Editor.cxx:2394
 TH1Editor.cxx:2395
 TH1Editor.cxx:2396
 TH1Editor.cxx:2397
 TH1Editor.cxx:2398
 TH1Editor.cxx:2399
 TH1Editor.cxx:2400
 TH1Editor.cxx:2401
 TH1Editor.cxx:2402
 TH1Editor.cxx:2403
 TH1Editor.cxx:2404
 TH1Editor.cxx:2405
 TH1Editor.cxx:2406