ROOT logo
// @(#)root/treeviewer:$Id: TParallelCoordEditor.cxx 21399 2007-12-17 09:19:28Z couet $
// Author: Bastien Dalla Piazza  02/08/2007

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

#include "TParallelCoordEditor.h"
#include "TParallelCoord.h"
#include "TParallelCoordRange.h"
#include "TParallelCoordVar.h"

#include "TGFrame.h"
#include "TGButton.h"
#include "TGButtonGroup.h"
#include "TGNumberEntry.h"
#include "TGLabel.h"
#include "TGTextEntry.h"
#include "TGComboBox.h"
#include "TGColorSelect.h"
#include "TColor.h"
#include "TG3DLine.h"
#include "TGSlider.h"
#include "TGComboBox.h"
#include "TGDoubleSlider.h"
#include "TTree.h"
#include "TGListBox.h"
#include "TGedPatternSelect.h"

#include "Riostream.h"

ClassImp(TParallelCoordEditor)

//______________________________________________________________________________
/* Begin_Html
<center><h2>The TParallelCoord editor class</h2></center>
This is the TParallelCoord editor. It brings tools to explore datas
Using parallel coordinates. The main tools are:
</ul>
<li> Dots spacing : Set the dots spacing with whichone the lines
  must be drawn. This tool is useful to reduce the image
  cluttering.
<li> The Selections section : Set the current edited selection and
  allows to apply it to the tree through a generated entry list.
<li> The Entries section : Set how many events must be drawn.
  A weight cut can be defioned here (see TParallelCoord for a
  a description of the weight cut).
<li> The Variables tab : To define the global settings to display
  the axes. It is also possible to add a variable from its
  expression or delete a selected one (also possible using right
  click on the pad.
</ul>
End_Html */


enum EParallelWid {
   kGlobalLineColor,
   kLineTypeBgroup,
   kLineTypePoly,
   kLineTypeCurves,
   kGlobalLineWidth,
   kDotsSpacing,
   kDotsSpacingField,
   kSelectionSelect,
   kSelectLineColor,
   kSelectLineWidth,
   kActivateSelection,
   kDeleteSelection,
   kAddSelection,
   kAddSelectionEntry,
   kShowRanges,
   kPaintEntries,
   kEntriesToDraw,
   kFirstEntry,
   kNentries,
   kApplySelect,
   kUnApply,
   kDelayDrawing,
   kHideAllRanges,
   kVariables,
   kDeleteVar,
   kHistHeight,
   kHistWidth,
   kHistBinning,
   kRenameVar,
   kWeightCut,
   kHistColorSelect,
   kHistPatternSelect
};

//______________________________________________________________________________
TParallelCoordEditor::TParallelCoordEditor(const TGWindow* /*p*/,
                                           Int_t/*width*/, Int_t /*height*/,
                                           UInt_t /*options*/, Pixel_t /*back*/)
{
   // Normal constructor.

   fPriority = 1;
   fDelay = kTRUE;

   //**Line**_________________________________________
   MakeTitle("Line");

   TGHorizontalFrame *f1 = new TGHorizontalFrame(this);
   fGlobalLineColor = new TGColorSelect(f1,0,kGlobalLineColor);
   f1->AddFrame(fGlobalLineColor,new TGLayoutHints(kLHintsLeft | kLHintsTop));
   fGlobalLineWidth = new TGLineWidthComboBox(f1, kGlobalLineWidth);
   fGlobalLineWidth->Resize(91, 20);
   f1->AddFrame(fGlobalLineWidth, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
   AddFrame(f1, new TGLayoutHints(kLHintsLeft | kLHintsTop));

   AddFrame(new TGLabel(this,"Dots spacing"),
            new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   TGHorizontalFrame *f2 = new TGHorizontalFrame(this);
   fDotsSpacing = new TGHSlider(f2,100,kSlider1|kScaleBoth,kDotsSpacing);
   fDotsSpacing->SetRange(0,60);
   f2->AddFrame(fDotsSpacing,new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
   fDotsSpacingField = new TGNumberEntryField(f2, kDotsSpacingField, 0,
                                              TGNumberFormat::kNESInteger,
                                              TGNumberFormat::kNEANonNegative);
   fDotsSpacingField->Resize(40,20);
   f2->AddFrame(fDotsSpacingField,new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
   AddFrame(f2, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   fLineTypeBgroup = new TGButtonGroup(this,2,1,0,0, "Line type");
   fLineTypeBgroup->SetRadioButtonExclusive(kTRUE);
   fLineTypePoly = new TGRadioButton(fLineTypeBgroup,"Polyline", kLineTypePoly);
   fLineTypePoly->SetToolTipText("Draw the entries with a polyline");
   fLineTypeCurves = new TGRadioButton(fLineTypeBgroup,"Curves",
                                       kLineTypeCurves);
   fLineTypeCurves->SetToolTipText("Draw the entries with a curve");
   fLineTypeBgroup->ChangeOptions(kChildFrame|kVerticalFrame);
   AddFrame(fLineTypeBgroup, new TGLayoutHints(kLHintsCenterY | kLHintsLeft));

   //**Selections**___________________________________
   MakeTitle("Selections");

   fHideAllRanges = new TGCheckButton(this,"Hide all ranges",kHideAllRanges);
   AddFrame(fHideAllRanges);

   fSelectionSelect = new TGComboBox(this,kSelectionSelect);
   fSelectionSelect->Resize(140,20);
   AddFrame(fSelectionSelect, new TGLayoutHints(kLHintsCenterY | kLHintsLeft,0,0,3,0));

   TGHorizontalFrame *f3 = new TGHorizontalFrame(this);
   fSelectLineColor = new TGColorSelect(f3,0,kSelectLineColor);
   f3->AddFrame(fSelectLineColor,new TGLayoutHints(kLHintsLeft | kLHintsTop));
   fSelectLineWidth = new TGLineWidthComboBox(f3, kSelectLineWidth);
   fSelectLineWidth->Resize(94, 20);
   f3->AddFrame(fSelectLineWidth, new TGLayoutHints(kLHintsLeft, 3, 1, 1, 1));
   AddFrame(f3, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,3,0));

   fActivateSelection = new TGCheckButton(this,"Activate",kActivateSelection);
   fActivateSelection->SetToolTipText("Activate the current selection");
   AddFrame(fActivateSelection);
   fShowRanges = new TGCheckButton(this,"Show ranges",kShowRanges);
   AddFrame(fShowRanges);

   TGHorizontalFrame *f5 = new TGHorizontalFrame(this);
   fAddSelectionField = new TGTextEntry(f5);
   fAddSelectionField->Resize(57,20);
   f5->AddFrame(fAddSelectionField, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
   fAddSelection = new TGTextButton(f5,"Add");
   fAddSelection->SetToolTipText("Add a new selection (Right click on the axes to add a range).");
   f5->AddFrame(fAddSelection, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,3,0,0,0));
   fDeleteSelection = new TGTextButton(f5,"Delete",kDeleteSelection);
   fDeleteSelection->SetToolTipText("Delete the current selection");
   f5->AddFrame(fDeleteSelection, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,3,0,0,0));
   AddFrame(f5, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,3,0,0,0));

   TGHorizontalFrame *f7 = new TGHorizontalFrame(this);
   fApplySelect = new TGTextButton(f7,"Apply to tree",kApplySelect);
   fApplySelect->SetToolTipText("Generate an entry list for the current selection and apply it to the tree.");
   f7->AddFrame(fApplySelect);
   fUnApply = new TGTextButton(f7,"Reset tree",kUnApply);
   fUnApply->SetToolTipText("Reset the tree entry list");
   f7->AddFrame(fUnApply, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,10,0,0,0));
   AddFrame(f7, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,0,0,3,0));

   //**Entries**___________________________________
   MakeTitle("Entries");

   fPaintEntries = new TGCheckButton(this,"Draw entries",kPaintEntries);
   AddFrame(fPaintEntries);
   fDelayDrawing = new TGCheckButton(this,"Delay Drawing", kDelayDrawing);
   AddFrame(fDelayDrawing);

   fEntriesToDraw = new TGDoubleHSlider(this,140,kDoubleScaleBoth,kEntriesToDraw);
   AddFrame(fEntriesToDraw);

   TGHorizontalFrame *f6 = new TGHorizontalFrame(this);
   TGVerticalFrame *v1 = new TGVerticalFrame(f6);
   TGVerticalFrame *v2 = new TGVerticalFrame(f6);
   v1->AddFrame(new TGLabel(v1,"First entry:"));
   fFirstEntry = new TGNumberEntryField(v1, kFirstEntry, 0,
                                        TGNumberFormat::kNESInteger,
                                        TGNumberFormat::kNEANonNegative);
   fFirstEntry->Resize(68,20);
   v1->AddFrame(fFirstEntry);
   v2->AddFrame(new TGLabel(v2,"# of entries:"));
   fNentries = new TGNumberEntryField(v2, kFirstEntry, 0,
                                     TGNumberFormat::kNESInteger,
                                     TGNumberFormat::kNEANonNegative);
   fNentries->Resize(68,20);
   v2->AddFrame(fNentries);
   f6->AddFrame(v1);
   f6->AddFrame(v2, new TGLayoutHints(kLHintsLeft,4,0,0,0));
   AddFrame(f6);

   AddFrame(new TGLabel(this,"Weight cut:"));

   TGHorizontalFrame *f8 = new TGHorizontalFrame(this);
   fWeightCut = new TGHSlider(f8,100,kSlider1|kScaleBoth,kDotsSpacing);
   fWeightCutField = new TGNumberEntryField(f8,kDotsSpacingField, 0,
                                            TGNumberFormat::kNESInteger,
                                            TGNumberFormat::kNEANonNegative);
   fWeightCutField->Resize(40,20);
   f8->AddFrame(fWeightCut);
   f8->AddFrame(fWeightCutField);
   AddFrame(f8);

   MakeVariablesTab();
}


//______________________________________________________________________________
void TParallelCoordEditor::MakeVariablesTab()
{
   // Make the "variable" tab.

   fVarTab = CreateEditorTabSubFrame("Variables");
   //**Variable**_________________________________

   TGHorizontalFrame *f9 = new TGHorizontalFrame(fVarTab);
   fAddVariable = new TGTextEntry(f9);
   fAddVariable->Resize(71,20);
   f9->AddFrame(fAddVariable, new TGLayoutHints(kLHintsCenterY));
   fButtonAddVar = new TGTextButton(f9,"Add");
   fButtonAddVar->SetToolTipText("Add a new variable from the tree (must be a valid expression).");
   f9->AddFrame(fButtonAddVar, new TGLayoutHints(kLHintsCenterY,4,0,0,0));
   fVarTab->AddFrame(f9);

   TGHorizontalFrame *f10 = new TGHorizontalFrame(fVarTab);
   fVariables = new TGComboBox(f10,kVariables);
   fVariables->Resize(105,20);
   f10->AddFrame(fVariables, new TGLayoutHints(kLHintsCenterY));
   fVarTab->AddFrame(f10,new TGLayoutHints(kLHintsLeft,0,0,2,0));

   TGHorizontalFrame *f12 = new TGHorizontalFrame(fVarTab);
   fDeleteVar = new TGTextButton(f12,"Delete",kDeleteVar);
   fDeleteVar->SetToolTipText("Delete the current selected variable");
   f12->AddFrame(fDeleteVar, new TGLayoutHints(kLHintsCenterY,1,0,0,0));
   fRenameVar = new TGTextButton(f12,"Rename",kRenameVar);
   fRenameVar->SetToolTipText("Rename the current selected variable");
   f12->AddFrame(fRenameVar, new TGLayoutHints(kLHintsCenterY,4,0,0,0));
   fVarTab->AddFrame(f12,new TGLayoutHints(kLHintsLeft,0,0,2,0));

   fVarTab->AddFrame(new TGLabel(fVarTab,"Axis histograms:"));

   TGHorizontalFrame *f11 = new TGHorizontalFrame(fVarTab);
   TGVerticalFrame *v3 = new TGVerticalFrame(f11);
   TGVerticalFrame *v4 = new TGVerticalFrame(f11);
   v3->AddFrame(new TGLabel(v3,"Binning:"));
   fHistBinning = new TGNumberEntryField(v3, kHistWidth, 0,
                                         TGNumberFormat::kNESInteger,
                                         TGNumberFormat::kNEANonNegative);
   fHistBinning->Resize(68,20);
   v3->AddFrame(fHistBinning);
   v4->AddFrame(new TGLabel(v4,"Width:"));
   fHistWidth = new TGNumberEntryField(v4, kHistWidth, 0,
                                       TGNumberFormat::kNESInteger,
                                       TGNumberFormat::kNEANonNegative);
   fHistWidth->Resize(68,20);
   v4->AddFrame(fHistWidth, new TGLayoutHints(kLHintsLeft,4,0,0,0));
   f11->AddFrame(v3);
   f11->AddFrame(v4);
   fVarTab->AddFrame(f11);

   fHistShowBoxes = new TGCheckButton(fVarTab,"Show box histograms");
   fVarTab->AddFrame(fHistShowBoxes);
   
   fVarTab->AddFrame(new TGLabel(fVarTab,"Bar histograms style:"));
   
   TGCompositeFrame *f13 = new TGCompositeFrame(fVarTab, 80, 20, kHorizontalFrame);
   fHistColorSelect = new TGColorSelect(f13, 0, kHistColorSelect);
   f13->AddFrame(fHistColorSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
   fHistColorSelect->Associate(this);
   fHistPatternSelect = new TGedPatternSelect(f13, 1, kHistPatternSelect);
   f13->AddFrame(fHistPatternSelect, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
   fHistPatternSelect->Associate(this);
   fVarTab->AddFrame(f13, new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
}


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

   delete fLineTypePoly;
   delete fLineTypeCurves;
}


//______________________________________________________________________________
void TParallelCoordEditor::CleanUpSelections()
{
   // Clean up the selection combo box.

   TList *list = fParallel->GetSelectList();
   fSelectionSelect->RemoveAll();
   Bool_t enable = list->GetSize() > 0;
   fSelectionSelect->SetEnabled(enable);
   fSelectLineColor->SetEnabled(enable);
   fSelectLineWidth->SetEnabled(enable);
   fActivateSelection->SetEnabled(enable);
   fShowRanges->SetEnabled(enable);
   fDeleteSelection->SetEnabled(enable);
   if (list->GetSize() > 0) {
      Int_t i = 0;
      TIter next(list);
      TParallelCoordSelect* sel;
      while ((sel = (TParallelCoordSelect*)next())) {
         fSelectionSelect->AddEntry(sel->GetTitle(),i);
         fSelectionSelect->GetListBox()->GetEntry(i)->SetBackgroundColor(TColor::Number2Pixel(sel->GetLineColor()));
         ++i;
      }
      sel = fParallel->GetCurrentSelection();
      fSelectionSelect->Select(list->IndexOf(sel),kFALSE);
      Color_t c;
      Pixel_t p;
      c = sel->GetLineColor();
      p = TColor::Number2Pixel(c);
      fSelectLineColor->SetColor(p);
      fSelectLineWidth->Select(sel->GetLineWidth());
      fActivateSelection->SetOn(sel->TestBit(TParallelCoordSelect::kActivated));
      fShowRanges->SetOn(sel->TestBit(TParallelCoordSelect::kShowRanges));
   }
}


//______________________________________________________________________________
void TParallelCoordEditor::CleanUpVariables()
{
   // Clean up the variables combo box.
   
   TList *list = fParallel->GetVarList();
   fVariables->RemoveAll();
   Bool_t enable = list->GetSize() > 0;
   fVariables->SetEnabled(enable);
   fDeleteVar->SetEnabled(enable);
   fHistShowBoxes->SetEnabled(enable);
   fHistWidth->SetEnabled(enable);
   fHistBinning->SetEnabled(enable);
   if (list->GetSize() > 0) {
      Int_t i = 0;
      TIter next(list);
      TParallelCoordVar* var;
      while ((var = (TParallelCoordVar*)next())) {
         fVariables->AddEntry(var->GetTitle(),i);
         ++i;
      }
      var = (TParallelCoordVar*)list->First();
      fVariables->Select(0,kFALSE);
      fHistShowBoxes->SetOn(var->TestBit(TParallelCoordVar::kShowBarHisto));
      fHistWidth->SetNumber(var->GetHistLineWidth());
      fHistBinning->SetNumber(var->GetHistBinning());
   }
}


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

   fGlobalLineColor->Connect("ColorSelected(Pixel_t)","TParallelCoordEditor",
                             this, "DoGlobalLineColor(Pixel_t)");
   fGlobalLineWidth->Connect("Selected(Int_t)","TParallelCoordEditor",
                             this, "DoGlobalLineWidth(Int_t)");
   fDotsSpacing->Connect("Released()","TParallelCoordEditor",
                        this, "DoDotsSpacing()");
   fDotsSpacing->Connect("PositionChanged(Int_t)","TParallelCoordEditor",
                        this, "DoLiveDotsSpacing(Int_t)");
   fDotsSpacingField->Connect("ReturnPressed()","TParallelCoordEditor",
                              this, "DoDotsSpacingField()");
   fLineTypeBgroup->Connect("Clicked(Int_t)", "TParallelCoordEditor",
                            this, "DoLineType()");
   fSelectionSelect->Connect("Selected(const char*)","TParallelCoordEditor",
                            this, "DoSelectionSelect(const char*)");
   fSelectLineColor->Connect("ColorSelected(Pixel_t)","TParallelCoordEditor",
                             this, "DoSelectLineColor(Pixel_t)");
   fSelectLineWidth->Connect("Selected(Int_t)","TParallelCoordEditor",
                             this, "DoSelectLineWidth(Int_t)");
   fActivateSelection->Connect("Toggled(Bool_t)","TParallelCoordEditor",
                               this, "DoActivateSelection(Bool_t)");
   fShowRanges->Connect("Toggled(Bool_t)","TParallelCoordEditor",
                        this, "DoShowRanges(Bool_t)");
   fDeleteSelection->Connect("Clicked()","TParallelCoordEditor",
                             this, "DoDeleteSelection()");
   fAddSelection->Connect("Clicked()","TParallelCoordEditor",
                             this, "DoAddSelection()");
   fPaintEntries->Connect("Toggled(Bool_t)","TParallelCoordEditor",
                               this, "DoPaintEntries(Bool_t)");
   fEntriesToDraw->Connect("Released()","TParallelCoordEditor",
                          this, "DoEntriesToDraw()");
   fEntriesToDraw->Connect("PositionChanged()","TParallelCoordEditor",
                          this, "DoLiveEntriesToDraw()");
   fFirstEntry->Connect("ReturnPressed()","TParallelCoordEditor",
                        this, "DoFirstEntry()");
   fNentries->Connect("ReturnPressed()","TParallelCoordEditor",
                     this, "DoNentries()");
   fApplySelect->Connect("Clicked()","TParallelCoordEditor",
                         this, "DoApplySelect()");
   fUnApply->Connect("Clicked()","TParallelCoordEditor",
                     this, "DoUnApply()");
   fDelayDrawing->Connect("Toggled(Bool_t)","TParallelCoordEditor",
                     this, "DoDelayDrawing(Bool_t)");
   fAddVariable->Connect("ReturnPressed()","TParallelCoordEditor",
                     this, "DoAddVariable()");
   fButtonAddVar->Connect("Clicked()","TParallelCoordEditor",
                     this, "DoAddVariable()");
   fHideAllRanges->Connect("Toggled(Bool_t)","TParallelCoordEditor",
                           this, "DoHideAllRanges(Bool_t)");
   fVariables->Connect("Selected(const char*)","TParallelCoordEditor",
                      this, "DoVariableSelect(const char*)");
   fDeleteVar->Connect("Clicked()","TParallelCoordEditor",
                      this, "DoDeleteVar()");
   fHistWidth->Connect("ReturnPressed()","TParallelCoordEditor",
                       this, "DoHistWidth()");
   fHistBinning->Connect("ReturnPressed()","TParallelCoordEditor",
                         this, "DoHistBinning()");
   fWeightCut->Connect("Released()","TParallelCoordEditor",
                       this, "DoWeightCut()");
   fWeightCut->Connect("PositionChanged(Int_t)","TParallelCoordEditor",
                       this, "DoLiveWeightCut(Int_t)");
   fWeightCutField->Connect("ReturnPressed()","TParallelCoordEditor",
                            this, "DoWeightCut()");
   fHistColorSelect->Connect("ColorSelected(Pixel_t)", "TParallelCoordEditor",
                             this, "DoHistColorSelect(Pixel_t)");
   fHistPatternSelect->Connect("PatternSelected(Style_t)", "TParallelCoordEditor",
                               this, "DoHistPatternSelect(Style_t)");
   fHistShowBoxes->Connect("Toggled(Bool_t)","TParallelCoordEditor",
                               this, "DoHistShowBoxes(Bool_t)");

   fInit = kFALSE;
}


//______________________________________________________________________________
void TParallelCoordEditor::DoActivateSelection(Bool_t on)
{
   // Slot to activate or not a selection.

   if (fAvoidSignal) return;

   fParallel->GetCurrentSelection()->SetActivated(on);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoAddSelection()
{
   // Slot to add a selection.

   TString title = fAddSelectionField->GetText();
   if(title == "") title = "Selection";
   TString titlebis = title;
   Bool_t found = kTRUE;
   Int_t i=1;
   while (found){
      if(fSelectionSelect->FindEntry(titlebis)) {
         titlebis = title;
         titlebis.Append(Form("(%d)",i));
      }
      else found = kFALSE;
      ++i;
   }

   fParallel->AddSelection(titlebis.Data());

   CleanUpSelections();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoAddVariable()
{
   // Slot to add a variable.

   if (fAvoidSignal) return;

   fParallel->AddVariable(fAddVariable->GetText());
   CleanUpVariables();
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoApplySelect()
{
   // Slot to apply a selection to the tree.

   //FIXME I forgot to update the slider over the entries
   //      (nentries and firstentry might have changed after applying the selection)
   
   if (fAvoidSignal) return;

   fParallel->ApplySelectionToTree();
   Update();
   SetModel(fParallel);
}


//______________________________________________________________________________
void TParallelCoordEditor::DoDelayDrawing(Bool_t on)
{
   // Slot to delay the drawing.

   if (fAvoidSignal) return;

   fDelay = on;
   fParallel->SetLiveRangesUpdate(!on);
}


//______________________________________________________________________________
void TParallelCoordEditor::DoDeleteSelection()
{
   // Slot to delete a selection.

   if (fAvoidSignal) return;

   fParallel->DeleteSelection(fParallel->GetCurrentSelection());

   CleanUpSelections();
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoDeleteVar()
{
   // Slot to delete a variable().

   if (fAvoidSignal) return;

   TParallelCoordVar* var = fParallel->RemoveVariable(((TGTextLBEntry*)fVariables->GetSelectedEntry())->GetTitle());
   CleanUpVariables();
   if(var) Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoDotsSpacing()
{
   // Slot to set the line dotspacing.

   if (fAvoidSignal) return;

   fParallel->SetDotsSpacing(fDotsSpacing->GetPosition());
   fDotsSpacingField->SetNumber((Int_t)fDotsSpacing->GetPosition());
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoDotsSpacingField()
{
   // Slot to set the line dotspacing from the entry field.

   if (fAvoidSignal) return;

   fParallel->SetDotsSpacing((Int_t)fDotsSpacingField->GetNumber());
   fDotsSpacing->SetPosition((Int_t)fDotsSpacingField->GetNumber());
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoEntriesToDraw()
{
   // Slot to select the entries to be drawn.

   if (fAvoidSignal) return;

   Long64_t nentries,firstentry;
   firstentry = (Long64_t)fEntriesToDraw->GetMinPosition();
   nentries = (Long64_t)(fEntriesToDraw->GetMaxPosition() - fEntriesToDraw->GetMinPosition() + 1);

   fParallel->SetCurrentFirst(firstentry);
   fParallel->SetCurrentN(nentries);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoFirstEntry()
{
   // Slot to set the first entry.

   if (fAvoidSignal) return;

   fParallel->SetCurrentFirst((Long64_t)fFirstEntry->GetNumber());
   fEntriesToDraw->SetPosition((Long64_t)fFirstEntry->GetNumber(),(Long64_t)fFirstEntry->GetNumber()+fParallel->GetCurrentN());
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoGlobalLineColor(Pixel_t a)
{
   // Slot to set the global line color.

   if (fAvoidSignal) return;

   fParallel->SetLineColor(TColor::GetColor(a));
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoGlobalLineWidth(Int_t wid)
{
   // Slot to set the global line width.

   if (fAvoidSignal) return;

   fParallel->SetLineWidth(wid);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoHideAllRanges(Bool_t on)
{
   // Slot to hide all the ranges.

   if (fAvoidSignal) return;

   TIter next(fParallel->GetSelectList());
   TParallelCoordSelect* sel;
   while((sel = (TParallelCoordSelect*)next())) sel->SetShowRanges(!on);
   fShowRanges->SetOn(!on);
   fShowRanges->SetEnabled(!on);
   fShowRanges->SetOn(!on);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoHistBinning()
{
   // Slot to set the axes histogram binning.

   if (fAvoidSignal) return;

   fParallel->SetAxisHistogramBinning((Int_t)fHistBinning->GetNumber());
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoHistColorSelect(Pixel_t p)
{
   // Slot to set the histograms color.

   if (fAvoidSignal) return;
   
   Color_t col = TColor::GetColor(p);
   TIter next(fParallel->GetVarList());
   TParallelCoordVar *var = NULL;
   while ((var = (TParallelCoordVar*)next())) var->SetFillColor(col);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoHistShowBoxes(Bool_t s)
{
   // Slot to set histogram height.

   if (fAvoidSignal) return;

   TIter next(fParallel->GetVarList());
   TParallelCoordVar* var;
   while ((var = (TParallelCoordVar*)next())) var->SetBit(TParallelCoordVar::kShowBarHisto,s);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoHistPatternSelect(Style_t sty)
{
   // Slot to set the histograms fill style.

   if (fAvoidSignal) return;
   
   TIter next(fParallel->GetVarList());
   TParallelCoordVar *var = NULL;
   while ((var = (TParallelCoordVar*)next())) var->SetFillStyle(sty);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoHistWidth()
{
   // Slot to set histogram width.

   if (fAvoidSignal) return;

   fParallel->SetAxisHistogramLineWidth((Int_t)fHistWidth->GetNumber());
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoLineType()
{
   // Slot to set the line type.

   if (fAvoidSignal) return;

   if(fLineTypePoly->GetState() == kButtonDown) fParallel->SetCurveDisplay(kFALSE);
   else fParallel->SetCurveDisplay(kTRUE);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoLiveDotsSpacing(Int_t a)
{
   // Slot to set the dots spacing online.

   if (fAvoidSignal) return;
   fDotsSpacingField->SetNumber(a);
   fParallel->SetDotsSpacing(a);
   if(!fDelay) Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoLiveEntriesToDraw()
{
   // Slot to update the entries fields from the slider position.

   if (fAvoidSignal) return;

   Long64_t nentries,firstentry;
   firstentry = (Long64_t)fEntriesToDraw->GetMinPosition();
   nentries = (Long64_t)(fEntriesToDraw->GetMaxPosition() - fEntriesToDraw->GetMinPosition() + 1);

   fFirstEntry->SetNumber(firstentry);
   fNentries->SetNumber(nentries);

   if (!fDelay) {
      fParallel->SetCurrentFirst(firstentry);
      fParallel->SetCurrentN(nentries);
      Update();
   }
}


//______________________________________________________________________________
void TParallelCoordEditor::DoLiveWeightCut(Int_t n)
{
   // Slot to update the wieght cut entry field from the slider position.

   if (fAvoidSignal) return;

   fWeightCutField->SetNumber(n);
   if (!fDelay) {
      fParallel->SetWeightCut(n);
      Update();
   }
}


//______________________________________________________________________________
void TParallelCoordEditor::DoNentries()
{
   // Slot to set the number of entries to display.

   if (fAvoidSignal) return;

   fParallel->SetCurrentN((Long64_t)fNentries->GetNumber());
   fEntriesToDraw->SetPosition(fParallel->GetCurrentFirst(),fParallel->GetCurrentFirst()+fParallel->GetCurrentN());
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoPaintEntries(Bool_t on)
{
   // Slot to postpone the entries drawing.

   if (fAvoidSignal) return;

   fParallel->SetBit(TParallelCoord::kPaintEntries,on);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoSelectLineColor(Pixel_t a)
{
   // Slot to set the global line color.

   if (fAvoidSignal) return;

   fParallel->GetCurrentSelection()->SetLineColor(TColor::GetColor(a));
   fSelectionSelect->GetSelectedEntry()->SetBackgroundColor(a);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoSelectLineWidth(Int_t wid)
{
   // Slot to set the global line width.

   if (fAvoidSignal) return;

   fParallel->GetCurrentSelection()->SetLineWidth(wid);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoSelectionSelect(const char* title)
{
   // Slot to set the selection beeing edited.

   if (fAvoidSignal) return;

   if (!fParallel->SetCurrentSelection(title)) return;

   Color_t c = fParallel->GetCurrentSelection()->GetLineColor();
   Pixel_t p = TColor::Number2Pixel(c);
   fSelectLineColor->SetColor(p,kFALSE);

   fSelectLineWidth->Select(fParallel->GetCurrentSelection()->GetLineWidth(),kFALSE);

   fActivateSelection->SetOn(fParallel->GetCurrentSelection()->TestBit(TParallelCoordSelect::kActivated));
   fShowRanges->SetOn(fParallel->GetCurrentSelection()->TestBit(TParallelCoordSelect::kShowRanges));
}


//______________________________________________________________________________
void TParallelCoordEditor::DoShowRanges(Bool_t s)
{
   // Slot to show or not the ranges on the pad.

   if (fAvoidSignal) return;

   fParallel->GetCurrentSelection()->SetShowRanges(s);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::DoUnApply()
{
   // Slot to reset the tree entry list to the original one.

   if (fAvoidSignal) return;

   fParallel->ResetTree();
   Update();
   SetModel(fParallel);
}


//______________________________________________________________________________
void TParallelCoordEditor::DoVariableSelect(const char* /*var*/)
{
   // Slot to select a variable.

   //cout<<((TGTextLBEntry*)fVariables->GetSelectedEntry())->GetTitle()<<endl;
}


//______________________________________________________________________________
void TParallelCoordEditor::DoWeightCut()
{
   // Slot to update the weight cut.

   if (fAvoidSignal) return;

   Int_t n = (Int_t)fWeightCutField->GetNumber();
   fParallel->SetWeightCut(n);
   Update();
}


//______________________________________________________________________________
void TParallelCoordEditor::SetModel(TObject* obj)
{
   // Pick up the used parallel coordinates plot attributes.

   fParallel = dynamic_cast<TParallelCoord*>(obj);
   fAvoidSignal = kTRUE;

   Color_t c = fParallel->GetLineColor();
   Pixel_t p = TColor::Number2Pixel(c);
   fGlobalLineColor->SetColor(p);

   fGlobalLineWidth->Select(fParallel->GetLineWidth());

   fPaintEntries->SetOn(fParallel->TestBit(TParallelCoord::kPaintEntries));

   fDotsSpacing->SetPosition(fParallel->GetDotsSpacing());

   fDotsSpacingField->SetNumber(fParallel->GetDotsSpacing());

   Bool_t cur = fParallel->GetCurveDisplay();
   if (cur) fLineTypeBgroup->SetButton(kLineTypeCurves,kTRUE);
   else     fLineTypeBgroup->SetButton(kLineTypePoly,kTRUE);

   if(fInit) fHideAllRanges->SetOn(kFALSE);
   
   CleanUpSelections();
   CleanUpVariables();

   if (fInit) fEntriesToDraw->SetRange(0,fParallel->GetNentries());
   fEntriesToDraw->SetPosition(fParallel->GetCurrentFirst(), fParallel->GetCurrentFirst()+fParallel->GetCurrentN());

   fFirstEntry->SetNumber(fParallel->GetCurrentFirst());
   fNentries->SetNumber(fParallel->GetCurrentN());

   fDelayDrawing->SetOn(fDelay);

   fWeightCut->SetRange(0,(Int_t)(fParallel->GetNentries()/10)); // Maybe search here for better boundaries.
   fWeightCut->SetPosition(fParallel->GetWeightCut());
   fWeightCutField->SetNumber(fParallel->GetWeightCut());
   
   fHistColorSelect->SetColor(TColor::Number2Pixel(((TParallelCoordVar*)fParallel->GetVarList()->Last())->GetFillColor()), kFALSE);
   fHistPatternSelect->SetPattern(((TParallelCoordVar*)fParallel->GetVarList()->Last())->GetFillStyle(),kFALSE);
   
   if (fInit) ConnectSignals2Slots();

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