ROOT logo
// @(#):$Id: TGeoTorusEditor.cxx 20882 2007-11-19 11:31:26Z rdm $
// 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.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoTorusEditor                                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
//Begin_Html
/*
<img src="gif/torus_pic.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/torus_ed.jpg">
*/
//End_Html

#include "TGeoTorusEditor.h"
#include "TGeoTabManager.h"
#include "TGeoTorus.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(TGeoTorusEditor)

enum ETGeoTorusWid {
   kTORUS_NAME, kTORUS_R, kTORUS_RMIN,  kTORUS_RMAX, kTORUS_PHI1,
   kTORUS_DPHI, kTORUS_APPLY, kTORUS_UNDO
};

//______________________________________________________________________________
TGeoTorusEditor::TGeoTorusEditor(const TGWindow *p, Int_t width,
                                   Int_t height, UInt_t options, Pixel_t back)
   : TGeoGedFrame(p, width, height, options | kVerticalFrame, back)
{
   // Constructor for torus editor
   fShape   = 0;
   fRi = fRmini = fRmaxi = fPhi1i = fDphii = 0.0;
   fNamei = "";
   fIsModified = kFALSE;
   fIsShapeEditable = kTRUE;

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

   TGTextEntry *nef;
   MakeTitle("Dimensions");
   // Number entry for R.
   TGCompositeFrame *f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "R"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fER = new TGNumberEntry(f1, 0., 5, kTORUS_R);
   fER->SetNumAttr(TGNumberFormat::kNEAPositive);
   fER->Resize(100, fER->GetDefaultHeight());
   nef = (TGTextEntry*)fER->GetNumberEntry();
   nef->SetToolTipText("Enter the axial radius R");
   fER->Associate(this);
   f1->AddFrame(fER, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
   
   // Number entry for rmin.
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Rmin"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fERmin = new TGNumberEntry(f1, 0., 5, kTORUS_RMIN);
   fERmin->SetNumAttr(TGNumberFormat::kNEAPositive);
   fERmin->Resize(100, fERmin->GetDefaultHeight());
   nef = (TGTextEntry*)fERmin->GetNumberEntry();
   nef->SetToolTipText("Enter the inner radius Rmin");
   fERmin->Associate(this);
   f1->AddFrame(fERmin, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
   
   // Number entry for rmax
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Rmax"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fERmax = new TGNumberEntry(f1, 0., 5, kTORUS_RMAX);
   fERmax->SetNumAttr(TGNumberFormat::kNEAPositive);
   fERmax->Resize(100, fERmax->GetDefaultHeight());
   nef = (TGTextEntry*)fERmax->GetNumberEntry();
   nef->SetToolTipText("Enter the outer radius Rmax");
   fERmax->Associate(this);
   f1->AddFrame(fERmax, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));

   // Number entry for Phi1
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Phi1"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEPhi1 = new TGNumberEntry(f1, 0., 5, kTORUS_PHI1);
   fEPhi1->SetNumAttr(TGNumberFormat::kNEANonNegative);
   fEPhi1->Resize(100, fEPhi1->GetDefaultHeight());
   nef = (TGTextEntry*)fEPhi1->GetNumberEntry();
   nef->SetToolTipText("Enter the starting phi angle[deg]");
   fEPhi1->Associate(this);
   f1->AddFrame(fEPhi1, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
     
   // Number entry for Dphi
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Dphi"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDphi = new TGNumberEntry(f1, 0., 5, kTORUS_DPHI);
   fEDphi->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEDphi->Resize(100, fEDphi->GetDefaultHeight());
   nef = (TGTextEntry*)fEDphi->GetNumberEntry();
   nef->SetToolTipText("Enter the extent phi Dphi [deg]");
   fEDphi->Associate(this);
   f1->AddFrame(fEDphi, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 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());
}

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

//______________________________________________________________________________
void TGeoTorusEditor::ConnectSignals2Slots()
{
   // Connect signals to slots.
   fApply->Connect("Clicked()", "TGeoTorusEditor", this, "DoApply()");
   fUndo->Connect("Clicked()", "TGeoTorusEditor", this, "DoUndo()");
   fShapeName->Connect("TextChanged(const char *)", "TGeoTorusEditor", this, "DoModified()");
   fER->Connect("ValueSet(Long_t)", "TGeoTorusEditor", this, "DoR()");
   fERmin->Connect("ValueSet(Long_t)", "TGeoTorusEditor", this, "DoRmin()");
   fERmax->Connect("ValueSet(Long_t)", "TGeoTorusEditor", this, "DoRmax()");
   fEPhi1->Connect("ValueSet(Long_t)", "TGeoTorusEditor", this, "DoPhi1()");
   fEDphi->Connect("ValueSet(Long_t)", "TGeoTorusEditor", this, "DoDphi()");
   fER->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTorusEditor", this, "DoModified()");
   fERmin->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTorusEditor", this, "DoModified()");
   fERmax->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTorusEditor", this, "DoModified()");
   fEPhi1->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTorusEditor", this, "DoModified()");
   fEDphi->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTorusEditor", this, "DoModified()");
   fInit = kFALSE;
}


//______________________________________________________________________________
void TGeoTorusEditor::SetModel(TObject* obj)
{
   // Connect to the selected object.
   if (obj == 0 || (obj->IsA()!=TGeoTorus::Class())) {
      SetActive(kFALSE);
      return;                 
   } 
   fShape = (TGeoTorus*)obj;
   fRi = fShape->GetR();
   fRmini = fShape->GetRmin();
   fRmaxi = fShape->GetRmax();
   fPhi1i = fShape->GetPhi1();
   fDphii = fShape->GetDphi();
   const char *sname = fShape->GetName();
   if (!strcmp(sname, fShape->ClassName())) fShapeName->SetText("-no_name");
   else {
      fShapeName->SetText(sname);
      fNamei = sname;
   }   
   fER->SetNumber(fRi);
   fERmin->SetNumber(fRmini);
   fERmax->SetNumber(fRmaxi);
   fEPhi1->SetNumber(fPhi1i);
   fEDphi->SetNumber(fDphii);
   fApply->SetEnabled(kFALSE);
   fUndo->SetEnabled(kFALSE);
   
   if (fInit) ConnectSignals2Slots();
   SetActive();
}

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

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

//______________________________________________________________________________
void TGeoTorusEditor::DoApply()
{
// Slot for applying current settings.
   const char *name = fShapeName->GetText();
   if (strcmp(name,fShape->GetName())) fShape->SetName(name);
   Double_t r = fER->GetNumber();
   Double_t rmax = fERmax->GetNumber();  
   Double_t rmin = fERmin->GetNumber(); 
   Double_t phi = fEPhi1->GetNumber();
   Double_t dphi = fEDphi->GetNumber();
   Double_t param[5];
   param[0] = r;
   param[1] = rmin;
   param[2] = rmax;
   param[3] = phi;
   param[4] = dphi;
   fShape->SetDimensions(param);
   fShape->ComputeBBox();
   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 {
            view->SetRange(-fShape->GetDX(), -fShape->GetDY(), -fShape->GetDZ(),
                           fShape->GetDX(), fShape->GetDY(), fShape->GetDZ());
            Update();
         }                  
      } else Update();
   }   
}

//______________________________________________________________________________
void TGeoTorusEditor::DoModified()
{
// Slot for notifying modifications.
   fApply->SetEnabled();
}

//______________________________________________________________________________
void TGeoTorusEditor::DoUndo()
{
// Slot for undoing last operation.
   fER->SetNumber(fRi);
   fERmin->SetNumber(fRmini);
   fERmax->SetNumber(fRmaxi);
   fEPhi1->SetNumber(fPhi1i);
   fEDphi->SetNumber(fDphii);
   DoApply();
   fUndo->SetEnabled(kFALSE);
   fApply->SetEnabled(kFALSE);
}
   
//______________________________________________________________________________
void TGeoTorusEditor::DoR()
{
// Slot for R.
   Double_t r = fER->GetNumber();
   Double_t rmax = fERmax->GetNumber();
   if (r<rmax) {
      r = rmax;
      fER->SetNumber(r);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoTorusEditor::DoRmin()
{
// Slot for Rmin.
   Double_t rmin = fERmin->GetNumber();
   Double_t rmax = fERmax->GetNumber();
   if (rmin>rmax) {
      rmin = rmax-0.1;
      fERmin->SetNumber(rmin);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoTorusEditor::DoRmax()
{
// Slot for Rmax.
   Double_t r = fER->GetNumber();
   Double_t rmin = fERmin->GetNumber();
   Double_t rmax = fERmax->GetNumber();
   if (rmax<=rmin) {
      rmax = rmin+0.1;
      fERmax->SetNumber(rmax);
   }   
   if (rmax>r) {
      rmax = r;
      fERmax->SetNumber(rmax);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoTorusEditor::DoPhi1()
{
// Slot for phi.
   Double_t phi = fEPhi1->GetNumber();
   if (phi<0 || phi>360) {
      phi = 0;
      fEPhi1->SetNumber(phi);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoTorusEditor::DoDphi()
{
// Slot for Dphi.
   Double_t dphi = fEDphi->GetNumber();
   if (dphi<=0 || dphi>360) {
      dphi = 1;
      fEDphi->SetNumber(dphi);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

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