ROOT logo
// @(#)root/ged:$Id: TH2Editor.cxx 20882 2007-11-19 11:31:26Z rdm $
// Author: Carsten Hof   09/08/04
// Authors mail: Carsten_Hof@web.de

/*************************************************************************
 * 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.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TH2Editor                                                           //
//  Editor for changing TH2 histogram attributes, rebinning & fitting.  //
//  For all possible draw options (there are a few which are not imple- //
//  mentable in a graphical user interface) see THistPainter::Paint in  //
//  root/histpainter/THistPainter.cxx                                   //
//
//Begin_Html
/*
<img src="gif/TH2Editor_1.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/TH2Editor_2.gif">
*/
//End_Html
//  These changes can be made via the TH2Editor:                        //
//    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:                                                          //
//      'Contour' : ComboBox: draw a contour plot (None, Cont0..4)      //
//      'Cont #'  : TGNumberEntry: set the number of Contours           //
//    2d Plot checkboxes:                                               //
//      'Arrow'   : arrow mode. Shows gradient between adjacent cells   //
//      'Col'     : a box is drawn for each cell with a color scale     //
//                  varying with contents                               //
//      'Text'    : Draw bin contents as text                           // 
//      'Box'     : a box is drawn for each cell with surface           //
//                  proportional to contents                            //
//      'Scat'    : Draw a scatter-plot (default)                       //
//      'Palette' : the color palette is drawn                          //
//                                                                      //
//    3d Plot:                                                          //
//      'Type'    : ComboBox: set histogram type Lego or Surface-Plot   //
//                  draw(Lego, Lego1.2, Surf, Surf1..5)                 //
//                  see THistPainter::Paint                             //
//      'Coords'  : ComboBox: set the coordinate system (Cartesian, ..  //
//                  Spheric) see THistPainter::Paint                    //
//      'Cont #'  : TGNumberEntry: set the number of Contours (for e.g. //
//                  Lego2 drawoption                                    //
//    3d Plot checkboxes:                                               //
//      'Errors'  : draw errors in a cartesian lego plot                //
//      'Palette' : the color palette is drawn                          //
//      'Front'   : draw the front box of a cartesian lego plot         //
//      'Back'    : draw the back box of a cartesian lego plot          //
//    Available for a 3D lego plot:                                     //
//      'Bar'     : change the bar attributes                           //
//            'W' : change Bar Width                                    //
//            'O' : change Bar Offset                                   //
//   Further Editor:                                                    //
//      'Marker'   : change the Marker attributes (color, appearance,   //
//                   thickness) see TAttMarkerEditor                    //
//                                                                      //
//Begin_Html
/*
<img src="gif/TH2Editor1_1.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/TH2Editor1_2.gif">
*/
//End_Html
//                                                                      //
//   Rebinning Tab:                                                     //
//      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 for example:                           //
//         TFile f("hsimple.root");                                     //
//         hpxpy->Draw("Lego2");              // non ntuple histogram   //
//         ntuple->Draw("px:py","","Lego2");  // ntuple histogram       //
//    Non ntuple histogram:                                             //
//       'Rebin': with the Sliders (one for the x, one for the y axis)  //
//                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 sliders 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 be 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.                                       //
//////////////////////////////////////////////////////////////////////////


#include "TH2Editor.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 "TG3DLine.h"
#include "TGDoubleSlider.h"
#include "TGSlider.h"
#include "TView.h"
#include "TCanvas.h"
#include "TGedPatternSelect.h"
#include "TGColorSelect.h"
#include "TColor.h"
#include "TTreePlayer.h"
#include "TSelectorDraw.h"
#include "TGTab.h"
#include "TGMsgBox.h"
#include "TH2.h"


ClassImp(TH2Editor)

enum ETH2Wid {
   kTH2_TITLE, 
   kDIM_SIMPLE, kDIM_COMPLEX, kHIST_TYPE,
   kTYPE_LEGO,  kTYPE_LEGO1,  kTYPE_LEGO2, 
   kTYPE_SURF,  kTYPE_SURF1,  kTYPE_SURF2, kTYPE_SURF3, kTYPE_SURF4, kTYPE_SURF5,
   kCOORD_TYPE, kCOORDS_CAR,  kCOORDS_CYL, kCOORDS_POL, kCOORDS_PSR, kCOORDS_SPH,
   kCONT_TYPE,  kERROR_ONOFF, kPALETTE_ONOFF, kPALETTE_ONOFF1, 
   kARROW_ONOFF,kBOX_ONOFF,   kSCAT_ONOFF, kCOL_ONOFF, kTEXT_ONOFF,
   kFRONTBOX_ONOFF, kBACKBOX_ONOFF,
   kBAR_WIDTH,   kBAR_OFFSET, 
   kCONT_NONE,   kCONT_0, kCONT_1, kCONT_2, kCONT_3, kCONT_4, 
   kCONT_LEVELS, kCONT_LEVELS1,
   kSLIDERX_MIN, kSLIDERX_MAX, kSLIDERY_MIN, kSLIDERY_MAX,
   kDELAYED_DRAWING, kCOLOR,  kPATTERN,
   kBINXSLIDER, kBINYSLIDER, kBINXSLIDER1, kBINYSLIDER1, 
   kXBINOFFSET, kYBINOFFSET
};

//______________________________________________________________________________
TH2Editor::TH2Editor(const TGWindow *p, Int_t width,
                     Int_t height, UInt_t options, Pixel_t back)
   : TGedFrame(p, width, height, options | kVerticalFrame, back),
     fHist(0),
     fBin(0),
     fBinHist(0)
{
   // Constructor of histogram attribute GUI.

   MakeTitle("Title");

   // Histogram title  
   fTitlePrec = 2;
   fTitle = new TGTextEntry(this, new TGTextBuffer(50), kTH2_TITLE);
   fTitle->Resize(135, fTitle->GetDefaultHeight());
   fTitle->SetToolTipText("Enter the histogram title string");
   AddFrame(fTitle, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));
   

   // 2D or 3D Plot?
   TGCompositeFrame *f2 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   fDimGroup = new TGHButtonGroup(f2,"Plot");
   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, 5));

   // 2D Plot drawoptions
   f6 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   AddFrame(f6, new TGLayoutHints(kLHintsTop, 3, 1, 4, 2));

   TGCompositeFrame *f7 = new TGCompositeFrame(f6, 40, 20);
   f6->AddFrame(f7, new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));

   TGLabel *fAddLabel = new TGLabel(f7, "Contour:"); 
   f7->AddFrame(fAddLabel, new TGLayoutHints(kLHintsLeft, 6, 4, 4, 4));

   fColContLbl = new TGLabel(f7, "Cont #:");  
   f7->AddFrame(fColContLbl, new TGLayoutHints( kLHintsLeft, 6, 4, 4, 4));                            

   fAddArr = new TGCheckButton(f7, "Arrow", kARROW_ONOFF);
   fAddArr ->SetToolTipText("Shows gradient between adjacent cells");
   f7->AddFrame(fAddArr, new TGLayoutHints(kLHintsLeft, 6, 1, 2, 0));

   fAddCol = new TGCheckButton(f7, "Col", kCOL_ONOFF);
   fAddCol ->SetToolTipText("A box is drawn for each cell with a color scale varying with contents");
   f7->AddFrame(fAddCol, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));

   fAddText = new TGCheckButton(f7, "Text", kTEXT_ONOFF);
   fAddText ->SetToolTipText("Draw bin contents as text");
   f7->AddFrame(fAddText, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 3));

   TGCompositeFrame *f8 = new TGCompositeFrame(f6, 40, 20, kVerticalFrame);
   f6->AddFrame(f8, new TGLayoutHints(kLHintsLeft, 5, 1, 0, 0));   

   fContCombo = BuildHistContComboBox(f8, kCONT_TYPE);
   f8->AddFrame(fContCombo, new TGLayoutHints(kLHintsLeft, 6, 1, 2, 1));
   fContCombo->Resize(61, 20);
   fContCombo->Associate(this);

   fContLevels = new TGNumberEntry(f8, 20, 0, kCONT_LEVELS, 
                                   TGNumberFormat::kNESInteger,
                                   TGNumberFormat::kNEANonNegative, 
                                   TGNumberFormat::kNELLimitMinMax, 1, 99);
   f8->AddFrame(fContLevels, new TGLayoutHints(kLHintsLeft, 6, 1, 3, 1));
   fContLevels->GetNumberEntry()->SetToolTipText("Set number of contours (1..99)");
   fContLevels->Resize(60,20);

   fAddBox = new TGCheckButton(f8, "Box", kBOX_ONOFF);
   fAddBox ->SetToolTipText("A box is drawn for each cell with surface proportional to contents");
   f8->AddFrame(fAddBox, new TGLayoutHints(kLHintsLeft, 6, 1, 3, 0));

   fAddScat = new TGCheckButton(f8, "Scat", kSCAT_ONOFF);
   fAddScat ->SetToolTipText("Draw a scatter-plot");
   f8->AddFrame(fAddScat, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));

   fAddPalette = new TGCheckButton(f8, "Palette", kPALETTE_ONOFF);
   fAddPalette ->SetToolTipText("Add color palette beside the histogram");
   f8->AddFrame(fAddPalette, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
   
   f9 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame); 
   AddFrame(f9, new TGLayoutHints(kLHintsTop, 3, 1, 2, 0));

   TGCompositeFrame *f10 = new TGCompositeFrame(f9, 40, 20);
   f9->AddFrame(f10, new TGLayoutHints(kLHintsLeft, 0, 0, 3, 0));

   TGLabel *fType = new TGLabel(f10, "Type:"); 
   f10->AddFrame(fType, new TGLayoutHints(kLHintsNormal, 1, 1, 1, 1));

   TGLabel *fCoords = new TGLabel(f10, "Coords:"); 
   f10->AddFrame(fCoords, new TGLayoutHints(kLHintsLeft, 1, 1, 5, 1));

   fColContLbl1 = new TGLabel(f10, "Cont #:");  
   f10->AddFrame(fColContLbl1, new TGLayoutHints( kLHintsLeft, 1, 1, 5, 3));                            

   fAddFB = new TGCheckButton(f10, "Front", kFRONTBOX_ONOFF);
   fAddFB ->SetToolTipText("Supress the drawing of the front box");
   f10->AddFrame(fAddFB, new TGLayoutHints(kLHintsLeft, 0, 1, 6, 0));
   fAddBB = new TGCheckButton(f10, "Back", kBACKBOX_ONOFF);
   fAddBB ->SetToolTipText("Supress the drawing of the back box");
   f10->AddFrame(fAddBB, new TGLayoutHints(kLHintsLeft, 0, 1, 3, 0));

   TGCompositeFrame *f11 = new TGCompositeFrame(f9, 40, 20);
   f9->AddFrame(f11, new TGLayoutHints(kLHintsLeft, 5, 1, 0, 0));   

   fTypeCombo = BuildHistTypeComboBox(f11, kHIST_TYPE);
   f11->AddFrame(fTypeCombo, new TGLayoutHints(kLHintsLeft, 0, 1, 2, 1));
   fTypeCombo->Resize(80, 20);
   fTypeCombo->Associate(this);
   
   fCoordsCombo = BuildHistCoordsComboBox(f11, kCOORD_TYPE);
   f11->AddFrame(fCoordsCombo, new TGLayoutHints(kLHintsLeft, 0, 1, 2, 1));
   fCoordsCombo->Resize(80, 20);
   fCoordsCombo->Associate(this);

   fContLevels1 = new TGNumberEntry(f11, 20, 0, kCONT_LEVELS1, 
                                    TGNumberFormat::kNESInteger,
                                    TGNumberFormat::kNEANonNegative, 
                                    TGNumberFormat::kNELLimitMinMax, 1, 99);
   fContLevels1->GetNumberEntry()->SetToolTipText("Set number of contours (1..99)");
   fContLevels1->Resize(78,20);
   f11->AddFrame(fContLevels1, new TGLayoutHints(kLHintsLeft, 0, 1, 2, 1));

   fAddError = new TGCheckButton(f11, "Errors", kERROR_ONOFF);
   fAddError ->SetToolTipText("Add color palette beside the histogram");
   f11->AddFrame(fAddError, new TGLayoutHints(kLHintsLeft, 0, 1, 4, 0));
   fAddPalette1 = new TGCheckButton(f11, "Palette", kPALETTE_ONOFF1);
   fAddPalette1 ->SetToolTipText("Add color palette beside the histogram");
   f11->AddFrame(fAddPalette1, new TGLayoutHints(kLHintsLeft, 0, 1, 3, 0));

   
   // Bin bar settings
   f12 = new TGCompositeFrame(this, 145, 10, kHorizontalFrame | 
                                             kLHintsExpandX   | 
                                             kFixedWidth      | 
                                             kOwnBackground);
   f12->AddFrame(new TGLabel(f12,"Bar"), 
                 new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f12->AddFrame(new TGHorizontal3DLine(f12), 
                 new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   AddFrame(f12, new TGLayoutHints(kLHintsTop,0,0,6,4));
        
   f13 = new TGCompositeFrame(this, 80, 20, kHorizontalFrame);
   TGLabel *fWidthLbl = new TGLabel(f13, "W:");                              
   f13->AddFrame(fWidthLbl, new TGLayoutHints( kLHintsLeft, 1, 3, 4, 1));
   fBarWidth = new TGNumberEntry(f13, 1.00, 6, kBAR_WIDTH, 
                                 TGNumberFormat::kNESRealTwo,
                                 TGNumberFormat::kNEANonNegative, 
                                 TGNumberFormat::kNELLimitMinMax, 0.01, 1.);
   fBarWidth->GetNumberEntry()->SetToolTipText("Set bar chart width");
   fBarWidth->Resize(45,20);
   f13->AddFrame(fBarWidth, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 1));

   TGLabel *fOffsetLbl = new TGLabel(f13, "O:");                              
   f13->AddFrame(fOffsetLbl, new TGLayoutHints(kLHintsLeft, 6,3, 4, 1));
   fBarOffset = new TGNumberEntry(f13, 0.00, 5, kBAR_OFFSET, 
                                  TGNumberFormat::kNESRealTwo,
                                  TGNumberFormat::kNEAAnyNumber, 
                                  TGNumberFormat::kNELLimitMinMax, -1., 1.);
   fBarOffset->GetNumberEntry()->SetToolTipText("Set bar chart offset");
   fBarOffset->Resize(50,20);
   f13->AddFrame(fBarOffset, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 1));
   AddFrame(f13, new TGLayoutHints(kLHintsTop, 1, 1, 0, 4));


   // Set the color and pattern of the Frame (only for Cartesian 3D plot).
   f38 = new TGCompositeFrame(this, 80, 20, kVerticalFrame);
   TGCompositeFrame *f39 = new TGCompositeFrame(f38, 145, 10, kHorizontalFrame |
                                                              kLHintsExpandX   | 
                                                              kFixedWidth      | 
                                                              kOwnBackground);
   f39->AddFrame(new TGLabel(f39,"Frame Fill"), 
                 new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f39->AddFrame(new TGHorizontal3DLine(f39), 
                 new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   f38->AddFrame(f39, new TGLayoutHints(kLHintsTop,0,0,6,1));
   
   TGCompositeFrame *f21 = new TGCompositeFrame(f38, 80, 20, kHorizontalFrame);
   fFrameColor = new TGColorSelect(f21, 0, kCOLOR);
   f21->AddFrame(fFrameColor, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 0));
   fFrameColor->Associate(f38);
   fFramePattern = new TGedPatternSelect(f21, 1, kPATTERN);
   f21->AddFrame(fFramePattern, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 0));
   fFramePattern->Associate(f38);
   f38->AddFrame(f21, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
   AddFrame(f38, new TGLayoutHints(kLHintsTop));
   
   fCutString = "";

   CreateBinTab();
}

//______________________________________________________________________________
void TH2Editor::CreateBinTab()
{
   // Create the Binning tab.
   fBin = CreateEditorTabSubFrame("Binning");
   
   // Editor for rebinning a histogram which does NOT derive from an Ntuple
   fBinXCont = new TGCompositeFrame(fBin, 80, 20, kVerticalFrame);
   TGCompositeFrame *title1 = new TGCompositeFrame(fBinXCont, 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));
   fBinXCont->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));

   TGCompositeFrame *f22 = new TGCompositeFrame(fBinXCont, 80, 20, 
                                                           kHorizontalFrame);
   TGLabel *binSliderXLbl = new TGLabel(f22,"x:");
   f22->AddFrame(binSliderXLbl, 
                 new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 4,0, 4, 1));    
   fBinXSlider  = new TGHSlider(f22, 100, kSlider1 | kScaleBoth);
   fBinXSlider->Resize(107,20); 
   f22->AddFrame(fBinXSlider, new TGLayoutHints(kLHintsLeft, 2,0,0,3));
   fBinXCont->AddFrame(f22, new TGLayoutHints(kLHintsTop, 3, 7, 3, 5));
   
   TGCompositeFrame *f23 = new TGCompositeFrame(fBinXCont, 80, 20, 
                                                kHorizontalFrame);
   TGLabel *binXLabel1 = new TGLabel(f23, "# of Bins:");
   f23->AddFrame(binXLabel1, new TGLayoutHints(kLHintsLeft, 20, 1, 2, 1));
   fBinXNumberEntry = new TGNumberEntryField(f23, kBINXSLIDER, 0.0,  
                                             TGNumberFormat::kNESInteger);
   ((TGTextEntry*)fBinXNumberEntry)->SetToolTipText("Set the number of x axis bins in the rebinned histogram");
   fBinXNumberEntry->Resize(57,20);
   f23->AddFrame(fBinXNumberEntry, new TGLayoutHints(kLHintsRight, 8, 0, 0, 0));
   fBinXCont->AddFrame(f23, new TGLayoutHints(kLHintsTop, 0, 7, 3, 4));

   TGCompositeFrame *f37 = new TGCompositeFrame(fBinXCont, 80, 20, 
                                                           kHorizontalFrame);
   TGLabel *binSliderYLbl = new TGLabel(f37,"y:");
   f37->AddFrame(binSliderYLbl, 
                 new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 4,0, 4, 1));    
   fBinYSlider  = new TGHSlider(f37, 100, kSlider1 | kScaleBoth);
   fBinYSlider->Resize(107,20); 
   f37->AddFrame(fBinYSlider, new TGLayoutHints(kLHintsLeft, 1,0,0,3));
   fBinXCont->AddFrame(f37, new TGLayoutHints(kLHintsTop, 3, 7, 3, 5));

   TGCompositeFrame *f36 = new TGCompositeFrame(fBinXCont, 80, 20, 
                                                           kHorizontalFrame);
   TGLabel *binYLabel1 = new TGLabel(f36, "# of Bins:");
   f36->AddFrame(binYLabel1, new TGLayoutHints(kLHintsLeft, 20, 1, 2, 1));
   fBinYNumberEntry = new TGNumberEntryField(f36, kBINYSLIDER, 0.0,  
                                             TGNumberFormat::kNESInteger);
   ((TGTextEntry*)fBinYNumberEntry)->SetToolTipText("Set the number of y axis bins in the rebinned histogram");
   fBinYNumberEntry->Resize(57,20);
   f36->AddFrame(fBinYNumberEntry, new TGLayoutHints(kLHintsRight, 8, 0, 0, 0));
   fBinXCont->AddFrame(f36, new TGLayoutHints(kLHintsTop, 0, 7, 3, 4));

   // Text buttons Apply & Ignore for rebinned histogram shown on the screen.
   TGCompositeFrame *f24 = new TGCompositeFrame(fBinXCont, 118, 20, 
                                                           kHorizontalFrame | 
                                                           kFixedWidth);
   fApply = new TGTextButton(f24, " &Apply ");
   f24->AddFrame(fApply, 
                 new TGLayoutHints(kLHintsExpandX | kLHintsLeft ,0, 3, 4, 4)); 
   fCancel = new TGTextButton(f24, " &Ignore ");
   f24->AddFrame(fCancel, 
                 new TGLayoutHints(kLHintsExpandX | kLHintsLeft, 3, 0, 4, 4));
   fBinXCont->AddFrame(f24, new TGLayoutHints(kLHintsTop, 20, 3, 3, 4));
   fBin->AddFrame(fBinXCont,new TGLayoutHints(kLHintsTop)); 
   
   // Widgets for rebinning a histogram which derives from an Ntuple

   fBinXCont1 = new TGCompositeFrame(fBin, 80, 20, kVerticalFrame);   
   TGCompositeFrame *title2 = new TGCompositeFrame(fBinXCont1, 145, 10, 
                                                               kHorizontalFrame | 
                                                               kLHintsExpandX   | 
                                                               kFixedWidth      | 
                                                               kOwnBackground);
   title2->AddFrame(new TGLabel(title2, "X-Axis"), 
                    new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   title2->AddFrame(new TGHorizontal3DLine(title2), 
                    new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   fBinXCont1->AddFrame(title2, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));

   TGCompositeFrame *f26 = new TGCompositeFrame(fBinXCont1, 80, 20, 
                                                            kHorizontalFrame);
   fBinXSlider1  = new TGHSlider(f26, 100, kSlider1 | kScaleBoth);
   fBinXSlider1->Resize(120,20); 
   fBinXSlider1->SetRange(1,9);
   fBinXSlider1->SetScale(14);
   fBinXSlider1->SetPosition(5);
   f26->AddFrame(fBinXSlider1, new TGLayoutHints(kLHintsLeft, 2,0,0,0));
   fBinXCont1->AddFrame(f26, new TGLayoutHints(kLHintsTop, 3, 7, 3, 0));

   // Lettering of the Rebin Slider
   TGCompositeFrame *f27 = new TGCompositeFrame(fBinXCont1, 80, 20, 
                                                            kHorizontalFrame);   
   TGLabel *l1 = new TGLabel(f27, "-5");
   f27->AddFrame(l1, new TGLayoutHints(kLHintsLeft, 5, 1, -1, 0));
   TGLabel *l2 = new TGLabel(f27, "-2");
   f27->AddFrame(l2, new TGLayoutHints(kLHintsLeft, 31, 2, -1, 0));
   TGLabel *l3 = new TGLabel(f27, "2");
   f27->AddFrame(l3, new TGLayoutHints(kLHintsLeft, 21, 2, -1, 0));
   TGLabel *l4 = new TGLabel(f27, "5");
   f27->AddFrame(l4, new TGLayoutHints(kLHintsLeft, 36, 3, -1, 0));
   fBinXCont1->AddFrame(f27, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
      
   TGCompositeFrame *f28 = new TGCompositeFrame(fBinXCont1, 140, 20, 
                                                            kHorizontalFrame);
   TGLabel *binXLabel2 = new TGLabel(f28, "# of Bins:");
   f28->AddFrame(binXLabel2, new TGLayoutHints(kLHintsLeft, 8, 1, 4, 1));

   fBinXNumberEntry1 = new TGNumberEntryField(f28, kBINXSLIDER1, 0.0,  
                                              TGNumberFormat::kNESInteger);
   ((TGTextEntry*)fBinXNumberEntry1)->SetToolTipText("Set the number of x axis bins in the rebinned histogram");
   fBinXNumberEntry1->Resize(57,20);
   f28->AddFrame(fBinXNumberEntry1, 
                 new TGLayoutHints(kLHintsLeft, 21, 0, 2, 0));
   fBinXCont1->AddFrame(f28, new TGLayoutHints(kLHintsTop, 0, 7, 2, 4));

   TGCompositeFrame *f29 = new TGCompositeFrame(fBinXCont1, 80, 20, 
                                                kHorizontalFrame);
   TGLabel *xOffsetLbl = new TGLabel(f29, "BinOffset:");
   f29->AddFrame(xOffsetLbl, new TGLayoutHints(kLHintsLeft, 7, 1, 2, 1));
   fXOffsetNumberEntry = new TGNumberEntryField(f29, kXBINOFFSET, 0.0,  
                                                TGNumberFormat::kNESRealFour,
                                                TGNumberFormat::kNEAAnyNumber,
                                                TGNumberFormat::kNELLimitMinMax,
                                                0., 1.);
   ((TGTextEntry*)fXOffsetNumberEntry)->SetToolTipText("Add an x-offset to the origin of the histogram");
   fXOffsetNumberEntry->Resize(57,20);
   f29->AddFrame(fXOffsetNumberEntry, 
                 new TGLayoutHints(kLHintsRight, 21, 0, 0, 0));
   fBinXCont1->AddFrame(f29, new TGLayoutHints(kLHintsTop, 0, 7, 3, 1));

   TGCompositeFrame *f30 = new TGCompositeFrame(fBinXCont1, 80, 20, 
                                                            kHorizontalFrame);
   fXBinOffsetSld  = new TGHSlider(f30, 100, kSlider1 | kScaleBoth);
   fXBinOffsetSld->Resize(120,20);
   f30->AddFrame(fXBinOffsetSld, new TGLayoutHints(kLHintsLeft, 2,0,0,0));
   fBinXCont1->AddFrame(f30, new TGLayoutHints(kLHintsTop, 3, 7, 3, 3));
   fBin->AddFrame(fBinXCont1, new TGLayoutHints(kLHintsTop));

   // Same for Y-Axis:
   // Widgets for rebinning a histogram which derives from an Ntuple 

   fBinYCont1 = new TGCompositeFrame(fBin, 80, 20, kVerticalFrame);   
   TGCompositeFrame *title3 = new TGCompositeFrame(fBinYCont1, 145, 10, 
                                                               kHorizontalFrame | 
                                                               kLHintsExpandX   | 
                                                               kFixedWidth      | 
                                                               kOwnBackground);
   title3->AddFrame(new TGLabel(title3, "Y-Axis"), 
                    new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   title3->AddFrame(new TGHorizontal3DLine(title3), 
                    new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   fBinYCont1->AddFrame(title3, new TGLayoutHints(kLHintsTop, 0, 0, 7, 0));

   TGCompositeFrame *f31 = new TGCompositeFrame(fBinYCont1, 80, 20, 
                                                            kHorizontalFrame);
   fBinYSlider1  = new TGHSlider(f31, 100, kSlider1 | kScaleBoth);
   fBinYSlider1->Resize(120,20); 
   fBinYSlider1->SetRange(1,9);
   fBinYSlider1->SetScale(14);
   fBinYSlider1->SetPosition(5);
   f31->AddFrame(fBinYSlider1, new TGLayoutHints(kLHintsLeft, 2,0,0,0));
   fBinYCont1->AddFrame(f31, new TGLayoutHints(kLHintsTop, 3, 7, 3, 0));

   //  Lettering of the Rebin Slider
   TGCompositeFrame *f32 = new TGCompositeFrame(fBinYCont1, 80, 20, 
                                                            kHorizontalFrame);   
   TGLabel *l5 = new TGLabel(f32, "-5");
   f32->AddFrame(l5, new TGLayoutHints(kLHintsLeft, 5, 1, -1, 0));
   TGLabel *l6 = new TGLabel(f32, "-2");
   f32->AddFrame(l6, new TGLayoutHints(kLHintsLeft, 31, 2, -1, 0));
   TGLabel *l7 = new TGLabel(f32, "2");
   f32->AddFrame(l7, new TGLayoutHints(kLHintsLeft, 21, 2, -1, 0));
   TGLabel *l8 = new TGLabel(f32, "5");
   f32->AddFrame(l8, new TGLayoutHints(kLHintsLeft, 36, 3, -1, 0));
   fBinYCont1->AddFrame(f32, new TGLayoutHints(kLHintsTop, 0, 0, 0, 0));
      
   TGCompositeFrame *f33 = new TGCompositeFrame(fBinYCont1, 140, 20, 
                                                            kHorizontalFrame);
   TGLabel *binYLabel2 = new TGLabel(f33, "# of Bins:");
   f33->AddFrame(binYLabel2, new TGLayoutHints(kLHintsLeft, 8, 1, 4, 1));

   fBinYNumberEntry1 = new TGNumberEntryField(f33, kBINYSLIDER1, 0.0,  
                                              TGNumberFormat::kNESInteger);
   ((TGTextEntry*)fBinYNumberEntry1)->SetToolTipText("Set the number of Y axis bins in the rebinned histogram");
   fBinYNumberEntry1->Resize(57,20);
   f33->AddFrame(fBinYNumberEntry1, 
                 new TGLayoutHints(kLHintsLeft, 21, 0, 2, 0));
   fBinYCont1->AddFrame(f33, new TGLayoutHints(kLHintsTop, 0, 7, 2, 4));

   TGCompositeFrame *f34 = new TGCompositeFrame(fBinYCont1, 80, 20, 
                                                            kHorizontalFrame);
   TGLabel *yOffsetLbl = new TGLabel(f34, "BinOffset:");
   f34->AddFrame(yOffsetLbl, new TGLayoutHints(kLHintsLeft, 7, 1, 2, 1));
   fYOffsetNumberEntry = new TGNumberEntryField(f34, kYBINOFFSET, 0.0,  
                                                TGNumberFormat::kNESRealFour,
                                                TGNumberFormat::kNEAAnyNumber,
                                                TGNumberFormat::kNELLimitMinMax,
                                                0., 1.);
   ((TGTextEntry*)fYOffsetNumberEntry)->SetToolTipText("Add an Y-offset to the origin of the histogram");
   fYOffsetNumberEntry->Resize(57,20);
   f34->AddFrame(fYOffsetNumberEntry, 
                 new TGLayoutHints(kLHintsRight, 21, 0, 0, 0));
   fBinYCont1->AddFrame(f34, new TGLayoutHints(kLHintsTop, 0, 7, 3, 1));

   TGCompositeFrame *f35 = new TGCompositeFrame(fBinYCont1, 80, 20, 
                                                            kHorizontalFrame);
   fYBinOffsetSld  = new TGHSlider(f35, 100, kSlider1 | kScaleBoth);
   fYBinOffsetSld->Resize(120,20); 
   fYBinOffsetSld->Associate(f35);
   f35->AddFrame(fYBinOffsetSld, new TGLayoutHints(kLHintsLeft, 2,0,0,0));
   fBinYCont1->AddFrame(f35, new TGLayoutHints(kLHintsTop, 3, 7, 3, 3));
   fBin->AddFrame(fBinYCont1, new TGLayoutHints(kLHintsTop));

   // Axis ranges
   TGCompositeFrame *title4 = new TGCompositeFrame(fBin, 145, 10, 
                                                         kHorizontalFrame | 
                                                         kLHintsExpandX   | 
                                                         kFixedWidth      | 
                                                         kOwnBackground);
   title4->AddFrame(new TGLabel(title4, "Axis Range"), 
                    new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   title4->AddFrame(new TGHorizontal3DLine(title4), 
                    new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   fBin->AddFrame(title4, new TGLayoutHints(kLHintsTop, 0, 0, 5, 0));
  
   TGCompositeFrame *f14 = new TGCompositeFrame(fBin, 80, 20, kHorizontalFrame);
   TGLabel *fSliderXLbl = new TGLabel(f14,"x:");
   f14->AddFrame(fSliderXLbl, 
                 new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 4,3, 2, 1)); 
   fSliderX = new TGDoubleHSlider(f14, 1, 2);
   fSliderX->Resize(119,20);
   f14->AddFrame(fSliderX, new TGLayoutHints(kLHintsLeft));
   fBin->AddFrame(f14, new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));

   TGCompositeFrame *f17 = new TGCompositeFrame(fBin, 80, 20, kHorizontalFrame);
   fSldXMin = new TGNumberEntryField(f17, kSLIDERX_MIN, 0.0,  
                                     TGNumberFormat::kNESRealTwo,
                                     TGNumberFormat::kNEAAnyNumber);
   ((TGTextEntry*)fSldXMin)->SetToolTipText("Set the minimum value of the x-axis");
   fSldXMin->Resize(57,20);
   f17->AddFrame(fSldXMin, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   fSldXMax = new TGNumberEntryField(f17, kSLIDERX_MAX, 0.0,  
                                     TGNumberFormat::kNESRealTwo,
                                     TGNumberFormat::kNEAAnyNumber);
   ((TGTextEntry*)fSldXMax)->SetToolTipText("Set the maximum value of the x-axis");
   fSldXMax->Resize(57,20);
   f17->AddFrame(fSldXMax, new TGLayoutHints(kLHintsLeft, 4, 0, 0, 0));
   fBin->AddFrame(f17, new TGLayoutHints(kLHintsTop, 20, 3, 5, 0));

   TGCompositeFrame *f15 = new TGCompositeFrame(fBin, 80, 20, kHorizontalFrame);
   TGLabel *fSliderYLbl = new TGLabel(f15,"y:");
   f15->AddFrame(fSliderYLbl, 
                 new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 4,2, 4, 1)); 
   fSliderY = new TGDoubleHSlider(f15, 1, 2);
   fSliderY->Resize(119,20);
   f15->AddFrame(fSliderY, new TGLayoutHints(kLHintsLeft));
   fBin->AddFrame(f15, new TGLayoutHints(kLHintsTop, 3, 7, 4, 1));

   TGCompositeFrame *f18 = new TGCompositeFrame(fBin, 80, 20, kHorizontalFrame);
   fSldYMin = new TGNumberEntryField(f18, kSLIDERY_MIN, 0.0,  
                                     TGNumberFormat::kNESRealTwo,
                                     TGNumberFormat::kNEAAnyNumber);
   ((TGTextEntry*)fSldYMin)->SetToolTipText("Set the minimum value of the y-axis");
   fSldYMin->Resize(57,20);
   f18->AddFrame(fSldYMin, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   fSldYMax = new TGNumberEntryField(f18, kSLIDERY_MAX, 0.0,  
                                     TGNumberFormat::kNESRealTwo,
                                     TGNumberFormat::kNEAAnyNumber);
   ((TGTextEntry*)fSldYMax)->SetToolTipText("Set the maximum value of the y-axis");
   fSldYMax->Resize(57,20);
   f18->AddFrame(fSldYMax, new TGLayoutHints(kLHintsLeft, 4, 0, 0, 0));
   fBin->AddFrame(f18, new TGLayoutHints(kLHintsTop, 20, 3, 5, 0));

   TGCompositeFrame *f20 = new TGCompositeFrame(fBin, 80, 20, kVerticalFrame); 
   fDelaydraw = new TGCheckButton(f20, "Delayed drawing", kDELAYED_DRAWING);
   fDelaydraw ->SetToolTipText("Draw the new axis range when the Slider is released");
   f20->AddFrame(fDelaydraw, new TGLayoutHints(kLHintsLeft, 6, 1, 1, 0));
   fBin->AddFrame(f20, new TGLayoutHints(kLHintsTop, 2, 1, 5, 3)); 
   
   fXBinOffsetSld->SetRange(0,100);
   fXBinOffsetSld->SetPosition(0);
   fXOffsetNumberEntry->SetNumber(0.0000);

   fYBinOffsetSld->SetRange(0,100);
   fYBinOffsetSld->SetPosition(0);
   fYOffsetNumberEntry->SetNumber(0.0000);
  
   fCancel->SetState(kButtonDisabled);  
   fApply->SetState(kButtonDisabled);

}

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

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

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

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

   fTitle->Connect("TextChanged(const char *)", "TH2Editor", this, "DoTitle(const char *)");
   fDimGroup->Connect("Clicked(Int_t)","TH2Editor",this,"DoHistView()");
   fTypeCombo->Connect("Selected(Int_t)", "TH2Editor", this, "DoHistChanges()");   
   fCoordsCombo->Connect("Selected(Int_t)", "TH2Editor", this, "DoHistChanges()");
   fContCombo->Connect("Selected(Int_t)", "TH2Editor", this, "DoHistChanges()");   
   fAddArr->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddArr(Bool_t)");
   fAddBox->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddBox(Bool_t)");
   fAddCol->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddCol(Bool_t)");
   fAddScat->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddScat(Bool_t)");
   fAddText->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddText(Bool_t)");
   fAddError->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddError(Bool_t)");
   fAddPalette->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddPalette(Bool_t)");
   fAddPalette1->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddPalette(Bool_t)");   
   fAddFB->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddFB()");
   fAddBB->Connect("Toggled(Bool_t)", "TH2Editor", this, "DoAddBB()");
   fContLevels->Connect("ValueSet(Long_t)", "TH2Editor", this, "DoContLevel()");
   (fContLevels->GetNumberEntry())->Connect("ReturnPressed()", "TH2Editor", 
                                             this,"DoContLevel()");   
   fContLevels1->Connect("ValueSet(Long_t)", "TH2Editor", this, "DoContLevel1()");
   (fContLevels1->GetNumberEntry())->Connect("ReturnPressed()", "TH2Editor", 
                                             this,"DoContLevel1()");   
   fBarWidth->Connect("ValueSet(Long_t)", "TH2Editor", this, "DoBarWidth()");
   (fBarWidth->GetNumberEntry())->Connect("ReturnPressed()", "TH2Editor", 
                                           this, "DoBarWidth()");   
   fBarOffset->Connect("ValueSet(Long_t)", "TH2Editor", this, "DoBarOffset()");
   (fBarOffset->GetNumberEntry())->Connect("ReturnPressed()", "TH2Editor", 
                                           this, "DoBarOffset()");
   fBinXSlider->Connect("PositionChanged(Int_t)","TH2Editor",this, "DoBinMoved()");  
   fBinXSlider->Connect("Released()","TH2Editor",this, "DoBinReleased()");  
   fBinXSlider->Connect("Pressed()","TH2Editor",this, "DoBinPressed()");     
   fBinYSlider->Connect("PositionChanged(Int_t)","TH2Editor",this, "DoBinMoved()");        
   fBinYSlider->Connect("Released()","TH2Editor",this, "DoBinReleased()"); 
   fBinYSlider->Connect("Pressed()","TH2Editor",this, "DoBinPressed()"); 
   fBinXNumberEntry->Connect("ReturnPressed()", "TH2Editor", this, "DoBinLabel()");
   fBinYNumberEntry->Connect("ReturnPressed()", "TH2Editor", this, "DoBinLabel()");             
   fApply->Connect("Clicked()", "TH2Editor", this, "DoApply()");   
   fCancel->Connect("Pressed()", "TH2Editor", this, "DoCancel()");   
   fBinXSlider1->Connect("Released()","TH2Editor",this, "DoBinReleased1()");  
   fBinXSlider1->Connect("PositionChanged(Int_t)","TH2Editor",this, "DoBinMoved1()");     
   fBinXNumberEntry1->Connect("ReturnPressed()", "TH2Editor", this, "DoBinLabel1()");
   fXBinOffsetSld->Connect("PositionChanged(Int_t)","TH2Editor",this, "DoOffsetMoved()");
   fXBinOffsetSld->Connect("Released()","TH2Editor",this, "DoOffsetReleased()");   
   fXBinOffsetSld->Connect("Pressed()","TH2Editor",this, "DoOffsetPressed()");      
   fXOffsetNumberEntry->Connect("ReturnPressed()", "TH2Editor", this, "DoBinOffset()");
   fBinYSlider1->Connect("Released()","TH2Editor",this, "DoBinReleased1()");  
   fBinYSlider1->Connect("PositionChanged(Int_t)","TH2Editor",this, "DoBinMoved1()");     
   fBinYNumberEntry1->Connect("ReturnPressed()", "TH2Editor", this, "DoBinLabel1()");
   fYBinOffsetSld->Connect("PositionChanged(Int_t)","TH2Editor",this,"DoOffsetMoved()");
   fYBinOffsetSld->Connect("Released()","TH2Editor",this, "DoOffsetReleased()");      
   fYBinOffsetSld->Connect("Pressed()","TH2Editor",this, "DoOffsetPressed()");         
   fYOffsetNumberEntry->Connect("ReturnPressed()", "TH2Editor", this,"DoBinOffset()");
   fSliderX->Connect("PositionChanged()","TH2Editor",this, "DoSliderXMoved()");  
   fSliderX->Connect("Pressed()","TH2Editor",this, "DoSliderXPressed()"); 
   fSliderX->Connect("Released()","TH2Editor",this, "DoSliderXReleased()");     
   fSldXMin->Connect("ReturnPressed()", "TH2Editor", this, "DoXAxisRange()");
   fSldXMax->Connect("ReturnPressed()", "TH2Editor", this, "DoXAxisRange()");   
   fSliderY->Connect("PositionChanged()","TH2Editor",this, "DoSliderYMoved()");  
   fSliderY->Connect("Pressed()","TH2Editor",this, "DoSliderYPressed()"); 
   fSliderY->Connect("Released()","TH2Editor",this, "DoSliderYReleased()");     
   fSldYMin->Connect("ReturnPressed()", "TH2Editor", this, "DoYAxisRange()");
   fSldYMax->Connect("ReturnPressed()", "TH2Editor", this, "DoYAxisRange()");   
   fFrameColor->Connect("ColorSelected(Pixel_t)", "TH2Editor", this, "DoFillColor(Pixel_t)");
   fFramePattern->Connect("PatternSelected(Style_t)", "TH2Editor", this, "DoFillPattern(Style_t)");

   fInit = kFALSE;
} 

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

   if (obj == 0 || !obj->InheritsFrom(TH2::Class()) || 
       (!strcmp(((TH2 *)obj)->GetName(),"htemp") && 
        ((TH2*)obj)->GetEntries() == 0)) {  // htemp is an empty histogram
      return kFALSE;                 
   }
   return kTRUE;
}

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

   fAvoidSignal = kTRUE;
   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(),
                     fBinHist->GetYaxis()->GetNbins(),
                     fBinHist->GetYaxis()->GetXmin(),
                     fBinHist->GetYaxis()->GetXmax());
      fHist->Add(fBinHist);
      delete fBinHist; 
      fBinHist = 0;
      if (fGedEditor->GetPad()) {
         fGedEditor->GetPad()->Modified(); 
         fGedEditor->GetPad()->Update();
      }
   }
  
   fHist = (TH2*) obj;

   const char *text = fHist->GetTitle();
   fTitle->SetText(text);
   TString str = GetDrawOption();
   fCutString = GetCutOptionString();
   str.ToUpper();
   
   if (str == "") {
      // default options = Scatter-Plot
      ShowFrame(f6);
      HideFrame(f9);
      HideFrame(f12);
      HideFrame(f13);          
      HideFrame(f38);
      fDimGroup->SetButton(kDIM_SIMPLE, kTRUE);  
      fDimGroup->SetButton(kDIM_COMPLEX, kFALSE);        
      if (fTypeCombo->GetSelected()==-1) fTypeCombo->Select(kTYPE_LEGO);
      if (fCoordsCombo->GetSelected()==-1) fCoordsCombo->Select(kCOORDS_CAR);
      if (fContCombo->GetSelected()==-1) fContCombo->Select(kCONT_NONE);
      
      fAddArr->SetState(kButtonUp);
      fAddBox->SetState(kButtonUp);
      fAddCol->SetState(kButtonUp);
      fAddScat->SetState(kButtonDisabled);      
      fAddText->SetState(kButtonUp);
      fAddError->SetState(kButtonUp);
      fAddPalette->SetState(kButtonDisabled);
      fAddPalette1->SetState(kButtonUp);      
      fAddFB->SetState(kButtonDown);      
      fAddBB->SetState(kButtonDown);      
   } else if (!str.Contains("LEGO") && !str.Contains("SURF")) {
      ShowFrame(f6);
      HideFrame(f9);
      HideFrame(f12);
      HideFrame(f13);
      HideFrame(f38);
      fDimGroup->SetButton(kDIM_SIMPLE, kTRUE);  
      fDimGroup->SetButton(kDIM_COMPLEX, kFALSE);        
      if (fTypeCombo->GetSelected()==-1) fTypeCombo->Select(kTYPE_LEGO);
      if (fCoordsCombo->GetSelected()==-1) fCoordsCombo->Select(kCOORDS_CAR);
      if (str.Contains("CONT")){
         if (str.Contains("CONT1")) fContCombo->Select(kCONT_1);
         else if (str.Contains("CONT2")) fContCombo->Select(kCONT_2);
         else if (str.Contains("CONT3")) fContCombo->Select(kCONT_3);
         else if (str.Contains("CONT4")) fContCombo->Select(kCONT_4);
         else if (str.Contains("CONT0") || str.Contains("CONT")) 
            fContCombo->Select(kCONT_0);
      } else fContCombo->Select(kCONT_NONE);

      if (str.Contains("ARR")) fAddArr->SetState(kButtonDown);
      else fAddArr->SetState(kButtonUp);
      if (str.Contains("BOX")) fAddBox->SetState(kButtonDown);
      else fAddBox->SetState(kButtonUp);
      if (str.Contains("COL")) fAddCol->SetState(kButtonDown);
      else fAddCol->SetState(kButtonUp);
      if (str.Contains("SCAT")) {
         if (str=="SCAT") fAddScat->SetState(kButtonDisabled);
         else fAddScat->SetState(kButtonDown);
      } else fAddScat->SetState(kButtonUp);            
      if (str.Contains("TEXT")) fAddText->SetState(kButtonDown);
      else fAddText->SetState(kButtonUp);
 
      fAddError->SetState(kButtonUp);
      if (str.Contains("COL") || (str.Contains("CONT") && 
          !str.Contains("CONT2") && !str.Contains("CONT3"))) {
         if (str.Contains("Z")) fAddPalette->SetState(kButtonDown);
         else fAddPalette->SetState(kButtonUp);
      } else fAddPalette->SetState(kButtonDisabled);
      fAddPalette1->SetState(kButtonUp);
      fAddFB->SetState(kButtonDown);      
      fAddBB->SetState(kButtonDown);      

   } else if (str.Contains("LEGO") || str.Contains("SURF")) {
      HideFrame(f6);
      ShowFrame(f9);
      ShowFrame(f12);
      ShowFrame(f13);
      ShowFrame(f38);
      fDimGroup->SetButton(kDIM_COMPLEX, kTRUE);  
      fDimGroup->SetButton(kDIM_SIMPLE, kFALSE);        
      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
      
      if (fContCombo->GetSelected()==-1) fContCombo->Select(kCONT_NONE);
      fAddArr->SetState(kButtonUp);
      fAddBox->SetState(kButtonUp);
      fAddCol->SetState(kButtonUp);
      fAddScat->SetState(kButtonDisabled);      
      fAddText->SetState(kButtonUp);   
      
      if (fCoordsCombo->GetSelected()!=kCOORDS_CAR) {
         if (fAddFB->GetState()!=kButtonDisabled) 
            fAddFB->SetState(kButtonDisabled);
         if (fAddBB->GetState()!=kButtonDisabled) 
            fAddBB->SetState(kButtonDisabled);
         if (fAddError->GetState()!=kButtonDisabled) 
            fAddError->SetState(kButtonDisabled);
      } else {
         if (str.Contains("FB")) fAddFB->SetState(kButtonUp);      
         else fAddFB->SetState(kButtonDown);      
         if (str.Contains("BB")) fAddBB->SetState(kButtonUp);
         else fAddBB->SetState(kButtonDown);
         if (str.Contains("E")){
            TString dum = str;  
            if (str.Contains("LEGO")) 
               dum.Remove(strstr(dum.Data(),"LEGO")-dum.Data(),4);
            if (str.Contains("TEXT")) 
               dum.Remove(strstr(dum.Data(),"TEXT")-dum.Data(),4);
            if (dum.Contains("E")) fAddError->SetState(kButtonDown);
            else fAddError->SetState(kButtonUp);
         } else fAddError->SetState(kButtonUp);
      }
      if ((fTypeCombo->GetSelected()==kTYPE_LEGO) || 
          (fTypeCombo->GetSelected()==kTYPE_LEGO1)||
          (fTypeCombo->GetSelected()==kTYPE_SURF) ||
          (fTypeCombo->GetSelected()==kTYPE_SURF4)) 
         fAddPalette1->SetState(kButtonDisabled);
      else if (str.Contains("Z")) fAddPalette1->SetState(kButtonDown);
      else fAddPalette1->SetState(kButtonUp);
   }
   
   fBarWidth->SetNumber(fHist->GetBarWidth());
   fBarOffset->SetNumber(fHist->GetBarOffset());
   
   Int_t nx = fHist -> GetXaxis() -> GetNbins();
   Int_t nxbinmin = fHist -> GetXaxis() -> GetFirst();
   Int_t nxbinmax = fHist -> GetXaxis() -> GetLast();
   fSliderX->SetRange(1,nx);
   fSliderX->SetPosition((Double_t)nxbinmin,(Double_t)nxbinmax);
   fSldXMin->SetNumber(fHist->GetXaxis()->GetBinLowEdge(nxbinmin));
   fSldXMax->SetNumber(fHist->GetXaxis()->GetBinUpEdge(nxbinmax));
    
   Int_t ny = fHist -> GetYaxis() -> GetNbins();
   Int_t nybinmin = fHist -> GetYaxis() -> GetFirst();
   Int_t nybinmax = fHist -> GetYaxis() -> GetLast();
   fSliderY->SetRange(1,ny);
   fSliderY->SetPosition((Double_t)nybinmin,(Double_t)nybinmax);
   fSldYMin->SetNumber(fHist->GetYaxis()->GetBinLowEdge(nybinmin));
   fSldYMax->SetNumber(fHist->GetYaxis()->GetBinUpEdge(nybinmax));
   
   if (fDelaydraw->GetState()!=kButtonDown) fDelaydraw->SetState(kButtonUp);
   
   if (str.Contains("COL") || fContCombo->GetSelected()!= kCONT_NONE) 
      fColContLbl->Enable() ;
   else fColContLbl->Disable();
   
   if (str.Contains("LEGO2") || str.Contains("SURF1") || 
       str.Contains("SURF2") || str.Contains("SURF3") || 
       str.Contains("SURF5")) fColContLbl1->Enable();
   else fColContLbl1->Disable();

   fContLevels->SetIntNumber(fHist->GetContour());
   fContLevels1->SetIntNumber(fHist->GetContour());

   fFrameColor->SetColor(TColor::Number2Pixel(fGedEditor->GetPad()->GetFrameFillColor()));
   fFramePattern->SetPattern(fGedEditor->GetPad()->GetFrameFillStyle());

   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   
   if (!player || player->GetHistogram()!=fHist ) {
      Int_t n1 = 0, n2 =0;
      Int_t upx =0, upy =0; 
      if (fBinHist) n1 = fBinHist->GetXaxis()->GetNbins();
      else n1 = nx;
      if (fBinHist) n2 = fBinHist->GetYaxis()->GetNbins();
      else n2 = ny;
      fBin->HideFrame(fBinXCont1);
      fBin->ShowFrame(fBinXCont);
      fBin->HideFrame(fBinYCont1);
      Int_t* divx = Dividers(n1);      
      Int_t* divy = Dividers(n2);            
      if (divx[0]-1 <= 1) upx = 2;
      else upx = divx[0]-1;  
      fBinXSlider->SetRange(1,upx);
      if (divy[0]-1 <= 1) upy = 2;
      else upy = divy[0]-1;  
      fBinYSlider->SetRange(1,upy);
      Int_t i = 1; Int_t j = 1;
      if (fBinXSlider->GetMaxPosition()==2 && fBinXSlider->GetPosition()==2) 
         fBinXSlider->SetPosition(2);
      else { 
         while ( divx[i] != nx) i ++;
         fBinXSlider->SetPosition(divx[0] - i + 1);
      }
      if (fBinYSlider->GetMaxPosition()==2 && fBinYSlider->GetPosition()==2) 
         fBinYSlider->SetPosition(2);
      else { 
         while ( divy [j] != ny) j ++;
         fBinYSlider->SetPosition(divy[0] - j + 1);
      }
      fBinXNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 2, n1);
      fBinXNumberEntry->SetIntNumber(nx);
      fBinYNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 2, n2);
      fBinYNumberEntry->SetIntNumber(ny);
   }
   else if (fHist==player->GetHistogram()) {
      fBin->HideFrame(fBinXCont);
      fBin->ShowFrame(fBinXCont1);
      fBin->ShowFrame(fBinYCont1);      
      fBinXSlider1->SetPosition(5);      
      fBinXNumberEntry1->SetLimits(TGNumberFormat::kNELLimitMinMax, 1, 1000);
      fBinXNumberEntry1->SetIntNumber(nxbinmax-nxbinmin+1);
      fBinYSlider1->SetPosition(5);      
      fBinYNumberEntry1->SetLimits(TGNumberFormat::kNELLimitMinMax, 1, 1000);
      fBinYNumberEntry1->SetIntNumber(nybinmax-nybinmin+1);
   }

   fXOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 
                                  fHist->GetXaxis()->GetBinWidth(1));
   fYOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 
                                  fHist->GetYaxis()->GetBinWidth(1));
   if (!fGedEditor->GetTab()->IsEnabled(fGedEditor->GetTab()->GetCurrent())) fGedEditor->GetTab()->SetTab(0);

   if (fInit) ConnectSignals2Slots();
   fGedEditor->GetTab()->SetEnabled(1, kTRUE); 
   fAvoidSignal = kFALSE;     
}
  
//______________________________________________________________________________
void TH2Editor::DoTitle(const char *text)
{
   // Slot connected to the histogram title setting.
  
   if (fAvoidSignal) return;
   fHist->SetTitle(text);
   Update();
}

//______________________________________________________________________________
void TH2Editor::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 TH2Editor::DoHistSimple()
{
   // Slot connected to the 2D-Plot radio button.
   
   if (fAvoidSignal) return;
   TString str = "";
   ShowFrame(f6);
   HideFrame(f9);
   HideFrame(f12);
   HideFrame(f13);   
   HideFrame(f38);
   if (fContCombo->GetSelected()==-1) 
      fContCombo->Select(kCONT_NONE);
   if ((fContCombo->GetSelected()!= kCONT_NONE) && 
        fAddPalette->GetState()==kButtonDisabled) 
      fAddPalette->SetState(kButtonUp);

   str = GetHistContLabel()+GetHistAdditiveLabel();
   if (str=="" || str=="SCAT" || str==fCutString) {
      fAddScat->SetState(kButtonDisabled); 
      fAddPalette->SetState(kButtonDisabled);
   } else if (fAddScat->GetState()==kButtonDisabled) 
      fAddScat->SetState(kButtonUp);
   if (str.Contains("COL") || fContCombo->GetSelected()!= kCONT_NONE) 
      fColContLbl->Enable();
   else fColContLbl->Disable(); 
 
   ((TGMainFrame*)GetMainFrame())->Layout();

   TString ocut = fCutString;
   ocut.ToUpper();
   if (!str.Contains(fCutString) && !str.Contains(ocut)) 
      str+=fCutString;
   SetDrawOption(str);
   Update();
}
   
//______________________________________________________________________________
void TH2Editor::DoHistComplex()
{
   // Slot connected to the 3D-Plot radio button.
   
   if (fAvoidSignal) return;
   TString str = "";
   HideFrame(f6);   
   ShowFrame(f9);
   ShowFrame(f38);
   if (GetHistTypeLabel().Contains("LEGO")) {
      ShowFrame(f12);   
      ShowFrame(f13);   
   } else {
      HideFrame(f12);
      HideFrame(f13);
   }
   if (fTypeCombo->GetSelected()==-1) fTypeCombo->Select(kTYPE_LEGO);
   if (fCoordsCombo->GetSelected()==-1) fCoordsCombo->Select(kCOORDS_CAR);
 
   str = GetHistTypeLabel()+GetHistCoordsLabel()+GetHistAdditiveLabel(); 

   if (str.Contains("LEGO2") || str.Contains("SURF1") || 
       str.Contains("SURF2") || str.Contains("SURF3") || 
       str.Contains("SURF5")) {
      fColContLbl1->Enable();
      if (fAddPalette1->GetState()==kButtonDisabled) 
         fAddPalette1->SetState(kButtonUp);      
   } else {
      fColContLbl1->Disable();
      fAddPalette1->SetState(kButtonDisabled);
   }
   
   ((TGMainFrame*)GetMainFrame())->Layout();

   TString ocut = fCutString;
   ocut.ToUpper();
   if (!str.Contains(fCutString) && !str.Contains(ocut)) 
      str+=fCutString;
   SetDrawOption(str);
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoHistChanges()
{
   // Slot connected to histogram type, coordinate system, contour combo box.
   
   if (fAvoidSignal) return;
   TString str = "";
   if (fDim->GetState() == kButtonDown) {
      str = GetHistContLabel()+GetHistAdditiveLabel();
      if ((fContCombo->GetSelected()!=kCONT_NONE && 
           fContCombo->GetSelected()!=kCONT_2 && 
           fContCombo->GetSelected()!=kCONT_3) || str.Contains("COL")) {

         if (str.Contains("Z")) fAddPalette->SetState(kButtonDown);
         else fAddPalette->SetState(kButtonUp);
      } else fAddPalette->SetState(kButtonDisabled);
      if (str=="" || str=="SCAT" || str==fCutString) {
         fAddScat->SetState(kButtonDisabled);
         fAddPalette->SetState(kButtonDisabled);
      } else if (fAddScat->GetState()==kButtonDisabled) 
         fAddScat->SetState(kButtonUp);
      str = GetHistContLabel()+GetHistAdditiveLabel();
      if (str.Contains("COL") || fContCombo->GetSelected()!= kCONT_NONE) 
         fColContLbl->Enable();
      else 
         fColContLbl->Disable();
         
   } else if (fDim0->GetState() == kButtonDown) {
      if (fCoordsCombo->GetSelected()!=kCOORDS_CAR) {
         if (fAddFB->GetState()!=kButtonDisabled) 
            fAddFB->SetState(kButtonDisabled);
         if (fAddBB->GetState()!=kButtonDisabled) 
            fAddBB->SetState(kButtonDisabled);
         if (fAddError->GetState()!=kButtonDisabled) 
            fAddError->SetState(kButtonDisabled);
      } else {
         if (fAddFB->GetState()==kButtonDisabled) 
            fAddFB->SetState(kButtonDown);
         if (fAddBB->GetState()==kButtonDisabled) 
            fAddBB->SetState(kButtonDown);
         if (fAddError->GetState()==kButtonDisabled) 
            fAddError->SetState(kButtonUp);
      }
      if ((fTypeCombo->GetSelected()==kTYPE_LEGO) || 
          (fTypeCombo->GetSelected()==kTYPE_LEGO1)||
          (fTypeCombo->GetSelected()==kTYPE_SURF) || 
          (fTypeCombo->GetSelected()==kTYPE_SURF4)) 
         fAddPalette1->SetState(kButtonDisabled);
      else if (fAddPalette1->GetState()==kButtonDisabled) 
         fAddPalette1->SetState(kButtonUp);
      if (GetHistTypeLabel().Contains("LEGO")) {
         ShowFrame(f12);
         ShowFrame(f13);
      } else {
         HideFrame(f12);
         HideFrame(f13);
      }
      ((TGMainFrame*)GetMainFrame())->Layout();
      str = GetHistTypeLabel()+GetHistCoordsLabel()+GetHistAdditiveLabel();
      if (str.Contains("LEGO2") || str.Contains("SURF1") || 
          str.Contains("SURF2") || str.Contains("SURF3") || 
          str.Contains("SURF5")) 
         fColContLbl1->Enable();
      else 
         fColContLbl1->Disable() ;
   }

   TString ocut = fCutString;
   ocut.ToUpper();
   if (!str.Contains(fCutString) && !str.Contains(ocut)) 
      str+=fCutString;
   SetDrawOption(str);
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoAddArr(Bool_t on)
{
   // Slot connected to the "Arrow draw option" check button.

   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (on) {
      if (!str.Contains("ARR")) {
         str += "ARR";
         if (fAddScat->GetState()==kButtonDisabled) 
            fAddScat->SetState(kButtonUp);	 
         make=kTRUE;
      }
   } else if (fAddArr->GetState()==kButtonUp) {
      if (str.Contains("ARR")) {
         str.Remove(strstr(str.Data(),"ARR")-str.Data(),3);
         if (str=="" || str=="SCAT" || str==fCutString) {
            fAddScat->SetState(kButtonDisabled);
            fAddPalette->SetState(kButtonDisabled);
         }
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoAddBox(Bool_t on)
{
   // Slot connected to the "Box draw option" check button.

   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (on) {
      if (!str.Contains("BOX")) {
         str += "BOX";
         if (fAddScat->GetState()==kButtonDisabled) 
            fAddScat->SetState(kButtonUp);
         make=kTRUE;
      }
   } else if (fAddBox->GetState()==kButtonUp) {
      if (str.Contains("BOX")) {
         str.Remove(strstr(str.Data(),"BOX")-str.Data(),3);
         if (str=="" || str=="SCAT" || str==fCutString) {
            fAddScat->SetState(kButtonDisabled);
            fAddPalette->SetState(kButtonDisabled);
         }
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoAddCol(Bool_t on)
{
   // Slot connected to the "Col draw option" check button.

   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (on) {
      if (!str.Contains("COL")) {
         str += "COL";
         fColContLbl->Enable() ;
         if (fAddScat->GetState()==kButtonDisabled) 
            fAddScat->SetState(kButtonUp);
         if (fAddPalette->GetState()==kButtonDisabled) 
            fAddPalette->SetState(kButtonUp);
         make=kTRUE;
      }
   } else if (fAddCol->GetState()==kButtonUp) {
      if (str.Contains("COL")) {
         str.Remove(strstr(str.Data(),"COL")-str.Data(),3);
         if (fAddBox->GetState()==kButtonDisabled) 
            fAddBox->SetState(kButtonUp);
         if (fContCombo->GetSelected()==kCONT_NONE) {
            fAddPalette->SetState(kButtonDisabled);
            if (str.Contains("Z")) 
               str.Remove(strstr(str.Data(),"Z")-str.Data(),1);
         }
         if (str=="" || str=="SCAT" || str==fCutString) 
            fAddScat->SetState(kButtonDisabled);
         if (fContCombo->GetSelected()!= kCONT_NONE) 
            fColContLbl->Enable() ;
         else fColContLbl->Disable();
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoAddScat(Bool_t on)
{
   // Slot connected to the "Scat draw option" check button.

   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (on) {
      if (!str.Contains("SCAT")) {
         str += "SCAT";
         make=kTRUE;
      }
   } else if (fAddScat->GetState()==kButtonUp) {
      if (str.Contains("SCAT")) {
         str.Remove(strstr(str.Data(),"SCAT")-str.Data(),4);
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoAddText(Bool_t on)
{
   // Slot connected to the "Text draw option" check button.

   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (on) {
      if (!str.Contains("TEXT")) {
         str += "TEXT";
         if (fAddScat->GetState()==kButtonDisabled) 
            fAddScat->SetState(kButtonUp);
         make=kTRUE;
      }
   } else if (fAddText->GetState()==kButtonUp) {
      if (str.Contains("TEXT")) {
         str.Remove(strstr(str.Data(),"TEXT")-str.Data(),4);
         if (str=="" || str=="SCAT" || str==fCutString) 
            fAddScat->SetState(kButtonDisabled);
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
      // next line is needed for marker editor refresh
      fGedEditor->GetCanvas()->Selected(fGedEditor->GetPad(), fHist, 1);    
   }
}

//______________________________________________________________________________
void TH2Editor::DoAddError(Bool_t on)
{
   // Slot connected to the "Error" check button.

   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   TString dum = str;
   if (str.Contains("LEGO")) 
      dum.Remove(strstr(dum.Data(),"LEGO")-dum.Data(),4);
   if (str.Contains("TEXT")) 
      dum.Remove(strstr(dum.Data(),"TEXT")-dum.Data(),4);
   if (on) {
      if (!dum.Contains("E")) {
         str += "E";
         make=kTRUE;
      }
   } else if (fAddError->GetState() == kButtonUp) {
      if (str.Contains("E")) {
         if (fDim->GetState() == kButtonDown)
            str = GetHistContLabel()+GetHistAdditiveLabel();
         else
            str= GetHistTypeLabel()+GetHistCoordsLabel()+
                 GetHistAdditiveLabel(); 
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoAddPalette(Bool_t on)
{
   // Slot connected to the color palette check button. 

   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (on) {
      if (!str.Contains("Z")) {
         str += "Z";
         make=kTRUE;
      }
   } else if (fAddPalette->GetState()==kButtonUp || 
              fAddPalette1->GetState()==kButtonUp) {
      if (str.Contains("Z")) {
         str.Remove(strstr(str.Data(),"Z")-str.Data(),1);
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoAddFB()
{
   // Slot connected to the "FB front-box draw option" check button.
   
   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (fAddFB->GetState()==kButtonDown) {
      if (str.Contains("FB")) {
         if (str.Contains("SURF") && !(str.Contains("1") || 
             str.Contains("2") || str.Contains("3") || 
             str.Contains("4") || str.Contains("5"))) {
            TString dum = str;
            dum.Remove(strstr(dum.Data(),"SURF")-dum.Data(),4); 
            if (dum.Contains("FB")) 
               dum.Remove(strstr(dum.Data(),"FB")-dum.Data(),2); 
            str = "SURF" + dum;
         } else str.Remove(strstr(str.Data(),"FB")-str.Data(),2);
         make = kTRUE;
      }
   } else if (fAddFB->GetState()==kButtonUp){
      if (!str.Contains("FB")) {
         str += "FB";
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoAddBB()
{
   // Slot connected to the "BB back-box draw option" check button.
   
   if (fAvoidSignal) return;
   Bool_t make=kFALSE;
   TString str = GetDrawOption();
   str.ToUpper();

   if (fAddBB->GetState()==kButtonDown) {
      if (str.Contains("BB")) {
         if (str.Contains("FB")) {
            TString dum = str;
            dum.Remove(strstr(dum.Data(),"FB")-dum.Data(),2);
            dum.Remove(strstr(dum.Data(),"BB")-dum.Data(),2);
            str=dum+"FB";
         } else str.Remove(strstr(str.Data(),"BB")-str.Data(),2);
         make = kTRUE;
      }
   } else if (fAddBB->GetState()==kButtonUp){
      if (!str.Contains("BB")) {
         str += "BB";
         make=kTRUE;
      }
   }
   if (make) {
      DoHistChanges();
   }    
}

//______________________________________________________________________________
void TH2Editor::DoContLevel()
{
   // Slot connected to the contour level number entry fContLevels.
   
   if (fAvoidSignal) return;
   fHist->SetContour((Int_t)fContLevels->GetNumber());
   fContLevels1->SetNumber((Int_t)fContLevels->GetNumber());
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoContLevel1()
{
   // Slot connected to the contour level number entry fContLevels1. 
   
   if (fAvoidSignal) return;
   fHist->SetContour((Int_t)fContLevels1->GetNumber());
   fContLevels->SetNumber((Int_t)fContLevels1->GetNumber());   
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoBarWidth()
{
   // Slot connected to the bar width of the bar chart.
   
   if (fAvoidSignal) return;
   fHist->SetBarWidth(fBarWidth->GetNumber());
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoBarOffset()
{
   // Slot connected to the bar offset of the bar chart.
   
   if (fAvoidSignal) return;
   fHist->SetBarOffset((Float_t)fBarOffset->GetNumber());
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoBinReleased()
{
   // Slot connected to the rebin slider in case of no ntuple histogram.
   // It updates some other widgets related to the rebin slider.

   // Draw the rebinned histogram in case of the delay draw mode
   if (fAvoidSignal) return;
   if (fDelaydraw->GetState()==kButtonDown){
      if (!fBinHist) {
         fBinHist = (TH2*)fHist->Clone("BinHist");
      }
      Int_t nx = fBinHist->GetXaxis()->GetNbins();
      Int_t ny = fBinHist->GetYaxis()->GetNbins();
      Int_t numx = fBinXSlider->GetPosition();
      Int_t numy = fBinYSlider->GetPosition();
      Int_t* divx = Dividers(nx);   
      Int_t* divy = Dividers(ny);   
      if (divx[0]==2) fBinXSlider->SetPosition(2);
      if (divy[0]==2) fBinYSlider->SetPosition(2);
      if (divx[0]==2 && divy[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(),
                     ny,fBinHist->GetYaxis()->GetXmin(),
                     fBinHist->GetYaxis()->GetXmax());
      fHist->Add(fBinHist);
      fHist->ResetBit(TH1::kCanRebin);
      fHist->Rebin2D(divx[numx], divy[numy]);

      //fModel=fHist;

      if (divx[0]!=2) {
         TAxis* xaxis = fHist->GetXaxis();
         Double_t xBinWidth = xaxis->GetBinWidth(1);      
         xaxis->SetRangeUser(fSldXMin->GetNumber()+xBinWidth/2, 
                             fSldXMax->GetNumber()-xBinWidth/2);      
         fSliderX->SetRange(1,(Int_t)nx/divx[numx]);   
         fSliderX->SetPosition(xaxis->FindBin(fSldXMin->GetNumber()+xBinWidth/2),
                               xaxis->FindBin(fSldXMax->GetNumber()-xBinWidth/2));
         // the axis range could be changed a little bit by the Rebin algorithm
         fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
         fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
      }
      if (divy[0]!=2) { 
         TAxis* yaxis = fHist->GetYaxis();	 
         Double_t yBinWidth = yaxis->GetBinWidth(1);
         yaxis->SetRangeUser(fSldYMin->GetNumber()+yBinWidth/2, 
                             fSldYMax->GetNumber()-yBinWidth/2);	 
         fSliderY->SetRange(1,(Int_t)ny/divy[numy]);   
         fSliderY->SetPosition(yaxis->FindBin(fSldYMin->GetNumber()+yBinWidth/2), 
                               yaxis->FindBin(fSldYMax->GetNumber()-yBinWidth/2));
         fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
         fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->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 TH2Editor::DoBinPressed()
{
   // Slot connected to the rebin slider in case of no ntuple histogram.

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

//______________________________________________________________________________
void TH2Editor::DoBinMoved()
{
   // Slot connected to the rebin sliders in case of no ntuple histogram
   // does the rebinning of the selected histogram. 

   // create a clone in the background, when the slider is moved for 1st time
   if (fAvoidSignal) return;
   if (!fBinHist /*&& fDelaydraw->GetState()!=kButtonDown*/) {
      Int_t* divx = Dividers(fHist->GetXaxis()->GetNbins());
      Int_t* divy = Dividers(fHist->GetYaxis()->GetNbins());   
      // if there is nothing to rebin:
      if (divx[0]==2 && divy[0]==2) return;
      fBinHist = (TH2*)fHist->Clone("BinHist");
   }
   // if the slider already has been moved and the clone is saved
   Int_t nx = fBinHist->GetXaxis()->GetNbins();
   Int_t ny = fBinHist->GetYaxis()->GetNbins();
   Int_t numx = fBinXSlider->GetPosition();
   Int_t numy = fBinYSlider->GetPosition();
   Int_t* divx = Dividers(nx);   
   Int_t* divy = Dividers(ny);   
   if (divx[0]==2) {
      fBinXSlider->SetPosition(2);
      numx=1;
   }
   if (divy[0]==2) {
      fBinYSlider->SetPosition(2);
      numy=1;
   }
   Int_t maxx = (Int_t)nx/divx[numx];
   Int_t maxy = (Int_t)ny/divy[numy];
   if (maxx==1) maxx=2;
   if (maxy==1) maxy=2;
   if (fDelaydraw->GetState()==kButtonUp){
      // delete the histogram which is on the screen
      fGedEditor->GetPad()->cd();
      fHist->Reset();
      fHist->SetBins(nx,fBinHist->GetXaxis()->GetXmin(),
                     fBinHist->GetXaxis()->GetXmax(),
                     ny,fBinHist->GetYaxis()->GetXmin(),
                     fBinHist->GetYaxis()->GetXmax());
      fHist->Add(fBinHist);
      fHist->ResetBit(TH1::kCanRebin);
      fHist->Rebin2D(divx[numx], divy[numy]);
      //fModel=fHist;
      if (divx[0]!=2) {
         TAxis* xaxis = fHist->GetXaxis();
         Double_t xBinWidth = xaxis->GetBinWidth(1);
         // if the user has zoomed into a special area the range will be reset:
         xaxis->SetRangeUser(fSldXMin->GetNumber()+xBinWidth/2, 
                             fSldXMax->GetNumber()-xBinWidth/2);
         fSliderX->SetRange(1,maxx);
         fSliderX->SetPosition(xaxis->FindBin(fSldXMin->GetNumber()+xBinWidth/2),
                               xaxis->FindBin(fSldXMax->GetNumber()-xBinWidth/2));
         // the axis range could be changed a little bit by the Rebin algorithm
         fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
         fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
         fClient->NeedRedraw(fBinXSlider,kTRUE);
      } 
      if (divy[0]!=2) {      
         TAxis* yaxis = fHist->GetYaxis();	 
         Double_t yBinWidth = yaxis->GetBinWidth(1);
         yaxis->SetRangeUser(fSldYMin->GetNumber()+yBinWidth/2, 
                             fSldYMax->GetNumber()-yBinWidth/2);	 
         fSliderY->SetRange(1,maxy);   
         fSliderY->SetPosition(yaxis->FindBin(fSldYMin->GetNumber()+yBinWidth/2),
                               yaxis->FindBin(fSldYMax->GetNumber()-yBinWidth/2));
         fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
         fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->GetLast()));
         fClient->NeedRedraw(fBinYSlider,kTRUE);	 
      }
      Update();
   }
   // set the according NumberEntries
   if (fCancel->GetState()==kButtonDisabled) 
      fCancel->SetState(kButtonUp);
   if (fApply->GetState()==kButtonDisabled) 
      fApply->SetState(kButtonUp);
   fBinXNumberEntry->SetNumber(maxx);
   fBinYNumberEntry->SetNumber(maxy);      
}

//______________________________________________________________________________
void TH2Editor::DoBinLabel()
{
   // Slot connected to the Bin Number Entry for the Rebin.

   if (fAvoidSignal) return;
   Int_t i; 
   Int_t numx = (Int_t)(fBinXNumberEntry->GetNumber());
   Int_t numy = (Int_t)(fBinYNumberEntry->GetNumber());
   Int_t nx = 0;
   if (fBinHist) nx = fBinHist->GetXaxis()->GetNbins();
   else nx = fHist->GetXaxis()->GetNbins();
   Int_t ny = 0;
   if (fBinHist) ny = fBinHist->GetYaxis()->GetNbins();
   else ny = fHist->GetYaxis()->GetNbins();
   // Get the divider of nx/ny which is closest to numx/numy
   Int_t *divx = Dividers(nx);
   Int_t *divy = Dividers(ny);   
   Int_t diff = TMath::Abs(numx - divx[1]);
   Int_t c = 1; Int_t d = 1;
   for (i = 2; i <= divx[0]; i++) {
      if ((TMath::Abs(numx - divx[i])) < diff) {
         c = i; 
         diff = TMath::Abs(numx - divx[i]);
      }
   }
   diff = TMath::Abs(numy - divy[1]);
   for (i = 2; i <= divy[0]; i++) {
      if ((TMath::Abs(numy - divy[i])) < diff) {
         d = i; 
         diff = TMath::Abs(numy - divy[i]);
      }
   }
   if (divx[c]!= fHist->GetXaxis()->GetNbins() || 
       divy[d]!= fHist->GetYaxis()->GetNbins()) {
      fBinXNumberEntry->SetNumber(divx[c]);
      fBinXSlider->SetPosition(divx[0] - c +1);
      fBinYNumberEntry->SetNumber(divy[d]); 
      fBinYSlider->SetPosition(divy[0] - d +1);
      if (fDelaydraw->GetState()==kButtonUp) DoBinMoved();
      else DoBinReleased(); 
   } 
//   fGedEditor->GetPad()->GetCanvas()->Selected(fGedEditor->GetPad(), fHist,  0);   
//   fModel = fHist;
   Refresh(fHist);
}

//______________________________________________________________________________
void TH2Editor::DoApply()
{
   // Slot connected to the Apply Button in the Rebinned histogram Window.

   Int_t ret = 0;
   new TGMsgBox(fClient->GetDefaultRoot(), this->GetMainFrame(), 
                "TH2 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 ny = fHist->GetYaxis()->GetNbins();      
      Int_t *divx = Dividers(nx);
      Int_t *divy = Dividers(ny);      
      Int_t upx = 0, upy = 0; 
      if (divx[0]-1 <= 1) upx = 2;
      else upx = divx[0]-1; 
      if (divy[0]-1 <= 1) upy = 2;
      else upy = divy[0]-1; 
      fBinXSlider->SetRange(1,upx);
      fBinYSlider->SetRange(1,upy);      
      if (fBinXSlider->GetMaxPosition()==2 && divx[0]==2 ) 
         fBinXSlider->SetPosition(2);
      else fBinXSlider->SetPosition(1);
      if (fBinYSlider->GetMaxPosition()==2 && divy[0]==2 ) 
         fBinYSlider->SetPosition(2);
      else fBinYSlider->SetPosition(1);
      fCancel->SetState(kButtonDisabled);
      fApply->SetState(kButtonDisabled);
      Update();
   } else if (ret==2) DoCancel();
}

//______________________________________________________________________________
void TH2Editor::DoCancel()
{
   // Slot connected to the Cancel Button in the Rebinned histogram Window.
   
   if (fBinHist) {
      fGedEditor->GetPad()->cd();
      fHist->Reset();
      fHist->SetBins(fBinHist->GetXaxis()->GetNbins(),
                     fBinHist->GetXaxis()->GetXmin(),
                     fBinHist->GetXaxis()->GetXmax(),
                     fBinHist->GetYaxis()->GetNbins(),
                     fBinHist->GetYaxis()->GetXmin(),
                     fBinHist->GetYaxis()->GetXmax());
      fHist->Add(fBinHist);

      delete fBinHist;
      fBinHist = 0;

      fCancel->SetState(kButtonDisabled);
      fApply->SetState(kButtonDisabled);
      Int_t* divx = Dividers(fHist->GetXaxis()->GetNbins());
      Int_t* divy = Dividers(fHist->GetYaxis()->GetNbins());
      if (divx[0]!=2) fBinXSlider->SetPosition(1);
      if (divy[0]!=2) fBinYSlider->SetPosition(1);
      // Consigning the new Histogram to all other Editors
//      fGedEditor->GetPad()->GetCanvas()->Selected(fGedEditor->GetPad(), fHist,  0);
      Update();    
      //  fModel = fHist;
      Refresh(fHist);
   }
}

   
//______________________________________________________________________________
void TH2Editor::DoBinReleased1()
{
   // Slot connected to the BinNumber Slider in case of a 'ntuple histogram'.
   // It does the rebin.

   if (fAvoidSignal) return;
   Double_t oldXOffset = fXOffsetNumberEntry->GetNumber();   
   Int_t xnumber = fBinXSlider1->GetPosition();
   Double_t oldYOffset = fYOffsetNumberEntry->GetNumber();   
   Int_t ynumber = fBinYSlider1->GetPosition();
   if (xnumber==5 && ynumber==5) return;
   Int_t xfact = 0;
   Int_t yfact = 0;   
   Int_t xBinNumber = 0;
   Int_t yBinNumber = 0;
   TAxis* xaxis = fHist->GetXaxis();
   TAxis* yaxis = fHist->GetYaxis();   
   //"compute" the scaling factor:
   if (xnumber >= 5) xfact = xnumber - 4;
   else xfact = xnumber - 6;
   if (ynumber >= 5) yfact = ynumber - 4;
   else yfact = ynumber - 6;
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   if (!player) return;
   Int_t nx = xaxis->GetNbins();
   Int_t ny = yaxis->GetNbins();
   Int_t firstx = xaxis->GetFirst();
   Int_t lastx = xaxis->GetLast();
   Int_t firsty = yaxis->GetFirst();
   Int_t lasty = yaxis->GetLast();
   Double_t minx = xaxis->GetBinLowEdge(1);        // overall min in user coords
   Double_t maxx = xaxis->GetBinUpEdge(nx);        // overall max in user coords
   Double_t miny = yaxis->GetBinLowEdge(1);        // overall min in user coords
   Double_t maxy = yaxis->GetBinUpEdge(ny);        // overall max in user coords
   Double_t rminx = xaxis->GetBinLowEdge(firstx);  // recent min in user coords
   Double_t rmaxx = xaxis->GetBinUpEdge(lastx);    // recent max in user coords
   Double_t rminy = yaxis->GetBinLowEdge(firsty);  // recent min in user coords
   Double_t rmaxy = yaxis->GetBinUpEdge(lasty);    // recent max in user coords
   
   ((TH2*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
   ((TH2*)player->GetHistogram())->Reset();

   // Get new Number of bins
   if (xfact > 0) xBinNumber = xfact*nx;
   if (xfact < 0) xBinNumber = (Int_t) ((-1)*nx/xfact+0.5);
   if (xBinNumber < 1) xBinNumber = 1;
   if (xBinNumber > 1000) xBinNumber= 1000;
   if (yfact > 0) yBinNumber = yfact*ny;
   if (yfact < 0) yBinNumber = (Int_t) ((-1)*ny/yfact+0.5);
   if (yBinNumber < 1) yBinNumber = 1;
   if (yBinNumber > 1000) yBinNumber= 1000;
   Double_t xOffset = 1.*fXBinOffsetSld->GetPosition()/100*((maxx-minx)/xBinNumber);
   Double_t yOffset = 1.*fYBinOffsetSld->GetPosition()/100*((maxy-miny)/yBinNumber);   
   // create new histogram - the main job is done by sel->TakeAction()
  
   ((TH2*)player->GetHistogram())->SetBins(xBinNumber, minx-oldXOffset+xOffset,
                                           maxx-oldXOffset+xOffset, 
                                           yBinNumber, miny-oldYOffset+yOffset, 
                                           maxy-oldYOffset+yOffset);
   TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
   if (!sel) return;
   sel->TakeAction();

   // Restore and set all the attributes which were changed by TakeAction() 
   fHist = (TH2*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();
   fSliderX->SetRange(1,xBinNumber);
   fSliderY->SetRange(1,yBinNumber);   
   Double_t xBinWidth = xaxis->GetBinWidth(1);
   Double_t yBinWidth = yaxis->GetBinWidth(1);   
   fSliderX->SetPosition(xaxis->FindBin(rminx+xBinWidth/2), 
                         xaxis->FindBin(rmaxx-xBinWidth/2));
   fSliderY->SetPosition(yaxis->FindBin(rminy+yBinWidth/2), 
                         yaxis->FindBin(rmaxy-yBinWidth/2));
   xOffset = 1.*fXBinOffsetSld->GetPosition()/100*xBinWidth;  // nessesary ??
   yOffset = 1.*fYBinOffsetSld->GetPosition()/100*yBinWidth;  // nessesary ??

   // SetRange in BinNumbers along x and y!
   xaxis->SetRange(xaxis->FindBin(rminx+xBinWidth/2), 
                                  xaxis->FindBin(rmaxx-xBinWidth/2));   
   yaxis->SetRange(yaxis->FindBin(rminy+yBinWidth/2), 
                                  yaxis->FindBin(rmaxy-yBinWidth/2));      
   fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
   fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
   fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
   fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->GetLast()));
   fBinXNumberEntry1->SetNumber(xaxis->GetLast() - xaxis->GetFirst()+1);
   fBinYNumberEntry1->SetNumber(yaxis->GetLast() - yaxis->GetFirst()+1);
   fBinXSlider1->SetPosition(5);
   fBinYSlider1->SetPosition(5);   
   fXOffsetNumberEntry->SetNumber(xOffset);
   fYOffsetNumberEntry->SetNumber(yOffset);   
   fXOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 
                                  xaxis->GetBinWidth(1));
   fYOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 
                                  yaxis->GetBinWidth(1));   
   fClient->NeedRedraw(fBinXSlider1, kTRUE);  
   // when you 2-clicks on a slider, sometimes it gets caught on wrong position! (2 or  -2)
   fClient->NeedRedraw(fBinYSlider1, kTRUE);  
   // when you 2-clicks on a slider, sometimes it gets caught on wrong position! (2 or  -2)
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoBinMoved1()
{
   // Slot connected to the rebin slider in case of an ntuple histogram.
   // Updates the BinNumberEntryField during the BinSlider movement.
   
   if (fAvoidSignal) return;
   TAxis* xaxis = fHist->GetXaxis();
   TAxis* yaxis = fHist->GetYaxis();   
   Int_t firstx = xaxis->GetFirst();
   Int_t lastx = xaxis->GetLast();
   Int_t firsty = yaxis->GetFirst();
   Int_t lasty = yaxis->GetLast();
   Int_t xnumber = fBinXSlider1->GetPosition();
   Int_t ynumber = fBinYSlider1->GetPosition();   
   Int_t numx = lastx-firstx+1;
   Int_t numy = lasty-firsty+1;   
   Int_t xfact = 0;
   Int_t yfact = 0;   
   Int_t xBinNumber = 0;   
   Int_t yBinNumber = 0;      
   if (xnumber >= 5) xfact = xnumber - 4;
   else xfact = xnumber - 6;
   if (xfact > 0) xBinNumber = xfact*numx;
   if (xfact < 0) xBinNumber = (Int_t) ((-1)*numx/xfact+0.5);
   if (xBinNumber < 1) xBinNumber = 1;
   if (xBinNumber > 1000) xBinNumber= 1000;
   if (fBinXNumberEntry1->GetNumber()!=xBinNumber) 
      fBinXNumberEntry1->SetIntNumber(xBinNumber);

   if (ynumber >= 5) yfact = ynumber - 4;
   else yfact = ynumber - 6;
   if (yfact > 0) yBinNumber = yfact*numy;
   if (yfact < 0) yBinNumber = (Int_t) ((-1)*numy/yfact+0.5);
   if (yBinNumber < 1) yBinNumber = 1;
   if (yBinNumber > 1000) yBinNumber= 1000;
   if (fBinYNumberEntry1->GetNumber()!=yBinNumber) 
      fBinYNumberEntry1->SetIntNumber(yBinNumber);
}

//______________________________________________________________________________
void TH2Editor::DoBinLabel1()
{
   // Slot connected to the Bin Number Entry for the Rebin.
   
   if (fAvoidSignal) return;
   Double_t oldXOffset = fXOffsetNumberEntry->GetNumber();
   Int_t numx = (Int_t)fBinXNumberEntry1->GetNumber();   
   Double_t oldYOffset = fYOffsetNumberEntry->GetNumber();
   Int_t numy = (Int_t)fBinYNumberEntry1->GetNumber();   
   TAxis* xaxis = fHist->GetXaxis();
   TAxis* yaxis = fHist->GetYaxis();   
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   if (!player) return;
   Int_t firstx = xaxis->GetFirst();
   Int_t lastx = xaxis->GetLast();
   Int_t firsty = yaxis->GetFirst();
   Int_t lasty = yaxis->GetLast();
   Int_t nx = xaxis->GetNbins();
   Int_t ny = yaxis->GetNbins();
   Double_t minx = xaxis->GetBinLowEdge(1);         // overall min in user coords
   Double_t maxx = xaxis->GetBinUpEdge(nx);         // overall max in user coords
   Double_t miny = yaxis->GetBinLowEdge(1);         // overall min in user coords
   Double_t maxy = yaxis->GetBinUpEdge(ny);         // overall max in user coords
   Double_t rminx = xaxis->GetBinLowEdge(firstx);   // recent min in user coords
   Double_t rmaxx = xaxis->GetBinUpEdge(lastx);     // recent max in user coords
   Double_t rminy = yaxis->GetBinLowEdge(firsty);   // recent min in user coords
   Double_t rmaxy = yaxis->GetBinUpEdge(lasty);     // recent max in user coords
   
   ((TH2*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
   ((TH2*)player->GetHistogram())->Reset();

   // Calculate the new number of bins in the complete range
   Int_t xBinNumber = (Int_t) ((maxx-minx)/(rmaxx - rminx)*numx + 0.5);
   if (xBinNumber < 1) xBinNumber = 1;
   if (xBinNumber > 1000) xBinNumber= 1000;
   Double_t xOffset = 1.*(fXBinOffsetSld->GetPosition())/100*(maxx-minx)/xBinNumber;
   Int_t yBinNumber = (Int_t) ((maxy-miny)/(rmaxy - rminy)*numy + 0.5);
   if (yBinNumber < 1) yBinNumber = 1;
   if (yBinNumber > 1000) yBinNumber= 1000;
   Double_t yOffset = 1.*(fYBinOffsetSld->GetPosition())/100*(maxy-miny)/yBinNumber;
   // create new histogram - the main job is done by sel->TakeAction()
   ((TH2*)player->GetHistogram())->SetBins(xBinNumber, minx-oldXOffset+xOffset,
                                           maxx-oldXOffset+xOffset, 
                                           yBinNumber, miny-oldYOffset+yOffset, 
                                           maxy-oldYOffset+yOffset);
   TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
   if (!sel) return;
   sel->TakeAction();

   // Restore and set all the attributes which were changed by TakeAction() 
   fHist = (TH2*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();
   fSliderX->SetRange(1,xBinNumber);
   fSliderY->SetRange(1,yBinNumber);   
   Double_t xBinWidth = xaxis->GetBinWidth(1);
   Double_t yBinWidth = yaxis->GetBinWidth(1);   
   fSliderX->SetPosition(xaxis->FindBin(rminx+xBinWidth/2), 
                         xaxis->FindBin(rmaxx-xBinWidth/2));
   fSliderY->SetPosition(yaxis->FindBin(rminy+yBinWidth/2), 
                         yaxis->FindBin(rmaxy-yBinWidth/2));
   xOffset = 1.*fXBinOffsetSld->GetPosition()/100*xBinWidth; //nesessary ??
   yOffset = 1.*fYBinOffsetSld->GetPosition()/100*yBinWidth; //nesessary ??

   // SetRange in BinNumbers along x and y!
   xaxis->SetRange(xaxis->FindBin(rminx+xBinWidth/2), 
                   xaxis->FindBin(rmaxx-xBinWidth/2));  
   yaxis->SetRange(yaxis->FindBin(rminy+yBinWidth/2), 
                   yaxis->FindBin(rmaxy-yBinWidth/2));
   fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
   fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
   fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
   fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->GetLast()));
   fXOffsetNumberEntry->SetNumber(xOffset);
   fXOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,0,xBinWidth);
   fYOffsetNumberEntry->SetNumber(yOffset);
   fYOffsetNumberEntry->SetLimits(TGNumberFormat::kNELLimitMinMax,0,yBinWidth);
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoOffsetPressed()
{
   // Slot connected to the OffSetSlider. It saves the OldBinOffset 
   // (nessesary for delay draw mode).

   if (fAvoidSignal) return;
   fOldXOffset = fXOffsetNumberEntry->GetNumber();
   fOldYOffset = fYOffsetNumberEntry->GetNumber();
}

//______________________________________________________________________________
void TH2Editor::DoOffsetReleased()
{
   // Slot connected to the OffSetSlider that
   // changes the origin of the histogram inbetween a binwidth;
   // rebin the histogram with the new Offset given by the slider.
   // problem: histogram with variable binwidth??

   if (fAvoidSignal) return;
   if (fDelaydraw->GetState()==kButtonDown){
      Int_t numx = (Int_t)fXBinOffsetSld->GetPosition();
      Int_t numy = (Int_t)fYBinOffsetSld->GetPosition();
      TAxis* xaxis = fHist->GetXaxis();   
      TAxis* yaxis = fHist->GetYaxis();      
      Double_t xBinWidth = xaxis->GetBinWidth(1);
      Double_t yBinWidth = yaxis->GetBinWidth(1);   
      Double_t xOffset =  1.*numx/100*xBinWidth;
      Double_t yOffset =  1.*numy/100*yBinWidth;
      Double_t oldXOffset = fOldXOffset;
      Double_t oldYOffset = fOldYOffset;
      Int_t nx = xaxis->GetNbins();   
      Int_t ny = yaxis->GetNbins();      

      TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
      if (!player) return;

      Int_t firstx = xaxis->GetFirst();
      Int_t lastx = xaxis->GetLast();
      Int_t firsty = yaxis->GetFirst();
      Int_t lasty = yaxis->GetLast();
      Double_t minx = xaxis->GetBinLowEdge(1);       // overall min in user coords
      Double_t maxx = xaxis->GetBinUpEdge(nx);       // overall max in user coords
      Double_t miny = yaxis->GetBinLowEdge(1);       // overall min in user coords
      Double_t maxy = yaxis->GetBinUpEdge(ny);       // overall max in user coords
      Double_t rminx = xaxis->GetBinLowEdge(firstx); // recent min in user coords
      Double_t rmaxx = xaxis->GetBinUpEdge(lastx);   // recent max in user coords
      Double_t rminy = yaxis->GetBinLowEdge(firsty); // recent min in user coords
      Double_t rmaxy = yaxis->GetBinUpEdge(lasty);   // recent max in user coords
     
      ((TH2*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
      ((TH2*)player->GetHistogram())->Reset();
 
      ((TH2*)player->GetHistogram())->SetBins(nx, minx-oldXOffset+xOffset,
                                              maxx-oldXOffset+xOffset, 
                                              ny, miny-oldYOffset+yOffset, 
                                              maxy-oldYOffset+yOffset);
      TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
      if (!sel) return;
      sel->TakeAction();

      // Restore all the attributes which were changed by TakeAction() 
      fHist = (TH2*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();

      // SetRange in BinNumbers along x and y!
      xaxis->SetRange(xaxis->FindBin(rminx+xOffset-oldXOffset+xBinWidth/2), 
                      xaxis->FindBin(rmaxx+xOffset-oldXOffset-xBinWidth/2));
      yaxis->SetRange(yaxis->FindBin(rminy+yOffset-oldYOffset+yBinWidth/2), 
                      yaxis->FindBin(rmaxy+yOffset-oldYOffset-yBinWidth/2));   
      fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
      fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
      fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
      fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->GetLast()));
      fXOffsetNumberEntry->SetNumber(xOffset);
      fYOffsetNumberEntry->SetNumber(yOffset);
      Update();
   }
}

//______________________________________________________________________________
void TH2Editor::DoOffsetMoved()
{
   // Slot connected to the OffSetSlider.
   // It changes the origin of the histogram inbetween a binwidth;
   // rebin the histogram with the new offset given by the slider.
   // problem: histogram with variable binwidth??

   if (fAvoidSignal) return;
   Int_t numx = (Int_t)fXBinOffsetSld->GetPosition();
   Int_t numy = (Int_t)fYBinOffsetSld->GetPosition();
   TAxis* xaxis = fHist->GetXaxis();   
   TAxis* yaxis = fHist->GetYaxis();      
   Double_t xBinWidth = xaxis->GetBinWidth(1);
   Double_t yBinWidth = yaxis->GetBinWidth(1);   
   Double_t xOffset =  1.*numx/100*xBinWidth;
   Double_t yOffset =  1.*numy/100*yBinWidth;
   if (fDelaydraw->GetState()==kButtonUp){
      Double_t oldXOffset = fXOffsetNumberEntry->GetNumber();
      Double_t oldYOffset = fYOffsetNumberEntry->GetNumber();
      Int_t nx = xaxis->GetNbins();   
      Int_t ny = yaxis->GetNbins();      

      TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
      if (!player) return;

      Int_t firstx = xaxis->GetFirst();
      Int_t lastx = xaxis->GetLast();
      Int_t firsty = yaxis->GetFirst();
      Int_t lasty = yaxis->GetLast();
      Double_t minx = xaxis->GetBinLowEdge(1);       // overall min in user coords
      Double_t maxx = xaxis->GetBinUpEdge(nx);       // overall max in user coords
      Double_t miny = yaxis->GetBinLowEdge(1);       // overall min in user coords
      Double_t maxy = yaxis->GetBinUpEdge(ny);       // overall max in user coords
      Double_t rminx = xaxis->GetBinLowEdge(firstx); // recent min in user coords
      Double_t rmaxx = xaxis->GetBinUpEdge(lastx);   // recent max in user coords
      Double_t rminy = yaxis->GetBinLowEdge(firsty); // recent min in user coords
      Double_t rmaxy = yaxis->GetBinUpEdge(lasty);   // recent max in user coords
   
      ((TH2*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
      ((TH2*)player->GetHistogram())->Reset();

      ((TH2*)player->GetHistogram())->SetBins(nx,minx-oldXOffset+xOffset,
                                              maxx-oldXOffset+xOffset, 
                                              ny, miny-oldYOffset+yOffset, 
                                              maxy-oldYOffset+yOffset);
      TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
      if (!sel) return;
      sel->TakeAction();

      // Restore all the attributes which were changed by TakeAction() 
      fHist = (TH2*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();

      // SetRange in BinNumbers along x and y!
      xaxis->SetRange(xaxis->FindBin(rminx+xOffset-oldXOffset+xBinWidth/2), 
                      xaxis->FindBin(rmaxx+xOffset-oldXOffset-xBinWidth/2));
      yaxis->SetRange(yaxis->FindBin(rminy+yOffset-oldYOffset+yBinWidth/2), 
                      yaxis->FindBin(rmaxy+yOffset-oldYOffset-yBinWidth/2));  
      fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
      fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
      fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
      fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->GetLast()));
      fClient->NeedRedraw(fXBinOffsetSld, kTRUE);
      fClient->NeedRedraw(fYBinOffsetSld, kTRUE);      
      Update();
   }
   fXOffsetNumberEntry->SetNumber(xOffset);
   fYOffsetNumberEntry->SetNumber(yOffset);
   fClient->NeedRedraw(fXOffsetNumberEntry, kTRUE);
   fClient->NeedRedraw(fYOffsetNumberEntry, kTRUE);      
}

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

   if (fAvoidSignal) return;
   TAxis* xaxis = fHist->GetXaxis();   
   TAxis* yaxis = fHist->GetYaxis();      
   Double_t xBinWidth = xaxis->GetBinWidth(1);
   Double_t yBinWidth = yaxis->GetBinWidth(1);   
   Double_t xOffset =  fXOffsetNumberEntry->GetNumber();
   Double_t oldXOffset = 1.*fXBinOffsetSld->GetPosition()/100*xBinWidth;
   Double_t yOffset =  fYOffsetNumberEntry->GetNumber();
   Double_t oldYOffset = 1.*fYBinOffsetSld->GetPosition()/100*yBinWidth;
   Int_t nx = xaxis->GetNbins();   
   Int_t ny = yaxis->GetNbins();      
   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();
   if (!player) return;
   Int_t firstx = xaxis->GetFirst();
   Int_t lastx = xaxis->GetLast();
   Int_t firsty = yaxis->GetFirst();
   Int_t lasty = yaxis->GetLast();
   Double_t minx = xaxis->GetBinLowEdge(1);        // overall min in user coords
   Double_t maxx = xaxis->GetBinUpEdge(nx);        // overall max in user coords
   Double_t miny = yaxis->GetBinLowEdge(1);        // overall min in user coords
   Double_t maxy = yaxis->GetBinUpEdge(ny);        // overall max in user coords
   Double_t rminx = xaxis->GetBinLowEdge(firstx);  // recent min in user coords
   Double_t rmaxx = xaxis->GetBinUpEdge(lastx);    // recent max in user coords
   Double_t rminy = yaxis->GetBinLowEdge(firsty);  // recent min in user coords
   Double_t rmaxy = yaxis->GetBinUpEdge(lasty);    // recent max in user coords
   
   ((TH2*)player->GetHistogram())->ResetBit(TH1::kCanRebin);
   ((TH2*)player->GetHistogram())->Reset();

   ((TH2*)player->GetHistogram())->SetBins(nx,minx+xOffset-oldXOffset,
                                           maxx+xOffset-oldXOffset,
                                           ny,miny+yOffset-oldYOffset,
                                           maxy+yOffset-oldYOffset);
   TSelectorDraw *sel = (TSelectorDraw*)player->GetSelector();
   if (!sel) return;
   sel->TakeAction();

   // Restore all the attributes which were changed by TakeAction() 
   fHist = (TH2*)((TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer())->GetHistogram();

   // SetRange in BinNumbers along x and y!
   xaxis->SetRange(xaxis->FindBin(rminx+xOffset-oldXOffset+xBinWidth/2), 
                   xaxis->FindBin(rmaxx+xOffset-oldXOffset-xBinWidth/2));
   yaxis->SetRange(yaxis->FindBin(rminy+yOffset-oldYOffset+yBinWidth/2), 
                   yaxis->FindBin(rmaxy+yOffset-oldYOffset-yBinWidth/2));   
   fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
   fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast()));
   fXBinOffsetSld->SetPosition((Int_t)(xOffset/xBinWidth*100));
   fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
   fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->GetLast()));
   fYBinOffsetSld->SetPosition((Int_t)(yOffset/yBinWidth*100));
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoSliderXMoved()
{
   // Slot connected to the x-Slider that redraws the histogram 
   // with the new slider range.
   
   if (fAvoidSignal) return;
   TAxis* xaxis = fHist->GetXaxis();
   if (fDelaydraw->GetState()==kButtonDown && fDim->GetState()==kButtonDown) {
      // 2D plot
      Int_t px1,py1,px2,py2;
      Float_t ymin,ymax,xleft,xright;
      xleft = xaxis->GetBinLowEdge((Int_t)((fSliderX->GetMinPosition())+0.5));
      xright =  xaxis->GetBinUpEdge((Int_t)((fSliderX->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()->cd();
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      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);
      fSldXMin->SetNumber(xleft);
      fSldXMax->SetNumber(xright);
   }  else  if (fDelaydraw->GetState()==kButtonDown && 
                fDim0->GetState()==kButtonDown && 
                fCoordsCombo->GetSelected()==kCOORDS_CAR) {
      // 3D plot
      Float_t p1[3], p2[3], p3[3], p4[3], p5[3], p6[3], p7[3], p8[3];
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
      fGedEditor->GetPad()->cd();
      TView *fView = fGedEditor->GetPad()->GetView();
      Double_t *rmin = fView->GetRmin();
      Double_t *rmax = fView->GetRmax();
      p1[0] = p4[0] = p5[0] = p8[0] = 
            xaxis->GetBinLowEdge((Int_t)((fSliderX->GetMinPosition())+0.5));
      p2[0] = p3[0] = p6[0] = p7[0] = 
            xaxis->GetBinUpEdge((Int_t)((fSliderX->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(fP2oldx, fP3oldx, fP7oldx, fP6oldx);
      PaintBox3D(fP1oldx, fP4oldx, fP8oldx, fP5oldx);
      PaintBox3D(p2, p3, p7, p6);
      PaintBox3D(p1, p4, p8, p5);
      for (Int_t i = 0; i<3; i++){
         fP1oldx[i] = p1[i];
         fP2oldx[i] = p2[i];      
         fP3oldx[i] = p3[i];      
         fP4oldx[i] = p4[i];                              
         fP5oldx[i] = p5[i];
         fP6oldx[i] = p6[i];      
         fP7oldx[i] = p7[i];      
         fP8oldx[i] = p8[i];                              
      }
      fSldXMin->SetNumber(p1[0]);
      fSldXMax->SetNumber(p2[0]);
   } else  if (fDelaydraw->GetState()==kButtonDown && 
               fDim0->GetState()==kButtonDown) {
      fSldXMin->SetNumber(xaxis->GetBinLowEdge((Int_t)((fSliderX->GetMinPosition())+0.5)));
      fSldXMax->SetNumber(xaxis->GetBinUpEdge((Int_t)((fSliderX->GetMaxPosition())+0.5)));
   } else {
      fHist->GetXaxis()->SetRange((Int_t)((fSliderX->GetMinPosition())+0.5),
                                  (Int_t)((fSliderX->GetMaxPosition())+0.5));
      fSldXMin->SetNumber(xaxis->GetBinLowEdge(xaxis->GetFirst()));
      fSldXMax->SetNumber(xaxis->GetBinUpEdge(xaxis->GetLast())); 
      fClient->NeedRedraw(fSliderX,kTRUE);
      Update();   
   }
   fClient->NeedRedraw(fSldXMin,kTRUE);
   fClient->NeedRedraw(fSldXMax,kTRUE);   
}

//______________________________________________________________________________
void TH2Editor::DoSliderXPressed()
{
   // Slot connected to the x axis range slider that initialises
   // the "virtual" box which is drawn in delay draw mode.
   
   if (fAvoidSignal) return;
   TAxis* xaxis = fHist->GetXaxis();
   Float_t ymin,ymax,xleft,xright;
   if (fDelaydraw->GetState()==kButtonDown && fDim->GetState()==kButtonDown) {
      // 2D Plot 
      if (!fGedEditor->GetPad()) return;
      fGedEditor->GetPad()->cd();
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kFALSE);
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      xleft  = xaxis->GetBinLowEdge((Int_t)((fSliderX->GetMinPosition())+0.5));
      xright =  xaxis->GetBinUpEdge((Int_t)((fSliderX->GetMaxPosition())+0.5));
      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) {
      // 3D plot
      if (!fGedEditor->GetPad()) return;
      fGedEditor->GetPad()->cd();
      TView *fView = fGedEditor->GetPad()->GetView();
      Double_t *rmin = fView->GetRmin();
      Double_t *rmax = fView->GetRmax();
      fP1oldx[0] = fP4oldx[0] = fP5oldx[0] = fP8oldx[0] = 
                 xaxis->GetBinLowEdge((Int_t)((fSliderX->GetMinPosition())+0.5));
      fP2oldx[0] = fP3oldx[0] = fP6oldx[0] = fP7oldx[0] = 
                 xaxis->GetBinUpEdge((Int_t)((fSliderX->GetMaxPosition())+0.5));
      fP1oldx[1] = fP2oldx[1] = fP3oldx[1] = fP4oldx[1] = rmin[1];
      fP5oldx[1] = fP6oldx[1] = fP7oldx[1] = fP8oldx[1] = rmax[1];
      fP1oldx[2] = fP2oldx[2] = fP5oldx[2] = fP6oldx[2] = rmin[2]; 
      fP3oldx[2] = fP4oldx[2] = fP7oldx[2] = fP8oldx[2] = rmax[2];
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      PaintBox3D(fP2oldx, fP3oldx, fP7oldx, fP6oldx);
      PaintBox3D(fP1oldx, fP4oldx, fP8oldx, fP5oldx);
   }
}
   
//______________________________________________________________________________
void TH2Editor::DoSliderXReleased()
{
   // Slot connected to the x-axis slider finalizing values after 
   // the slider movement. 

   if (fAvoidSignal) return;
   if (fDelaydraw->GetState()==kButtonDown) {
      fHist->GetXaxis()->SetRange((Int_t)((fSliderX->GetMinPosition())+0.5),
                                  (Int_t)((fSliderX->GetMaxPosition())+0.5));
      fSldXMin->SetNumber(fHist->GetXaxis()->GetBinLowEdge(fHist->GetXaxis()->GetFirst()));
      fSldXMax->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();
      fBinXNumberEntry1->SetIntNumber(last-first+1);
      Update();
   }
}

//______________________________________________________________________________
void TH2Editor::DoXAxisRange()
{
   // Slot connected to the Max/Min number entry fields showing x-axis range.

   TAxis* xaxis = fHist->GetXaxis();
   Int_t nx = xaxis->GetNbins();
   Double_t width = xaxis->GetBinWidth(1);
   if ((fSldXMin->GetNumber()+width/2) < (xaxis->GetBinLowEdge(1))) 
      fSldXMin->SetNumber(xaxis->GetBinLowEdge(1)); 
   if ((fSldXMax->GetNumber()-width/2) > (xaxis->GetBinUpEdge(nx))) 
      fSldXMax->SetNumber(xaxis->GetBinUpEdge(nx)); 
   xaxis->SetRangeUser(fSldXMin->GetNumber()+width/2, 
                       fSldXMax->GetNumber()-width/2);
   Int_t nxbinmin = xaxis->GetFirst();
   Int_t nxbinmax = xaxis->GetLast();
   fSliderX->SetPosition((Double_t)(nxbinmin),(Double_t)(nxbinmax));
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoSliderYMoved()
{
   // Slot connected to the x-slider for redrawing the
   // histogram with the new slider Range (immediately).
   
   if (fAvoidSignal) return;
   TAxis* yaxis = fHist->GetYaxis();
   if (fDelaydraw->GetState()==kButtonDown && fDim->GetState()==kButtonDown) {
      Int_t px1,py1,px2,py2;
      Float_t xmin,xmax,ybottom,ytop;
      ybottom = yaxis->GetBinLowEdge((Int_t)((fSliderY->GetMinPosition())+0.5));
      ytop = yaxis->GetBinUpEdge((Int_t)((fSliderY->GetMaxPosition())+0.5));
      xmin = fGedEditor->GetPad()->GetUxmin();
      xmax = fGedEditor->GetPad()->GetUxmax();
      px1  = fGedEditor->GetPad()->XtoAbsPixel(xmin);
      py1  = fGedEditor->GetPad()->YtoAbsPixel(ybottom);
      px2  = fGedEditor->GetPad()->XtoAbsPixel(xmax);
      py2  = fGedEditor->GetPad()->YtoAbsPixel(ytop);
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE);
      fGedEditor->GetPad()->cd();
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      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);
      fSldYMin->SetNumber(ybottom);
      fSldYMax->SetNumber(ytop);
   } else if (fDelaydraw->GetState()==kButtonDown && 
              fDim0->GetState()==kButtonDown && 
              fCoordsCombo->GetSelected()==kCOORDS_CAR) {
      // 3D plot
      Float_t p1[3], p2[3], p3[3], p4[3], p5[3], p6[3], p7[3], p8[3];
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
      fGedEditor->GetPad()->cd();
      TView *fView = fGedEditor->GetPad()->GetView();
      Double_t *rmin = fView->GetRmin();
      Double_t *rmax = fView->GetRmax();
      p1[0] = p2[0] = p3[0] = p4[0] = rmin[0];
      p5[0] = p6[0] = p7[0] = p8[0] = rmax[0];
      p1[1] = p4[1] = p5[1] = p8[1] = 
            yaxis->GetBinLowEdge((Int_t)((fSliderY->GetMinPosition())+0.5));
      p2[1] = p3[1] = p6[1] = p7[1] = 
            yaxis->GetBinUpEdge((Int_t)((fSliderY->GetMaxPosition())+0.5));
      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(fP2oldy, fP3oldy, fP7oldy, fP6oldy);
      PaintBox3D(fP1oldy, fP4oldy, fP8oldy, fP5oldy);
      PaintBox3D(p2, p3, p7, p6);
      PaintBox3D(p1, p4, p8, p5);
      for (Int_t i = 0; i<3; i++) { 
         fP1oldy[i] = p1[i];
         fP2oldy[i] = p2[i];      
         fP3oldy[i] = p3[i];      
         fP4oldy[i] = p4[i];     
         fP5oldy[i] = p5[i];
         fP6oldy[i] = p6[i];      
         fP7oldy[i] = p7[i];      
         fP8oldy[i] = p8[i];                                
      }   
      fSldYMin->SetNumber(p1[1]);
      fSldYMax->SetNumber(p2[1]);
   } else if (fDelaydraw->GetState()==kButtonDown && 
              fDim0->GetState()==kButtonDown) {
      fSldYMin->SetNumber(yaxis->GetBinLowEdge((Int_t)((fSliderY->GetMinPosition())+0.5)));
      fSldYMax->SetNumber(yaxis->GetBinUpEdge((Int_t)((fSliderY->GetMaxPosition())+0.5)));
   } else {
      yaxis->SetRange((Int_t)((fSliderY->GetMinPosition())+0.5),
                      (Int_t)((fSliderY->GetMaxPosition())+0.5));
      fSldYMin->SetNumber(yaxis->GetBinLowEdge(yaxis->GetFirst()));
      fSldYMax->SetNumber(yaxis->GetBinUpEdge(yaxis->GetLast())); 
      fClient->NeedRedraw(fSliderY,kTRUE);
      Update();   
   }
   fClient->NeedRedraw(fSldYMin,kTRUE);
   fClient->NeedRedraw(fSldYMax,kTRUE);   
}

//______________________________________________________________________________
void TH2Editor::DoSliderYPressed()
{
   // Slot connected to y-axis slider which initialises
   // the "virtual" box which is drawn in delay draw mode.
   
   if (fAvoidSignal) return;
   TAxis* yaxis = fHist->GetYaxis();
   Float_t xmin,xmax,ytop,ybottom;
   if (fDelaydraw->GetState()==kButtonDown && fDim->GetState()==kButtonDown) {
      // 2D plot:
      if (!fGedEditor->GetPad()) return;
      fGedEditor->GetPad()->cd();
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kFALSE);
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      ybottom = yaxis->GetBinLowEdge((Int_t)((fSliderY->GetMinPosition())+0.5));
      ytop =  yaxis->GetBinUpEdge((Int_t)((fSliderY->GetMaxPosition())+0.5));
      xmin  = fGedEditor->GetPad()->GetUxmin();
      xmax  = fGedEditor->GetPad()->GetUxmax();
      fPx1old   = fGedEditor->GetPad()->XtoAbsPixel(xmin);
      fPy1old   = fGedEditor->GetPad()->YtoAbsPixel(ybottom);
      fPx2old   = fGedEditor->GetPad()->XtoAbsPixel(xmax);
      fPy2old   = fGedEditor->GetPad()->YtoAbsPixel(ytop);
      gVirtualX->DrawBox(fPx1old, fPy1old, fPx2old, fPy2old, TVirtualX::kHollow);
   }  else if (fDelaydraw->GetState()==kButtonDown && 
               fDim0->GetState()==kButtonDown && 
               fCoordsCombo->GetSelected()==kCOORDS_CAR) {
      // 3D plot
      if (!fGedEditor->GetPad()) return;
      fGedEditor->GetPad()->cd();
      TView *fView = gPad->GetView();
      Double_t *rmin = fView->GetRmin();
      Double_t *rmax = fView->GetRmax();
      fP1oldy[0] = fP2oldy[0] = fP3oldy[0] = fP4oldy[0] = rmin[0];
      fP5oldy[0] = fP6oldy[0] = fP7oldy[0] = fP8oldy[0] = rmax[0];
      fP1oldy[1] = fP4oldy[1] = fP5oldy[1] = fP8oldy[1] = 
                 yaxis->GetBinLowEdge((Int_t)((fSliderY->GetMinPosition())+0.5));
      fP2oldy[1] = fP3oldy[1] = fP6oldy[1] = fP7oldy[1] = 
                 yaxis->GetBinUpEdge((Int_t)((fSliderY->GetMaxPosition())+0.5));
      fP1oldy[2] = fP2oldy[2] = fP5oldy[2] = fP6oldy[2] = rmin[2]; 
      fP3oldy[2] = fP4oldy[2] = fP7oldy[2] = fP8oldy[2] = rmax[2];
      fGedEditor->GetPad()->GetCanvas()->FeedbackMode(kTRUE); 
      fGedEditor->GetPad()->SetLineWidth(1);
      fGedEditor->GetPad()->SetLineColor(2);
      PaintBox3D(fP2oldy, fP3oldy, fP7oldy, fP6oldy);
      PaintBox3D(fP1oldy, fP4oldy, fP8oldy, fP5oldy);
   }
}
   
//______________________________________________________________________________
void TH2Editor::DoSliderYReleased()
{
   // Slot connected to the y-axis slider finalizing values after 
   // the slider movement. 

   if (fAvoidSignal) return;
   if (fDelaydraw->GetState()==kButtonDown) {
      fHist->GetYaxis()->SetRange((Int_t)((fSliderY->GetMinPosition())+0.5),
                                  (Int_t)((fSliderY->GetMaxPosition())+0.5));
      fSldYMin->SetNumber(fHist->GetYaxis()->GetBinLowEdge(fHist->GetYaxis()->GetFirst()));
      fSldYMax->SetNumber(fHist->GetYaxis()->GetBinUpEdge(fHist->GetYaxis()->GetLast()));
      Update();
   } 

   TTreePlayer *player = (TTreePlayer*)TVirtualTreePlayer::GetCurrentPlayer();   
   if (player) if (player->GetHistogram() == fHist) {
      Int_t last = fHist->GetYaxis()->GetLast();
      Int_t first = fHist->GetYaxis()->GetFirst();
      fBinYNumberEntry1->SetIntNumber(last-first+1);
      Update();
   }
}

//______________________________________________________________________________
void TH2Editor::DoYAxisRange()
{
   // Slot connected to the Max/Min number entry fields showing y-axis range.

   if (fAvoidSignal) return;
   TAxis* yaxis = fHist->GetYaxis();
   Int_t ny = yaxis->GetNbins();
   Double_t width = yaxis->GetBinWidth(1);

   if ((fSldYMin->GetNumber()+width/2) < (yaxis->GetBinLowEdge(1))) 
      fSldYMin->SetNumber(yaxis->GetBinLowEdge(1)); 
   if ((fSldYMax->GetNumber()-width/2) > (yaxis->GetBinUpEdge(ny))) 
      fSldYMax->SetNumber(yaxis->GetBinUpEdge(ny)); 

   yaxis->SetRangeUser(fSldYMin->GetNumber()+width/2, 
                       fSldYMax->GetNumber()-width/2);
   Int_t nybinmin = yaxis -> GetFirst();
   Int_t nybinmax = yaxis -> GetLast();
   fSliderY->SetPosition((Double_t)(nybinmin),(Double_t)(nybinmax));
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoFillColor(Pixel_t color)
{
   // Slot connected to the fill area color.

   if (fAvoidSignal || !fGedEditor->GetPad()) return;
   fGedEditor->GetPad()->cd();
   fGedEditor->GetPad()->SetFrameFillColor(TColor::GetColor(color));
   Update();
}

//______________________________________________________________________________
void TH2Editor::DoFillPattern(Style_t pattern)
{
   // Slot connected to the fill area pattern.

   if (fAvoidSignal || !fGedEditor->GetPad()) return;
   fGedEditor->GetPad()->cd();
   fGedEditor->GetPad()->SetFrameFillStyle(pattern);
   Update();
}

//______________________________________________________________________________
TString TH2Editor::GetHistTypeLabel()
{
   // Return the immediate histogram type (HIST, LEGO1-2, SURF1-5).

   TString s="";
   switch (fTypeCombo->GetSelected()){
      case (-1)         : {s = ""; 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 TH2Editor::GetHistCoordsLabel()
{
   // Return the immediate coordinate system of the histogram. 
   // (POL, CYL, SPH,PSR)

   TString s="";
   switch (fCoordsCombo->GetSelected()){
      case (-1)         : {s = ""; 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 TH2Editor::GetHistContLabel()
{
   // Returns histogram contour option (None,Cont0..5).

   TString s="";
   switch (fContCombo->GetSelected()){
      case (-1)         : {s = ""; break;}
      case (kCONT_NONE) : {s = ""; break;}
      case (kCONT_0)    : {s = "CONT0"; break;}
      case (kCONT_1)    : {s = "CONT1"; break;}
      case (kCONT_2)    : {s = "CONT2"; break;}
      case (kCONT_3)    : {s = "CONT3"; break;}
      case (kCONT_4)    : {s = "CONT4"; break;}
      default:  break;
   }
   return s;
}

//______________________________________________________________________________
TString TH2Editor::GetHistAdditiveLabel()
{
   // Return histogram additive options (Arr,Box,Col,Scat,Col,Text,E,Z,FB,BB).

   TString s="";
   if (fDim->GetState()==kButtonDown) {
      if (fAddArr->GetState()==kButtonDown) s+="ARR";
      if (fAddBox->GetState()==kButtonDown) s+="BOX";
      if (fAddCol->GetState()==kButtonDown) s+="COL";  
      if (fAddScat->GetState()==kButtonDown) s+="SCAT";
      if (fAddText->GetState()==kButtonDown) s+="TEXT";
      if (fAddPalette->GetState()==kButtonDown) s+="Z";
   } else if (fDim0->GetState()==kButtonDown){
      if (fAddPalette1->GetState()==kButtonDown) s+="Z";
      if (fAddError->GetState()==kButtonDown) s+="E";
      if (fAddFB->GetState()==kButtonUp) s+="FB";      
      if (fAddBB->GetState()==kButtonUp) s+="BB";    
   }
   return s;
}

//______________________________________________________________________________
TString TH2Editor::GetCutOptionString()
{
   // Return draw option string related to graphical cut in use.
   
   TString cutopt = " ";
   TString opt = GetDrawOption();
   Int_t scut = opt.First('[');
   if (scut != -1) {
      Int_t ecut = opt.First(']');
      cutopt += opt(scut,ecut);
   }
   return cutopt;
}

//______________________________________________________________________________
TGComboBox* TH2Editor::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* TH2Editor::BuildHistCoordsComboBox(TGFrame* parent, Int_t id)
{
   // Create coordinate system 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* TH2Editor::BuildHistContComboBox(TGFrame* parent, Int_t id)
{
   // Create contour combo box.

   TGComboBox *c = new TGComboBox(parent, id);
   
   c->AddEntry("None" , kCONT_NONE);
   c->AddEntry("Cont0", kCONT_0);
   c->AddEntry("Cont1", kCONT_1);
   c->AddEntry("Cont2", kCONT_2);
   c->AddEntry("Cont3", kCONT_3);
   c->AddEntry("Cont4", kCONT_4);
 
   return c;
}

//______________________________________________________________________________
void TH2Editor::PaintBox3D(Float_t *p1, Float_t *p2,Float_t *p3, Float_t *p4) 
{
   // Paint a square in 3D.

   fGedEditor->GetPad()->PaintLine3D(p1, p2);
   fGedEditor->GetPad()->PaintLine3D(p2, p3);
   fGedEditor->GetPad()->PaintLine3D(p3, p4);
   fGedEditor->GetPad()->PaintLine3D(p4, p1);
}
//______________________________________________________________________________
Int_t* TH2Editor::Dividers(Int_t n)
{
   // Give an array of dividers of n (without the trivial divider n))
   // in the first entry the number of dividers is saved.

   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;
   }
   return div;
}   
   
//______________________________________________________________________________
void TH2Editor::ActivateBaseClassEditors(TClass* /*cl*/)
{
   // Skip TH1Editor in building list of editors.   

   fGedEditor->ActivateEditors(TH1::Class()->GetListOfBases(), kTRUE);
}

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