ROOT logo
// $Id$
// Author: Stefano Carrazza 2010, CERN, stefano.carrazza@cern.ch

/**************************************************************************
 * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveLego.h"
#include "AliEveLegoEditor.h"

#include "TColor.h"
#include "TGButton.h"
#include "TGButtonGroup.h"
#include "TGColorSelect.h"
#include "TGComboBox.h"
#include "TGDoubleSlider.h"
#include "TGFrame.h"
#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "TGString.h"
#include "TVirtualPad.h"

//______________________________________________________________________________
// This is the GUI editor for AliEveLego.
//

ClassImp(AliEveLegoEditor)

//______________________________________________________________________________
AliEveLegoEditor::AliEveLegoEditor(const TGWindow *p, Int_t width, Int_t height,
             UInt_t options, Pixel_t back) :
  TGedFrame(p, width, height, options | kVerticalFrame, back),
  fM(0),
  fAllEventsButton(0),
  fParticlesBG(0),
  fTrackSelection(0),
  fPosCharged(0),
  fNegCharged(0),
  fElectrons(0),
  fMuons(0),
  fPions(0),
  fKaons(0),
  fProtons(0),
  fLabel(0),
  fLabel1(0),
  fThreshold(0),
  fMaxPt(0),
  fSelect(0),
  fParticlesBGAE(0),  
  fTrackSelectionAE(0),
  fPosChargedAE(0),
  fNegChargedAE(0),
  fElectronsAE(0),
  fMuonsAE(0),
  fPionsAE(0),
  fKaonsAE(0),
  fProtonsAE(0),
  fApplyChanges(0),
  fLabelAE(0),
  fLabel1AE(0),
  fThresholdAE(0),
  fMaxPtAE(0),
  fEventControl(0),
  fIsMC(0),
  fCollisionCandidatesOnly(0)
{
  // Constructor.
  MakeTitle("AliEveLego");

  // Create widgets

  //------ AllEventsButton ------
  fAllEventsButton = new TGTextButton(this, "Create lego of all events");
  AddFrame(fAllEventsButton, new TGLayoutHints(kLHintsExpandX));
  fAllEventsButton->Connect("Clicked()", "AliEveLegoEditor", this, "DoAllEvents()");

  //------ Particle Selection ------
  fParticlesBG = new TGGroupFrame(this, "Particle selection:", kVerticalFrame);
  fPosCharged  = new TGCheckButton(fParticlesBG, new TGHotString("&Positive charged"));
  fNegCharged  = new TGCheckButton(fParticlesBG, new TGHotString("&Negative charged"));
  fElectrons   = new TGCheckButton(fParticlesBG, new TGHotString("&Electrons"));
  fMuons       = new TGCheckButton(fParticlesBG, new TGHotString("&Muons"));
  fPions       = new TGCheckButton(fParticlesBG, new TGHotString("&Pions"));
  fKaons       = new TGCheckButton(fParticlesBG, new TGHotString("&Kaons"));
  fProtons     = new TGCheckButton(fParticlesBG, new TGHotString("&Protons"));

  fPosCharged->SetState(kButtonDown);
  fNegCharged->SetState(kButtonDown);
  fElectrons->SetState(kButtonUp);
  fMuons->SetState(kButtonUp);
  fPions->SetState(kButtonUp);
  fKaons->SetState(kButtonUp);
  fProtons->SetState(kButtonUp);

  fPosCharged->Connect("Clicked()", "AliEveLegoEditor", this, "ShowPosCharge()");
  fNegCharged->Connect("Clicked()", "AliEveLegoEditor", this, "ShowNegCharge()");
  fElectrons->Connect("Clicked()", "AliEveLegoEditor", this, "ShowElectrons()");
  fMuons->Connect("Clicked()", "AliEveLegoEditor", this, "ShowMuons()");
  fPions->Connect("Clicked()", "AliEveLegoEditor", this, "ShowPions()");
  fKaons->Connect("Clicked()", "AliEveLegoEditor", this, "ShowKaons()");
  fProtons->Connect("Clicked()", "AliEveLegoEditor", this, "ShowProtons()");

  fParticlesBG->AddFrame(fPosCharged, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
  fParticlesBG->AddFrame(fNegCharged, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
  fParticlesBG->AddFrame(fElectrons, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
  fParticlesBG->AddFrame(fMuons, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
  fParticlesBG->AddFrame(fPions, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
  fParticlesBG->AddFrame(fKaons, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
  fParticlesBG->AddFrame(fProtons, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
  fParticlesBG->SetLayoutManager(new TGVerticalLayout(fParticlesBG));

  AddFrame(fParticlesBG, new TGLayoutHints(kLHintsExpandX));

  //------ Track selection ------
  fTrackSelection = new TGButtonGroup(this, "Track selection:", kHorizontalFrame);
  fRtracks[0] = new TGRadioButton(fTrackSelection, new TGHotString("&All tracks  "));
  fRtracks[1] = new TGRadioButton(fTrackSelection, new TGHotString("&Primary tracks"));
  fRtracks[0]->SetState(kButtonDown);
  AddFrame(fTrackSelection, new TGLayoutHints(kLHintsExpandX));
  fTrackSelection->Connect("Clicked(Int_t)", "AliEveLegoEditor", this, "ShowByTracks(Int_t)");

  //------ Track threshold ------
  TGHorizontalFrame *horz = new TGHorizontalFrame(this);
  AddFrame(horz, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY));
  fLabel = new TGLabel(horz, "Tracks maximum Pt (GeV): ");
  horz->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

  fMaxPt = new TGNumberEntry(horz, 10000, 7, -1,
                                 TGNumberFormat::kNESRealOne,
                                 TGNumberFormat::kNEANonNegative,
                                 TGNumberFormat::kNELLimitMinMax,
                                 0, 10000);

  fMaxPt->Connect("ValueSet(Long_t)", "AliEveLegoEditor", this, "SetMaxPt()");

  horz->AddFrame( fMaxPt, new TGLayoutHints(kLHintsRight | kLHintsNormal | kLHintsCenterY));

  TGHorizontalFrame *horz1 = new TGHorizontalFrame(this);
  AddFrame(horz1, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY));
  fLabel1 = new TGLabel(horz1, "Tracks threshold (GeV): ");
  horz1->AddFrame(fLabel1, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

  fThreshold = new TGNumberEntry(horz1, 0, 7, -1,
                                 TGNumberFormat::kNESRealOne,
                                 TGNumberFormat::kNEANonNegative,
                                 TGNumberFormat::kNELLimitMinMax,
                                 0, 10000);

  fThreshold->Connect("ValueSet(Long_t)", "AliEveLegoEditor", this, "SetThreshold()");
  horz1->AddFrame( fThreshold, new TGLayoutHints(kLHintsRight | kLHintsNormal | kLHintsCenterY));


}

//______________________________________________________________________________
void AliEveLegoEditor::SetModel(TObject* obj)
{
  // Calls the associated AliEveLego object
  fM = dynamic_cast<AliEveLego*>(obj);
}

//______________________________________________________________________________
void AliEveLegoEditor::DoAllEvents()
{
  // Creates the all events editor
  fAllEventsButton->SetEnabled(kFALSE);
  CreateAllEventsEditor();
  fM->LoadAllEvents();
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowPosCharge()
{   
  // Send particle type to main class
  fM->SetParticleType(0, fPosCharged->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowNegCharge()
{
  // Send particle type to main class
  fM->SetParticleType(1, fNegCharged->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowElectrons()
{
  // Send particle type to main class
  fM->SetParticleType(2, fElectrons->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowMuons()
{
  // Send particle type to main class
  fM->SetParticleType(3, fMuons->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowPions()
{
  // Send particle type to main class
  fM->SetParticleType(4, fPions->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowKaons()
{
  // Send particle type to main class
  fM->SetParticleType(5, fKaons->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowProtons()
{
  // Send particle type to main class
  fM->SetParticleType(6, fProtons->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowPosChargeAE()
{
  // Send particle type to main class
  fM->SetParticleTypeAE(0, fPosChargedAE->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowNegChargeAE()
{
  // Send particle type to main class
  fM->SetParticleTypeAE(1, fNegChargedAE->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowElectronsAE()
{
  // Send particle type to main class
  fM->SetParticleTypeAE(2, fElectronsAE->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowMuonsAE()
{
  // Send particle type to main class
  fM->SetParticleTypeAE(3, fMuonsAE->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowPionsAE()
{
  // Send particle type to main class
  fM->SetParticleTypeAE(4, fPionsAE->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowKaonsAE()
{
  // Send particle type to main class
  fM->SetParticleTypeAE(5, fKaonsAE->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowProtonsAE()
{
  // Send particle type to main class
  fM->SetParticleTypeAE(6, fProtonsAE->IsOn());
}

//______________________________________________________________________________
void AliEveLegoEditor::SetMaxPt()
{
  // Send particle type to main class
  fM->SetMaxPt(fMaxPt->GetNumber());
}

//______________________________________________________________________________
void AliEveLegoEditor::SetMaxPtAE()
{
  // Send particle type to main class
  fM->SetMaxPtAE(fMaxPtAE->GetNumber());
}

//______________________________________________________________________________
void AliEveLegoEditor::SetThreshold()
{
  // Send particle type to main class
  fM->SetThreshold(fThreshold->GetNumber());
}

//______________________________________________________________________________
void AliEveLegoEditor::SetThresholdAE()
{
  // Send particle type to main class
  fM->SetThresholdAE(fThresholdAE->GetNumber());
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowByTracks(Int_t id)
{
  // Send particle type to main class
  fM->SetTracks(id);
}

//______________________________________________________________________________
void AliEveLegoEditor::ShowByTracksAE(Int_t id)
{
  // Send particle type to main class
  fM->SetTracksAE(id);
}

//______________________________________________________________________________
void AliEveLegoEditor::CreateAllEventsEditor()
{
   // Create the GUI of all events
   TGVerticalFrame *this2 = this->CreateEditorTabSubFrame("All events style");

   //------ Event control ------
   fEventControl = new TGButtonGroup(this2, "Event control:", kVerticalFrame);
   fIsMC = new TGCheckButton(fEventControl, new TGHotString("&Data is from simulation (MC)"));
   fCollisionCandidatesOnly = new TGCheckButton(fEventControl, new TGHotString("&Only collision candidates events"));

   //------ Simulation checkbox ------
   fIsMC->SetState(kButtonUp);
   fCollisionCandidatesOnly->SetState(kButtonUp);
   fIsMC->Connect("Clicked()", "AliEveLegoEditor", this, "DataIsMC()");
   fCollisionCandidatesOnly->Connect("Clicked()", "AliEveLegoEditor", this, "CollisionCandidatesOnly()");
   this2->AddFrame(fEventControl, new TGLayoutHints(kLHintsExpandX));

   //------ Particle selection ------
   fParticlesBGAE = new TGButtonGroup(this2, "Particle selection:", kVerticalFrame);
   fPosChargedAE  = new TGCheckButton(fParticlesBGAE, new TGHotString("&Positive charged"));
   fNegChargedAE  = new TGCheckButton(fParticlesBGAE, new TGHotString("&Negative charged"));
   fElectronsAE   = new TGCheckButton(fParticlesBGAE, new TGHotString("&Electrons"));
   fMuonsAE       = new TGCheckButton(fParticlesBGAE, new TGHotString("&Muons"));
   fPionsAE       = new TGCheckButton(fParticlesBGAE, new TGHotString("&Pions"));
   fKaonsAE       = new TGCheckButton(fParticlesBGAE, new TGHotString("&Kaons"));
   fProtonsAE     = new TGCheckButton(fParticlesBGAE, new TGHotString("&Protons"));

   fPosChargedAE->SetState(kButtonDown);
   fNegChargedAE->SetState(kButtonDown);
   fElectronsAE->SetState(kButtonUp);
   fMuonsAE->SetState(kButtonUp);
   fPionsAE->SetState(kButtonUp);
   fKaonsAE->SetState(kButtonUp);
   fProtonsAE->SetState(kButtonUp);

   fPosChargedAE->Connect("Clicked()", "AliEveLegoEditor", this, "ShowPosChargeAE()");
   fNegChargedAE->Connect("Clicked()", "AliEveLegoEditor", this, "ShowNegChargeAE()");
   fElectronsAE->Connect("Clicked()", "AliEveLegoEditor", this, "ShowElectronsAE()");
   fMuonsAE->Connect("Clicked()", "AliEveLegoEditor", this, "ShowMuonsAE()");
   fPionsAE->Connect("Clicked()", "AliEveLegoEditor", this, "ShowPionsAE()");
   fKaonsAE->Connect("Clicked()", "AliEveLegoEditor", this, "ShowKaonsAE()");
   fProtonsAE->Connect("Clicked()", "AliEveLegoEditor", this, "ShowProtonsAE()");

   this2->AddFrame(fParticlesBGAE, new TGLayoutHints(kLHintsExpandX));

   //------ Apply particle selection criteria ------
   fApplyChanges = new TGTextButton(this2, "Apply particle selection");
   fApplyChanges->Connect("Clicked()", "AliEveLegoEditor", this, "ApplyChanges()");
   this2->AddFrame(fApplyChanges, new TGLayoutHints(kLHintsExpandX));

   //------ Track selection ------
   fTrackSelectionAE = new TGButtonGroup(this2, "Track selection:", kHorizontalFrame);
   fRtracksAE[0] = new TGRadioButton(fTrackSelectionAE, new TGHotString("&All tracks  "));
   fRtracksAE[1] = new TGRadioButton(fTrackSelectionAE, new TGHotString("&Primary tracks"));
   fRtracksAE[0]->SetState(kButtonDown);   
   fTrackSelectionAE->Connect("Clicked(Int_t)", "AliEveLegoEditor", this, "ShowByTracksAE(Int_t)");
   this2->AddFrame(fTrackSelectionAE, new TGLayoutHints(kLHintsExpandX));

   //------ Threshold setup ------
   TGHorizontalFrame *horzAE = new TGHorizontalFrame(this2);

   fLabelAE = new TGLabel(horzAE, "Tracks maximum Pt (GeV): ");
   horzAE->AddFrame(fLabelAE, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   fMaxPtAE = new TGNumberEntry(horzAE, 10000, 7, -1,
                                  TGNumberFormat::kNESRealOne,
                                  TGNumberFormat::kNEANonNegative,
                                  TGNumberFormat::kNELLimitMinMax,
                                  0, 10000);

   fMaxPtAE->Connect("ValueSet(Long_t)", "AliEveLegoEditor", this, "SetMaxPtAE()");

   horzAE->AddFrame( fMaxPtAE, new TGLayoutHints(kLHintsRight | kLHintsNormal | kLHintsCenterY));
   this2->AddFrame(horzAE, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY));

   TGHorizontalFrame *horz1AE = new TGHorizontalFrame(this2);

   fLabel1AE = new TGLabel(horz1AE, "Tracks threshold (GeV): ");
   horz1AE->AddFrame(fLabel1AE, new TGLayoutHints(kLHintsLeft | kLHintsCenterY));

   fThresholdAE = new TGNumberEntry(horz1AE, 0, 7, -1,
                                  TGNumberFormat::kNESRealOne,
                                  TGNumberFormat::kNEANonNegative,
                                  TGNumberFormat::kNELLimitMinMax,
                                  0, 10000);

   fThresholdAE->Connect("ValueSet(Long_t)", "AliEveLegoEditor", this, "SetThresholdAE()");
   horz1AE->AddFrame( fThresholdAE, new TGLayoutHints(kLHintsRight | kLHintsNormal | kLHintsCenterY));

   this2->AddFrame(horz1AE, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY));
}

//______________________________________________________________________________
void AliEveLegoEditor::ApplyChanges()
{
  // Apply particle selection for all events
  fM->ApplyParticleTypeSelectionAE();
}

//______________________________________________________________________________
void AliEveLegoEditor::DataIsMC()
{
  // Set data type
  fM->SwitchDataType(fIsMC->IsOn());
}

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