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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGeoTrd2Editor                                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
//Begin_Html
/*
<img src="gif/trd2_pic.gif">
*/
//End_Html
//Begin_Html
/*
<img src="gif/trd2_ed.jpg">
*/
//End_Html

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

enum ETGeoTrd2Wid {
   kTRD2_NAME, kTRD2_X1, kTRD2_X2,  kTRD2_Y1, kTRD2_Y2, kTRD2_Z,
   kTRD2_APPLY, kTRD2_UNDO
};

//______________________________________________________________________________
TGeoTrd2Editor::TGeoTrd2Editor(const TGWindow *p, Int_t width,
                                   Int_t height, UInt_t options, Pixel_t back)
   : TGeoGedFrame(p, width, height, options | kVerticalFrame, back)
{
   // Constructor for trd2 editor
   fShape   = 0;
   fDxi1 = fDxi2 = fDyi1 = fDyi2 = fDzi = 0.0;
   fNamei = "";
   fIsModified = kFALSE;
   fIsShapeEditable = kFALSE;

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

   TGTextEntry *nef;
   MakeTitle("Trd2 dimensions");
   TGCompositeFrame *compxyz = new TGCompositeFrame(this, 118, 30, kVerticalFrame | kRaisedFrame | kDoubleBorder);
  
   // Number entry for dx1
   TGCompositeFrame *f1 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f1->AddFrame(new TGLabel(f1, "DX1"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDx1 = new TGNumberEntry(f1, 0., 5, kTRD2_X1);
   fEDx1->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fEDx1->GetNumberEntry();
   nef->SetToolTipText("Enter the half-lenth in X1");
   fEDx1->Associate(this);
   f1->AddFrame(fEDx1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   // Number entry for dx2
   f1 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f1->AddFrame(new TGLabel(f1, "DX2"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDx2 = new TGNumberEntry(f1, 0., 5, kTRD2_X2);
   fEDx2->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fEDx2->GetNumberEntry();
   nef->SetToolTipText("Enter the  half-lenth in X2");
   fEDx2->Associate(this);
   f1->AddFrame(fEDx2, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));

   // Number entry for dy1
   TGCompositeFrame *f2 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f2->AddFrame(new TGLabel(f2, "DY1"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDy1 = new TGNumberEntry(f2, 0., 5, kTRD2_Y1);
   fEDy1->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fEDy1->GetNumberEntry();
   nef->SetToolTipText("Enter the half-lenth in Y1");
   fEDy1->Associate(this);
   f2->AddFrame(fEDy1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f2, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   // Number entry for dy2
   f2 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f2->AddFrame(new TGLabel(f2, "DY2"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDy2 = new TGNumberEntry(f2, 0., 5, kTRD2_Y2);
   fEDy2->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fEDy2->GetNumberEntry();
   nef->SetToolTipText("Enter the half-lenth in Y2");
   fEDy2->Associate(this);
   f2->AddFrame(fEDy2, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f2, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   // Number entry for dz
   TGCompositeFrame *f3 = new TGCompositeFrame(compxyz, 118, 10, kHorizontalFrame |
                                 kLHintsExpandX | kFixedWidth | kOwnBackground);
   f3->AddFrame(new TGLabel(f3, "DZ"), new TGLayoutHints(kLHintsLeft, 1, 1, 6, 0));
   fEDz = new TGNumberEntry(f3, 0., 5, kTRD2_Z);
   fEDz->SetNumAttr(TGNumberFormat::kNEAPositive);
   nef = (TGTextEntry*)fEDz->GetNumberEntry();
   nef->SetToolTipText("Enter the  half-lenth in Z");
   fEDz->Associate(this);
   f3->AddFrame(fEDz, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   compxyz->AddFrame(f3, new TGLayoutHints(kLHintsLeft | kLHintsExpandX , 2, 2, 4, 4));
   
   compxyz->Resize(150,30);
   AddFrame(compxyz, new TGLayoutHints(kLHintsLeft, 6, 6, 4, 4));
      
   // Delayed draw
   f1 = new TGCompositeFrame(this, 155, 10, kHorizontalFrame | kFixedWidth | kSunkenFrame);
   fDelayed = new TGCheckButton(f1, "Delayed draw");
   f1->AddFrame(fDelayed, new TGLayoutHints(kLHintsLeft , 2, 2, 4, 4));
   AddFrame(f1,  new TGLayoutHints(kLHintsLeft, 6, 6, 4, 4));  

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

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

//______________________________________________________________________________
void TGeoTrd2Editor::ConnectSignals2Slots()
{
   // Connect signals to slots.
   fApply->Connect("Clicked()", "TGeoTrd2Editor", this, "DoApply()");
   fUndo->Connect("Clicked()", "TGeoTrd2Editor", this, "DoUndo()");
   fShapeName->Connect("TextChanged(const char *)", "TGeoTrd2Editor", this, "DoModified()");
   fEDx1->Connect("ValueSet(Long_t)", "TGeoTrd2Editor", this, "DoDx1()");
   fEDx2->Connect("ValueSet(Long_t)", "TGeoTrd2Editor", this, "DoDx2()");
   fEDy1->Connect("ValueSet(Long_t)", "TGeoTrd2Editor", this, "DoDy1()");
   fEDy2->Connect("ValueSet(Long_t)", "TGeoTrd2Editor", this, "DoDy2()");
   fEDz->Connect("ValueSet(Long_t)", "TGeoTrd2Editor", this, "DoDz()");
   fEDx1->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTrd2Editor", this, "DoModified()");
   fEDx2->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTrd2Editor", this, "DoModified()");
   fEDy1->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTrd2Editor", this, "DoModified()");
   fEDy2->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTrd2Editor", this, "DoModified()");
   fEDz->GetNumberEntry()->Connect("TextChanged(const char *)", "TGeoTrd2Editor", this, "DoModified()");
   fInit = kFALSE;
}


//______________________________________________________________________________
void TGeoTrd2Editor::SetModel(TObject* obj)
{
   // Connect to the selected object.
   if (obj == 0 || (obj->IsA()!=TGeoTrd2::Class())) {
      SetActive(kFALSE);
      return;                 
   } 
   fShape = (TGeoTrd2*)obj;
   fDxi1 = fShape->GetDx1();
   fDxi2 = fShape->GetDx2();
   fDyi1 = fShape->GetDy1();
   fDyi2 = fShape->GetDy2();
   fDzi = fShape->GetDz();
   const char *sname = fShape->GetName();
   if (!strcmp(sname, fShape->ClassName())) fShapeName->SetText("-no_name");
   else {
      fShapeName->SetText(sname);
      fNamei = sname;
   }   
   fEDx1->SetNumber(fDxi1);
   fEDx2->SetNumber(fDxi2);
   fEDy1->SetNumber(fDyi1);
   fEDy2->SetNumber(fDyi2);
   fEDz->SetNumber(fDzi);
   fApply->SetEnabled(kFALSE);
   fUndo->SetEnabled(kFALSE);
   
   if (fInit) ConnectSignals2Slots();
   SetActive();
}

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

//______________________________________________________________________________
void TGeoTrd2Editor::DoName()
{
// Perform name change.
   DoModified();
}

//______________________________________________________________________________
void TGeoTrd2Editor::DoApply()
{
// Slot for applying modifications.
   const char *name = fShapeName->GetText();
   if (strcmp(name,fShape->GetName())) fShape->SetName(name);
   Double_t dx1 = fEDx1->GetNumber();
   Double_t dx2 = fEDx2->GetNumber();
   Double_t dy1 = fEDy1->GetNumber(); 
   Double_t dy2 = fEDy2->GetNumber(); 
   Double_t dz = fEDz->GetNumber();
   Double_t param[5];
   param[0] = dx1;
   param[1] = dx2;
   param[2] = dy1;
   param[3] = dy2;
   param[4] = dz;
   fShape->SetDimensions(param);
   fShape->ComputeBBox();
   fUndo->SetEnabled();
   fApply->SetEnabled(kFALSE);
   if (fPad) {
      if (gGeoManager && gGeoManager->GetPainter() && gGeoManager->GetPainter()->IsPaintingShape()) {
         fShape->Draw();
         fPad->GetView()->ShowAxis();
      } else Update();
   }   
}

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

//______________________________________________________________________________
void TGeoTrd2Editor::DoUndo()
{
// Slot for undoing last operation.
   fEDx1->SetNumber(fDxi1);
   fEDx2->SetNumber(fDxi2);
   fEDy1->SetNumber(fDyi1);
   fEDy2->SetNumber(fDyi2);
   fEDz->SetNumber(fDzi);
   DoApply();
   fUndo->SetEnabled(kFALSE);
   fApply->SetEnabled(kFALSE);
}
   
//______________________________________________________________________________
void TGeoTrd2Editor::DoDx1()
{
// Slot for dx1.
   Double_t dx1 = fEDx1->GetNumber();
   Double_t dx2 = fEDx2->GetNumber();
   if (dx1<0) {
      dx1 = 0;
      fEDx1->SetNumber(dx1);
   }
   if (dx1<1.e-6 && dx2<1.e-6) {
      dx1 = 0.1;
      fEDx1->SetNumber(dx1);
   }      
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoTrd2Editor::DoDx2()
{
// Slot for dx2.
   Double_t dx1 = fEDx1->GetNumber();
   Double_t dx2 = fEDx2->GetNumber();
   if (dx2<0) {
      dx2 = 0;
      fEDx2->SetNumber(dx2);
   }
   if (dx1<1.e-6 && dx2<1.e-6) {
      dx2 = 0.1;
      fEDx2->SetNumber(dx2);
   }      
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoTrd2Editor::DoDy1()
{
// Slot for dy1.
   Double_t dy1 = fEDy1->GetNumber();
   Double_t dy2 = fEDy2->GetNumber();
   if (dy1<0) {
      dy1 = 0;
      fEDy1->SetNumber(dy1);
   }
   if (dy1<1.e-6 && dy2<1.e-6) {
      dy1 = 0.1;
      fEDy1->SetNumber(dy1);
   }      
   DoModified();
   if (!IsDelayed()) DoApply();
}

//______________________________________________________________________________
void TGeoTrd2Editor::DoDy2()
{
// Slot for dy2.
   Double_t dy1 = fEDy1->GetNumber();
   Double_t dy2 = fEDy2->GetNumber();
   if (dy2<0) {
      dy2 = 0;
      fEDy2->SetNumber(dy2);
   }
   if (dy1<1.e-6 && dy2<1.e-6) {
      dy2 = 0.1;
      fEDy2->SetNumber(dy2);
   }      
   DoModified();
   if (!IsDelayed()) DoApply();
}

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


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