// @(#):$Id$
// 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.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoParaEditor                                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
//Begin_Html
/*
<img src="gif/para_pic.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/para_ed.jpg">
*/
//End_Html

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

enum ETGeoParaWid {
   kPARA_NAME, kPARA_X, kPARA_Y,  kPARA_Z, kPARA_ALPHA,
   kPARA_THETA, kPARA_PHI, kPARA_APPLY, kPARA_UNDO
};

//______________________________________________________________________________
TGeoParaEditor::TGeoParaEditor(const TGWindow *p, Int_t width,
                                   Int_t height, UInt_t options, Pixel_t back)
   : TGeoGedFrame(p, width, height, options | kVerticalFrame, back)
{
   // Constructor for para editor
   fShape   = 0;
   fXi = fYi = fZi = fAlphai = fThetai = fPhii = 0.0;
   fNamei = "";
   fIsModified = kFALSE;
   fIsShapeEditable = kTRUE;

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

   TGTextEntry *nef;
   MakeTitle("Dimensions");
   // Number entry for dx
   TGCompositeFrame *f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "DX"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDx = new TGNumberEntry(f1, 0., 5, kPARA_X);
   fEDx->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEDx->Resize(100, fEDx->GetDefaultHeight());
   nef = (TGTextEntry*)fEDx->GetNumberEntry();
   nef->SetToolTipText("Enter the half-lenth in X");
   fEDx->Associate(this);
   f1->AddFrame(fEDx, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
   
   // Number entry for dy
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "DY"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDy = new TGNumberEntry(f1, 0., 5, kPARA_Y);
   fEDy->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEDy->Resize(100, fEDy->GetDefaultHeight());
   nef = (TGTextEntry*)fEDy->GetNumberEntry();
   nef->SetToolTipText("Enter the half-lenth in Y");
   fEDy->Associate(this);
   f1->AddFrame(fEDy, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
   
   // Number entry for dz
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Dz"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDz = new TGNumberEntry(f1, 0., 5, kPARA_Z);
   fEDz->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEDz->Resize(100, fEDz->GetDefaultHeight());
   nef = (TGTextEntry*)fEDz->GetNumberEntry();
   nef->SetToolTipText("Enter the half-lenth in Z");
   fEDz->Associate(this);
   f1->AddFrame(fEDz, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));
 
   // Number entry for Alpha
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Alpha"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEAlpha = new TGNumberEntry(f1, 0., 5, kPARA_ALPHA);
   fEAlpha->Resize(100, fEAlpha->GetDefaultHeight());
   nef = (TGTextEntry*)fEAlpha->GetNumberEntry();
   nef->SetToolTipText("Enter the angle with respect to Y axis [deg]");
   fEAlpha->Associate(this);
   f1->AddFrame(fEAlpha, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));

   // Number entry for Theta
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Theta"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fETheta = new TGNumberEntry(f1, 0., 5, kPARA_THETA);
   fETheta->SetNumAttr(TGNumberFormat::kNEAPositive);
   fETheta->Resize(100, fETheta->GetDefaultHeight());
   nef = (TGTextEntry*)fETheta->GetNumberEntry();
   nef->SetToolTipText("Enter the theta angle of the para axis [deg]");
   fETheta->Associate(this);
   f1->AddFrame(fETheta, new TGLayoutHints(kLHintsRight, 2, 2, 4, 4));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft, 2, 2, 4, 4));

    // Number entry for Phi
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth);
   f1->AddFrame(new TGLabel(f1, "Phi"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEPhi = new TGNumberEntry(f1, 0., 5, kPARA_PHI);
   fEPhi->SetNumAttr(TGNumberFormat::kNEAPositive);
   fEPhi->Resize(100, fEPhi->GetDefaultHeight());
   nef = (TGTextEntry*)fEPhi->GetNumberEntry();
   nef->SetToolTipText("Enter the phi angle of the para axis [deg]");
   fEPhi->Associate(this);
   f1->AddFrame(fEPhi, 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());
}

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

//______________________________________________________________________________
void TGeoParaEditor::ConnectSignals2Slots()
{
   // Connect signals to slots.
   fApply->Connect("Clicked()", "TGeoParaEditor", this, "DoApply()");
   fUndo->Connect("Clicked()", "TGeoParaEditor", this, "DoUndo()");
   fShapeName->Connect("TextChanged(const char *)", "TGeoParaEditor", this, "DoModified()");
   fEDx->Connect("ValueSet(Long_t)", "TGeoParaEditor", this, "DoX()");
   fEDy->Connect("ValueSet(Long_t)", "TGeoParaEditor", this, "DoY()");
   fEDz->Connect("ValueSet(Long_t)", "TGeoParaEditor", this, "DoZ()");
   fEAlpha->Connect("ValueSet(Long_t)", "TGeoParaEditor", this, "DoAlpha()");
   fETheta->Connect("ValueSet(Long_t)", "TGeoParaEditor", this, "DoTheta()");
   fEPhi->Connect("ValueSet(Long_t)", "TGeoParaEditor", this, "DoPhi()");
   fEDx->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoParaEditor", this, "DoModified()");
   fEDy->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoParaEditor", this, "DoModified()");
   fEDz->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoParaEditor", this, "DoModified()");
   fEAlpha->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoParaEditor", this, "DoModified()");
   fETheta->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoParaEditor", this, "DoModified()");
   fEPhi->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoParaEditor", this, "DoModified()");
   fInit = kFALSE;
}


//______________________________________________________________________________
void TGeoParaEditor::SetModel(TObject* obj)
{
   // Connect to the selected object.
   if (obj == 0 || (obj->IsA()!=TGeoPara::Class())) {
      SetActive(kFALSE);
      return;                 
   } 
   fShape = (TGeoPara*)obj;
   fXi = fShape->GetX();
   fYi = fShape->GetY();
   fZi = fShape->GetZ();
   fAlphai = fShape->GetAlpha();
   fThetai = fShape->GetTheta();
   fPhii = fShape->GetPhi();
   const char *sname = fShape->GetName();
   if (!strcmp(sname, fShape->ClassName())) fShapeName->SetText("-no_name");
   else {
      fShapeName->SetText(sname);
      fNamei = sname;
   }   
   fEDx->SetNumber(fXi);
   fEDy->SetNumber(fYi);
   fEDz->SetNumber(fZi);
   fEAlpha->SetNumber(fAlphai);
   fETheta->SetNumber(fThetai);
   fEPhi->SetNumber(fPhii);
   fApply->SetEnabled(kFALSE);
   fUndo->SetEnabled(kFALSE);
   
   if (fInit) ConnectSignals2Slots();
   SetActive();
}

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

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

//______________________________________________________________________________
void TGeoParaEditor::DoApply()
{
// Slot for applying current settings.
   const char *name = fShapeName->GetText();
   if (strcmp(name,fShape->GetName())) fShape->SetName(name);
   Double_t dx = fEDx->GetNumber();
   Double_t dy = fEDy->GetNumber(); 
   Double_t dz = fEDz->GetNumber();
   Double_t alpha = fEAlpha->GetNumber();
   Double_t theta = fETheta->GetNumber(); 
   Double_t phi = fEPhi->GetNumber();      
   Double_t param[6];
   param[0] = dx;
   param[1] = dy;
   param[2] = dz;
   param[3] = alpha;
   param[4] = theta;
   param[5] = phi;
   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 TGeoParaEditor::DoModified()
{
// Slot for notifying modifications.
   fApply->SetEnabled();
}

//______________________________________________________________________________
void TGeoParaEditor::DoUndo()
{
// Slot for undoing last operation.
   fEDx->SetNumber(fXi);
   fEDy->SetNumber(fYi);
   fEDz->SetNumber(fZi);
   fEAlpha->SetNumber(fAlphai);
   fETheta->SetNumber(fThetai);
   fEPhi->SetNumber(fPhii);
   DoApply();
   fUndo->SetEnabled(kFALSE);
   fApply->SetEnabled(kFALSE);
}
   
//______________________________________________________________________________
void TGeoParaEditor::DoX()
{
// Slot for X.
   Double_t dx = fEDx->GetNumber();
   if (dx<=0) {
      dx = 0.1;
      fEDx->SetNumber(dx);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoParaEditor::DoY()
{
// Slot for Y.
   Double_t dy = fEDy->GetNumber();
   if (dy<=0) {
      dy = 0.1;
      fEDy->SetNumber(dy);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoParaEditor::DoZ()
{
// Slot for Z.
   Double_t dz = fEDz->GetNumber();
   if (dz<=0) {
      dz = 0.1;
      fEDz->SetNumber(dz);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoParaEditor::DoAlpha()
{
// Slot for alpha.
   Double_t alpha = fEAlpha->GetNumber();
   if (TMath::Abs(alpha)>=90) {
      alpha = 89.9*TMath::Sign(1.,alpha);
      fEAlpha->SetNumber(alpha);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoParaEditor::DoTheta()
{
// Slot for theta.
   Double_t theta = fETheta->GetNumber(); 
   if (theta<0) {
      theta = 0;
      fETheta->SetNumber(theta);
   }   
   if (theta>180) {
      theta = 180;
      fETheta->SetNumber(theta);
   }   
   DoModified();
   if (!IsDelayed()) DoApply();
}

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

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