ROOT logo
// @(#):$Id: TGeoVolumeEditor.cxx 21494 2007-12-19 15:50:40Z 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.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoVolumeEditor                                                    //
//
//////////////////////////////////////////////////////////////////////////
/* Editor for geometry volumes and assemblies of volumes. Besides the volume
   name and line attributes, a TGeoVolume has the following editable categories 
   splitted vertically by a shutter:
   - Properties: one can edit the shape and medium components from here. It is
   also possible to change the existing ones.
   - Daughters: the main category allowing defining, editing, removing or 
   positioning daughter volumes inside the current edited volume. To add a 
   daughter, one needs to select first a volume and a matrix. Currently no check
   is performed if the daughter volume creates an extrusion (illegal for tracking).
   To remove or change the position of an existing daughter, one should simply
   select the desired daughter from the combo box with the existing ones, then 
   simply click the appropriate button.
   - Visualization: One can set the visibility of the volume and of its daughters,
   set the visibility depth and the view type. Selecting "All" will draw the 
   volume and all visible daughters down to the selected level starting from the
   edited volume. Selecting "Leaves" will draw just the deepest daughters within
   the selected visibility level, without displaying the containers, while "Only"
   will just draw the edited volume.
   - Division: The category becomes active only if there are no daughters of the 
   edited volume added by normal positioning (e.g. from <Daughters> category). The
   minimum allowed starting value for the selected division axis is automatically 
   selected, while the dslicing step is set to 0 - meaning that only the number
   of slices matter.
*/

#include "TGeoVolumeEditor.h"
#include "TGeoVolume.h"
#include "TGeoPatternFinder.h"
#include "TGeoManager.h"
#include "TGeoMatrix.h"
#include "TVirtualPad.h"
#include "TBaseClass.h"
#include "TGTab.h"
#include "TGComboBox.h"
#include "TGButton.h"
#include "TGButtonGroup.h"
#include "TGTextEntry.h"
#include "TGNumberEntry.h"
#include "TGLabel.h"
#include "TGShutter.h"
#include "TG3DLine.h"
#include "TGeoTabManager.h"
#include "TGedEditor.h"

ClassImp(TGeoVolumeEditor)

enum ETGeoVolumeWid {
   kVOL_NAME, kVOL_TITLE, kVOL_SHAPE_SELECT, kVOL_MEDIA_SELECT, kVOL_NODE_SELECT,
   kVOL_VOL_SELECT, kVOL_MATRIX_SELECT, kVOL_EDIT_SHAPE, kVOL_EDIT_MEDIUM, kVOL_NODEID,
   kVOL_APPLY, kVOL_CANCEL, kVOL_UNDO, kVOL_VISLEVEL, kVOL_DIVSTART, kVOL_DIVEND,
   kVOL_DIVSTEP, kVOL_DIVN, kCAT_GENERAL, kCAT_DAUGHTERS, kCAT_DIVISION, kCAT_VIS,
   kDIV_NAME
};

//______________________________________________________________________________
TGeoVolumeEditor::TGeoVolumeEditor(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.
   fGeometry = 0;
   fVolume   = 0;
   
   fIsModified = kFALSE;
   fIsAssembly = kFALSE;
   fIsDivided = kFALSE;
   
   // TGShutter for categories
   fCategories = new TGShutter(this, kSunkenFrame | kFixedHeight);
   TGCompositeFrame *container, *f1;
   Pixel_t color;
   TGLabel *label;

   // General settings
   TGShutterItem *si = new TGShutterItem(fCategories, new TGHotString("Properties"),kCAT_GENERAL);
   container = (TGCompositeFrame*)si->GetContainer();
   container->SetBackgroundColor(GetDefaultFrameBackground());
   fCategories->AddItem(si);
   
   // TextEntry for volume name
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Volume name"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f1->AddFrame(new TGHorizontal3DLine(f1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   gClient->GetColorByName("#ff0000", color);
   label->SetTextColor(color);
   container->AddFrame(f1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
   fVolumeName = new TGTextEntry(container, new TGTextBuffer(50), kVOL_NAME);
   fVolumeName->Resize(135, fVolumeName->GetDefaultHeight());
   fVolumeName->SetToolTipText("Enter the volume name");
   container->AddFrame(fVolumeName, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));

   // Current shape
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Shape and medium"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f1->AddFrame(new TGHorizontal3DLine(f1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   gClient->GetColorByName("#ff0000", color);
   label->SetTextColor(color);
   container->AddFrame(f1, new TGLayoutHints(kLHintsTop, 0, 0, 10, 0));
   f1 = new TGCompositeFrame(container, 155, 30, kHorizontalFrame | kFixedWidth);
   fSelectedShape = 0;
   fLSelShape = new TGLabel(f1, "Select shape");
   gClient->GetColorByName("#0000ff", color);
   fLSelShape->SetTextColor(color);
   fLSelShape->ChangeOptions(kSunkenFrame | kDoubleBorder);
   f1->AddFrame(fLSelShape, new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 2, 2));
   fBSelShape = new TGPictureButton(f1, fClient->GetPicture("rootdb_t.xpm"), kVOL_SHAPE_SELECT);
   fBSelShape->SetToolTipText("Replace with one of the existing shapes");
   fBSelShape->Associate(this);
   f1->AddFrame(fBSelShape, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));
   fEditShape = new TGTextButton(f1, "Edit");
   f1->AddFrame(fEditShape, new TGLayoutHints(kLHintsRight, 1, 1, 2, 2));
   fEditShape->SetToolTipText("Edit selected shape");
   fEditShape->Associate(this);   
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));
   
   // Current medium
   f1 = new TGCompositeFrame(container, 155, 30, kHorizontalFrame | kFixedWidth);
   fSelectedMedium = 0;
   fLSelMedium = new TGLabel(f1, "Select medium");
   gClient->GetColorByName("#0000ff", color);
   fLSelMedium->SetTextColor(color);
   fLSelMedium->ChangeOptions(kSunkenFrame | kDoubleBorder);
   f1->AddFrame(fLSelMedium, new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 2, 2));
   fBSelMedium = new TGPictureButton(f1, fClient->GetPicture("rootdb_t.xpm"), kVOL_MEDIA_SELECT);
   fBSelMedium->SetToolTipText("Replace with one of the existing media");
   fBSelMedium->Associate(this);
   f1->AddFrame(fBSelMedium, new TGLayoutHints(kLHintsLeft, 1, 1, 2, 2));
   fEditMedium = new TGTextButton(f1, "Edit");
   f1->AddFrame(fEditMedium, new TGLayoutHints(kLHintsRight, 1, 1, 2, 2));
   fEditMedium->SetToolTipText("Edit selected medium");
   fEditMedium->Associate(this);
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));
   
   // List of daughters
   si = new TGShutterItem(fCategories, new TGHotString("Daughters"),kCAT_DAUGHTERS);
   container = (TGCompositeFrame*)si->GetContainer();
   container->SetBackgroundColor(GetDefaultFrameBackground());
   fCategories->AddItem(si);

   // Existing daughters
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Existing daughters"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f1->AddFrame(new TGHorizontal3DLine(f1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   gClient->GetColorByName("#ff0000", color);
   label->SetTextColor(color);
   container->AddFrame(f1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));

   f1 = new TGCompositeFrame(container, 155, 30, kHorizontalFrame | kRaisedFrame);
   fNodeList = new TGComboBox(f1, kVOL_NODE_SELECT);
   fNodeList->Resize(100, fVolumeName->GetDefaultHeight());
   fNodeList->Associate(this);
   f1->AddFrame(fNodeList, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 2));
   // Buttons for editing matrix and removing node
   f1 = new TGCompositeFrame(container, 155, 30, kHorizontalFrame | kSunkenFrame | kFixedWidth);
   fEditMatrix = new TGTextButton(f1, "Position");
   f1->AddFrame(fEditMatrix, new TGLayoutHints(kLHintsLeft, 2, 2, 2, 2));
   fEditMatrix->SetToolTipText("Edit the position of selected node");
   fEditMatrix->Associate(this);
   fRemoveNode = new TGTextButton(f1, "Remove");
   f1->AddFrame(fRemoveNode, new TGLayoutHints(kLHintsRight, 2, 2, 2, 2));
   fRemoveNode->SetToolTipText("Remove the selected node. Cannot undo !)");
   fRemoveNode->Associate(this);
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 2));

   // Adding daughters
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Add daughter"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f1->AddFrame(new TGHorizontal3DLine(f1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   gClient->GetColorByName("#ff0000", color);
   label->SetTextColor(color);
   container->AddFrame(f1, new TGLayoutHints(kLHintsTop, 0, 0, 10, 0));

   // Select from existing volumes
   f1 = new TGCompositeFrame(container, 155, 30, kHorizontalFrame | kFixedWidth);
   fSelectedVolume = 0;
   fLSelVolume = new TGLabel(f1, "Select volume");
   gClient->GetColorByName("#0000ff", color);
   fLSelVolume->SetTextColor(color);
   fLSelVolume->ChangeOptions(kSunkenFrame | kDoubleBorder);
   f1->AddFrame(fLSelVolume, new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 2, 2));
   fBSelVolume = new TGPictureButton(f1, fClient->GetPicture("rootdb_t.xpm"), kVOL_VOL_SELECT);
   fBSelVolume->SetToolTipText("Select one of the existing volumes");
   fBSelVolume->Associate(this);
   f1->AddFrame(fBSelVolume, new TGLayoutHints(kLHintsRight, 1, 1, 2, 2));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 2));

   // Matrix selection for nodes 
   f1 = new TGCompositeFrame(container, 155, 30, kHorizontalFrame | kFixedWidth);
   fSelectedMatrix = 0;
   fLSelMatrix = new TGLabel(f1, "Select matrix");
   gClient->GetColorByName("#0000ff", color);
   fLSelMatrix->SetTextColor(color);
   fLSelMatrix->ChangeOptions(kSunkenFrame | kDoubleBorder);
   f1->AddFrame(fLSelMatrix, new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsExpandY, 1, 1, 2, 2));
   fBSelMatrix = new TGPictureButton(f1, fClient->GetPicture("rootdb_t.xpm"), kVOL_MATRIX_SELECT);
   fBSelMatrix->SetToolTipText("Select one of the existing matrices");
   fBSelMatrix->Associate(this);
   f1->AddFrame(fBSelMatrix, new TGLayoutHints(kLHintsRight, 1, 1, 2, 2));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 2));   

   // Copy number
   f1 = new TGCompositeFrame(container, 155, 30, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Node id"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fCopyNumber = new TGNumberEntry(f1, 0., 5, kVOL_NODEID);
   fCopyNumber->SetNumStyle(TGNumberFormat::kNESInteger);
   fCopyNumber->SetNumAttr(TGNumberFormat::kNEANonNegative);
   fCopyNumber->Resize(20,fCopyNumber->GetDefaultHeight()); 
   TGTextEntry *nef = (TGTextEntry*)fCopyNumber->GetNumberEntry();
   nef->SetToolTipText("Enter node copy number");
   fCopyNumber->Associate(this);
   f1->AddFrame(fCopyNumber, new TGLayoutHints(kLHintsLeft, 2, 2, 2, 2));
   fAddNode = new TGTextButton(f1, "Add");
   f1->AddFrame(fAddNode, new TGLayoutHints(kLHintsRight, 2, 2, 2, 2));
   fAddNode->Associate(this);
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 2));   
   
   // Visualization
   si = new TGShutterItem(fCategories, new TGHotString("Visualization"),kCAT_VIS);
   container = (TGCompositeFrame*)si->GetContainer();
   container->SetBackgroundColor(GetDefaultFrameBackground());
   fCategories->AddItem(si);

   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Visibility"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f1->AddFrame(new TGHorizontal3DLine(f1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
//   gClient->GetColorByName("#ff0000", color);
//   label->SetTextColor(color);
   container->AddFrame(f1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));

   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth | kSunkenFrame | kDoubleBorder);
   fBVis[0] = new TGCheckButton(f1, "Volume");
   fBVis[1] = new TGCheckButton(f1, "Nodes");
   f1->AddFrame(fBVis[0], new TGLayoutHints(kLHintsLeft, 2, 2, 0 ,0));
   f1->AddFrame(fBVis[1], new TGLayoutHints(kLHintsRight, 2, 2, 0 ,0));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));

   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Depth"), new TGLayoutHints(kLHintsLeft, 2, 2, 4, 0));
//   gClient->GetColorByName("#0000ff", color);
//   label->SetTextColor(color);
   fEVisLevel = new TGNumberEntry(f1, 0, 5, kVOL_VISLEVEL);
   fEVisLevel->SetNumStyle(TGNumberFormat::kNESInteger);
   fEVisLevel->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEVisLevel->Resize(40,fEVisLevel->GetDefaultHeight()); 
   nef = (TGTextEntry*)fEVisLevel->GetNumberEntry();
   nef->SetToolTipText("Set visibility level here");
   fEVisLevel->SetNumber(3);
   fEVisLevel->Associate(this);
   f1->AddFrame(fEVisLevel, new TGLayoutHints(kLHintsLeft, 2, 2, 0 ,0));
   fBAuto = new TGCheckButton(f1,"Auto");
   f1->AddFrame(fBAuto, new TGLayoutHints(kLHintsRight, 0, 0, 2, 0));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));

   TString stitle = "View";
   TGButtonGroup *bg = new TGVButtonGroup(container, stitle);
   fBView[0] = new TGRadioButton(bg, "All");
   fBView[1] = new TGRadioButton(bg, "Leaves");
   fBView[2] = new TGRadioButton(bg, "Only");
   bg->SetRadioButtonExclusive();
   bg->Show();
   container->AddFrame(bg, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));

   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth | kSunkenFrame | kDoubleBorder);
   fBRaytrace = new TGCheckButton(f1,"Raytrace");
   f1->AddFrame(fBRaytrace, new TGLayoutHints(kLHintsLeft, 2, 2, 2, 2));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
     
   // Division
   si = new TGShutterItem(fCategories, new TGHotString("Division"),kCAT_DIVISION);
   container = (TGCompositeFrame*)si->GetContainer();
   container->SetBackgroundColor(GetDefaultFrameBackground());
   fCategories->AddItem(si);   
   // TextEntry for division name
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Division name"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f1->AddFrame(new TGHorizontal3DLine(f1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
   gClient->GetColorByName("#ff0000", color);
   label->SetTextColor(color);
   container->AddFrame(f1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
   fDivName = new TGTextEntry(container, new TGTextBuffer(50), kDIV_NAME);
   fDivName->Resize(135, fVolumeName->GetDefaultHeight());
   fDivName->SetToolTipText("Enter the volume name");
   container->AddFrame(fDivName, new TGLayoutHints(kLHintsLeft, 3, 1, 2, 5));
   // Axis selection
   stitle = "Axis";
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   bg = new TGVButtonGroup(f1, stitle);
   fBDiv[0] = new TGRadioButton(bg, "Axis 1");
   fBDiv[1] = new TGRadioButton(bg, "Axis 2");
   fBDiv[2] = new TGRadioButton(bg, "Axis 3");
   bg->Insert(fBDiv[0]);
   bg->Insert(fBDiv[1]);
   bg->Insert(fBDiv[2]);
   bg->SetRadioButtonExclusive();
   f1->AddFrame(bg, new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));
   fApplyDiv = new TGTextButton(f1, "Apply");
   fApplyDiv->SetToolTipText("Apply new division settings");
   f1->AddFrame(fApplyDiv, new TGLayoutHints(kLHintsRight, 0, 2, 30, 0));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   // Division range
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Division parameters"), new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
   f1->AddFrame(new TGHorizontal3DLine(f1), new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
//   gClient->GetColorByName("#ff0000", color);
//   label->SetTextColor(color);
   container->AddFrame(f1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));
   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "From"), new TGLayoutHints(kLHintsLeft, 2, 2, 4, 0));
//   gClient->GetColorByName("#0000ff", color);
//   label->SetTextColor(color);
   fEDivFrom = new TGNumberEntry(f1, 0, 5, kVOL_DIVSTART);
//   fEDivFrom->SetNumStyle(TGNumberFormat::kNESInteger);
//   fEDivFrom->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEDivFrom->Resize(100,fEDivFrom->GetDefaultHeight()); 
   nef = (TGTextEntry*)fEDivFrom->GetNumberEntry();
   nef->SetToolTipText("Set start value");
   fEDivFrom->Associate(this);
   f1->AddFrame(fEDivFrom, new TGLayoutHints(kLHintsRight, 2, 2, 0 ,0));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));

   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Step"), new TGLayoutHints(kLHintsLeft, 2, 2, 4, 0));
//   gClient->GetColorByName("#0000ff", color);
//   label->SetTextColor(color);
   fEDivStep = new TGNumberEntry(f1, 0, 5, kVOL_DIVSTEP);
//   fEDivFrom->SetNumStyle(TGNumberFormat::kNESInteger);
   fEDivStep->SetNumAttr(TGNumberFormat::kNEANonNegative);
   fEDivStep->Resize(100,fEDivStep->GetDefaultHeight()); 
   nef = (TGTextEntry*)fEDivStep->GetNumberEntry();
   nef->SetToolTipText("Set division step");
   fEDivStep->Associate(this);
   f1->AddFrame(fEDivStep, new TGLayoutHints(kLHintsRight, 2, 2, 0 ,0));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));

   f1 = new TGCompositeFrame(container, 155, 10, kHorizontalFrame |kFixedWidth);
   f1->AddFrame(label = new TGLabel(f1, "Nslices"), new TGLayoutHints(kLHintsLeft, 2, 2, 4, 0));
//   gClient->GetColorByName("#0000ff", color);
//   label->SetTextColor(color);
   fEDivN = new TGNumberEntry(f1, 0, 5, kVOL_DIVN);
   fEDivN->SetNumStyle(TGNumberFormat::kNESInteger);
   fEDivN->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEDivN->Resize(100,fEDivN->GetDefaultHeight()); 
   nef = (TGTextEntry*)fEDivN->GetNumberEntry();
   nef->SetToolTipText("Set number of slices");
   fEDivN->Associate(this);
   f1->AddFrame(fEDivN, new TGLayoutHints(kLHintsRight, 2, 2, 0 ,0));
   container->AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));


   fCategories->Resize(163,340);
   AddFrame(fCategories, new TGLayoutHints(kLHintsLeft, 0, 0, 4, 4));
}

//______________________________________________________________________________
TGeoVolumeEditor::~TGeoVolumeEditor()
{
// Destructor
   TGCompositeFrame *cont;
   cont = (TGCompositeFrame*)fCategories->GetItem("Properties")->GetContainer();
   TGeoTabManager::Cleanup(cont);
   fCategories->GetItem("Properties")->SetCleanup(0);
   cont = (TGCompositeFrame*)fCategories->GetItem("Daughters")->GetContainer();
   TGeoTabManager::Cleanup(cont);
   fCategories->GetItem("Daughters")->SetCleanup(0);
   cont = (TGCompositeFrame*)fCategories->GetItem("Visualization")->GetContainer();
   TGeoTabManager::Cleanup(cont);
   fCategories->GetItem("Visualization")->SetCleanup(0);
   cont = (TGCompositeFrame*)fCategories->GetItem("Division")->GetContainer();
   TGeoTabManager::Cleanup(cont);
   fCategories->GetItem("Division")->SetCleanup(0);

   delete fBView[0]; delete fBView[1]; delete fBView[2];
   delete fBDiv [0]; delete fBDiv [1]; delete fBDiv [2];
   Cleanup();
}

//______________________________________________________________________________
void TGeoVolumeEditor::ConnectSignals2Slots()
{
   // Connect signals to slots.
   fVolumeName->Connect("TextChanged(const char *)", "TGeoVolumeEditor", this, "DoVolumeName()");
   fDivName->Connect("TextChanged(const char *)", "TGeoVolumeEditor", this, "DoDivName()");
   fEditMedium->Connect("Clicked()", "TGeoVolumeEditor", this, "DoEditMedium()");
   fEditShape->Connect("Clicked()", "TGeoVolumeEditor", this, "DoEditShape()");
   fEditMatrix->Connect("Clicked()", "TGeoVolumeEditor", this, "DoEditMatrix()");
   fAddNode->Connect("Clicked()", "TGeoVolumeEditor", this, "DoAddNode()");
   fRemoveNode->Connect("Clicked()", "TGeoVolumeEditor", this, "DoRemoveNode()");
   fBSelShape->Connect("Clicked()", "TGeoVolumeEditor", this, "DoSelectShape()");
   fBSelMedium->Connect("Clicked()", "TGeoVolumeEditor", this, "DoSelectMedium()");
   fBSelVolume->Connect("Clicked()", "TGeoVolumeEditor", this, "DoSelectVolume()");
   fBSelMatrix->Connect("Clicked()", "TGeoVolumeEditor", this, "DoSelectMatrix()");
   fBVis[0]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoVisVolume()");
   fBVis[1]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoVisDaughters()");
   fBAuto->Connect("Clicked()", "TGeoVolumeEditor", this, "DoVisAuto()");
   fEVisLevel->Connect("ValueSet(Long_t)", "TGeoVolumeEditor", this, "DoVisLevel()"); 
   fBView[0]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoViewAll()");
   fBView[1]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoViewLeaves()");
   fBView[2]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoViewOnly()");
   fBDiv[0]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoDivSelAxis()");
   fBDiv[1]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoDivSelAxis()");
   fBDiv[2]->Connect("Clicked()", "TGeoVolumeEditor", this, "DoDivSelAxis()");
   fEDivFrom->Connect("ValueSet(Long_t)", "TGeoVolumeEditor", this, "DoDivFromTo()"); 
   fEDivStep->Connect("ValueSet(Long_t)", "TGeoVolumeEditor", this, "DoDivStep()"); 
   fEDivN->Connect("ValueSet(Long_t)", "TGeoVolumeEditor", this, "DoDivN()"); 
   fBRaytrace->Connect("Clicked()", "TGeoVolumeEditor", this, "DoRaytrace()");
   fApplyDiv->Connect("Clicked()", "TGeoVolumeEditor", this, "DoApplyDiv()");
}

//______________________________________________________________________________
void TGeoVolumeEditor::SetModel(TObject* obj)
{
   // Connect to the picked volume.
   if (obj == 0 || !obj->InheritsFrom(TGeoVolume::Class())) {
      SetActive(kFALSE);
      return;                 
   } 
   fVolume = (TGeoVolume*)obj;
   fGeometry = fVolume->GetGeoManager();
   const char *vname = fVolume->GetName();
   fVolumeName->SetText(vname);
   fSelectedShape = fVolume->GetShape();
   if (fSelectedShape) fLSelShape->SetText(fSelectedShape->GetName());
   fSelectedMedium = fVolume->GetMedium();
   if (fSelectedMedium) fLSelMedium->SetText(fSelectedMedium->GetName());
   
   fNodeList->RemoveEntries(0, fNodeList->GetNumberOfEntries()+1);
   TIter next2(fVolume->GetNodes());
   TGeoNode *node;
   Int_t icrt = 0;
   while ((node=(TGeoNode*)next2())) 
      fNodeList->AddEntry(node->GetName(), icrt++);
   fNodeList->Select(0);   
   fCopyNumber->SetNumber(fVolume->GetNdaughters()+1);
   if (!fVolume->GetNdaughters() || fVolume->GetFinder()) {
      fEditMatrix->SetEnabled(kFALSE);
      fRemoveNode->SetEnabled(kFALSE);
   } else {
      fEditMatrix->SetEnabled(kTRUE);
      fRemoveNode->SetEnabled(kTRUE);
   }      
   if (!fSelectedVolume) fAddNode->SetEnabled(kFALSE);   
   if (fVolume->IsAssembly()) {
      fBSelShape->SetEnabled(kFALSE);
      fBSelMedium->SetEnabled(kFALSE);
   }   
   fBVis[0]->SetState((fVolume->IsVisible())?kButtonDown:kButtonUp);
   fBVis[1]->SetState((fVolume->IsVisibleDaughters())?kButtonDown:kButtonUp);
   fBView[0]->SetState((fVolume->IsVisContainers())?kButtonDown:kButtonUp, kTRUE);
   fBView[1]->SetState((fVolume->IsVisLeaves())?kButtonDown:kButtonUp, kTRUE);
   fBView[2]->SetState((fVolume->IsVisOnly())?kButtonDown:kButtonUp, kTRUE);
   fBRaytrace->SetState((fVolume->IsRaytracing())?kButtonDown:kButtonUp);
   fBAuto->SetState((fGeometry->GetVisLevel())?kButtonUp:kButtonDown);
   fEVisLevel->SetNumber(fGeometry->GetVisLevel());
   fApplyDiv->SetEnabled(kFALSE);   
   if ((!fVolume->GetFinder() && fVolume->GetNdaughters()) || fVolume->IsAssembly()) {
      fCategories->GetItem("Division")->GetButton()->SetEnabled(kFALSE);
   } else {
      fCategories->GetItem("Division")->GetButton()->SetEnabled(kTRUE);
      Double_t start=0., step=0., end = 0.;
      Int_t ndiv = 2, iaxis = 1;
      TString axis_name;
      for (Int_t i=0; i<3; i++) {
         axis_name = fVolume->GetShape()->GetAxisName(i+1);
         fBDiv[i]->SetText(axis_name);
      }   
         
      if (fVolume->GetFinder()) {
         fDivName->SetText(fVolume->GetNode(0)->GetVolume()->GetName());
         iaxis = fVolume->GetFinder()->GetDivAxis();
         start = fVolume->GetFinder()->GetStart();
         step = fVolume->GetFinder()->GetStep();
         ndiv = fVolume->GetFinder()->GetNdiv();
      } else {            
         fDivName->SetText("Enter name");
         fSelectedShape->GetAxisRange(iaxis,start,end);
         step = 0;
      }
      fBDiv[iaxis-1]->SetState(kButtonDown, kTRUE);
      fEDivFrom->SetNumber(start);
      fEDivStep->SetNumber(step);
      fEDivN->SetNumber(ndiv);   
   }   
   
   if (fInit) ConnectSignals2Slots();
   SetActive();
   if (GetParent()==fTabMgr->GetVolumeTab()) fTab->Layout();
}

//______________________________________________________________________________
void TGeoVolumeEditor::ActivateBaseClassEditors(TClass* cl)
{
   // Add editors to fGedFrame and exclude TLineEditor.

   fGedEditor->ExcludeClassEditor(TAttFill::Class());
   TGedFrame::ActivateBaseClassEditors(cl);
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoVolumeName()
{
// Modify volume name.
   fVolume->SetName(fVolumeName->GetText());
}
   
//______________________________________________________________________________
void TGeoVolumeEditor::DoSelectShape()
{
// Select a new shape.
   TGeoShape *shape = fSelectedShape;
   new TGeoShapeDialog(fBSelShape, gClient->GetRoot(), 200,300);  
   fSelectedShape = (TGeoShape*)TGeoShapeDialog::GetSelected();
   if (fSelectedShape) fLSelShape->SetText(fSelectedShape->GetName());
   else fSelectedShape = shape;
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoSelectMedium()
{
// Select a new medium.
   TGeoMedium *med = fSelectedMedium;
   new TGeoMediumDialog(fBSelMedium, gClient->GetRoot(), 200,300);  
   fSelectedMedium = (TGeoMedium*)TGeoMediumDialog::GetSelected();
   if (fSelectedMedium) fLSelMedium->SetText(fSelectedMedium->GetName());
   else fSelectedMedium = med;
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoSelectMatrix()
{
// Select a matrix for positioning.
   TGeoMatrix *matrix = fSelectedMatrix;
   new TGeoMatrixDialog(fBSelMatrix, gClient->GetRoot(), 200,300);  
   fSelectedMatrix = (TGeoMatrix*)TGeoMatrixDialog::GetSelected();
   if (fSelectedMatrix) fLSelMatrix->SetText(fSelectedMatrix->GetName());
   else fSelectedMatrix = matrix;
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoSelectVolume()
{
// Select a daughter volume.
   TGeoVolume *vol = fSelectedVolume;
   new TGeoVolumeDialog(fBSelVolume, gClient->GetRoot(), 200,300);  
   fSelectedVolume = (TGeoVolume*)TGeoVolumeDialog::GetSelected();
   if (fSelectedVolume) fLSelVolume->SetText(fSelectedVolume->GetName());
   else fSelectedVolume = vol;
   if (fSelectedVolume)
      fAddNode->SetEnabled(kTRUE);
}


//______________________________________________________________________________
void TGeoVolumeEditor::DoEditShape()
{
// Edit the shape of the volume.
   fTabMgr->GetShapeEditor(fVolume->GetShape());
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoEditMedium()
{
// Edit the medium of the volume.
   fTabMgr->GetMediumEditor(fVolume->GetMedium());
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoEditMatrix()
{
// Edit the position of the selected node.
   if (!fVolume->GetNdaughters()) return;
   Int_t i = fNodeList->GetSelected();
   if (i<0) return;
   fTabMgr->GetMatrixEditor(fVolume->GetNode(i)->GetMatrix());
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoAddNode()
{
// Add a daughter.
   if (!fSelectedVolume || fVolume->GetFinder()) return;
   Int_t icopy = fCopyNumber->GetIntNumber();
   fVolume->AddNode(fSelectedVolume, icopy, fSelectedMatrix);
   Int_t nd = fVolume->GetNdaughters();
   fNodeList->AddEntry(fVolume->GetNode(nd-1)->GetName(), nd-1);
   fNodeList->Select(nd-1);
   fCopyNumber->SetNumber(nd+1);
   if (fSelectedMatrix) fEditMatrix->SetEnabled(kTRUE);
   fRemoveNode->SetEnabled(kTRUE);
   fGeometry->SetTopVisible();
   fEditMatrix->SetEnabled(kTRUE);
   fRemoveNode->SetEnabled(kTRUE);
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoRemoveNode()
{
// Remove a daughter.
   if (!fVolume->GetNdaughters() || fVolume->GetFinder()) {
      fRemoveNode->SetEnabled(kFALSE);
      fEditMatrix->SetEnabled(kFALSE);
      return;
   }   
   Int_t i = fNodeList->GetSelected();
   if (i<0) return;
   fVolume->RemoveNode(fVolume->GetNode(i));
   fNodeList->RemoveEntries(0, fNodeList->GetNumberOfEntries()+1);
   TIter next(fVolume->GetNodes());
   TGeoNode *node;
   i = 0;
   while ((node=(TGeoNode*)next())) 
      fNodeList->AddEntry(node->GetName(), i++);
   fNodeList->Select(0);   
   fCopyNumber->SetNumber(fVolume->GetNdaughters()+1);
   if (!fVolume->GetNdaughters()) {
      fRemoveNode->SetEnabled(kFALSE);
      fEditMatrix->SetEnabled(kFALSE);
      fCategories->GetItem("Division")->GetButton()->SetEnabled(kTRUE);
      Double_t start=0., step=0., end=0.;
      Int_t ndiv = 2, iaxis = 1;
      fSelectedShape->GetAxisRange(iaxis,start,end);
      step = end-start;
      fBDiv[iaxis-1]->SetState(kButtonDown, kTRUE);
      fEDivFrom->SetNumber(start);
      fEDivStep->SetNumber(step);
      fEDivN->SetNumber(ndiv);      
   }
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoVisVolume()
{
// Slot for setting volume visible/invisible.
   Bool_t on = (fBVis[0]->GetState()==kButtonDown)?kTRUE:kFALSE;
   if (fVolume->IsVisible() == on) return;
   fVolume->SetVisibility(on);
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoVisDaughters()
{
// Slot for setting daughters visible/invisible.
   Bool_t on = (fBVis[1]->GetState()==kButtonDown)?kTRUE:kFALSE;
   if (fVolume->IsVisibleDaughters() == on) return;
   fVolume->VisibleDaughters(on);
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoVisAuto()
{
// Slot for setting visibility depth auto.
   Bool_t on = (fBAuto->GetState()==kButtonDown)?kTRUE:kFALSE;
   if ((fGeometry->GetVisLevel()==0) == on) return;
   if (on) fGeometry->SetVisLevel(0);
   else    fGeometry->SetVisLevel(fEVisLevel->GetIntNumber());
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoVisLevel()
{
// Slot for visibility level.
   fBAuto->SetState(kButtonUp);
   fGeometry->SetVisLevel(fEVisLevel->GetIntNumber());
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoViewAll()
{
// Slot for viewing volume and containers.
   Bool_t on = (fBView[0]->GetState()==kButtonDown)?kTRUE:kFALSE;
   if (!on) return;
   if (fVolume->IsVisContainers() == on) return;
   if (fVolume->IsRaytracing()) {
      fVolume->Raytrace(kFALSE);
      fBRaytrace->SetState(kButtonUp);
   }   
   fVolume->SetVisContainers(on);
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoViewLeaves()
{
// Slot for viewing last leaves only.
   Bool_t on = (fBView[1]->GetState()==kButtonDown)?kTRUE:kFALSE;
   if (!on) return;
   if (fVolume->IsVisLeaves() == on) return;
   if (fVolume->IsRaytracing()) {
      fVolume->Raytrace(kFALSE);
      fBRaytrace->SetState(kButtonUp);
   }   
   fVolume->SetVisLeaves(on);
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoViewOnly()
{
// Slot for viewing volume only.
   Bool_t on = (fBView[2]->GetState()==kButtonDown)?kTRUE:kFALSE;
   if (!on) return;
   if (fVolume->IsVisOnly() == on) return;
   if (fVolume->IsRaytracing()) {
      fVolume->Raytrace(kFALSE);
      fBRaytrace->SetState(kButtonUp);
   }   
   fVolume->SetVisOnly(on);
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoRaytrace()
{
// Slot for raytracing.
   Bool_t on = (fBRaytrace->GetState()==kButtonDown)?kTRUE:kFALSE;
   if (fVolume->IsRaytracing() == on) return;
   fVolume->Raytrace(on);
   Update();
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoDivName()
{
// Modify division name.
   fApplyDiv->SetEnabled(kTRUE);   
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoDivSelAxis()
{
// Change division axis and preserve number of slices.
   Int_t iaxis = 1;
   for (Int_t i=0; i<3; i++) {
      if (fBDiv[i]->GetState()!=kButtonDown) continue;
      iaxis = i+1;
      break;
   }   
   TGeoShape *shape = fVolume->GetShape();
   if (!shape) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }   
   Double_t xlo, xhi;
   shape->GetAxisRange(iaxis, xlo, xhi);
   if (xhi <= xlo) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }   
   fEDivFrom->SetNumber(xlo);
   fEDivStep->SetNumber(0);
   fApplyDiv->SetEnabled(kTRUE);
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoDivFromTo()
{
// Handle division range modification.
   Double_t min, max, xlo, xhi, step;
   Int_t iaxis = 1;
   Int_t ndiv;
   for (Int_t i=0; i<3; i++) {
      if (fBDiv[i]->GetState()!=kButtonDown) continue;
      iaxis = i+1;
      break;
   }   
   TGeoShape *shape = fVolume->GetShape();
   if (!shape) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }   
   shape->GetAxisRange(iaxis, xlo, xhi);
   if (xhi-xlo <= 0) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }
   min = fEDivFrom->GetNumber();
   step = fEDivStep->GetNumber();
   ndiv = fEDivN->GetIntNumber();
   if (min<xlo) {
      min = xlo;
      fEDivFrom->SetNumber(xlo);
   }   
   max = min + ndiv*step;
   if (max>xhi) {
      max = xhi;
      step = (max-min)/ndiv;
      fEDivStep->SetNumber(step);
   }   
   if (min>=max) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }   
   fApplyDiv->SetEnabled(kTRUE);
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoDivStep()
{
// Handle division step modification.
   Double_t min, max, xlo, xhi;
   Int_t iaxis = 1;
   for (Int_t i=0; i<3; i++) {
      if (fBDiv[i]->GetState()!=kButtonDown) continue;
      iaxis = i+1;
      break;
   }   
   TGeoShape *shape = fVolume->GetShape();
   if (!shape) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }   
   shape->GetAxisRange(iaxis, xlo, xhi);
   if (xhi-xlo <= 0) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }
   min = fEDivFrom->GetNumber();
   Double_t step = fEDivStep->GetNumber();
   Int_t ndiv = fEDivN->GetIntNumber();
   max = min + ndiv*step;
   
   // Check if ndiv*step < max-min
   if (max <= xhi) {
      fApplyDiv->SetEnabled(kTRUE);
      return;
   }
   // Step too big - set value to fit range
   max = xhi;
   step = (max-min)/ndiv;
   fEDivStep->SetNumber(step);
   if (step < 0) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }
   fApplyDiv->SetEnabled(kTRUE);
}

//______________________________________________________________________________
void TGeoVolumeEditor::DoDivN()
{
// Handle division N modification.
   Double_t min, max, xlo, xhi;
   Int_t iaxis = 1;
   for (Int_t i=0; i<3; i++) {
      if (fBDiv[i]->GetState()!=kButtonDown) continue;
      iaxis = i+1;
      break;
   }   
   TGeoShape *shape = fVolume->GetShape();
   if (!shape) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }   
   shape->GetAxisRange(iaxis, xlo, xhi);
   if (xhi-xlo <= 0) {
      fApplyDiv->SetEnabled(kFALSE);
      return;
   }
   Double_t step = fEDivStep->GetNumber();
   // If step=0 it is discounted
   if (step==0) {
      fApplyDiv->SetEnabled(kTRUE);
      return;
   }   
   Int_t ndiv = fEDivN->GetIntNumber();
   min = fEDivFrom->GetNumber();
   max = min + ndiv*step;
   // Check if ndiv*step < max-min
   if (max <= xhi) {
      fApplyDiv->SetEnabled(kTRUE);
      return;
   }
   max = xhi;
   ndiv = (Int_t)((max-min)/step);
   fEDivN->SetNumber(ndiv);
   fApplyDiv->SetEnabled(kTRUE);   
}

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