ROOT logo
// @(#):$Id: TGeoBBoxEditor.cxx 23478 2008-04-23 14:36:55Z brun $
// Author: M.Gheata 

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoBBoxEditor                                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
//Begin_Html
/*
<img src="gif/box_pic.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/box_ed.jpg">
*/
//End_Html

#include "TGeoBBoxEditor.h"
#include "TGeoTabManager.h"
#include "TGeoBBox.h"
#include "TGeoManager.h"
#include "TVirtualGeoPainter.h"
#include "TPad.h"
#include "TView.h"
#include "TGTab.h"
#include "TGComboBox.h"
#include "TGButton.h"
#include "TGTextEntry.h"
#include "TGNumberEntry.h"
#include "TGLabel.h"

ClassImp(TGeoBBoxEditor)

enum ETGeoBBoxWid {
   kBOX_NAME, kBOX_X, kBOX_Y, kBOX_Z,
   kBOX_OX, kBOX_OY, kBOX_OZ,
   kBOX_APPLY, kBOX_CANCEL, kBOX_UNDO
};

//______________________________________________________________________________
TGeoBBoxEditor::TGeoBBoxEditor(const TGWindow *p, Int_t width,
                               Int_t height, UInt_t options, Pixel_t back)
   : TGeoGedFrame(p, width, height, options | kVerticalFrame, back)
{
   // Constructor for volume editor.

   fShape   = 0;
   fDxi = fDyi = fDzi = 0.0;
   memset(fOrigi, 0, 3*sizeof(Double_t));
   fNamei = "";
   fIsModified = kFALSE;
   fIsShapeEditable = kFALSE;

   // TextEntry for shape name
   MakeTitle("Name");
   fShapeName = new TGTextEntry(this, new TGTextBuffer(50), kBOX_NAME);
   fShapeName->Resize(135, fShapeName->GetDefaultHeight());
   fShapeName->SetToolTipText("Enter the box name");
   fShapeName->Associate(this);
   AddFrame(fShapeName, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));

   TGTextEntry *nef;
   MakeTitle("Box half-lengths");
   TGCompositeFrame *compxyz = new TGCompositeFrame(this, 118, 30, kVerticalFrame | kRaisedFrame | kDoubleBorder);
   // Number entry for dx
   TGCompositeFrame *f1 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f1->AddFrame(new TGLabel(f1, "DX"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fBoxDx = new TGNumberEntry(f1, 0., 5, kBOX_X);
   fBoxDx->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fBoxDx->GetNumberEntry();
   nef->SetToolTipText("Enter the box half-lenth in X");
   fBoxDx->Associate(this);
   f1->AddFrame(fBoxDx, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   // Number entry for dy
   TGCompositeFrame *f2 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f2->AddFrame(new TGLabel(f2, "DY"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fBoxDy = new TGNumberEntry(f2, 0., 5, kBOX_Y);
   fBoxDy->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fBoxDy->GetNumberEntry();
   nef->SetToolTipText("Enter the box half-lenth in Y");
   fBoxDy->Associate(this);
   f2->AddFrame(fBoxDy, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f2, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   // Number entry for dx
   TGCompositeFrame *f3 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f3->AddFrame(new TGLabel(f3, "DZ"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fBoxDz = new TGNumberEntry(f3, 0., 5, kBOX_Z);
   fBoxDz->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fBoxDz->GetNumberEntry();
   nef->SetToolTipText("Enter the box half-lenth in Z");
   fBoxDz->Associate(this);
   f3->AddFrame(fBoxDz, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f3, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   compxyz->Resize(150,30);
   AddFrame(compxyz, new TGLayoutHints(kLHintsLeft, 6, 6, 4, 4));
      
   MakeTitle("Box origin");
   compxyz = new TGCompositeFrame(this, 118, 30, kVerticalFrame | kRaisedFrame | kDoubleBorder);
   // Number entry for dx
   f1 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                             kLHintsExpandX | kFixedWidth | kOwnBackground);
   f1->AddFrame(new TGLabel(f1, "OX"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fBoxOx = new TGNumberEntry(f1, 0., 5, kBOX_OX);
   nef = (TGTextEntry*)fBoxOx->GetNumberEntry();
   nef->SetToolTipText("Enter the box origin X coordinate");
   fBoxOx->Associate(this);
   f1->AddFrame(fBoxOx, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   // Number entry for dy
   f2 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                             kLHintsExpandX | kFixedWidth | kOwnBackground);
   f2->AddFrame(new TGLabel(f2, "OY"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fBoxOy = new TGNumberEntry(f2, 0., 5, kBOX_OY);
   nef = (TGTextEntry*)fBoxOy->GetNumberEntry();
   nef->SetToolTipText("Enter the box origin Y coordinate");
   fBoxOy->Associate(this);
   f2->AddFrame(fBoxOy, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f2, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   // Number entry for dx
   f3 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                             kLHintsExpandX | kFixedWidth | kOwnBackground);
   f3->AddFrame(new TGLabel(f3, "OZ"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fBoxOz = new TGNumberEntry(f3, 0., 5, kBOX_OZ);
   nef = (TGTextEntry*)fBoxOz->GetNumberEntry();
   nef->SetToolTipText("Enter the box origin Z coordinate");
   fBoxOz->Associate(this);
   f3->AddFrame(fBoxOz, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f3, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   compxyz->Resize(150,30);
   AddFrame(compxyz, new TGLayoutHints(kLHintsLeft, 6, 6, 4, 4));

   // Delayed draw
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth | kSunkenFrame);
   fDelayed = new TGCheckButton(f1, "Delayed draw");
   f1->AddFrame(fDelayed, new TGLayoutHints(kLHintsLeft , 2, 2, 4, 4));
   AddFrame(f1,  new TGLayoutHints(kLHintsLeft, 6, 6, 4, 4));  

   // Buttons
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   fApply = new TGTextButton(f1, "Apply");
   f1->AddFrame(fApply, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
   fApply->Associate(this);
   fUndo = new TGTextButton(f1, "Undo");
   f1->AddFrame(fUndo, new TGLayoutHints(kLHintsRight , 2, 2, 4, 4));
   fUndo->Associate(this);
   AddFrame(f1,  new TGLayoutHints(kLHintsLeft, 6, 6, 4, 4));  
   fUndo->SetSize(fApply->GetSize());
}

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

   TGFrameElement *el;
   TIter next(GetList());
   while ((el = (TGFrameElement *)next())) {
      if (el->fFrame->IsComposite()) 
         TGeoTabManager::Cleanup((TGCompositeFrame*)el->fFrame);
   }
   Cleanup();   
}

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

   fApply->Connect("Clicked()", "TGeoBBoxEditor", this, "DoApply()");
   fUndo->Connect("Clicked()", "TGeoBBoxEditor", this, "DoUndo()");
   fShapeName->Connect("TextChanged(const char *)", "TGeoBBoxEditor", this, "DoModified()");
   fBoxDx->Connect("ValueSet(Long_t)", "TGeoBBoxEditor", this, "DoDx()");
   fBoxDy->Connect("ValueSet(Long_t)", "TGeoBBoxEditor", this, "DoDy()");
   fBoxDz->Connect("ValueSet(Long_t)", "TGeoBBoxEditor", this, "DoDz()");
   fBoxDx->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoBBoxEditor", this, "DoModified()");
   fBoxDy->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoBBoxEditor", this, "DoModified()");
   fBoxDz->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoBBoxEditor", this, "DoModified()");
   fBoxOx->Connect("ValueSet(Long_t)", "TGeoBBoxEditor", this, "DoOx()");
   fBoxOy->Connect("ValueSet(Long_t)", "TGeoBBoxEditor", this, "DoOy()");
   fBoxOz->Connect("ValueSet(Long_t)", "TGeoBBoxEditor", this, "DoOz()");
   fBoxOx->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoBBoxEditor", this, "DoModified()");
   fBoxOy->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoBBoxEditor", this, "DoModified()");
   fBoxOz->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoBBoxEditor", this, "DoModified()");
   fInit = kFALSE;
}


//______________________________________________________________________________
void TGeoBBoxEditor::SetModel(TObject* obj)
{
   // Update editor for a new selected box.
   if (obj == 0 || (obj->IsA()!=TGeoBBox::Class())) {
      SetActive(kFALSE);
      return;
   }
   fShape = (TGeoBBox*)obj;
   fDxi = fShape->GetDX();
   fDyi = fShape->GetDY();
   fDzi = fShape->GetDZ();
   memcpy(fOrigi, fShape->GetOrigin(), 3*sizeof(Double_t));
   const char *sname = fShape->GetName();
   if (!strcmp(sname, fShape->ClassName())) fShapeName->SetText("-no_name");
   else {
      fShapeName->SetText(sname);
      fNamei = sname;
   }   
   fBoxDx->SetNumber(fDxi);
   fBoxDy->SetNumber(fDyi);
   fBoxDz->SetNumber(fDzi);
   fBoxOx->SetNumber(fOrigi[0]);
   fBoxOy->SetNumber(fOrigi[1]);
   fBoxOz->SetNumber(fOrigi[2]);
   fApply->SetEnabled(kFALSE);
   fUndo->SetEnabled(kFALSE);
   
   if (fInit) ConnectSignals2Slots();
   SetActive();
}

//______________________________________________________________________________
Bool_t TGeoBBoxEditor::IsDelayed() const
{
// Check if shape drawing is delayed.
   return (fDelayed->GetState() == kButtonDown);
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoName()
{
   //Slot for name.
   DoModified();
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoApply()
{
   //Slot for applying current parameters.
   const char *name = fShapeName->GetText();
   if (strcmp(name,fShape->GetName())) fShape->SetName(name);
   Double_t dx = fBoxDx->GetNumber();
   Double_t dy = fBoxDy->GetNumber();
   Double_t dz = fBoxDz->GetNumber();
   Double_t orig[3];
   orig[0] = fBoxOx->GetNumber();
   orig[1] = fBoxOy->GetNumber();
   orig[2] = fBoxOz->GetNumber();
   fShape->SetBoxDimensions(dx, dy, dz, orig);
   fUndo->SetEnabled();
   fApply->SetEnabled(kFALSE);
   if (fPad) {
      if (gGeoManager && gGeoManager->GetPainter() && gGeoManager->GetPainter()->IsPaintingShape()) {
         TView *view = fPad->GetView();
         if (!view) {
            fShape->Draw();
            fPad->GetView()->ShowAxis();
         } else {
            const Double_t *origin = fShape->GetOrigin();
            view->SetRange(origin[0]-fShape->GetDX(), origin[1]-fShape->GetDY(), origin[2]-fShape->GetDZ(),
                           origin[0]+fShape->GetDX(), origin[1]+fShape->GetDY(), origin[2]+fShape->GetDZ());
            Update();
         }                  
      } else Update();
   }   
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoModified()
{
   //Slot for modifying current parameters.
   fApply->SetEnabled();
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoUndo()
{
   // Slot for undoing last operation.
   fBoxDx->SetNumber(fDxi);
   fBoxDy->SetNumber(fDyi);
   fBoxDz->SetNumber(fDzi);
   fBoxOx->SetNumber(fOrigi[0]);
   fBoxOy->SetNumber(fOrigi[1]);
   fBoxOz->SetNumber(fOrigi[2]);
   DoApply();
   fUndo->SetEnabled(kFALSE);
   fApply->SetEnabled(kFALSE);
}
   
//______________________________________________________________________________
void TGeoBBoxEditor::DoDx()
{
   //Slot for Dx modification.
   Double_t dx = fBoxDx->GetNumber();
   if (dx<=0) {
      dx=0.1;
      fBoxDx->SetNumber(dx);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoDy()
{
   //Slot for Dy modification.
   Double_t dy = fBoxDy->GetNumber();
   if (dy<=0) {
      dy=0.1;
      fBoxDy->SetNumber(dy);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoDz()
{
   //Slot for Dz modification.
   Double_t dz = fBoxDz->GetNumber();
   if (dz<=0) {
      dz=0.1;
      fBoxDz->SetNumber(dz);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoOx()
{
   //Slot for Ox modification.
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoOy()
{
   //Slot for Oy modification.
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoBBoxEditor::DoOz()
{
   //Slot for Oz modification.
   DoModified();
   if (!IsDelayed()) DoApply();
}


 TGeoBBoxEditor.cxx:1
 TGeoBBoxEditor.cxx:2
 TGeoBBoxEditor.cxx:3
 TGeoBBoxEditor.cxx:4
 TGeoBBoxEditor.cxx:5
 TGeoBBoxEditor.cxx:6
 TGeoBBoxEditor.cxx:7
 TGeoBBoxEditor.cxx:8
 TGeoBBoxEditor.cxx:9
 TGeoBBoxEditor.cxx:10
 TGeoBBoxEditor.cxx:11
 TGeoBBoxEditor.cxx:12
 TGeoBBoxEditor.cxx:13
 TGeoBBoxEditor.cxx:14
 TGeoBBoxEditor.cxx:15
 TGeoBBoxEditor.cxx:16
 TGeoBBoxEditor.cxx:17
 TGeoBBoxEditor.cxx:18
 TGeoBBoxEditor.cxx:19
 TGeoBBoxEditor.cxx:20
 TGeoBBoxEditor.cxx:21
 TGeoBBoxEditor.cxx:22
 TGeoBBoxEditor.cxx:23
 TGeoBBoxEditor.cxx:24
 TGeoBBoxEditor.cxx:25
 TGeoBBoxEditor.cxx:26
 TGeoBBoxEditor.cxx:27
 TGeoBBoxEditor.cxx:28
 TGeoBBoxEditor.cxx:29
 TGeoBBoxEditor.cxx:30
 TGeoBBoxEditor.cxx:31
 TGeoBBoxEditor.cxx:32
 TGeoBBoxEditor.cxx:33
 TGeoBBoxEditor.cxx:34
 TGeoBBoxEditor.cxx:35
 TGeoBBoxEditor.cxx:36
 TGeoBBoxEditor.cxx:37
 TGeoBBoxEditor.cxx:38
 TGeoBBoxEditor.cxx:39
 TGeoBBoxEditor.cxx:40
 TGeoBBoxEditor.cxx:41
 TGeoBBoxEditor.cxx:42
 TGeoBBoxEditor.cxx:43
 TGeoBBoxEditor.cxx:44
 TGeoBBoxEditor.cxx:45
 TGeoBBoxEditor.cxx:46
 TGeoBBoxEditor.cxx:47
 TGeoBBoxEditor.cxx:48
 TGeoBBoxEditor.cxx:49
 TGeoBBoxEditor.cxx:50
 TGeoBBoxEditor.cxx:51
 TGeoBBoxEditor.cxx:52
 TGeoBBoxEditor.cxx:53
 TGeoBBoxEditor.cxx:54
 TGeoBBoxEditor.cxx:55
 TGeoBBoxEditor.cxx:56
 TGeoBBoxEditor.cxx:57
 TGeoBBoxEditor.cxx:58
 TGeoBBoxEditor.cxx:59
 TGeoBBoxEditor.cxx:60
 TGeoBBoxEditor.cxx:61
 TGeoBBoxEditor.cxx:62
 TGeoBBoxEditor.cxx:63
 TGeoBBoxEditor.cxx:64
 TGeoBBoxEditor.cxx:65
 TGeoBBoxEditor.cxx:66
 TGeoBBoxEditor.cxx:67
 TGeoBBoxEditor.cxx:68
 TGeoBBoxEditor.cxx:69
 TGeoBBoxEditor.cxx:70
 TGeoBBoxEditor.cxx:71
 TGeoBBoxEditor.cxx:72
 TGeoBBoxEditor.cxx:73
 TGeoBBoxEditor.cxx:74
 TGeoBBoxEditor.cxx:75
 TGeoBBoxEditor.cxx:76
 TGeoBBoxEditor.cxx:77
 TGeoBBoxEditor.cxx:78
 TGeoBBoxEditor.cxx:79
 TGeoBBoxEditor.cxx:80
 TGeoBBoxEditor.cxx:81
 TGeoBBoxEditor.cxx:82
 TGeoBBoxEditor.cxx:83
 TGeoBBoxEditor.cxx:84
 TGeoBBoxEditor.cxx:85
 TGeoBBoxEditor.cxx:86
 TGeoBBoxEditor.cxx:87
 TGeoBBoxEditor.cxx:88
 TGeoBBoxEditor.cxx:89
 TGeoBBoxEditor.cxx:90
 TGeoBBoxEditor.cxx:91
 TGeoBBoxEditor.cxx:92
 TGeoBBoxEditor.cxx:93
 TGeoBBoxEditor.cxx:94
 TGeoBBoxEditor.cxx:95
 TGeoBBoxEditor.cxx:96
 TGeoBBoxEditor.cxx:97
 TGeoBBoxEditor.cxx:98
 TGeoBBoxEditor.cxx:99
 TGeoBBoxEditor.cxx:100
 TGeoBBoxEditor.cxx:101
 TGeoBBoxEditor.cxx:102
 TGeoBBoxEditor.cxx:103
 TGeoBBoxEditor.cxx:104
 TGeoBBoxEditor.cxx:105
 TGeoBBoxEditor.cxx:106
 TGeoBBoxEditor.cxx:107
 TGeoBBoxEditor.cxx:108
 TGeoBBoxEditor.cxx:109
 TGeoBBoxEditor.cxx:110
 TGeoBBoxEditor.cxx:111
 TGeoBBoxEditor.cxx:112
 TGeoBBoxEditor.cxx:113
 TGeoBBoxEditor.cxx:114
 TGeoBBoxEditor.cxx:115
 TGeoBBoxEditor.cxx:116
 TGeoBBoxEditor.cxx:117
 TGeoBBoxEditor.cxx:118
 TGeoBBoxEditor.cxx:119
 TGeoBBoxEditor.cxx:120
 TGeoBBoxEditor.cxx:121
 TGeoBBoxEditor.cxx:122
 TGeoBBoxEditor.cxx:123
 TGeoBBoxEditor.cxx:124
 TGeoBBoxEditor.cxx:125
 TGeoBBoxEditor.cxx:126
 TGeoBBoxEditor.cxx:127
 TGeoBBoxEditor.cxx:128
 TGeoBBoxEditor.cxx:129
 TGeoBBoxEditor.cxx:130
 TGeoBBoxEditor.cxx:131
 TGeoBBoxEditor.cxx:132
 TGeoBBoxEditor.cxx:133
 TGeoBBoxEditor.cxx:134
 TGeoBBoxEditor.cxx:135
 TGeoBBoxEditor.cxx:136
 TGeoBBoxEditor.cxx:137
 TGeoBBoxEditor.cxx:138
 TGeoBBoxEditor.cxx:139
 TGeoBBoxEditor.cxx:140
 TGeoBBoxEditor.cxx:141
 TGeoBBoxEditor.cxx:142
 TGeoBBoxEditor.cxx:143
 TGeoBBoxEditor.cxx:144
 TGeoBBoxEditor.cxx:145
 TGeoBBoxEditor.cxx:146
 TGeoBBoxEditor.cxx:147
 TGeoBBoxEditor.cxx:148
 TGeoBBoxEditor.cxx:149
 TGeoBBoxEditor.cxx:150
 TGeoBBoxEditor.cxx:151
 TGeoBBoxEditor.cxx:152
 TGeoBBoxEditor.cxx:153
 TGeoBBoxEditor.cxx:154
 TGeoBBoxEditor.cxx:155
 TGeoBBoxEditor.cxx:156
 TGeoBBoxEditor.cxx:157
 TGeoBBoxEditor.cxx:158
 TGeoBBoxEditor.cxx:159
 TGeoBBoxEditor.cxx:160
 TGeoBBoxEditor.cxx:161
 TGeoBBoxEditor.cxx:162
 TGeoBBoxEditor.cxx:163
 TGeoBBoxEditor.cxx:164
 TGeoBBoxEditor.cxx:165
 TGeoBBoxEditor.cxx:166
 TGeoBBoxEditor.cxx:167
 TGeoBBoxEditor.cxx:168
 TGeoBBoxEditor.cxx:169
 TGeoBBoxEditor.cxx:170
 TGeoBBoxEditor.cxx:171
 TGeoBBoxEditor.cxx:172
 TGeoBBoxEditor.cxx:173
 TGeoBBoxEditor.cxx:174
 TGeoBBoxEditor.cxx:175
 TGeoBBoxEditor.cxx:176
 TGeoBBoxEditor.cxx:177
 TGeoBBoxEditor.cxx:178
 TGeoBBoxEditor.cxx:179
 TGeoBBoxEditor.cxx:180
 TGeoBBoxEditor.cxx:181
 TGeoBBoxEditor.cxx:182
 TGeoBBoxEditor.cxx:183
 TGeoBBoxEditor.cxx:184
 TGeoBBoxEditor.cxx:185
 TGeoBBoxEditor.cxx:186
 TGeoBBoxEditor.cxx:187
 TGeoBBoxEditor.cxx:188
 TGeoBBoxEditor.cxx:189
 TGeoBBoxEditor.cxx:190
 TGeoBBoxEditor.cxx:191
 TGeoBBoxEditor.cxx:192
 TGeoBBoxEditor.cxx:193
 TGeoBBoxEditor.cxx:194
 TGeoBBoxEditor.cxx:195
 TGeoBBoxEditor.cxx:196
 TGeoBBoxEditor.cxx:197
 TGeoBBoxEditor.cxx:198
 TGeoBBoxEditor.cxx:199
 TGeoBBoxEditor.cxx:200
 TGeoBBoxEditor.cxx:201
 TGeoBBoxEditor.cxx:202
 TGeoBBoxEditor.cxx:203
 TGeoBBoxEditor.cxx:204
 TGeoBBoxEditor.cxx:205
 TGeoBBoxEditor.cxx:206
 TGeoBBoxEditor.cxx:207
 TGeoBBoxEditor.cxx:208
 TGeoBBoxEditor.cxx:209
 TGeoBBoxEditor.cxx:210
 TGeoBBoxEditor.cxx:211
 TGeoBBoxEditor.cxx:212
 TGeoBBoxEditor.cxx:213
 TGeoBBoxEditor.cxx:214
 TGeoBBoxEditor.cxx:215
 TGeoBBoxEditor.cxx:216
 TGeoBBoxEditor.cxx:217
 TGeoBBoxEditor.cxx:218
 TGeoBBoxEditor.cxx:219
 TGeoBBoxEditor.cxx:220
 TGeoBBoxEditor.cxx:221
 TGeoBBoxEditor.cxx:222
 TGeoBBoxEditor.cxx:223
 TGeoBBoxEditor.cxx:224
 TGeoBBoxEditor.cxx:225
 TGeoBBoxEditor.cxx:226
 TGeoBBoxEditor.cxx:227
 TGeoBBoxEditor.cxx:228
 TGeoBBoxEditor.cxx:229
 TGeoBBoxEditor.cxx:230
 TGeoBBoxEditor.cxx:231
 TGeoBBoxEditor.cxx:232
 TGeoBBoxEditor.cxx:233
 TGeoBBoxEditor.cxx:234
 TGeoBBoxEditor.cxx:235
 TGeoBBoxEditor.cxx:236
 TGeoBBoxEditor.cxx:237
 TGeoBBoxEditor.cxx:238
 TGeoBBoxEditor.cxx:239
 TGeoBBoxEditor.cxx:240
 TGeoBBoxEditor.cxx:241
 TGeoBBoxEditor.cxx:242
 TGeoBBoxEditor.cxx:243
 TGeoBBoxEditor.cxx:244
 TGeoBBoxEditor.cxx:245
 TGeoBBoxEditor.cxx:246
 TGeoBBoxEditor.cxx:247
 TGeoBBoxEditor.cxx:248
 TGeoBBoxEditor.cxx:249
 TGeoBBoxEditor.cxx:250
 TGeoBBoxEditor.cxx:251
 TGeoBBoxEditor.cxx:252
 TGeoBBoxEditor.cxx:253
 TGeoBBoxEditor.cxx:254
 TGeoBBoxEditor.cxx:255
 TGeoBBoxEditor.cxx:256
 TGeoBBoxEditor.cxx:257
 TGeoBBoxEditor.cxx:258
 TGeoBBoxEditor.cxx:259
 TGeoBBoxEditor.cxx:260
 TGeoBBoxEditor.cxx:261
 TGeoBBoxEditor.cxx:262
 TGeoBBoxEditor.cxx:263
 TGeoBBoxEditor.cxx:264
 TGeoBBoxEditor.cxx:265
 TGeoBBoxEditor.cxx:266
 TGeoBBoxEditor.cxx:267
 TGeoBBoxEditor.cxx:268
 TGeoBBoxEditor.cxx:269
 TGeoBBoxEditor.cxx:270
 TGeoBBoxEditor.cxx:271
 TGeoBBoxEditor.cxx:272
 TGeoBBoxEditor.cxx:273
 TGeoBBoxEditor.cxx:274
 TGeoBBoxEditor.cxx:275
 TGeoBBoxEditor.cxx:276
 TGeoBBoxEditor.cxx:277
 TGeoBBoxEditor.cxx:278
 TGeoBBoxEditor.cxx:279
 TGeoBBoxEditor.cxx:280
 TGeoBBoxEditor.cxx:281
 TGeoBBoxEditor.cxx:282
 TGeoBBoxEditor.cxx:283
 TGeoBBoxEditor.cxx:284
 TGeoBBoxEditor.cxx:285
 TGeoBBoxEditor.cxx:286
 TGeoBBoxEditor.cxx:287
 TGeoBBoxEditor.cxx:288
 TGeoBBoxEditor.cxx:289
 TGeoBBoxEditor.cxx:290
 TGeoBBoxEditor.cxx:291
 TGeoBBoxEditor.cxx:292
 TGeoBBoxEditor.cxx:293
 TGeoBBoxEditor.cxx:294
 TGeoBBoxEditor.cxx:295
 TGeoBBoxEditor.cxx:296
 TGeoBBoxEditor.cxx:297
 TGeoBBoxEditor.cxx:298
 TGeoBBoxEditor.cxx:299
 TGeoBBoxEditor.cxx:300
 TGeoBBoxEditor.cxx:301
 TGeoBBoxEditor.cxx:302
 TGeoBBoxEditor.cxx:303
 TGeoBBoxEditor.cxx:304
 TGeoBBoxEditor.cxx:305
 TGeoBBoxEditor.cxx:306
 TGeoBBoxEditor.cxx:307
 TGeoBBoxEditor.cxx:308
 TGeoBBoxEditor.cxx:309
 TGeoBBoxEditor.cxx:310
 TGeoBBoxEditor.cxx:311
 TGeoBBoxEditor.cxx:312
 TGeoBBoxEditor.cxx:313
 TGeoBBoxEditor.cxx:314
 TGeoBBoxEditor.cxx:315
 TGeoBBoxEditor.cxx:316
 TGeoBBoxEditor.cxx:317
 TGeoBBoxEditor.cxx:318
 TGeoBBoxEditor.cxx:319
 TGeoBBoxEditor.cxx:320
 TGeoBBoxEditor.cxx:321
 TGeoBBoxEditor.cxx:322
 TGeoBBoxEditor.cxx:323
 TGeoBBoxEditor.cxx:324
 TGeoBBoxEditor.cxx:325
 TGeoBBoxEditor.cxx:326
 TGeoBBoxEditor.cxx:327
 TGeoBBoxEditor.cxx:328
 TGeoBBoxEditor.cxx:329
 TGeoBBoxEditor.cxx:330
 TGeoBBoxEditor.cxx:331
 TGeoBBoxEditor.cxx:332
 TGeoBBoxEditor.cxx:333
 TGeoBBoxEditor.cxx:334
 TGeoBBoxEditor.cxx:335
 TGeoBBoxEditor.cxx:336
 TGeoBBoxEditor.cxx:337
 TGeoBBoxEditor.cxx:338
 TGeoBBoxEditor.cxx:339
 TGeoBBoxEditor.cxx:340
 TGeoBBoxEditor.cxx:341
 TGeoBBoxEditor.cxx:342
 TGeoBBoxEditor.cxx:343
 TGeoBBoxEditor.cxx:344
 TGeoBBoxEditor.cxx:345
 TGeoBBoxEditor.cxx:346
 TGeoBBoxEditor.cxx:347
 TGeoBBoxEditor.cxx:348
 TGeoBBoxEditor.cxx:349
 TGeoBBoxEditor.cxx:350
 TGeoBBoxEditor.cxx:351
 TGeoBBoxEditor.cxx:352
 TGeoBBoxEditor.cxx:353
 TGeoBBoxEditor.cxx:354
 TGeoBBoxEditor.cxx:355
 TGeoBBoxEditor.cxx:356
 TGeoBBoxEditor.cxx:357
 TGeoBBoxEditor.cxx:358
 TGeoBBoxEditor.cxx:359
 TGeoBBoxEditor.cxx:360
 TGeoBBoxEditor.cxx:361
 TGeoBBoxEditor.cxx:362
 TGeoBBoxEditor.cxx:363
 TGeoBBoxEditor.cxx:364
 TGeoBBoxEditor.cxx:365
 TGeoBBoxEditor.cxx:366
 TGeoBBoxEditor.cxx:367
 TGeoBBoxEditor.cxx:368
 TGeoBBoxEditor.cxx:369
 TGeoBBoxEditor.cxx:370
 TGeoBBoxEditor.cxx:371