// @(#)root/eve:$Id$
// Author: Matevz Tadel 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 "TEveCaloVizEditor.h"
#include "TEveCalo.h"
#include "TEveGValuators.h"
#include "TEveRGBAPaletteEditor.h"
#include "TEveCaloData.h"

#include "TGClient.h"
#include "TGFont.h"
#include "TGedEditor.h"

#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "TGDoubleSlider.h"
#include "TGNumberEntry.h"
#include "TG3DLine.h"
#include "TGButtonGroup.h"
#include "TColor.h"
#include "TGColorSelect.h"

#include "TMathBase.h"
#include "TMath.h"

//______________________________________________________________________________
// GUI editor for TEveCaloEditor.
//

ClassImp(TEveCaloVizEditor);

//______________________________________________________________________________
TEveCaloVizEditor::TEveCaloVizEditor(const TGWindow *p, Int_t width, Int_t height,
                                     UInt_t options, Pixel_t back) :
   TGedFrame(p, width, height, options | kVerticalFrame, back),
   fM(0),

   fPlotE(0),
   fPlotEt(0),

   fScaleAbs(0),
   fMaxValAbs(0),
   fMaxTowerH(0),

   fEtaRng(0),
   fPhi(0),
   fPhiOffset(0),
   fDataFrame(0),
   fSliceFrame(0)
{
   // Constructor.

   MakeTitle("TEveCaloViz");

   TGLabel* label  = 0;
   Int_t    labelW = 45;

   // scaling
   TGHorizontalFrame* scf = new TGHorizontalFrame(this);

   label = new TGLabel(scf, "ScaleAbsolute:");
   scf->AddFrame(label, new TGLayoutHints(kLHintsLeft  | kLHintsBottom));

   fScaleAbs  = new TGCheckButton(scf);
   scf->AddFrame(fScaleAbs, new TGLayoutHints(kLHintsLeft, 3, 5, 3, 0));
   fScaleAbs->Connect("Toggled(Bool_t)", "TEveCaloVizEditor", this, "DoScaleAbs()");


   fMaxValAbs = new TEveGValuator(scf, "MaxEVal:", 70, 0);
   fMaxValAbs->SetLabelWidth(56);
   fMaxValAbs->SetNELength(5);
   fMaxValAbs->SetShowSlider(kFALSE);
   fMaxValAbs->Build();
   fMaxValAbs->SetLimits(0, 1000);
   fMaxValAbs->Connect("ValueSet(Double_t)", "TEveCaloVizEditor", this, "DoMaxValAbs()");
   scf->AddFrame(fMaxValAbs, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));

   AddFrame(scf, new TGLayoutHints(kLHintsTop, 4, 1, 1, 0));


   // tower height
   fMaxTowerH = new TEveGValuator(this, "MaxTowerH:", 96, 0);
   fMaxTowerH->SetLabelWidth(71);
   fMaxTowerH->SetNELength(5);
   fMaxTowerH->SetShowSlider(kFALSE);
   fMaxTowerH->Build();
   fMaxTowerH->SetLimits(0.1, 500, 501, TGNumberFormat::kNESRealOne);
   fMaxTowerH->Connect("ValueSet(Double_t)", "TEveCaloVizEditor", this, "DoMaxTowerH()");
   AddFrame(fMaxTowerH, new TGLayoutHints(kLHintsTop, 4, 1, 1, 1));


   //______________________________________________________________________________

   fDataFrame = CreateEditorTabSubFrame("Data");

   // E/Et Plot
   {
      TGHorizontalFrame *group = new TGHorizontalFrame(fDataFrame);
      TGCompositeFrame  *labfr = new TGHorizontalFrame(group, 28, 20, kFixedSize);

      TGFont *myfont = gClient->GetFont("-adobe-times-bold-r-*-*-12-*-*-*-*-*-iso8859-1");
      label = new TGLabel(labfr, "Plot:");
      label->SetTextFont(myfont);
      labfr->AddFrame(label, new TGLayoutHints(kLHintsLeft  | kLHintsBottom));
      group->AddFrame(labfr, new TGLayoutHints(kLHintsLeft));

      fPlotE = new TGRadioButton(group, new TGHotString("E"), 11);
      fPlotE->Connect("Clicked()", "TEveCaloVizEditor", this, "DoPlot()");
      group->AddFrame(fPlotE, new TGLayoutHints(kLHintsLeft  | kLHintsBottom, 2, 2, 0, 0));

      fPlotEt = new TGRadioButton(group, new TGHotString("Et"), 22);
      fPlotEt->Connect("Clicked()", "TEveCaloVizEditor", this, "DoPlot()");
      group->AddFrame(fPlotEt, new TGLayoutHints(kLHintsLeft  | kLHintsBottom,  2, 2, 0, 0));

      fDataFrame->AddFrame(group, new TGLayoutHints(kLHintsTop, 4, 1, 1, 0));
   }

   // eta
   fEtaRng = new TEveGDoubleValuator(fDataFrame,"Eta rng:", 40, 0);
   fEtaRng->SetNELength(6);
   fEtaRng->SetLabelWidth(labelW);
   fEtaRng->Build();
   fEtaRng->GetSlider()->SetWidth(195);
   fEtaRng->SetLimits(-5.5, 5.5, TGNumberFormat::kNESRealTwo);
   fEtaRng->Connect("ValueSet()", "TEveCaloVizEditor", this, "DoEtaRange()");
   fDataFrame->AddFrame(fEtaRng, new TGLayoutHints(kLHintsTop, 1, 1, 4, 5));

   // phi
   fPhi = new TEveGValuator(fDataFrame, "Phi:", 90, 0);
   fPhi->SetLabelWidth(labelW);
   fPhi->SetNELength(6);
   fPhi->Build();
   fPhi->SetLimits(-TMath::Pi(), TMath::Pi(), TGNumberFormat::kNESRealTwo);
   fPhi->Connect("ValueSet(Double_t)", "TEveCaloVizEditor", this, "DoPhi()");
   fDataFrame->AddFrame(fPhi, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));

   fPhiOffset = new TEveGValuator(fDataFrame, "PhiOff:", 90, 0);
   fPhiOffset->SetLabelWidth(labelW);
   fPhiOffset->SetNELength(6);
   fPhiOffset->Build();
   fPhiOffset->SetLimits(0, TMath::Pi(), TGNumberFormat::kNESRealTwo);
   fPhiOffset->Connect("ValueSet(Double_t)", "TEveCaloVizEditor", this, "DoPhi()");
   fDataFrame->AddFrame(fPhiOffset, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));

   fSliceFrame = new TGVerticalFrame(fDataFrame);
   fDataFrame->AddFrame(fSliceFrame);
}

//______________________________________________________________________________
void TEveCaloVizEditor::MakeSliceInfo()
{

   // Create slice info gui.

   Int_t ns = fM->GetData()->GetNSlices();
   Int_t nf = fSliceFrame->GetList()->GetSize();

   if (ns > nf)
   {
      for (Int_t i=nf; i<ns; ++i)
      {
         TGHorizontalFrame* f = new TGHorizontalFrame(fSliceFrame);

         TEveGValuator* threshold = new TEveGValuator(f,"", 90, 0, i);
         threshold->SetLabelWidth(50);
         threshold->SetNELength(6);
         threshold->SetShowSlider(kFALSE);
         threshold->Build();
         threshold->SetLimits(0, 1000, TGNumberFormat::kNESRealTwo);
         threshold->Connect("ValueSet(Double_t)", "TEveCaloVizEditor", this, "DoSliceThreshold()");
         f->AddFrame(threshold, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));

         TGColorSelect* color = new TGColorSelect(f, 0, i);
         f->AddFrame(color, new TGLayoutHints(kLHintsLeft|kLHintsTop, 3, 1, 0, 1));
         color->Connect("ColorSelected(Pixel_t)", "TEveCaloVizEditor", this, "DoSliceColor(Pixel_t)");

         TGNumberEntry* transparency = new TGNumberEntry(f, 0., 2, i,
                                           TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
                                           TGNumberFormat::kNELLimitMinMax, 0, 100);
         transparency->SetHeight(18);
         transparency->GetNumberEntry()->SetToolTipText("Transparency: 0 is opaque, 100 fully transparent.");
         f->AddFrame(transparency, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
         transparency->Connect("ValueSet(Long_t)", "TEveCaloVizEditor", this, "DoSliceTransparency(Long_t)");


         fSliceFrame->AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 0));
      }
      nf = ns;
   }

   TIter frame_iterator(fSliceFrame->GetList());
   for (Int_t i=0; i<nf; ++i)
   {
      TGFrameElement    *el = (TGFrameElement*)    frame_iterator();
      TGHorizontalFrame *fr = (TGHorizontalFrame*) el->fFrame;
      if (i < ns)
      {
         TEveCaloData::SliceInfo_t &si = fM->GetData()->RefSliceInfo(i);

         TEveGValuator *threshold = (TEveGValuator*) ((TGFrameElement*) fr->GetList()->At(0))->fFrame;
         TGColorSelect *color     = (TGColorSelect*) ((TGFrameElement*) fr->GetList()->At(1) )->fFrame;
         TGNumberEntry *transp    = (TGNumberEntry*) ((TGFrameElement*) fr->GetList()->At(2))->fFrame;

         threshold->GetLabel()->SetText(si.fName);
         threshold->SetValue(si.fThreshold);
         color->SetColor(TColor::Number2Pixel(si.fColor), kFALSE);
         transp->SetNumber(si.fTransparency);

         if (! fr->IsMapped()) {
            fr->MapSubwindows();
            fr->MapWindow();
         }
      }
      else
      {
         if (fr->IsMapped()) {
            fr->UnmapWindow();
         }
      }
   }
}

//______________________________________________________________________________
void TEveCaloVizEditor::SetModel(TObject* obj)
{
   // Set model object.

   fM = dynamic_cast<TEveCaloViz*>(obj);
   if (fM->GetPlotEt())
   {
      fPlotEt->SetState(kButtonDown, kFALSE);
      fPlotE->SetState(kButtonUp, kFALSE);
   }
   else
   {
      fPlotE->SetState(kButtonDown, kFALSE);
      fPlotEt->SetState(kButtonUp, kFALSE);
   }

   if (fM->fData)
   {
      TGCompositeFrame* p = GetGedEditor()->GetEditorTab("Data");
      if (p->GetList()->IsEmpty())
      {
         p->MapWindow();
         p->MapSubwindows();
      }

      fScaleAbs->SetState(fM->GetScaleAbs() ? kButtonDown : kButtonUp);
      fMaxValAbs->SetValue(fM->GetMaxValAbs());
      fMaxTowerH->SetValue(fM->GetMaxTowerH());

      Double_t min, max;
      fM->GetData()->GetEtaLimits(min, max);
      fEtaRng->SetLimits((Float_t)min, (Float_t)max);
      fEtaRng->SetValues(fM->fEtaMin, fM->fEtaMax);

      fM->GetData()->GetPhiLimits(min, max);
      fPhi->SetLimits(min, max, 101, TGNumberFormat::kNESRealTwo);
      fPhi->SetValue(fM->fPhi);
      if ( fM->GetData()->GetWrapTwoPi())
      {
         fPhi->SetToolTip("Center angle in radians");
         fPhiOffset->SetLimits(1e-3, TMath::Pi(), 101, TGNumberFormat::kNESRealTwo);
      }
      else
      {
         Float_t d = (max-min)*0.5;
         fPhiOffset->SetLimits(1e-3, d, 101, TGNumberFormat::kNESRealTwo);
      }
      fPhiOffset->SetValue(fM->fPhiOffset);
      fPhiOffset->SetToolTip("Phi range in radians");

      MakeSliceInfo();
   }
   else
   {

      fDataFrame->UnmapWindow();
   }
}

//______________________________________________________________________________
void TEveCaloVizEditor::DoMaxTowerH()
{
   // Slot for setting max tower height.

   fM->SetMaxTowerH(fMaxTowerH->GetValue());
   Update();
}

//______________________________________________________________________________
void TEveCaloVizEditor::DoScaleAbs()
{
   // Slot for enabling/disabling absolute scale.

   fM->SetScaleAbs(fScaleAbs->IsOn());
   Update();
}

//___________________________________________________________________________
void TEveCaloVizEditor::DoMaxValAbs()
{
   // Slot for setting max E in for absolute scale.

   fM->SetMaxValAbs(fMaxValAbs->GetValue());
   Update();
}

//___________________________________________________________________________
void TEveCaloVizEditor::DoPlot()
{
   // Slot for setting E/Et plot.

   TGButton *btn = (TGButton *) gTQSender;
   Int_t id = btn->WidgetId();

   if (id == fPlotE->WidgetId())
      fPlotEt->SetState(kButtonUp);
   else
      fPlotE->SetState(kButtonUp);

   fM->SetPlotEt(fPlotEt->IsDown());
   Update();
}

//______________________________________________________________________________
void TEveCaloVizEditor::DoEtaRange()
{
   // Slot for setting eta range.

   fM->SetEta(fEtaRng->GetMin(), fEtaRng->GetMax());
   Update();
}

//______________________________________________________________________________
void TEveCaloVizEditor::DoPhi()
{
  // Slot for setting phi range.

   fM->SetPhiWithRng(fPhi->GetValue(), fPhiOffset->GetValue());
   Update();
}

//______________________________________________________________________________
void TEveCaloVizEditor::DoSliceThreshold()
{
   // Slot for SliceThreshold.

   TEveGValuator *st = (TEveGValuator *) gTQSender;
   fM->SetDataSliceThreshold(st->WidgetId(), st->GetValue());
   Update();
}

//______________________________________________________________________________
void TEveCaloVizEditor::DoSliceColor(Pixel_t pixel)
{
   // Slot for slice info Color.

   TGColorSelect *cs = (TGColorSelect *) gTQSender;
   fM->SetDataSliceColor(cs->WidgetId(), Color_t(TColor::GetColor(pixel)));
   Update();
}

//______________________________________________________________________________
void TEveCaloVizEditor::DoSliceTransparency(Long_t t)
{
   // Slot for slice transparency.

   TGNumberEntry *cs = (TGNumberEntry*) gTQSender;
   fM->GetData()->SetSliceTransparency(cs->WidgetId(), t);
   Update();
}

/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
//______________________________________________________________________________
// GUI editor for TEveCalo3DEditor.
//

ClassImp(TEveCalo3DEditor);

//______________________________________________________________________________
TEveCalo3DEditor::TEveCalo3DEditor(const TGWindow *p, Int_t width, Int_t height,
                                       UInt_t options, Pixel_t back) :
   TGedFrame(p, width, height, options | kVerticalFrame, back),
   fM(0),
   fFrameTransparency(0)
{
   // Constructor.

   MakeTitle("TEveCalo3D");

   TGHorizontalFrame* f = new TGHorizontalFrame(this);
   TGLabel* lab = new TGLabel(f, "Frame transparency: ");
   f->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 1, 1, 1));

   fFrameTransparency = new TGNumberEntry(f, 0., 2, -1,
                                     TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
                                     TGNumberFormat::kNELLimitMinMax, 0, 100);

   fFrameTransparency->SetHeight(18);
   fFrameTransparency->GetNumberEntry()->SetToolTipText("Transparency: 0 is opaque, 100 fully transparent.");
   f->AddFrame(fFrameTransparency, new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
   fFrameTransparency->Connect("ValueSet(Long_t)","TEveCalo3DEditor", this, "DoFrameTransparency()");

   AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 0));
}

//______________________________________________________________________________
void TEveCalo3DEditor::SetModel(TObject* obj)
{
   // Set model object.

   fM = dynamic_cast<TEveCalo3D*>(obj);
   fFrameTransparency->SetNumber(fM->GetFrameTransparency());
}

//______________________________________________________________________________
void TEveCalo3DEditor::DoFrameTransparency()
{
   // Slot for frame transparency.

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