ROOT logo
// Author: Benjamin Hess   29/01/2010

/*************************************************************************
 * Copyright (C) 2009-2010, Alexandru Bercuci, Benjamin Hess.            *
 * All rights reserved.                                                  *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// AliEveListAnalyserEditor                                             //
//                                                                      //
// The AliEveListAnalyserEditor provides the graphical func-            //
// tionality for the AliEveListAnalyser. It creates the tabs            //
// and canvases, when they are needed and, as well, frees allocated     //
// memory on destruction (or if new events are loaded and thus some     //
// tabs are closed).                                                    //
// The function DrawHistos() accesses the temporary file created by the //
// AliEveListAnalyser and draws the desired data (the file will         //
// be created within the call of ApplyMacros()). Have a look at this    //
// function to learn more about the structure of the file and how to    //
// access the data.                                                     //
// You can add objects to the list (of analysis objects) "by clicking"! //
// To do this, click the "start" button in the "list" tab. Pressing it, //
// connects the class to signals of objects in the viewer.              //
// You have to kinds of selection:                                      //
//                                                                      //
// Secondary selection:                                                 //
// You can hold "CTRL"+"ALT" (depending on your system, "ALT" alone can //
// also be fine) and click an single object (e.g. a single cluster of a //
// TEvePointSet) in the viewer to add it to the list. If the object is  //
// already in the list, it will be removed from it!                     //
//                                                                      //
// Primary selection:                                                   //
// Just click the object you want to add in the viewer (or as well in   //
// the browser (left panel)). If the object is already in the list, it  //
// will be removed from it!                                             //
//                                                                      //
// For both cases: Note:                                                //
// If you have added all the desired objects, please press the "stop"   //
// button in the "list" tab to disconnect the class from the signals.   //
// If you want to remove an object, you HAVE to use the same procedure  //
// that you have used for adding it. e.g. you cannot(!) remove an       //
// object added by the secondary selection method by using the primary  //
// selection method!                                                    //
//////////////////////////////////////////////////////////////////////////

#include <EveDet/AliEveListAnalyser.h>
#include "AliEveListAnalyserEditor.h"

#include <EveBase/AliEveEventManager.h>
#include <TCanvas.h>     
#include <TEveBrowser.h>
#include <TEveGedEditor.h> 
#include <TEveMacro.h>
#include <TEveManager.h>
#include <TFile.h>
#include <TG3DLine.h>
#include <TGButton.h>
#include <TGButtonGroup.h>
#include <TGComboBox.h>
#include <TGFileDialog.h>
#include <TGLabel.h>
#include <TGListBox.h>
#include <TGMsgBox.h>
#include <TGTab.h>
#include <TGTextEdit.h>
#include <TGTextEntry.h>
#include <TGTextView.h>
#include <TH1.h>
#include <TMap.h>
#include <TObjString.h>
#include <TROOT.h>
#include <TString.h>
#include <TSystem.h>
#include <TTreeStream.h>


ClassImp(AliEveListAnalyserEditor)

///////////////////////////////////////////////////////////
/////////////   AliEveListAnalyserEditor //////////////////
///////////////////////////////////////////////////////////
AliEveListAnalyserEditor::AliEveListAnalyserEditor(const TGWindow* p, Int_t width, Int_t height,
				                   UInt_t options, Pixel_t back) :
  TGedFrame(p, width, height, options, back),
  fM(0),
  fHistoCanvas(0),
  fHistoCanvasName(0),
  fInheritedMacroList(0),
  fInheritSettings(kFALSE),
  fBrowseFrame(0),
  fHistoFrame(0),
  fHistoSubFrame(0),
  fMainFrame(0),
  fObjectFrame(0),  
  //fbAddPrimObjects(0),
  fbApplyMacros(0),
  fbBrowse(0),
  fbDrawHisto(0),
  fbNew(0),
  //fbRemovePrimObjects(0),
  fbRemoveMacros(0),
  fbReset(0),
  fbStart(0),
  fbStop(0),
  fteField(0),
  ftlMacroList(0),
  ftlMacroSelList(0),
  fFileInfo(0),
  fFileTypes(0),
  fLabel1(0), fLabel2(0), fLabel3(0), fLabel4(0),
  fLine1(0), fLine2(0), fLine3(0), fLine4(0),
  fCheckButtons(0)
{
  // Creates the AliEveListAnalyserEditor.

  // Functionality for adding objects
  fObjectFrame = CreateEditorTabSubFrame("List");

/*
  TGLabel* label = new TGLabel(fObjectFrame,"Add objects via primary selection:");
  fObjectFrame->AddFrame(label);

  fbAddPrimObjects = new TGTextButton(fObjectFrame, "Add selected object(s)");
  fObjectFrame->AddFrame(fbAddPrimObjects, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 4, 1, 3, 1));
  fbAddPrimObjects->SetToolTipText("TODO! - Use primary selection to add \"complete\" objects like tracks, tracklets etc.\nHold the CTRL-key for multiple selection.");
  fbAddPrimObjects->Connect("Clicked()", "AliEveListAnalyserEditor", this, "DoAddPrimSelectedObjects()");

  fbRemovePrimObjects = new TGTextButton(fObjectFrame, "Remove selected object(s)");
  fObjectFrame->AddFrame(fbRemovePrimObjects, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 4, 1, 3, 1));
  fbRemovePrimObjects->SetToolTipText("TODO! - Hold the CTRL-key for multiple selection");
  fbRemovePrimObjects->Connect("Clicked()", "AliEveListAnalyserEditor", this, "DoRemovePrimSelectedObjects()");

  TGHorizontal3DLine* line = new TGHorizontal3DLine(this, 194, 8);
  fObjectFrame->AddFrame(line, new TGLayoutHints(kLHintsLeft  | kLHintsExpandX, 2, 2, 8, 8));
*/

  TGLabel* label = new TGLabel(fObjectFrame,"Add objects by clicking:");
  fObjectFrame->AddFrame(label);

  fbStart = new TGTextButton(fObjectFrame, "Start");
  fObjectFrame->AddFrame(fbStart, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 4, 1, 3, 1));
  fbStart->SetToolTipText("Start \"adding objects by clicking\":\n\nPrimary selection: Simply left-click an object in the viewer with your mouse to add it to the list analyser.\nIf you click an object that is already in the list, it will be removed from it.\n\nSecondary selection: Simply hold ALT+CTRL and left-click a single object of a TEvePointSet (e.g. single clusters or a single digit from TEveQuadSet)\nin the viewer with your mouse to add it to the list analyser.\nIf you click (in this way!) an object that is already in the list, it will be removed from it.\nNote: The key combination depends on your operating system and might be different!\n\nAlso note: Remove objects with the same type of selection you added them,\ne.g. you cannot(!) remove a single cluster added via secondary selection\nby using primary selection with this object!");
  fbStart->Connect("Clicked()", "AliEveListAnalyserEditor", this, "DoStartAddingObjects()");

  fbReset = new TGTextButton(fObjectFrame, "Reset");
  fObjectFrame->AddFrame(fbReset, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 4, 1, 1, 1));
  fbReset->SetToolTipText("Remove all(!) objects from the list");
  fbReset->Connect("Clicked()", "AliEveListAnalyserEditor", this, "DoResetObjectList()");

  fbStop = new TGTextButton(fObjectFrame, "Stop");
  fObjectFrame->AddFrame(fbStop, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 4, 1, 1, 4));
  fbStop->SetToolTipText("Stop \"adding objects by clicking\"");
  fbStop->Connect("Clicked()", "AliEveListAnalyserEditor", this, "DoStopAddingObjects()");

  // Functionality for adding macros  
  fMainFrame = CreateEditorTabSubFrame("Process");
   
  fLabel1 = new TGLabel(fMainFrame,"Add plugin(s):");
  fMainFrame->AddFrame(fLabel1);
  fBrowseFrame = new TGHorizontalFrame(fMainFrame);

  fteField = new TGTextEntry(fBrowseFrame);
  fteField->SetToolTipText("Enter the pathname of the macro you want to add here and press \"Enter\"");
  fteField->Connect("ReturnPressed()","AliEveListAnalyserEditor", this, "HandleMacroPathSet()"); 
  fBrowseFrame->AddFrame(fteField);
  
  fbBrowse = new TGTextButton(fBrowseFrame, "Browse");
  fbBrowse->SetToolTipText("Browse the macro you want to add");
  fbBrowse->Connect("Clicked()", "AliEveListAnalyserEditor", this, "BrowseMacros()");
  fBrowseFrame->AddFrame(fbBrowse);
  
  fbNew = new TGTextButton(fBrowseFrame, "New");
  fbNew->SetToolTipText("Start macro creation wizard");
  fbNew->Connect("Clicked()", "AliEveListAnalyserEditor", this, "NewMacros()");
  fBrowseFrame->AddFrame(fbNew);
  fMainFrame->AddFrame(fBrowseFrame);

  fLine1 = new TGHorizontal3DLine(fMainFrame, 194, 8);
  fMainFrame->AddFrame(fLine1, new TGLayoutHints(kLHintsLeft  | kLHintsTop, 2, 2, 8, 2));
  fLabel2 = new TGLabel(fMainFrame,"Selection plugins:");
  fMainFrame->AddFrame(fLabel2);

  ftlMacroSelList = new TGListBox(fMainFrame);
  ftlMacroSelList->Resize(194, 94);
  ftlMacroSelList->SetMultipleSelections(kTRUE);
  fMainFrame->AddFrame(ftlMacroSelList);

  fLine2 = new TGHorizontal3DLine(fMainFrame, 194, 8);
  fMainFrame->AddFrame(fLine2, new TGLayoutHints(kLHintsLeft  | kLHintsTop, 2, 2, 8, 2));
  fLabel3 = new TGLabel(fMainFrame,"Process plugins:");
  fMainFrame->AddFrame(fLabel3);

  ftlMacroList = new TGListBox(fMainFrame);
  ftlMacroList->Resize(194, 94);
  ftlMacroList->SetMultipleSelections(kTRUE);
  fMainFrame->AddFrame(ftlMacroList);

  fLine3 = new TGHorizontal3DLine(fMainFrame, 194, 8);
  fMainFrame->AddFrame(fLine3, new TGLayoutHints(kLHintsLeft  | kLHintsTop, 2, 2, 8, 2));  

  fbApplyMacros = new TGTextButton(fMainFrame, "Apply plugin(s)");
  fbApplyMacros->SetToolTipText("Apply all selected macros/class functins to the list of objects -> A data file will be generated");
  fbApplyMacros->Connect("Clicked()", "AliEveListAnalyserEditor", this, "ApplyMacros()");
  fbApplyMacros->SetRightMargin(12);
  fMainFrame->AddFrame(fbApplyMacros);

  fbRemoveMacros = new TGTextButton(fMainFrame, "Remove plugin(s)");
  fbRemoveMacros->SetToolTipText("Remove the selected macros/class functions from the list(s)");
  fbRemoveMacros->Connect("Clicked()", "AliEveListAnalyserEditor", this, "RemoveMacros()");
  fMainFrame->AddFrame(fbRemoveMacros);

  // Stuff for displaying histograms
  fHistoFrame = CreateEditorTabSubFrame("Results");  
  fHistoFrame->SetMapSubwindows(kTRUE);
  fLabel4 = new TGLabel(fHistoFrame,"Data from plugins:");
  fHistoFrame->AddFrame(fLabel4);

  fHistoSubFrame = new TGVerticalFrame(fHistoFrame);
  fHistoSubFrame->SetMapSubwindows(kTRUE);
  fHistoSubFrame->Resize(194, 200);
  fHistoFrame->AddFrame(fHistoSubFrame);

  fLine4 = new TGHorizontal3DLine(fHistoFrame, 194, 8);
  fHistoFrame->AddFrame(fLine4, new TGLayoutHints(kLHintsLeft  | kLHintsTop, 2, 2, 8, 2));  

  fbDrawHisto = new TGTextButton(fHistoFrame, "Draw projections");
  fbDrawHisto->SetToolTipText("Uses the data file created by the last \"Apply selected plugin(s)\".\nClick here to display the data histograms of the selected macros.\nSelect multiple macros to create multi-dimensional plots.\nHisto macros cannot be used for multi-dimensional plots!");
  fbDrawHisto->Connect("Clicked()", "AliEveListAnalyserEditor", this, "DrawHistos()");
  fHistoFrame->AddFrame(fbDrawHisto);

  // Set up file dialog
  fFileInfo = new TGFileInfo();
  fFileInfo->SetMultipleSelection(kTRUE);

  fFileTypes = new Char_t*[6];
  fFileTypes[0] = (Char_t*)"All files"; fFileTypes[1] = (Char_t*)"*";
  fFileTypes[2] = (Char_t*)"ROOT macros"; fFileTypes[3] = (Char_t*)"*.C";
  fFileTypes[4] = 0; fFileTypes[5] = 0;
  fFileInfo->fFileTypes = (const Char_t**)fFileTypes;
  fFileInfo->fFileTypeIdx = 2;
  fFileInfo->fMultipleSelection = kTRUE;

  fHistoCanvasName = new TGString("");

  // Handle the signal "Selected(Int_t ind)"
  ftlMacroList->Connect("Selected(Int_t)", "AliEveListAnalyserEditor", this, "UpdateMacroListSelection(Int_t)");
  ftlMacroSelList->Connect("Selected(Int_t)", "AliEveListAnalyserEditor", this, "UpdateMacroListSelection(Int_t)");

  // Handle the signal "NewEventLoaded"
  AliEveEventManager::GetMaster()->Connect("NewEventLoaded()", "AliEveListAnalyserEditor", this, "HandleNewEventLoaded()");

  // Handle the signal "Selected" (another tab has been selected)
  GetGedEditor()->GetTab()->Connect("Selected(Int_t)", "AliEveListAnalyserEditor", this, "HandleTabChangedToIndex(Int_t)");
}

//______________________________________________________
AliEveListAnalyserEditor::~AliEveListAnalyserEditor()
{
  // Destructor: Closes all tabs created by this object and
  // frees the corresponding memory.

  if (fFileTypes != 0)
  {
    delete [] fFileTypes;
    fFileTypes = 0;
  }

  if (fFileInfo != 0)
  {
    delete fFileInfo; 
    fFileInfo = 0;
  }
  // Close and delete all tabs that have been created by this class
  CloseTabs();

  if (fHistoCanvasName != 0)
  {
    delete fHistoCanvasName;
    fHistoCanvasName = 0;
  }
  
  if (fInheritedMacroList != 0)
  {
    fInheritedMacroList->Delete();
    delete fInheritedMacroList;
    fInheritedMacroList = 0;
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::AddMacro(const Char_t* name, const Char_t* path)
{
  // Adds the macro path/name to the macro list. A warning is provided, if there is
  // something wrong, e.g. if the macro does not have the correct signature.
  Int_t result = fM->AddMacro(path, name);

  switch (result)
  {
  case SUCCESS:
    UpdateMacroList();
    break;
  case WARNING:
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Warning", "Macro is already in list (won't be added again)!",
                 kMBIconExclamation, kMBOk);
    break;
  case ERROR:
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", "Failed to load the macro (check messages in the terminal)!",
                 kMBIconExclamation, kMBOk);
    break;
  case SIGNATURE_ERROR:
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "Macro has not the signature of...\n...a single object selection macro: Bool_t YourMacro(const YourObjectType*)\n...a correlated objects selection macro: Bool_t YourMacro(const YourObjectType*, const YourObjectType2*)\n...a single object analyse macro: void YourMacro(const YourObjectType*, Double_t*&, Int_t&)\n...a correlated objects analyse macro: void YourMacro(const YourObjectType*, const YourObjectType2*, Double_t*&, Int_t&)\n...a single object histo macro: TH1* YourMacro(const YourObjectType*)\n...a correlated objects histo macro: TH1* YourMacro(const YourObjectType*, const YourObjectType2*)", 
                 kMBIconExclamation, kMBOk);
    break;               
  case NOT_EXIST_ERROR:
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "File does not exist or you do not have read permission!", kMBIconExclamation, kMBOk);
    break;
  case UNKNOWN_OBJECT_TYPE_ERROR:
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "Unknown object type of macro parameter!", kMBIconExclamation, kMBOk);
    break;
  default:
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 Form("AliEveListAnalyser::AddMacro exited with unknown return value: %d", result),
                 kMBIconExclamation, kMBOk);
    break;
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::ApplyMacros()
{
  // Applies the selected macros and updates the view.

  Bool_t success = kFALSE;

  // First apply the single object selection macros
  TList* selIterator = new TList();
  ftlMacroSelList->GetSelectedEntries(selIterator);
  fM->ApplySOSelectionMacros(selIterator);
  
  // Update view
  gEve->Redraw3D();

  // Now apply the process macros
  TList* procIterator = new TList();
  ftlMacroList->GetSelectedEntries(procIterator);
  success = fM->ApplyProcessMacros(selIterator, procIterator);

  // Update histogram tab (data has to be reloaded)
  SetModel(fM);
  Update();

  // AliEveListAnalyser::ApplyProcessMacros() automatically selects a macro -> Draw the histogram for it,
  // if a process macro has been applied
  if (success && procIterator->GetEntries() > 0) 
  {
    // Set focus on "Histograms" tab
    GetGedEditor()->GetTab()->SetTab("Results");

    DrawHistos();
  }
  delete selIterator;
  delete procIterator;  
  
  if (!success)
  {
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "AliEveListAnalyser::ApplyProcessMacros experienced an error (cf. CINT-output)!", 
                 kMBIconExclamation, kMBOk);  
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::BrowseMacros()
{
  // Creates a file-dialog. The selected files will be added to the macro list
  // via AddMacro(...).

  new TGFileDialog(gClient->GetRoot(), GetMainFrame(), kFDOpen, fFileInfo);
  
  if (fFileInfo->fIniDir != 0 && fFileInfo->fFileNamesList != 0)
  {       
    // Extract filenames
    TObject* iter = fFileInfo->fFileNamesList->First();
 
    Char_t* name = 0;

    while (iter != 0)
    {
      // NOTE: fileInfo->fFileNamesList will be changed by that, too!
      name = (Char_t*)strrchr(iter->GetName(), '/');
      // Delete '"' at the end
      name[strlen(name)] = '\0';
              
      AddMacro(name + 1, fFileInfo->fIniDir); 
      iter = (TObjString*)fFileInfo->fFileNamesList->After(iter);
    }
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::CloseTabs()
{
  // Closes + deletes the tabs created by this object

  if (fHistoCanvas != 0)
  {
    // Close the created tab, if it exists
    if (fHistoCanvasName != 0)
    {
      if (gEve->GetBrowser()->GetTab(1)->SetTab(fHistoCanvasName->GetString()))
      {
        // Now the created tab is the current one and can be deleted
        gEve->GetBrowser()->GetTab(1)->RemoveTab();
      }
    }
    // With the tab removal, the canvas will be deleted automatically!
    fHistoCanvas = 0;
  }
}

/*
//______________________________________________________
void AliEveListAnalyserEditor::DoAddPrimSelectedObjects()
{
  // Adds the selected object(s) to the list ("primary selection").

  fM->AddPrimSelectedObjects();
}

//______________________________________________________
void AliEveListAnalyserEditor::DoRemovePrimSelectedObjects()
{
  // Removes the selected object(s) from the list ("primary selection").

  fM->RemovePrimSelectedObjects();
}
*/

//______________________________________________________
void AliEveListAnalyserEditor::DoResetObjectList()
{
  // Removes all objects from the list.

  fM->ResetObjectList();
  Update();
}

//______________________________________________________
void AliEveListAnalyserEditor::DoStartAddingObjects()
{
  // Starts adding objects for the analysis.

  if (fM->StartAddingObjects())
  {
    fbStart->SetState(kButtonDisabled);
    fbStop->SetState(kButtonUp);
  }
  else
  {
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", "Failed to connect socket!", kMBIconExclamation, kMBOk);

    if (fM->GetConnected())
    {
      fbStop->SetState(kButtonDisabled);
      fbStart->SetState(kButtonUp);
    }
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::DoStopAddingObjects()
{
  // Stops adding objects for the analysis.

  if (fM->StopAddingObjects())
  {
    fbStop->SetState(kButtonDisabled);
    fbStart->SetState(kButtonUp);
  }
  else
  {
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", "Failed to disconnect socket!", kMBIconExclamation, kMBOk);
    
    if (fM->GetConnected())
    {
      fbStop->SetState(kButtonUp);
      fbStart->SetState(kButtonDisabled);
    }
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::DrawHistos()
{
  // Accesses the temporary data file created by the last call of ApplyMacros() and draws
  // histograms according to the selection in the "Histograms"-tab.
 
  Int_t nHistograms = GetNSelectedHistograms();
  if (nHistograms <= 0)
  {
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "No data selected. Please select the data you want to plot!", kMBIconExclamation, kMBOk);
    return;
  }
  if (nHistograms > 3)
  {
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), 
                 "Error", "Only histograms with up to 3 dimensions supported. Please select 1,2 or 3 data macros!",
                 kMBIconExclamation, kMBOk);
    return;
  }

  // Check, if a histo macro shall be drawn
  Int_t indexOfHistoMacro = -1;
  Int_t selectedChecked = 0;
  for (Int_t j = 0; j < fM->fDataFromMacroList->GetEntries(); j++)
  {
    if (fCheckButtons[j]->TGButton::GetState() == kButtonDown)
    {
      selectedChecked++;

      // Histo macro? -> To check this, look for the substring "(histo macro)"
      if (strstr(fM->fDataFromMacroList->At(j)->GetName(), "(histo macro)") != 0)
      {
        // Is also another macro selected?
        if (nHistograms > 1)
        {
          // Histo macros cannot(!) be correlated!
          new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                       "Histo macros (return value \"TH1*\") cannot be combined with other macros", 
                       kMBIconExclamation, kMBOk);
          return;        
        }

        // Mark this histo macro for drawing
        indexOfHistoMacro = j;

        // Have all selected macros been checked? -> If yes, we are done with this
        if (selectedChecked == nHistograms)  break;
      }
    }
  }

  TFile* file = new TFile(Form("/tmp/ListAnalyserMacroData_%s.root", gSystem->Getenv("USER")), "READ");
  if (!file)  
  {
    Error("Draw histograms", "Cannot open file \"/tmp/ListAnalyserMacroData_%s.root\"",
                                  gSystem->Getenv("USER"));
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                 Form("Cannot open file \"/tmp/ListAnalyserMacroData_%s.root\"", gSystem->Getenv("USER")),
                 kMBIconExclamation, kMBOk);
    return;
  }
  
  TTree* t = 0;
  TTree* tFriend1 = 0;
  TTree* tFriend2 = 0;

  Int_t indexOfMacro1 = 0;
  Int_t indexOfMacro2 = 0;
  Int_t indexOfMacro3 = 0;

  // Variable for the loop below -> Will be set to aborting value, if a histo macro is drawn
  Int_t i = 0;
  
  // Draw histo macro?
  if (indexOfHistoMacro >= 0)
  {
    if ((t = (TTree*)file->Get(Form("ObjectData%d", indexOfHistoMacro))))
    {
      SetDrawingToHistoCanvasTab();
 
      TH1* myHist = 0;
      t->SetBranchAddress(Form("Macro%d", indexOfHistoMacro), &myHist);
      t->GetEntry(0);
      if (myHist != 0)  myHist->Draw();
      else
      {
        Error("Draw histograms", "No histogram for histo macro \"%s\" found!",
                                      fM->fDataFromMacroList->At(indexOfHistoMacro)->GetName());
        new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                     Form("No histogram for histo macro \"%s\" found!", 
                          fM->fDataFromMacroList->At(indexOfHistoMacro)->GetName()), kMBIconExclamation, kMBOk);
               
      }

      UpdateHistoCanvasTab();    
    }
    else
    {
      Error("Draw histograms", "No data for histo macro \"%s\" found!\nMaybe no objects have been selected.",
                                    fM->fDataFromMacroList->At(indexOfHistoMacro)->GetName());
      new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                   Form("No data for histo macro \"%s\" found!\nMaybe no objects have been selected.", 
                        fM->fDataFromMacroList->At(indexOfHistoMacro)->GetName()), kMBIconExclamation, kMBOk);
    }

    // Skip the loop below
    i = fM->fDataFromMacroList->GetEntries();
  }

  // Load the trees in succession and remember the entries -> Plot the analyse macros
  for ( ; i < fM->fDataFromMacroList->GetEntries(); i++)
  {
    if (fCheckButtons[i]->TGButton::GetState() == kButtonDown)
    {
      if (t == 0)
      {
        indexOfMacro1 = i;
        if (!(t = (TTree*)file->Get(Form("ObjectData%d", i))))
        { 
          Error("Draw histograms", "No data for macro \"%s\" found!\nMaybe no objects have been selected.",
                                        fM->fDataFromMacroList->At(i)->GetName());
          new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                       Form("No data for macro \"%s\" found!\nMaybe no objects have been selected.", 
                            fM->fDataFromMacroList->At(i)->GetName()), kMBIconExclamation, kMBOk);
          break;   
        }

        // 1d histogram
        if (nHistograms == 1) 
        {
          SetDrawingToHistoCanvasTab();
      
          t->Draw(Form("Macro%d", indexOfMacro1), "1");
          ((TH1*)gPad->GetPrimitive("htemp"))->SetTitle(Form("%s;%s",
            fM->fDataFromMacroList->At(indexOfMacro1)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro1)->GetName()));
          UpdateHistoCanvasTab();        

          break;     
        }
      }
      else if (tFriend1 == 0)
      {
        indexOfMacro2 = i;
        if (!(tFriend1 = (TTree*)file->Get(Form("ObjectData%d", i))))
        { 
          Error("Draw histograms", "No data for macro \"%s\" found!\nMaybe no objects have been selected.",
                                        fM->fDataFromMacroList->At(i)->GetName());
          new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                       Form("No data for macro \"%s\" found!\nMaybe no objects have been selected.", 
                            fM->fDataFromMacroList->At(i)->GetName()),
                            kMBIconExclamation, kMBOk);
          break;   
        }
        
        // 2d histogram
        if (nHistograms == 2) 
        {
          SetDrawingToHistoCanvasTab();

          t->AddFriend(tFriend1);
          t->Draw(Form("Macro%d:Macro%d", indexOfMacro1, indexOfMacro2), "1");
          ((TH1*)gPad->GetPrimitive("htemp"))->SetTitle(Form("%s - %s;%s;%s",
            fM->fDataFromMacroList->At(indexOfMacro2)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro1)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro2)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro1)->GetName()));

          UpdateHistoCanvasTab();
 
          break;     
        }
      }    
      // 3d histogram
      else
      {
        indexOfMacro3 = i;
        if (!(tFriend2 = (TTree*)file->Get(Form("ObjectData%d", i))))
        { 
          Error("Draw histograms", "No data for macro \"%s\" found!\nMaybe no objects have been selected.",
                                        fM->fDataFromMacroList->At(i)->GetName());
          new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                       Form("No data for macro \"%s\" found!\nMaybe no objects have been selected.", 
                            fM->fDataFromMacroList->At(i)->GetName()), kMBIconExclamation, kMBOk);
          break;   
        }

        SetDrawingToHistoCanvasTab();

        t->AddFriend(tFriend1);
        t->AddFriend(tFriend2);
        t->Draw(Form("Macro%d:Macro%d:Macro%d", indexOfMacro1, indexOfMacro2, indexOfMacro3), "1");
        ((TH1*)gPad->GetPrimitive("htemp"))->SetTitle(Form("%s - %s - %s;%s;%s;%s",
            fM->fDataFromMacroList->At(indexOfMacro3)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro2)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro1)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro3)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro2)->GetName(),
            fM->fDataFromMacroList->At(indexOfMacro1)->GetName()));
        
        UpdateHistoCanvasTab();
 
        break;     
      }
    }
  }

  if (t != 0) delete t;
  t = 0;
  if (tFriend1 != 0)  delete tFriend1;
  tFriend1 = 0;
  if (tFriend2 != 0)  delete tFriend2;
  tFriend2 = 0;

  file->Close("R");
  delete file;
  file = 0;
}

//______________________________________________________
Int_t AliEveListAnalyserEditor::GetNSelectedHistograms() const
{
  // Returns the number of selected macros (or rather: of their selected data) in the "Histograms"-tab

  Int_t count = 0;
  
  for (Int_t i = 0; i < fM->fDataFromMacroList->GetEntries(); i++)
  {
    if (fCheckButtons[i]->TGButton::GetState() == kButtonDown)  count++;
  }

  return count;
}

//______________________________________________________
void AliEveListAnalyserEditor::HandleMacroPathSet()
{
  // Takes the input of the text field (adding a macro), checks if the macro can be
  // accessed (and that it exists) and adds the macro to the macro list via AddMacro(...).
  // You can use environment variables in the text field, e.g. "$ALICE_ROOT/Eve/alice-macro/myMacro.C".

  if (strlen(fteField->GetText()) != 0)
  {  
    // Expand the pathname
    Char_t* systemPath = gSystem->ExpandPathName(fteField->GetText());
    fteField->SetText(systemPath);
    delete systemPath;
    systemPath = 0;
       			
    // Check if file exists
    FILE* fp = NULL;

    fp = fopen(fteField->GetText(), "rb");
    if (fp != NULL)
    {
      fclose(fp);

      // Extract filename
      Char_t* name = (Char_t*)strrchr(fteField->GetText(), '/');

      // Current path
      if (name == NULL)
      {
        name = new Char_t[AliEveListAnalyser::fkMaxMacroNameLength];
        memset(name, '\0', sizeof(Char_t) * AliEveListAnalyser::fkMaxMacroNameLength);
        snprintf(name, AliEveListAnalyser::fkMaxMacroNameLength, "%s", fteField->GetText());

        // Add path to textfield -> Path is "./" -> Use length for the name + 2
        Char_t pathname[AliEveListAnalyser::fkMaxMacroNameLength + 2];
        memset(pathname, '\0', sizeof(Char_t) * (AliEveListAnalyser::fkMaxMacroNameLength + 2));
        snprintf(pathname, AliEveListAnalyser::fkMaxMacroNameLength + 2, "./%s", fteField->GetText());
        fteField->SetText(pathname);

        AddMacro(name);  
        delete [] name;
      }
      // Different path
      else
      {
        // Extract path
        Char_t* path = new Char_t[AliEveListAnalyser::fkMaxMacroPathLength];
        memset(path, '\0', sizeof(Char_t) * AliEveListAnalyser::fkMaxMacroPathLength);
        strncpy(path, fteField->GetText(), strlen(fteField->GetText()) - strlen(name));
        
        // Ignore the slash "/" in name
        AddMacro(name + 1, path);    
        delete [] path;
      }       
    }
    else
    {
      new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                   "File does not exist or you do not have read permission!", kMBIconExclamation, kMBOk);
    }
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::HandleNewEventLoaded()
{
  // Closes the tabs created by this object and sets a flag that will
  // cause the function SetModel() to inherit the macro lists
  // for the next AliEveListAnalyser from the current one.

  // Inherit the macro list for the next analyse object list!
  fInheritSettings = kTRUE;

  // Close the tabs
  CloseTabs();
}

//______________________________________________________
void AliEveListAnalyserEditor::HandleTabChangedToIndex(Int_t index)
{
  // Saves the current tab in the current AliEveListAnalyser.

  fM->SetSelectedTab(index);
}

//______________________________________________________
void AliEveListAnalyserEditor::InheritMacroList()
{
  // The old macro list is possibly stored in the corresponding interior map. This function will 
  // use this interior map to move the data from the interior map to the newly loaded AliEveListAnalyser. 
  // Then the interior map will be cleaned up. With this, the settings will be inherited from the previously 
  // loaded AliEveListAnalyser.

  if (fInheritedMacroList == 0)  return;

  // Clear list  
  fM->fMacroList->Delete();

  // Store data from interior list in the analyse object list's map
  TMapIter* iter = (TMapIter*)fInheritedMacroList->MakeIterator();
  
  TObject* key = 0;
  TGeneralMacroData* macro = 0;
  
  while ((key = iter->Next()) != 0)
  {
    macro = (TGeneralMacroData*)fInheritedMacroList->GetValue(key);
    if (macro != 0)  fM->fMacroList->Add(new TObjString(key->GetName()), 
                                         new TGeneralMacroData(macro->GetName(), macro->GetPath(), macro->GetType(), 
                                                               macro->GetObjectType(), macro->GetObjectType2()));
    else
    {
      Error("AliEveListAnalyserEditor::InheritMacroList", "Failed to inherit the macro \"%s\"!", key->GetName());
    }
  }
  
  fInheritedMacroList->Delete();
  delete fInheritedMacroList;
  fInheritedMacroList = 0;
}

//______________________________________________________
void AliEveListAnalyserEditor::NewMacros()
{
  // Start the macro creation wizard.
  // thanks to Jacek Otwinowski<J.Otwinowski@GSI.DE> for this suggestion

  AliEveGeneralMacroWizard *wizz = new AliEveGeneralMacroWizard();
  wizz->Connect("Create(Char_t*)", "AliEveListAnalyserEditor", this, "AddMacro(Char_t*)");
}

//______________________________________________________
void AliEveListAnalyserEditor::RemoveMacros()
{
  // Removes the selected macros from the corresponding list.

  TList* iterator = new TList();
  
  ftlMacroList->GetSelectedEntries(iterator);
  fM->RemoveSelectedMacros(iterator);

  delete iterator;

  iterator = new TList();
  ftlMacroSelList->GetSelectedEntries(iterator);
  fM->RemoveSelectedMacros(iterator);

  // Selected macros are deleted from the list -> No selected entries left
  fM->fMacroListSelected = 0;

  UpdateMacroList();
  delete iterator;
}

//______________________________________________________
void AliEveListAnalyserEditor::SaveMacroList(TMap* list)
{
  // Saves the provided macro list in an interior list. This list will be used by
  // InheritMacroList() to restore the data in "list". With this method one is able
  // to inherit the macro list from analyse object list to analyse object list (i.e. from event to event).

  if (fInheritedMacroList != 0)
  {
    fInheritedMacroList->Delete();
    delete fInheritedMacroList;
  }
  fInheritedMacroList = new TMap();
  fInheritedMacroList->SetOwnerKeyValue(kTRUE, kTRUE);

  TMapIter* iter = (TMapIter*)list->MakeIterator();
  TObject* key = 0;
  TGeneralMacroData* macro = 0;
  
  while ((key = iter->Next()) != 0)
  {
    macro = (TGeneralMacroData*)fM->fMacroList->GetValue(key);
    if (macro != 0) fInheritedMacroList->Add(new TObjString(key->GetName()), 
                                             new TGeneralMacroData(macro->GetName(), macro->GetPath(), macro->GetType(), 
                                                                   macro->GetObjectType(), macro->GetObjectType2()));
    else
    {
      Error("AliEveListAnalyserEditor::SaveMacroList", "Failed to inherit the macro \"%s\"!", key->GetName());
    }
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::SetDrawingToHistoCanvasTab()
{
  // Sets gPad to the tab with the name of the current AliEveListAnalyser. If this tab does
  // not exist, it will be created. Otherwise, it is re-used.

  // If the tab with the canvas has been closed, the canvas will be deleted.
  // So, if there is no tab, set the canvas pointer to zero and recreate it in a new tab.
  if (fHistoCanvas != 0) 
  {
    if (gEve->GetBrowser()->GetTab(1)->SetTab(fHistoCanvasName->GetString()) == 0)
    {
      fHistoCanvas = 0;
    }
  }

  if (!fHistoCanvas)
  {
    fHistoCanvas = gEve->AddCanvasTab(fM->GetName());     
  }
                           
  gPad = fHistoCanvas;
}

//______________________________________________________
void AliEveListAnalyserEditor::SetModel(TObject* obj)
{  
  // Sets the model object, updates the related data in the GUI and
  // inherits settings (cf. Inherit*(...)), if the flag fInheritSettings is set to kTRUE.

  fM = dynamic_cast<AliEveListAnalyser*>(obj);

  if (fM == 0) 
  {
    Error("SetModel", "Parameter is zero pointer");
    return;
  }

  // Provide a pointer to this editor
  fM->fEditor = this;

  // If macro list + track style shall be inherited from previously loaded track list, do so
  if (fInheritSettings)
  {
    InheritMacroList();

    fInheritSettings = kFALSE;
  }

  UpdateMacroList();
  UpdateHistoList(); 

  // View correct tab
  GetGedEditor()->GetTab()->SetTab(fM->GetSelectedTab()); 

  // Set connection buttons correctly
  if(fM->GetConnected())
  {
    fbStart->SetState(kButtonDisabled);
    fbStop->SetState(kButtonUp);
  }
  else
  {
    fbStop->SetState(kButtonDisabled);
    fbStart->SetState(kButtonEngaged);
    fbStart->SetState(kButtonUp);
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::UpdateDataFromMacroListSelection()
{
  // Saves the current selection in the "Histograms"-tab to the current
  // AliEveListAnalyser. This means that the selection is updated and won't
  // get lost, if another editor is loaded in Eve.

  for (Int_t i = 0; i < fM->fDataFromMacroList->GetEntries(); i++)
  {
    fM->SetHistoDataSelection(i, fCheckButtons[i]->IsOn());
  }
}

//______________________________________________________
void AliEveListAnalyserEditor::UpdateHistoCanvasTab()
{
  // Updates the histogram and the corresponding tab (including titles).

  // Update name of the tab (tab has been set to current tab!)
  fHistoCanvasName->SetString(fM->GetName());  

  // Use a copy of fHistoCanvasName!! -> If the user closes a tab manually, the TGString
  // will be deleted -> Error might occur, when accessing the pointer   
  gEve->GetBrowser()->GetTab(1)->GetCurrentTab()->SetText(new TGString(fHistoCanvasName));

  // Switch tabs to force redrawing
  gEve->GetBrowser()->GetTab(1)->SetTab(0);
  gEve->GetBrowser()->GetTab(1)->SetTab(fHistoCanvasName->GetString());
  fHistoCanvas->Update();
}

//______________________________________________________
void AliEveListAnalyserEditor::UpdateHistoList()
{
  // Reloads (updates) the buttons in the "Histograms"-tab via
  // the current AliEveListAnalyser (data).

  fHistoSubFrame->TGCompositeFrame::Cleanup();
  
  // Set buttons for histograms
  if (fCheckButtons != 0) delete fCheckButtons;
  fCheckButtons = new TGCheckButton*[fM->fDataFromMacroList->GetEntries()];
  
  TObjString* iter = (TObjString*)fM->fDataFromMacroList->First();
  for (Int_t i = 0; i < fM->fDataFromMacroList->GetEntries() && iter != 0; i++)
  {
    fCheckButtons[i] = new TGCheckButton(fHistoSubFrame, iter->GetName());
    fHistoSubFrame->AddFrame(fCheckButtons[i]);
    
    fCheckButtons[i]->SetState(kButtonUp, kFALSE);
    fCheckButtons[i]->MapRaised();
    fCheckButtons[i]->SetOn(fM->HistoDataIsSelected(i));
    fCheckButtons[i]->Connect("Clicked()", "AliEveListAnalyserEditor", this, "UpdateDataFromMacroListSelection()");
            
    iter = (TObjString*)fM->fDataFromMacroList->After(iter);
  }  
}

//______________________________________________________
void AliEveListAnalyserEditor::UpdateMacroList()
{
  // Reloads (updates) the macro list (selection AND process macros) via
  // the current AliEveListAnalyser (data).

  ftlMacroList->RemoveAll();
  ftlMacroSelList->RemoveAll();
   
  TMapIter* iter = (TMapIter*)fM->fMacroList->MakeIterator();
  TObject* key = 0;
  TGeneralMacroData* macro = 0;

  Int_t ind = 0;
  while ((key = iter->Next()) != 0)
  {
    macro = (TGeneralMacroData*)fM->fMacroList->GetValue(key);
    if (macro != 0)
    {
      if (macro->IsProcessMacro())
      {
        ftlMacroList->AddEntry(macro->GetName(), ind);
        // Select, what has been selected before
        ftlMacroList->Select(ind, fM->MacroListIsSelected(ind));
        ind++;
      }
      else if (macro->IsSelectionMacro())
      {
        ftlMacroSelList->AddEntry(macro->GetName(), ind);
        // Select, what has been selected before
        ftlMacroSelList->Select(ind, fM->MacroListIsSelected(ind));
        ind++;
      }
      else
      {
        Error("AliEveListAnalyserEditor::UpdateMacroList()", 
              "Macro \"%s/%s.C\" is neither a selection macro nor a process macro!",
                   macro->GetPath(), macro->GetName());
      }
    }
    else
    {
      Error("AliEveListAnalyserEditor::UpdateMacroList()", 
              "Macro list is corrupted: Macro \"%s\" not found!", key->GetName());
    }     
  }

  ftlMacroList->SortByName(); 
  ftlMacroSelList->SortByName(); 
}

//______________________________________________________
void AliEveListAnalyserEditor::UpdateMacroListSelection(Int_t ind)
{
  // Saves the current selection in the macro listS to the current
  // AliEveListAnalyser. This means that the selection is updated and won't
  // get lost, if another editor is loaded in Eve.
  // NOTE: The indices in BOTH lists will be unique!

  // Toggle selected item
  fM->SetMacroListSelection(ind, !fM->MacroListIsSelected(ind));
}


//______________________________________________________
//______________________________________________________
//______________________________________________________


/////////////////////////////////////////////////
ClassImp(AliEveGeneralMacroWizard)
/////////////////////////////////////////////////

//______________________________________________________
AliEveGeneralMacroWizard::AliEveGeneralMacroWizard(const TGWindow* p)
  :TGMainFrame(p ? p : gClient->GetRoot(), 10, 10, kMainFrame | kVerticalFrame)
  ,fbCancel(0x0)
  ,fbCreate(0x0)
  ,fCombo(0x0)
  ,fTextEdit(0x0)
  ,fTextIncludes(0x0)
  ,fTextName(0x0)  
  ,fTextObjectType(0x0)
  ,fTextObjectType2(0x0)
{
  // Creates the macro wizard.

  const Int_t width = 300;

  // horizontal frame
  TGHorizontalFrame *fFrameName = new TGHorizontalFrame(this, 10, 10, kHorizontalFrame);
  TGLabel *fLabel = new TGLabel(fFrameName, "Name*");
  fLabel->SetTextJustify(36);
  fLabel->SetMargins(0,0,0,0);
  fLabel->SetWrapLength(-1);
  fFrameName->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));

  fTextName = new TGTextEntry(fFrameName);
  fTextName->SetMaxLength(255);
  fTextName->SetAlignment(kTextLeft);
  fTextName->SetText("");
  fTextName->SetToolTipText("The name of your macro");
  fTextName->Resize(width, fTextName->GetDefaultHeight());
  fFrameName->AddFrame(fTextName, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));

  // horizontal frame
  TGHorizontalFrame *fFrameObjectType = new TGHorizontalFrame(this, 10, 10, kHorizontalFrame);
  fLabel = new TGLabel(fFrameObjectType, "1st object type of macro");
  fLabel->SetTextJustify(36);
  fLabel->SetMargins(0,0,0,0);
  fLabel->SetWrapLength(-1);
  fFrameObjectType->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));

  fTextObjectType = new TGTextEntry(fFrameObjectType);
  fTextObjectType->SetAlignment(kTextLeft);
  fTextObjectType->SetText("");
  // Limit max.length to 80 characters
  fTextObjectType->SetMaxLength(80);
  fTextObjectType->SetToolTipText("The type of objects, your macro will work with (type of the first pointer)");
  fTextObjectType->Resize(width, fTextObjectType->GetDefaultHeight());
  fFrameObjectType->AddFrame(fTextObjectType, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));

   // horizontal frame
  TGHorizontalFrame *fFrameObjectType2 = new TGHorizontalFrame(this, 10, 10, kHorizontalFrame);
  fLabel = new TGLabel(fFrameObjectType2, "2nd object type of macro (pair");
  fLabel->SetTextJustify(36);
  fLabel->SetMargins(0,0,0,0);
  fLabel->SetWrapLength(-1);
  fFrameObjectType2->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));

  fTextObjectType2 = new TGTextEntry(fFrameObjectType2);
  fTextObjectType2->SetAlignment(kTextLeft);
  fTextObjectType2->SetText("");
  // Limit max.length to 80 characters
  fTextObjectType2->SetMaxLength(80);
  fTextObjectType2->SetToolTipText("The type of objects, your macro will work with (type of the second pointer)\nOnly needed for macros dealing with object pairs");
  fTextObjectType2->Resize(width, fTextObjectType2->GetDefaultHeight());
  fFrameObjectType2->AddFrame(fTextObjectType2, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));
  fTextObjectType2->SetEnabled(kFALSE);

  // horizontal frame
  TGHorizontalFrame *fFrameIncludes = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
  fLabel = new TGLabel(fFrameIncludes, "Include files");
  fLabel->SetTextJustify(36);
  fLabel->SetMargins(0,0,0,0);
  fLabel->SetWrapLength(-1);
  fFrameIncludes->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));

  fTextIncludes = new TGTextEntry(fFrameIncludes);
  fTextObjectType->SetAlignment(kTextLeft);
  fTextIncludes->SetText("<TRD/AliTRDgeometry.h>,<TRD/AliTRDcluster.h>,<TRD/AliTRDseedV1.h>,<TRD/AliTRDtrackV1.h>");
  fTextIncludes->SetCursorPosition(0);
  fTextIncludes->SetToolTipText("The include files for your macro - separated by commas! -\n e.g. \"<TRD/AliTRDcluster.h>,<TRD/AliTRDtrackV1.h>\".\nThe suggested/default files can be used for track analysis");
  fTextIncludes->Resize(width, fTextIncludes->GetDefaultHeight());
  fFrameIncludes->AddFrame(fTextIncludes, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));

  // horizontal frame
  TGHorizontalFrame *fFrameComment = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
  fLabel = new TGLabel(fFrameComment, "Comment");
  fLabel->SetTextJustify(36);
  fLabel->SetMargins(0,0,0,0);
  fLabel->SetWrapLength(-1);
  fFrameComment->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));

  fTextEdit = new TGTextEdit(fFrameComment, width, 5*fTextName->GetDefaultHeight());
  fFrameComment->AddFrame(fTextEdit, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));

  // horizontal frame
  TGHorizontalFrame *fFrameType = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
  fLabel = new TGLabel(fFrameType, "Type*");
  fLabel->SetTextJustify(36);
  fLabel->SetMargins(0,0,0,0);
  fLabel->SetWrapLength(-1);
  fFrameType->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));

  fCombo = new TGComboBox(fFrameType, -1, kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
  fCombo->AddEntry("Single Object Selection", AliEveListAnalyser::kSingleObjectSelect);
  fCombo->AddEntry("Pair Objects Selection", AliEveListAnalyser::kCorrelObjectSelect);
  fCombo->AddEntry("Single Object Analyse", AliEveListAnalyser::kSingleObjectAnalyse);
  fCombo->AddEntry("Single Object Histo", AliEveListAnalyser::kSingleObjectHisto);
  fCombo->AddEntry("Pair Objects Analyse", AliEveListAnalyser::kCorrelObjectAnalyse);
  fCombo->AddEntry("Pair Objects Histo", AliEveListAnalyser::kCorrelObjectHisto);
  fCombo->Select(-1);
  fCombo->Resize(width, fTextName->GetDefaultHeight());
  fFrameType->AddFrame(fCombo, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2));

  // horizontal frame
  TGHorizontalFrame *fFrameAction = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
  fbCancel = new TGTextButton(fFrameAction, "Cancel");
  fbCancel->SetToolTipText("Exit macro creation wizard");
  fFrameAction->AddFrame(fbCancel, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2)); 
  fbCreate = new TGTextButton(fFrameAction, "Done");
  fbCreate->SetToolTipText("Use settings to create the macro");
  fFrameAction->AddFrame(fbCreate, new TGLayoutHints(kLHintsRight | kLHintsTop,2,2,2,2)); 

  // horizontal frame
  TGHorizontalFrame *fFrameText = new TGHorizontalFrame(this,10,10,kHorizontalFrame);
  fLabel = new TGLabel(fFrameText, "(*) Mandatory fields");
  fLabel->SetTextJustify(36);
  fLabel->SetMargins(0,0,0,0);
  fLabel->SetWrapLength(-1);
  fFrameText->AddFrame(fLabel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));

  // put things together  
  AddFrame(fFrameName, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
  AddFrame(fFrameObjectType, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
  AddFrame(fFrameObjectType2, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
  AddFrame(fFrameIncludes, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
  AddFrame(fFrameComment, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
  AddFrame(fFrameType, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
  AddFrame(fFrameAction, new TGLayoutHints(kLHintsRight | kLHintsTop | kLHintsExpandX,2,2,2,2));

  TGHorizontal3DLine *fLine = new TGHorizontal3DLine(this, 281, 2);
  AddFrame(fLine, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));
  AddFrame(fFrameText, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,2,2,2,2));


  SetWindowName("Macro Wizard");
  SetMWMHints(kMWMDecorAll,
              kMWMFuncAll,
              kMWMInputModeless);
  MapSubwindows();

  Resize(GetDefaultSize());
  MapWindow();

  // Do the linking
  fCombo->Connect("Selected(Int_t)", "AliEveGeneralMacroWizard", this, "HandleSelectionChanged(Int_t)");
  fbCreate->Connect("Clicked()", "AliEveGeneralMacroWizard", this, "HandleCreate()");
  fbCancel->Connect("Clicked()", "AliEveGeneralMacroWizard", this, "CloseWindow()");

  // Standard choice
  fCombo->Select(1, kFALSE);
}  

const Char_t *fGeneralIncludes = 
"#if !defined(__CINT__) || defined(__MAKECINT__)\n"
"#include <TROOT.h>\n"
"#include <TH1.h>\n";

const Char_t *fGeneralMacroTemplate[7] = {
""
,"  if (!object) return kFALSE;\n"

,"  n = 0;\n"
"  r = 0x0;\n"
"  if (!object) return;\n"

,"  if (!object) return 0x0;\n\n"
"// Set bins, xmin and xmax here - you can also use a different histogram type (but must inherit from TH1)\n"
"  Int_t n = 1;\n"
"  Double_t xmin = 0;\n"
"  Double_t xmax = 100;\n\n" 
"  TH1S* h = new TH1S(\"h\", \"Your title\", n, xmin, xmax);\n"
"  h->GetXaxis()->SetTitle("");\n"
"  h->GetYaxis()->SetTitle("");\n"

,"  if (!object) return kFALSE;\n"
"  if (!object2) return kFALSE;\n"

,"  n = 0;\n"
"  r = 0x0;\n"
"  if (!object) return;\n"
"  if (!object2) return;\n"

,"  if (!object) return 0x0;\n"
"  if (!object2) return 0x0;\n\n"
"// Set bins, xmin and xmax here - you can also use a different histogram type (but must inherit from TH1)\n"
"  Int_t n = 1;\n"
"  Double_t xmin = 0;\n"
"  Double_t xmax = 100;\n\n"
"  TH1S* h = new TH1S(\"h\", \"Your title\", n, xmin, xmax);\n"
"  h->GetXaxis()->SetTitle("");\n"
"  h->GetYaxis()->SetTitle("");\n"
};

//______________________________________________________
void AliEveGeneralMacroWizard::Create(Int_t type)
{
  // Creates the macro with the selected type (combo box).

  const Char_t* name = fTextName->GetText();
  if(strcmp(name,"") == 0)
  {
    Error("AliEveGeneralMacroWizard::Create", "Please specify a name for your macro.");
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "Please specify a name for your macro.", kMBIconExclamation, kMBOk);
    return;
  }

  Bool_t useGivenType = kFALSE;
  Bool_t useGivenType2 = kFALSE;

  // Remove white-spaces
  TString* typeStr = new TString(fTextObjectType->GetText());
  typeStr->ReplaceAll(" ", "");
  fTextObjectType->SetText(typeStr->Data(), kFALSE);

  TString* typeStr2 = new TString(fTextObjectType2->GetText());
  typeStr2->ReplaceAll(" ", "");
  fTextObjectType2->SetText(typeStr2->Data(), kFALSE);

  // If an object type is provided by the user, use it!
  if (strlen(typeStr->Data()) > 0)
  {
    // Check, if the class really exists
    if (TClass::GetClass(typeStr->Data()) != 0x0)
    {
      useGivenType = kTRUE; 
    }
    else
    {
      Int_t buttonsPressed = 0;
      new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Unknown object type", 
        Form("The class of your 1st object, \"%s\" has not been found. Do you really want to create your macro with this object type?", 
             typeStr->Data()), kMBIconExclamation, kMBYes | kMBNo, &buttonsPressed);

      if (buttonsPressed & kMBYes)  useGivenType = kTRUE;
      else useGivenType = kFALSE;

      // Cancel creation
      if (!useGivenType)
      {
        typeStr->Clear();
        delete typeStr;
        typeStr = 0;

        typeStr2->Clear();
        delete typeStr2;
        typeStr2 = 0;

        return;
      }
    }
  }

  // If an object type is provided by the user, use it!
  if (strlen(typeStr2->Data()) > 0)
  {
    // Check, if the class really exists
    if (TClass::GetClass(typeStr2->Data()) != 0x0)
    {
      useGivenType2 = kTRUE; 
    }
    else
    {
      Int_t buttonsPressed = 0;
      new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Unknown object type", 
        Form("The class of your 2nd object, \"%s\" has not been found. Do you really want to create your macro with this object type?", 
             typeStr2->Data()), kMBIconExclamation, kMBYes | kMBNo, &buttonsPressed);

      if (buttonsPressed & kMBYes)  useGivenType2 = kTRUE;
      else useGivenType2 = kFALSE;

      // Cancel creation
      if (!useGivenType2)
      {
        typeStr->Clear();
        delete typeStr;
        typeStr = 0;

        typeStr2->Clear();
        delete typeStr2;
        typeStr2 = 0;

        return;
      }
    }
  }

  // Note: gSystem->AccessPathName(...) returns kTRUE, if the access FAILED!
  if(!gSystem->AccessPathName(Form("./%s.C", name)))
  {
    // If there is already a file with this name -> Error
    Error("AliEveGeneralMacroWizard::Create", "A macro \"%s.C\" already exists in the current directory!\nPlease choose another name!", name);
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 Form("A macro \"%s.C\" already exists in the current directory!\nPlease choose another name!", name), kMBIconExclamation, kMBOk);
    return;
  }

  FILE* fp = 0x0;
  if(!(fp = fopen(Form("%s.C", name), "wt"))){
    Error("AliEveGeneralMacroWizard::Create", "Couldn't create macro file.");
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "Couldn't create macro file.", kMBIconExclamation, kMBOk);
    return;
  }

  TGText* comment = fTextEdit->GetText();
  Char_t* line = 0x0; Int_t iline = 0;
  while((line = comment->GetLine(TGLongPosition(0,iline++), 200))) fprintf(fp, "// %s\n", line);

  TString* tempStr = new TString(fTextIncludes->GetText());

  // Add include files:
  // Remove white-spaces and replace commas
  tempStr->ReplaceAll(" ", "");
  tempStr->ReplaceAll(",","\n#include ");
  // If there are files, add the first "#include " in front
  if (tempStr->Length() > 3)  tempStr->Prepend("#include "); 

  fprintf(fp, "\n%s%s\n#endif\n\n", fGeneralIncludes, tempStr->Data());
  
  tempStr->Clear();

  // Use default type
  if (!useGivenType)
  {
    typeStr->Clear();
    (*typeStr)="TObject";
  }
  if (!useGivenType2)
  {
    typeStr2->Clear();
    (*typeStr2)="TObject";
  }

  switch(type){
  case AliEveListAnalyser::kSingleObjectSelect:
    // Use "Bool_t 'NAME'(const 'OBJECTTYPE' *object)\n"
    tempStr->Append("Bool_t ").Append(name).Append("(const ").Append(typeStr->Data()).Append(" *object)\n");
    fprintf(fp, "%s", tempStr->Data());
    break;
  case AliEveListAnalyser::kCorrelObjectSelect:
    // Use "Bool_t 'NAME'(const 'OBJECTTYPE' *object, const 'OBJECTTYPE2' *object2)\n"
    tempStr->Append("Bool_t ").Append(name).Append("(const ").Append(typeStr->Data()).Append(" *object, const ").Append(typeStr2->Data()).Append(" *object2)\n");
    fprintf(fp, "%s", tempStr->Data());
    break;
  case AliEveListAnalyser::kSingleObjectAnalyse:    
    // Use "void 'NAME'(const 'OBJECTTYPE' *object, Double_t*& r, Int_t& n)\n"
    tempStr->Append("void ").Append(name).Append("(const ").Append(typeStr->Data()).Append(" *object, Double_t*& r, Int_t& n)\n");
    fprintf(fp, "%s", tempStr->Data());
    break;
  case AliEveListAnalyser::kSingleObjectHisto:
    // Use "TH1* 'NAME'(const 'OBJECTTYPE' *object)\n"
    tempStr->Append("TH1* ").Append(name).Append("(const ").Append(typeStr->Data()).Append(" *object)\n");
    fprintf(fp, "%s", tempStr->Data());
    break;
  case AliEveListAnalyser::kCorrelObjectAnalyse:
    // Use "void 'NAME'(const 'OBJECTTYPE' *object, const 'OBJECTTYPE2' *object2, Double_t*& r, Int_t& n)\n"
    tempStr->Append("void ").Append(name).Append("(const ").Append(typeStr->Data()).Append(" *object, const ").Append(typeStr2->Data()).Append(" *object2, Double_t*& r, Int_t& n)\n");
    fprintf(fp, "%s", tempStr->Data());
    break;
  case AliEveListAnalyser::kCorrelObjectHisto:
    // Use "TH1* 'NAME'(const 'OBJECTTYPE' *object, const 'OBJECTTYPE2' *object2)\n"
    tempStr->Append("TH1* ").Append(name).Append("(const ").Append(typeStr->Data()).Append(" *object, const ").Append(typeStr2->Data()).Append(" *object2)\n");
    fprintf(fp, "%s", tempStr->Data());
    break;
  default:
    Error("AliEveGeneralMacroWizard::Create", "Unknown type[%d]", type);
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 Form("Unknown type[%d]", type), kMBIconExclamation, kMBOk);
    fclose(fp);
    gSystem->Exec(Form("rm -f %s.C", name));

    tempStr->Clear();
    delete tempStr;
    tempStr = 0;

    typeStr->Clear();
    delete typeStr;
    typeStr = 0;

    return;
  }

  tempStr->Clear();
  delete tempStr;
  tempStr = 0;

  typeStr->Clear();
  delete typeStr;
  typeStr = 0;

  typeStr2->Clear();
  delete typeStr2;
  typeStr2 = 0;

  fprintf(fp, "{\n%s\n", fGeneralMacroTemplate[type]);

  // Add some further information for analyse macros
  if (type == AliEveListAnalyser::kSingleObjectAnalyse || type == AliEveListAnalyser::kCorrelObjectAnalyse)
  {
    fprintf(fp, "// add your own code here\n// Please allocate memory for your results, e.g. by doing:\n// n = YourNumberOfResults;\n// r = new Double_t[YourNumberOfResults];\n\n}\n");
  }
  else
  {
    fprintf(fp, "// add your own code here\n\n\n}\n");
  }
  
  fclose(fp);

  Emit("Create(Int_t)", type);
  Create((Char_t*)name);
  CloseWindow();
}

//______________________________________________________
void AliEveGeneralMacroWizard::Create(Char_t *name)
{
  // Emits the creation signal.

  Emit("Create(Char_t*)", Form("%s.C", name));
}

//______________________________________________________
void AliEveGeneralMacroWizard::HandleCreate()
{
  // Handles the signal, when the creation button is pressed.

  Create(fCombo->GetSelected());
}

//______________________________________________________
void AliEveGeneralMacroWizard::HandleSelectionChanged(Int_t sel)
{
  // Handles the change of the selected macro type.

  switch (sel)
  {
case AliEveListAnalyser::kCorrelObjectSelect:
case AliEveListAnalyser::kCorrelObjectAnalyse:
case AliEveListAnalyser::kCorrelObjectHisto:
    // Enable 2nd object type
    fTextObjectType2->SetEnabled(kTRUE);
  break;
default:
    // Disable 2nd object type
    fTextObjectType2->SetEnabled(kFALSE);
  break;
  }
}
 AliEveListAnalyserEditor.cxx:1
 AliEveListAnalyserEditor.cxx:2
 AliEveListAnalyserEditor.cxx:3
 AliEveListAnalyserEditor.cxx:4
 AliEveListAnalyserEditor.cxx:5
 AliEveListAnalyserEditor.cxx:6
 AliEveListAnalyserEditor.cxx:7
 AliEveListAnalyserEditor.cxx:8
 AliEveListAnalyserEditor.cxx:9
 AliEveListAnalyserEditor.cxx:10
 AliEveListAnalyserEditor.cxx:11
 AliEveListAnalyserEditor.cxx:12
 AliEveListAnalyserEditor.cxx:13
 AliEveListAnalyserEditor.cxx:14
 AliEveListAnalyserEditor.cxx:15
 AliEveListAnalyserEditor.cxx:16
 AliEveListAnalyserEditor.cxx:17
 AliEveListAnalyserEditor.cxx:18
 AliEveListAnalyserEditor.cxx:19
 AliEveListAnalyserEditor.cxx:20
 AliEveListAnalyserEditor.cxx:21
 AliEveListAnalyserEditor.cxx:22
 AliEveListAnalyserEditor.cxx:23
 AliEveListAnalyserEditor.cxx:24
 AliEveListAnalyserEditor.cxx:25
 AliEveListAnalyserEditor.cxx:26
 AliEveListAnalyserEditor.cxx:27
 AliEveListAnalyserEditor.cxx:28
 AliEveListAnalyserEditor.cxx:29
 AliEveListAnalyserEditor.cxx:30
 AliEveListAnalyserEditor.cxx:31
 AliEveListAnalyserEditor.cxx:32
 AliEveListAnalyserEditor.cxx:33
 AliEveListAnalyserEditor.cxx:34
 AliEveListAnalyserEditor.cxx:35
 AliEveListAnalyserEditor.cxx:36
 AliEveListAnalyserEditor.cxx:37
 AliEveListAnalyserEditor.cxx:38
 AliEveListAnalyserEditor.cxx:39
 AliEveListAnalyserEditor.cxx:40
 AliEveListAnalyserEditor.cxx:41
 AliEveListAnalyserEditor.cxx:42
 AliEveListAnalyserEditor.cxx:43
 AliEveListAnalyserEditor.cxx:44
 AliEveListAnalyserEditor.cxx:45
 AliEveListAnalyserEditor.cxx:46
 AliEveListAnalyserEditor.cxx:47
 AliEveListAnalyserEditor.cxx:48
 AliEveListAnalyserEditor.cxx:49
 AliEveListAnalyserEditor.cxx:50
 AliEveListAnalyserEditor.cxx:51
 AliEveListAnalyserEditor.cxx:52
 AliEveListAnalyserEditor.cxx:53
 AliEveListAnalyserEditor.cxx:54
 AliEveListAnalyserEditor.cxx:55
 AliEveListAnalyserEditor.cxx:56
 AliEveListAnalyserEditor.cxx:57
 AliEveListAnalyserEditor.cxx:58
 AliEveListAnalyserEditor.cxx:59
 AliEveListAnalyserEditor.cxx:60
 AliEveListAnalyserEditor.cxx:61
 AliEveListAnalyserEditor.cxx:62
 AliEveListAnalyserEditor.cxx:63
 AliEveListAnalyserEditor.cxx:64
 AliEveListAnalyserEditor.cxx:65
 AliEveListAnalyserEditor.cxx:66
 AliEveListAnalyserEditor.cxx:67
 AliEveListAnalyserEditor.cxx:68
 AliEveListAnalyserEditor.cxx:69
 AliEveListAnalyserEditor.cxx:70
 AliEveListAnalyserEditor.cxx:71
 AliEveListAnalyserEditor.cxx:72
 AliEveListAnalyserEditor.cxx:73
 AliEveListAnalyserEditor.cxx:74
 AliEveListAnalyserEditor.cxx:75
 AliEveListAnalyserEditor.cxx:76
 AliEveListAnalyserEditor.cxx:77
 AliEveListAnalyserEditor.cxx:78
 AliEveListAnalyserEditor.cxx:79
 AliEveListAnalyserEditor.cxx:80
 AliEveListAnalyserEditor.cxx:81
 AliEveListAnalyserEditor.cxx:82
 AliEveListAnalyserEditor.cxx:83
 AliEveListAnalyserEditor.cxx:84
 AliEveListAnalyserEditor.cxx:85
 AliEveListAnalyserEditor.cxx:86
 AliEveListAnalyserEditor.cxx:87
 AliEveListAnalyserEditor.cxx:88
 AliEveListAnalyserEditor.cxx:89
 AliEveListAnalyserEditor.cxx:90
 AliEveListAnalyserEditor.cxx:91
 AliEveListAnalyserEditor.cxx:92
 AliEveListAnalyserEditor.cxx:93
 AliEveListAnalyserEditor.cxx:94
 AliEveListAnalyserEditor.cxx:95
 AliEveListAnalyserEditor.cxx:96
 AliEveListAnalyserEditor.cxx:97
 AliEveListAnalyserEditor.cxx:98
 AliEveListAnalyserEditor.cxx:99
 AliEveListAnalyserEditor.cxx:100
 AliEveListAnalyserEditor.cxx:101
 AliEveListAnalyserEditor.cxx:102
 AliEveListAnalyserEditor.cxx:103
 AliEveListAnalyserEditor.cxx:104
 AliEveListAnalyserEditor.cxx:105
 AliEveListAnalyserEditor.cxx:106
 AliEveListAnalyserEditor.cxx:107
 AliEveListAnalyserEditor.cxx:108
 AliEveListAnalyserEditor.cxx:109
 AliEveListAnalyserEditor.cxx:110
 AliEveListAnalyserEditor.cxx:111
 AliEveListAnalyserEditor.cxx:112
 AliEveListAnalyserEditor.cxx:113
 AliEveListAnalyserEditor.cxx:114
 AliEveListAnalyserEditor.cxx:115
 AliEveListAnalyserEditor.cxx:116
 AliEveListAnalyserEditor.cxx:117
 AliEveListAnalyserEditor.cxx:118
 AliEveListAnalyserEditor.cxx:119
 AliEveListAnalyserEditor.cxx:120
 AliEveListAnalyserEditor.cxx:121
 AliEveListAnalyserEditor.cxx:122
 AliEveListAnalyserEditor.cxx:123
 AliEveListAnalyserEditor.cxx:124
 AliEveListAnalyserEditor.cxx:125
 AliEveListAnalyserEditor.cxx:126
 AliEveListAnalyserEditor.cxx:127
 AliEveListAnalyserEditor.cxx:128
 AliEveListAnalyserEditor.cxx:129
 AliEveListAnalyserEditor.cxx:130
 AliEveListAnalyserEditor.cxx:131
 AliEveListAnalyserEditor.cxx:132
 AliEveListAnalyserEditor.cxx:133
 AliEveListAnalyserEditor.cxx:134
 AliEveListAnalyserEditor.cxx:135
 AliEveListAnalyserEditor.cxx:136
 AliEveListAnalyserEditor.cxx:137
 AliEveListAnalyserEditor.cxx:138
 AliEveListAnalyserEditor.cxx:139
 AliEveListAnalyserEditor.cxx:140
 AliEveListAnalyserEditor.cxx:141
 AliEveListAnalyserEditor.cxx:142
 AliEveListAnalyserEditor.cxx:143
 AliEveListAnalyserEditor.cxx:144
 AliEveListAnalyserEditor.cxx:145
 AliEveListAnalyserEditor.cxx:146
 AliEveListAnalyserEditor.cxx:147
 AliEveListAnalyserEditor.cxx:148
 AliEveListAnalyserEditor.cxx:149
 AliEveListAnalyserEditor.cxx:150
 AliEveListAnalyserEditor.cxx:151
 AliEveListAnalyserEditor.cxx:152
 AliEveListAnalyserEditor.cxx:153
 AliEveListAnalyserEditor.cxx:154
 AliEveListAnalyserEditor.cxx:155
 AliEveListAnalyserEditor.cxx:156
 AliEveListAnalyserEditor.cxx:157
 AliEveListAnalyserEditor.cxx:158
 AliEveListAnalyserEditor.cxx:159
 AliEveListAnalyserEditor.cxx:160
 AliEveListAnalyserEditor.cxx:161
 AliEveListAnalyserEditor.cxx:162
 AliEveListAnalyserEditor.cxx:163
 AliEveListAnalyserEditor.cxx:164
 AliEveListAnalyserEditor.cxx:165
 AliEveListAnalyserEditor.cxx:166
 AliEveListAnalyserEditor.cxx:167
 AliEveListAnalyserEditor.cxx:168
 AliEveListAnalyserEditor.cxx:169
 AliEveListAnalyserEditor.cxx:170
 AliEveListAnalyserEditor.cxx:171
 AliEveListAnalyserEditor.cxx:172
 AliEveListAnalyserEditor.cxx:173
 AliEveListAnalyserEditor.cxx:174
 AliEveListAnalyserEditor.cxx:175
 AliEveListAnalyserEditor.cxx:176
 AliEveListAnalyserEditor.cxx:177
 AliEveListAnalyserEditor.cxx:178
 AliEveListAnalyserEditor.cxx:179
 AliEveListAnalyserEditor.cxx:180
 AliEveListAnalyserEditor.cxx:181
 AliEveListAnalyserEditor.cxx:182
 AliEveListAnalyserEditor.cxx:183
 AliEveListAnalyserEditor.cxx:184
 AliEveListAnalyserEditor.cxx:185
 AliEveListAnalyserEditor.cxx:186
 AliEveListAnalyserEditor.cxx:187
 AliEveListAnalyserEditor.cxx:188
 AliEveListAnalyserEditor.cxx:189
 AliEveListAnalyserEditor.cxx:190
 AliEveListAnalyserEditor.cxx:191
 AliEveListAnalyserEditor.cxx:192
 AliEveListAnalyserEditor.cxx:193
 AliEveListAnalyserEditor.cxx:194
 AliEveListAnalyserEditor.cxx:195
 AliEveListAnalyserEditor.cxx:196
 AliEveListAnalyserEditor.cxx:197
 AliEveListAnalyserEditor.cxx:198
 AliEveListAnalyserEditor.cxx:199
 AliEveListAnalyserEditor.cxx:200
 AliEveListAnalyserEditor.cxx:201
 AliEveListAnalyserEditor.cxx:202
 AliEveListAnalyserEditor.cxx:203
 AliEveListAnalyserEditor.cxx:204
 AliEveListAnalyserEditor.cxx:205
 AliEveListAnalyserEditor.cxx:206
 AliEveListAnalyserEditor.cxx:207
 AliEveListAnalyserEditor.cxx:208
 AliEveListAnalyserEditor.cxx:209
 AliEveListAnalyserEditor.cxx:210
 AliEveListAnalyserEditor.cxx:211
 AliEveListAnalyserEditor.cxx:212
 AliEveListAnalyserEditor.cxx:213
 AliEveListAnalyserEditor.cxx:214
 AliEveListAnalyserEditor.cxx:215
 AliEveListAnalyserEditor.cxx:216
 AliEveListAnalyserEditor.cxx:217
 AliEveListAnalyserEditor.cxx:218
 AliEveListAnalyserEditor.cxx:219
 AliEveListAnalyserEditor.cxx:220
 AliEveListAnalyserEditor.cxx:221
 AliEveListAnalyserEditor.cxx:222
 AliEveListAnalyserEditor.cxx:223
 AliEveListAnalyserEditor.cxx:224
 AliEveListAnalyserEditor.cxx:225
 AliEveListAnalyserEditor.cxx:226
 AliEveListAnalyserEditor.cxx:227
 AliEveListAnalyserEditor.cxx:228
 AliEveListAnalyserEditor.cxx:229
 AliEveListAnalyserEditor.cxx:230
 AliEveListAnalyserEditor.cxx:231
 AliEveListAnalyserEditor.cxx:232
 AliEveListAnalyserEditor.cxx:233
 AliEveListAnalyserEditor.cxx:234
 AliEveListAnalyserEditor.cxx:235
 AliEveListAnalyserEditor.cxx:236
 AliEveListAnalyserEditor.cxx:237
 AliEveListAnalyserEditor.cxx:238
 AliEveListAnalyserEditor.cxx:239
 AliEveListAnalyserEditor.cxx:240
 AliEveListAnalyserEditor.cxx:241
 AliEveListAnalyserEditor.cxx:242
 AliEveListAnalyserEditor.cxx:243
 AliEveListAnalyserEditor.cxx:244
 AliEveListAnalyserEditor.cxx:245
 AliEveListAnalyserEditor.cxx:246
 AliEveListAnalyserEditor.cxx:247
 AliEveListAnalyserEditor.cxx:248
 AliEveListAnalyserEditor.cxx:249
 AliEveListAnalyserEditor.cxx:250
 AliEveListAnalyserEditor.cxx:251
 AliEveListAnalyserEditor.cxx:252
 AliEveListAnalyserEditor.cxx:253
 AliEveListAnalyserEditor.cxx:254
 AliEveListAnalyserEditor.cxx:255
 AliEveListAnalyserEditor.cxx:256
 AliEveListAnalyserEditor.cxx:257
 AliEveListAnalyserEditor.cxx:258
 AliEveListAnalyserEditor.cxx:259
 AliEveListAnalyserEditor.cxx:260
 AliEveListAnalyserEditor.cxx:261
 AliEveListAnalyserEditor.cxx:262
 AliEveListAnalyserEditor.cxx:263
 AliEveListAnalyserEditor.cxx:264
 AliEveListAnalyserEditor.cxx:265
 AliEveListAnalyserEditor.cxx:266
 AliEveListAnalyserEditor.cxx:267
 AliEveListAnalyserEditor.cxx:268
 AliEveListAnalyserEditor.cxx:269
 AliEveListAnalyserEditor.cxx:270
 AliEveListAnalyserEditor.cxx:271
 AliEveListAnalyserEditor.cxx:272
 AliEveListAnalyserEditor.cxx:273
 AliEveListAnalyserEditor.cxx:274
 AliEveListAnalyserEditor.cxx:275
 AliEveListAnalyserEditor.cxx:276
 AliEveListAnalyserEditor.cxx:277
 AliEveListAnalyserEditor.cxx:278
 AliEveListAnalyserEditor.cxx:279
 AliEveListAnalyserEditor.cxx:280
 AliEveListAnalyserEditor.cxx:281
 AliEveListAnalyserEditor.cxx:282
 AliEveListAnalyserEditor.cxx:283
 AliEveListAnalyserEditor.cxx:284
 AliEveListAnalyserEditor.cxx:285
 AliEveListAnalyserEditor.cxx:286
 AliEveListAnalyserEditor.cxx:287
 AliEveListAnalyserEditor.cxx:288
 AliEveListAnalyserEditor.cxx:289
 AliEveListAnalyserEditor.cxx:290
 AliEveListAnalyserEditor.cxx:291
 AliEveListAnalyserEditor.cxx:292
 AliEveListAnalyserEditor.cxx:293
 AliEveListAnalyserEditor.cxx:294
 AliEveListAnalyserEditor.cxx:295
 AliEveListAnalyserEditor.cxx:296
 AliEveListAnalyserEditor.cxx:297
 AliEveListAnalyserEditor.cxx:298
 AliEveListAnalyserEditor.cxx:299
 AliEveListAnalyserEditor.cxx:300
 AliEveListAnalyserEditor.cxx:301
 AliEveListAnalyserEditor.cxx:302
 AliEveListAnalyserEditor.cxx:303
 AliEveListAnalyserEditor.cxx:304
 AliEveListAnalyserEditor.cxx:305
 AliEveListAnalyserEditor.cxx:306
 AliEveListAnalyserEditor.cxx:307
 AliEveListAnalyserEditor.cxx:308
 AliEveListAnalyserEditor.cxx:309
 AliEveListAnalyserEditor.cxx:310
 AliEveListAnalyserEditor.cxx:311
 AliEveListAnalyserEditor.cxx:312
 AliEveListAnalyserEditor.cxx:313
 AliEveListAnalyserEditor.cxx:314
 AliEveListAnalyserEditor.cxx:315
 AliEveListAnalyserEditor.cxx:316
 AliEveListAnalyserEditor.cxx:317
 AliEveListAnalyserEditor.cxx:318
 AliEveListAnalyserEditor.cxx:319
 AliEveListAnalyserEditor.cxx:320
 AliEveListAnalyserEditor.cxx:321
 AliEveListAnalyserEditor.cxx:322
 AliEveListAnalyserEditor.cxx:323
 AliEveListAnalyserEditor.cxx:324
 AliEveListAnalyserEditor.cxx:325
 AliEveListAnalyserEditor.cxx:326
 AliEveListAnalyserEditor.cxx:327
 AliEveListAnalyserEditor.cxx:328
 AliEveListAnalyserEditor.cxx:329
 AliEveListAnalyserEditor.cxx:330
 AliEveListAnalyserEditor.cxx:331
 AliEveListAnalyserEditor.cxx:332
 AliEveListAnalyserEditor.cxx:333
 AliEveListAnalyserEditor.cxx:334
 AliEveListAnalyserEditor.cxx:335
 AliEveListAnalyserEditor.cxx:336
 AliEveListAnalyserEditor.cxx:337
 AliEveListAnalyserEditor.cxx:338
 AliEveListAnalyserEditor.cxx:339
 AliEveListAnalyserEditor.cxx:340
 AliEveListAnalyserEditor.cxx:341
 AliEveListAnalyserEditor.cxx:342
 AliEveListAnalyserEditor.cxx:343
 AliEveListAnalyserEditor.cxx:344
 AliEveListAnalyserEditor.cxx:345
 AliEveListAnalyserEditor.cxx:346
 AliEveListAnalyserEditor.cxx:347
 AliEveListAnalyserEditor.cxx:348
 AliEveListAnalyserEditor.cxx:349
 AliEveListAnalyserEditor.cxx:350
 AliEveListAnalyserEditor.cxx:351
 AliEveListAnalyserEditor.cxx:352
 AliEveListAnalyserEditor.cxx:353
 AliEveListAnalyserEditor.cxx:354
 AliEveListAnalyserEditor.cxx:355
 AliEveListAnalyserEditor.cxx:356
 AliEveListAnalyserEditor.cxx:357
 AliEveListAnalyserEditor.cxx:358
 AliEveListAnalyserEditor.cxx:359
 AliEveListAnalyserEditor.cxx:360
 AliEveListAnalyserEditor.cxx:361
 AliEveListAnalyserEditor.cxx:362
 AliEveListAnalyserEditor.cxx:363
 AliEveListAnalyserEditor.cxx:364
 AliEveListAnalyserEditor.cxx:365
 AliEveListAnalyserEditor.cxx:366
 AliEveListAnalyserEditor.cxx:367
 AliEveListAnalyserEditor.cxx:368
 AliEveListAnalyserEditor.cxx:369
 AliEveListAnalyserEditor.cxx:370
 AliEveListAnalyserEditor.cxx:371
 AliEveListAnalyserEditor.cxx:372
 AliEveListAnalyserEditor.cxx:373
 AliEveListAnalyserEditor.cxx:374
 AliEveListAnalyserEditor.cxx:375
 AliEveListAnalyserEditor.cxx:376
 AliEveListAnalyserEditor.cxx:377
 AliEveListAnalyserEditor.cxx:378
 AliEveListAnalyserEditor.cxx:379
 AliEveListAnalyserEditor.cxx:380
 AliEveListAnalyserEditor.cxx:381
 AliEveListAnalyserEditor.cxx:382
 AliEveListAnalyserEditor.cxx:383
 AliEveListAnalyserEditor.cxx:384
 AliEveListAnalyserEditor.cxx:385
 AliEveListAnalyserEditor.cxx:386
 AliEveListAnalyserEditor.cxx:387
 AliEveListAnalyserEditor.cxx:388
 AliEveListAnalyserEditor.cxx:389
 AliEveListAnalyserEditor.cxx:390
 AliEveListAnalyserEditor.cxx:391
 AliEveListAnalyserEditor.cxx:392
 AliEveListAnalyserEditor.cxx:393
 AliEveListAnalyserEditor.cxx:394
 AliEveListAnalyserEditor.cxx:395
 AliEveListAnalyserEditor.cxx:396
 AliEveListAnalyserEditor.cxx:397
 AliEveListAnalyserEditor.cxx:398
 AliEveListAnalyserEditor.cxx:399
 AliEveListAnalyserEditor.cxx:400
 AliEveListAnalyserEditor.cxx:401
 AliEveListAnalyserEditor.cxx:402
 AliEveListAnalyserEditor.cxx:403
 AliEveListAnalyserEditor.cxx:404
 AliEveListAnalyserEditor.cxx:405
 AliEveListAnalyserEditor.cxx:406
 AliEveListAnalyserEditor.cxx:407
 AliEveListAnalyserEditor.cxx:408
 AliEveListAnalyserEditor.cxx:409
 AliEveListAnalyserEditor.cxx:410
 AliEveListAnalyserEditor.cxx:411
 AliEveListAnalyserEditor.cxx:412
 AliEveListAnalyserEditor.cxx:413
 AliEveListAnalyserEditor.cxx:414
 AliEveListAnalyserEditor.cxx:415
 AliEveListAnalyserEditor.cxx:416
 AliEveListAnalyserEditor.cxx:417
 AliEveListAnalyserEditor.cxx:418
 AliEveListAnalyserEditor.cxx:419
 AliEveListAnalyserEditor.cxx:420
 AliEveListAnalyserEditor.cxx:421
 AliEveListAnalyserEditor.cxx:422
 AliEveListAnalyserEditor.cxx:423
 AliEveListAnalyserEditor.cxx:424
 AliEveListAnalyserEditor.cxx:425
 AliEveListAnalyserEditor.cxx:426
 AliEveListAnalyserEditor.cxx:427
 AliEveListAnalyserEditor.cxx:428
 AliEveListAnalyserEditor.cxx:429
 AliEveListAnalyserEditor.cxx:430
 AliEveListAnalyserEditor.cxx:431
 AliEveListAnalyserEditor.cxx:432
 AliEveListAnalyserEditor.cxx:433
 AliEveListAnalyserEditor.cxx:434
 AliEveListAnalyserEditor.cxx:435
 AliEveListAnalyserEditor.cxx:436
 AliEveListAnalyserEditor.cxx:437
 AliEveListAnalyserEditor.cxx:438
 AliEveListAnalyserEditor.cxx:439
 AliEveListAnalyserEditor.cxx:440
 AliEveListAnalyserEditor.cxx:441
 AliEveListAnalyserEditor.cxx:442
 AliEveListAnalyserEditor.cxx:443
 AliEveListAnalyserEditor.cxx:444
 AliEveListAnalyserEditor.cxx:445
 AliEveListAnalyserEditor.cxx:446
 AliEveListAnalyserEditor.cxx:447
 AliEveListAnalyserEditor.cxx:448
 AliEveListAnalyserEditor.cxx:449
 AliEveListAnalyserEditor.cxx:450
 AliEveListAnalyserEditor.cxx:451
 AliEveListAnalyserEditor.cxx:452
 AliEveListAnalyserEditor.cxx:453
 AliEveListAnalyserEditor.cxx:454
 AliEveListAnalyserEditor.cxx:455
 AliEveListAnalyserEditor.cxx:456
 AliEveListAnalyserEditor.cxx:457
 AliEveListAnalyserEditor.cxx:458
 AliEveListAnalyserEditor.cxx:459
 AliEveListAnalyserEditor.cxx:460
 AliEveListAnalyserEditor.cxx:461
 AliEveListAnalyserEditor.cxx:462
 AliEveListAnalyserEditor.cxx:463
 AliEveListAnalyserEditor.cxx:464
 AliEveListAnalyserEditor.cxx:465
 AliEveListAnalyserEditor.cxx:466
 AliEveListAnalyserEditor.cxx:467
 AliEveListAnalyserEditor.cxx:468
 AliEveListAnalyserEditor.cxx:469
 AliEveListAnalyserEditor.cxx:470
 AliEveListAnalyserEditor.cxx:471
 AliEveListAnalyserEditor.cxx:472
 AliEveListAnalyserEditor.cxx:473
 AliEveListAnalyserEditor.cxx:474
 AliEveListAnalyserEditor.cxx:475
 AliEveListAnalyserEditor.cxx:476
 AliEveListAnalyserEditor.cxx:477
 AliEveListAnalyserEditor.cxx:478
 AliEveListAnalyserEditor.cxx:479
 AliEveListAnalyserEditor.cxx:480
 AliEveListAnalyserEditor.cxx:481
 AliEveListAnalyserEditor.cxx:482
 AliEveListAnalyserEditor.cxx:483
 AliEveListAnalyserEditor.cxx:484
 AliEveListAnalyserEditor.cxx:485
 AliEveListAnalyserEditor.cxx:486
 AliEveListAnalyserEditor.cxx:487
 AliEveListAnalyserEditor.cxx:488
 AliEveListAnalyserEditor.cxx:489
 AliEveListAnalyserEditor.cxx:490
 AliEveListAnalyserEditor.cxx:491
 AliEveListAnalyserEditor.cxx:492
 AliEveListAnalyserEditor.cxx:493
 AliEveListAnalyserEditor.cxx:494
 AliEveListAnalyserEditor.cxx:495
 AliEveListAnalyserEditor.cxx:496
 AliEveListAnalyserEditor.cxx:497
 AliEveListAnalyserEditor.cxx:498
 AliEveListAnalyserEditor.cxx:499
 AliEveListAnalyserEditor.cxx:500
 AliEveListAnalyserEditor.cxx:501
 AliEveListAnalyserEditor.cxx:502
 AliEveListAnalyserEditor.cxx:503
 AliEveListAnalyserEditor.cxx:504
 AliEveListAnalyserEditor.cxx:505
 AliEveListAnalyserEditor.cxx:506
 AliEveListAnalyserEditor.cxx:507
 AliEveListAnalyserEditor.cxx:508
 AliEveListAnalyserEditor.cxx:509
 AliEveListAnalyserEditor.cxx:510
 AliEveListAnalyserEditor.cxx:511
 AliEveListAnalyserEditor.cxx:512
 AliEveListAnalyserEditor.cxx:513
 AliEveListAnalyserEditor.cxx:514
 AliEveListAnalyserEditor.cxx:515
 AliEveListAnalyserEditor.cxx:516
 AliEveListAnalyserEditor.cxx:517
 AliEveListAnalyserEditor.cxx:518
 AliEveListAnalyserEditor.cxx:519
 AliEveListAnalyserEditor.cxx:520
 AliEveListAnalyserEditor.cxx:521
 AliEveListAnalyserEditor.cxx:522
 AliEveListAnalyserEditor.cxx:523
 AliEveListAnalyserEditor.cxx:524
 AliEveListAnalyserEditor.cxx:525
 AliEveListAnalyserEditor.cxx:526
 AliEveListAnalyserEditor.cxx:527
 AliEveListAnalyserEditor.cxx:528
 AliEveListAnalyserEditor.cxx:529
 AliEveListAnalyserEditor.cxx:530
 AliEveListAnalyserEditor.cxx:531
 AliEveListAnalyserEditor.cxx:532
 AliEveListAnalyserEditor.cxx:533
 AliEveListAnalyserEditor.cxx:534
 AliEveListAnalyserEditor.cxx:535
 AliEveListAnalyserEditor.cxx:536
 AliEveListAnalyserEditor.cxx:537
 AliEveListAnalyserEditor.cxx:538
 AliEveListAnalyserEditor.cxx:539
 AliEveListAnalyserEditor.cxx:540
 AliEveListAnalyserEditor.cxx:541
 AliEveListAnalyserEditor.cxx:542
 AliEveListAnalyserEditor.cxx:543
 AliEveListAnalyserEditor.cxx:544
 AliEveListAnalyserEditor.cxx:545
 AliEveListAnalyserEditor.cxx:546
 AliEveListAnalyserEditor.cxx:547
 AliEveListAnalyserEditor.cxx:548
 AliEveListAnalyserEditor.cxx:549
 AliEveListAnalyserEditor.cxx:550
 AliEveListAnalyserEditor.cxx:551
 AliEveListAnalyserEditor.cxx:552
 AliEveListAnalyserEditor.cxx:553
 AliEveListAnalyserEditor.cxx:554
 AliEveListAnalyserEditor.cxx:555
 AliEveListAnalyserEditor.cxx:556
 AliEveListAnalyserEditor.cxx:557
 AliEveListAnalyserEditor.cxx:558
 AliEveListAnalyserEditor.cxx:559
 AliEveListAnalyserEditor.cxx:560
 AliEveListAnalyserEditor.cxx:561
 AliEveListAnalyserEditor.cxx:562
 AliEveListAnalyserEditor.cxx:563
 AliEveListAnalyserEditor.cxx:564
 AliEveListAnalyserEditor.cxx:565
 AliEveListAnalyserEditor.cxx:566
 AliEveListAnalyserEditor.cxx:567
 AliEveListAnalyserEditor.cxx:568
 AliEveListAnalyserEditor.cxx:569
 AliEveListAnalyserEditor.cxx:570
 AliEveListAnalyserEditor.cxx:571
 AliEveListAnalyserEditor.cxx:572
 AliEveListAnalyserEditor.cxx:573
 AliEveListAnalyserEditor.cxx:574
 AliEveListAnalyserEditor.cxx:575
 AliEveListAnalyserEditor.cxx:576
 AliEveListAnalyserEditor.cxx:577
 AliEveListAnalyserEditor.cxx:578
 AliEveListAnalyserEditor.cxx:579
 AliEveListAnalyserEditor.cxx:580
 AliEveListAnalyserEditor.cxx:581
 AliEveListAnalyserEditor.cxx:582
 AliEveListAnalyserEditor.cxx:583
 AliEveListAnalyserEditor.cxx:584
 AliEveListAnalyserEditor.cxx:585
 AliEveListAnalyserEditor.cxx:586
 AliEveListAnalyserEditor.cxx:587
 AliEveListAnalyserEditor.cxx:588
 AliEveListAnalyserEditor.cxx:589
 AliEveListAnalyserEditor.cxx:590
 AliEveListAnalyserEditor.cxx:591
 AliEveListAnalyserEditor.cxx:592
 AliEveListAnalyserEditor.cxx:593
 AliEveListAnalyserEditor.cxx:594
 AliEveListAnalyserEditor.cxx:595
 AliEveListAnalyserEditor.cxx:596
 AliEveListAnalyserEditor.cxx:597
 AliEveListAnalyserEditor.cxx:598
 AliEveListAnalyserEditor.cxx:599
 AliEveListAnalyserEditor.cxx:600
 AliEveListAnalyserEditor.cxx:601
 AliEveListAnalyserEditor.cxx:602
 AliEveListAnalyserEditor.cxx:603
 AliEveListAnalyserEditor.cxx:604
 AliEveListAnalyserEditor.cxx:605
 AliEveListAnalyserEditor.cxx:606
 AliEveListAnalyserEditor.cxx:607
 AliEveListAnalyserEditor.cxx:608
 AliEveListAnalyserEditor.cxx:609
 AliEveListAnalyserEditor.cxx:610
 AliEveListAnalyserEditor.cxx:611
 AliEveListAnalyserEditor.cxx:612
 AliEveListAnalyserEditor.cxx:613
 AliEveListAnalyserEditor.cxx:614
 AliEveListAnalyserEditor.cxx:615
 AliEveListAnalyserEditor.cxx:616
 AliEveListAnalyserEditor.cxx:617
 AliEveListAnalyserEditor.cxx:618
 AliEveListAnalyserEditor.cxx:619
 AliEveListAnalyserEditor.cxx:620
 AliEveListAnalyserEditor.cxx:621
 AliEveListAnalyserEditor.cxx:622
 AliEveListAnalyserEditor.cxx:623
 AliEveListAnalyserEditor.cxx:624
 AliEveListAnalyserEditor.cxx:625
 AliEveListAnalyserEditor.cxx:626
 AliEveListAnalyserEditor.cxx:627
 AliEveListAnalyserEditor.cxx:628
 AliEveListAnalyserEditor.cxx:629
 AliEveListAnalyserEditor.cxx:630
 AliEveListAnalyserEditor.cxx:631
 AliEveListAnalyserEditor.cxx:632
 AliEveListAnalyserEditor.cxx:633
 AliEveListAnalyserEditor.cxx:634
 AliEveListAnalyserEditor.cxx:635
 AliEveListAnalyserEditor.cxx:636
 AliEveListAnalyserEditor.cxx:637
 AliEveListAnalyserEditor.cxx:638
 AliEveListAnalyserEditor.cxx:639
 AliEveListAnalyserEditor.cxx:640
 AliEveListAnalyserEditor.cxx:641
 AliEveListAnalyserEditor.cxx:642
 AliEveListAnalyserEditor.cxx:643
 AliEveListAnalyserEditor.cxx:644
 AliEveListAnalyserEditor.cxx:645
 AliEveListAnalyserEditor.cxx:646
 AliEveListAnalyserEditor.cxx:647
 AliEveListAnalyserEditor.cxx:648
 AliEveListAnalyserEditor.cxx:649
 AliEveListAnalyserEditor.cxx:650
 AliEveListAnalyserEditor.cxx:651
 AliEveListAnalyserEditor.cxx:652
 AliEveListAnalyserEditor.cxx:653
 AliEveListAnalyserEditor.cxx:654
 AliEveListAnalyserEditor.cxx:655
 AliEveListAnalyserEditor.cxx:656
 AliEveListAnalyserEditor.cxx:657
 AliEveListAnalyserEditor.cxx:658
 AliEveListAnalyserEditor.cxx:659
 AliEveListAnalyserEditor.cxx:660
 AliEveListAnalyserEditor.cxx:661
 AliEveListAnalyserEditor.cxx:662
 AliEveListAnalyserEditor.cxx:663
 AliEveListAnalyserEditor.cxx:664
 AliEveListAnalyserEditor.cxx:665
 AliEveListAnalyserEditor.cxx:666
 AliEveListAnalyserEditor.cxx:667
 AliEveListAnalyserEditor.cxx:668
 AliEveListAnalyserEditor.cxx:669
 AliEveListAnalyserEditor.cxx:670
 AliEveListAnalyserEditor.cxx:671
 AliEveListAnalyserEditor.cxx:672
 AliEveListAnalyserEditor.cxx:673
 AliEveListAnalyserEditor.cxx:674
 AliEveListAnalyserEditor.cxx:675
 AliEveListAnalyserEditor.cxx:676
 AliEveListAnalyserEditor.cxx:677
 AliEveListAnalyserEditor.cxx:678
 AliEveListAnalyserEditor.cxx:679
 AliEveListAnalyserEditor.cxx:680
 AliEveListAnalyserEditor.cxx:681
 AliEveListAnalyserEditor.cxx:682
 AliEveListAnalyserEditor.cxx:683
 AliEveListAnalyserEditor.cxx:684
 AliEveListAnalyserEditor.cxx:685
 AliEveListAnalyserEditor.cxx:686
 AliEveListAnalyserEditor.cxx:687
 AliEveListAnalyserEditor.cxx:688
 AliEveListAnalyserEditor.cxx:689
 AliEveListAnalyserEditor.cxx:690
 AliEveListAnalyserEditor.cxx:691
 AliEveListAnalyserEditor.cxx:692
 AliEveListAnalyserEditor.cxx:693
 AliEveListAnalyserEditor.cxx:694
 AliEveListAnalyserEditor.cxx:695
 AliEveListAnalyserEditor.cxx:696
 AliEveListAnalyserEditor.cxx:697
 AliEveListAnalyserEditor.cxx:698
 AliEveListAnalyserEditor.cxx:699
 AliEveListAnalyserEditor.cxx:700
 AliEveListAnalyserEditor.cxx:701
 AliEveListAnalyserEditor.cxx:702
 AliEveListAnalyserEditor.cxx:703
 AliEveListAnalyserEditor.cxx:704
 AliEveListAnalyserEditor.cxx:705
 AliEveListAnalyserEditor.cxx:706
 AliEveListAnalyserEditor.cxx:707
 AliEveListAnalyserEditor.cxx:708
 AliEveListAnalyserEditor.cxx:709
 AliEveListAnalyserEditor.cxx:710
 AliEveListAnalyserEditor.cxx:711
 AliEveListAnalyserEditor.cxx:712
 AliEveListAnalyserEditor.cxx:713
 AliEveListAnalyserEditor.cxx:714
 AliEveListAnalyserEditor.cxx:715
 AliEveListAnalyserEditor.cxx:716
 AliEveListAnalyserEditor.cxx:717
 AliEveListAnalyserEditor.cxx:718
 AliEveListAnalyserEditor.cxx:719
 AliEveListAnalyserEditor.cxx:720
 AliEveListAnalyserEditor.cxx:721
 AliEveListAnalyserEditor.cxx:722
 AliEveListAnalyserEditor.cxx:723
 AliEveListAnalyserEditor.cxx:724
 AliEveListAnalyserEditor.cxx:725
 AliEveListAnalyserEditor.cxx:726
 AliEveListAnalyserEditor.cxx:727
 AliEveListAnalyserEditor.cxx:728
 AliEveListAnalyserEditor.cxx:729
 AliEveListAnalyserEditor.cxx:730
 AliEveListAnalyserEditor.cxx:731
 AliEveListAnalyserEditor.cxx:732
 AliEveListAnalyserEditor.cxx:733
 AliEveListAnalyserEditor.cxx:734
 AliEveListAnalyserEditor.cxx:735
 AliEveListAnalyserEditor.cxx:736
 AliEveListAnalyserEditor.cxx:737
 AliEveListAnalyserEditor.cxx:738
 AliEveListAnalyserEditor.cxx:739
 AliEveListAnalyserEditor.cxx:740
 AliEveListAnalyserEditor.cxx:741
 AliEveListAnalyserEditor.cxx:742
 AliEveListAnalyserEditor.cxx:743
 AliEveListAnalyserEditor.cxx:744
 AliEveListAnalyserEditor.cxx:745
 AliEveListAnalyserEditor.cxx:746
 AliEveListAnalyserEditor.cxx:747
 AliEveListAnalyserEditor.cxx:748
 AliEveListAnalyserEditor.cxx:749
 AliEveListAnalyserEditor.cxx:750
 AliEveListAnalyserEditor.cxx:751
 AliEveListAnalyserEditor.cxx:752
 AliEveListAnalyserEditor.cxx:753
 AliEveListAnalyserEditor.cxx:754
 AliEveListAnalyserEditor.cxx:755
 AliEveListAnalyserEditor.cxx:756
 AliEveListAnalyserEditor.cxx:757
 AliEveListAnalyserEditor.cxx:758
 AliEveListAnalyserEditor.cxx:759
 AliEveListAnalyserEditor.cxx:760
 AliEveListAnalyserEditor.cxx:761
 AliEveListAnalyserEditor.cxx:762
 AliEveListAnalyserEditor.cxx:763
 AliEveListAnalyserEditor.cxx:764
 AliEveListAnalyserEditor.cxx:765
 AliEveListAnalyserEditor.cxx:766
 AliEveListAnalyserEditor.cxx:767
 AliEveListAnalyserEditor.cxx:768
 AliEveListAnalyserEditor.cxx:769
 AliEveListAnalyserEditor.cxx:770
 AliEveListAnalyserEditor.cxx:771
 AliEveListAnalyserEditor.cxx:772
 AliEveListAnalyserEditor.cxx:773
 AliEveListAnalyserEditor.cxx:774
 AliEveListAnalyserEditor.cxx:775
 AliEveListAnalyserEditor.cxx:776
 AliEveListAnalyserEditor.cxx:777
 AliEveListAnalyserEditor.cxx:778
 AliEveListAnalyserEditor.cxx:779
 AliEveListAnalyserEditor.cxx:780
 AliEveListAnalyserEditor.cxx:781
 AliEveListAnalyserEditor.cxx:782
 AliEveListAnalyserEditor.cxx:783
 AliEveListAnalyserEditor.cxx:784
 AliEveListAnalyserEditor.cxx:785
 AliEveListAnalyserEditor.cxx:786
 AliEveListAnalyserEditor.cxx:787
 AliEveListAnalyserEditor.cxx:788
 AliEveListAnalyserEditor.cxx:789
 AliEveListAnalyserEditor.cxx:790
 AliEveListAnalyserEditor.cxx:791
 AliEveListAnalyserEditor.cxx:792
 AliEveListAnalyserEditor.cxx:793
 AliEveListAnalyserEditor.cxx:794
 AliEveListAnalyserEditor.cxx:795
 AliEveListAnalyserEditor.cxx:796
 AliEveListAnalyserEditor.cxx:797
 AliEveListAnalyserEditor.cxx:798
 AliEveListAnalyserEditor.cxx:799
 AliEveListAnalyserEditor.cxx:800
 AliEveListAnalyserEditor.cxx:801
 AliEveListAnalyserEditor.cxx:802
 AliEveListAnalyserEditor.cxx:803
 AliEveListAnalyserEditor.cxx:804
 AliEveListAnalyserEditor.cxx:805
 AliEveListAnalyserEditor.cxx:806
 AliEveListAnalyserEditor.cxx:807
 AliEveListAnalyserEditor.cxx:808
 AliEveListAnalyserEditor.cxx:809
 AliEveListAnalyserEditor.cxx:810
 AliEveListAnalyserEditor.cxx:811
 AliEveListAnalyserEditor.cxx:812
 AliEveListAnalyserEditor.cxx:813
 AliEveListAnalyserEditor.cxx:814
 AliEveListAnalyserEditor.cxx:815
 AliEveListAnalyserEditor.cxx:816
 AliEveListAnalyserEditor.cxx:817
 AliEveListAnalyserEditor.cxx:818
 AliEveListAnalyserEditor.cxx:819
 AliEveListAnalyserEditor.cxx:820
 AliEveListAnalyserEditor.cxx:821
 AliEveListAnalyserEditor.cxx:822
 AliEveListAnalyserEditor.cxx:823
 AliEveListAnalyserEditor.cxx:824
 AliEveListAnalyserEditor.cxx:825
 AliEveListAnalyserEditor.cxx:826
 AliEveListAnalyserEditor.cxx:827
 AliEveListAnalyserEditor.cxx:828
 AliEveListAnalyserEditor.cxx:829
 AliEveListAnalyserEditor.cxx:830
 AliEveListAnalyserEditor.cxx:831
 AliEveListAnalyserEditor.cxx:832
 AliEveListAnalyserEditor.cxx:833
 AliEveListAnalyserEditor.cxx:834
 AliEveListAnalyserEditor.cxx:835
 AliEveListAnalyserEditor.cxx:836
 AliEveListAnalyserEditor.cxx:837
 AliEveListAnalyserEditor.cxx:838
 AliEveListAnalyserEditor.cxx:839
 AliEveListAnalyserEditor.cxx:840
 AliEveListAnalyserEditor.cxx:841
 AliEveListAnalyserEditor.cxx:842
 AliEveListAnalyserEditor.cxx:843
 AliEveListAnalyserEditor.cxx:844
 AliEveListAnalyserEditor.cxx:845
 AliEveListAnalyserEditor.cxx:846
 AliEveListAnalyserEditor.cxx:847
 AliEveListAnalyserEditor.cxx:848
 AliEveListAnalyserEditor.cxx:849
 AliEveListAnalyserEditor.cxx:850
 AliEveListAnalyserEditor.cxx:851
 AliEveListAnalyserEditor.cxx:852
 AliEveListAnalyserEditor.cxx:853
 AliEveListAnalyserEditor.cxx:854
 AliEveListAnalyserEditor.cxx:855
 AliEveListAnalyserEditor.cxx:856
 AliEveListAnalyserEditor.cxx:857
 AliEveListAnalyserEditor.cxx:858
 AliEveListAnalyserEditor.cxx:859
 AliEveListAnalyserEditor.cxx:860
 AliEveListAnalyserEditor.cxx:861
 AliEveListAnalyserEditor.cxx:862
 AliEveListAnalyserEditor.cxx:863
 AliEveListAnalyserEditor.cxx:864
 AliEveListAnalyserEditor.cxx:865
 AliEveListAnalyserEditor.cxx:866
 AliEveListAnalyserEditor.cxx:867
 AliEveListAnalyserEditor.cxx:868
 AliEveListAnalyserEditor.cxx:869
 AliEveListAnalyserEditor.cxx:870
 AliEveListAnalyserEditor.cxx:871
 AliEveListAnalyserEditor.cxx:872
 AliEveListAnalyserEditor.cxx:873
 AliEveListAnalyserEditor.cxx:874
 AliEveListAnalyserEditor.cxx:875
 AliEveListAnalyserEditor.cxx:876
 AliEveListAnalyserEditor.cxx:877
 AliEveListAnalyserEditor.cxx:878
 AliEveListAnalyserEditor.cxx:879
 AliEveListAnalyserEditor.cxx:880
 AliEveListAnalyserEditor.cxx:881
 AliEveListAnalyserEditor.cxx:882
 AliEveListAnalyserEditor.cxx:883
 AliEveListAnalyserEditor.cxx:884
 AliEveListAnalyserEditor.cxx:885
 AliEveListAnalyserEditor.cxx:886
 AliEveListAnalyserEditor.cxx:887
 AliEveListAnalyserEditor.cxx:888
 AliEveListAnalyserEditor.cxx:889
 AliEveListAnalyserEditor.cxx:890
 AliEveListAnalyserEditor.cxx:891
 AliEveListAnalyserEditor.cxx:892
 AliEveListAnalyserEditor.cxx:893
 AliEveListAnalyserEditor.cxx:894
 AliEveListAnalyserEditor.cxx:895
 AliEveListAnalyserEditor.cxx:896
 AliEveListAnalyserEditor.cxx:897
 AliEveListAnalyserEditor.cxx:898
 AliEveListAnalyserEditor.cxx:899
 AliEveListAnalyserEditor.cxx:900
 AliEveListAnalyserEditor.cxx:901
 AliEveListAnalyserEditor.cxx:902
 AliEveListAnalyserEditor.cxx:903
 AliEveListAnalyserEditor.cxx:904
 AliEveListAnalyserEditor.cxx:905
 AliEveListAnalyserEditor.cxx:906
 AliEveListAnalyserEditor.cxx:907
 AliEveListAnalyserEditor.cxx:908
 AliEveListAnalyserEditor.cxx:909
 AliEveListAnalyserEditor.cxx:910
 AliEveListAnalyserEditor.cxx:911
 AliEveListAnalyserEditor.cxx:912
 AliEveListAnalyserEditor.cxx:913
 AliEveListAnalyserEditor.cxx:914
 AliEveListAnalyserEditor.cxx:915
 AliEveListAnalyserEditor.cxx:916
 AliEveListAnalyserEditor.cxx:917
 AliEveListAnalyserEditor.cxx:918
 AliEveListAnalyserEditor.cxx:919
 AliEveListAnalyserEditor.cxx:920
 AliEveListAnalyserEditor.cxx:921
 AliEveListAnalyserEditor.cxx:922
 AliEveListAnalyserEditor.cxx:923
 AliEveListAnalyserEditor.cxx:924
 AliEveListAnalyserEditor.cxx:925
 AliEveListAnalyserEditor.cxx:926
 AliEveListAnalyserEditor.cxx:927
 AliEveListAnalyserEditor.cxx:928
 AliEveListAnalyserEditor.cxx:929
 AliEveListAnalyserEditor.cxx:930
 AliEveListAnalyserEditor.cxx:931
 AliEveListAnalyserEditor.cxx:932
 AliEveListAnalyserEditor.cxx:933
 AliEveListAnalyserEditor.cxx:934
 AliEveListAnalyserEditor.cxx:935
 AliEveListAnalyserEditor.cxx:936
 AliEveListAnalyserEditor.cxx:937
 AliEveListAnalyserEditor.cxx:938
 AliEveListAnalyserEditor.cxx:939
 AliEveListAnalyserEditor.cxx:940
 AliEveListAnalyserEditor.cxx:941
 AliEveListAnalyserEditor.cxx:942
 AliEveListAnalyserEditor.cxx:943
 AliEveListAnalyserEditor.cxx:944
 AliEveListAnalyserEditor.cxx:945
 AliEveListAnalyserEditor.cxx:946
 AliEveListAnalyserEditor.cxx:947
 AliEveListAnalyserEditor.cxx:948
 AliEveListAnalyserEditor.cxx:949
 AliEveListAnalyserEditor.cxx:950
 AliEveListAnalyserEditor.cxx:951
 AliEveListAnalyserEditor.cxx:952
 AliEveListAnalyserEditor.cxx:953
 AliEveListAnalyserEditor.cxx:954
 AliEveListAnalyserEditor.cxx:955
 AliEveListAnalyserEditor.cxx:956
 AliEveListAnalyserEditor.cxx:957
 AliEveListAnalyserEditor.cxx:958
 AliEveListAnalyserEditor.cxx:959
 AliEveListAnalyserEditor.cxx:960
 AliEveListAnalyserEditor.cxx:961
 AliEveListAnalyserEditor.cxx:962
 AliEveListAnalyserEditor.cxx:963
 AliEveListAnalyserEditor.cxx:964
 AliEveListAnalyserEditor.cxx:965
 AliEveListAnalyserEditor.cxx:966
 AliEveListAnalyserEditor.cxx:967
 AliEveListAnalyserEditor.cxx:968
 AliEveListAnalyserEditor.cxx:969
 AliEveListAnalyserEditor.cxx:970
 AliEveListAnalyserEditor.cxx:971
 AliEveListAnalyserEditor.cxx:972
 AliEveListAnalyserEditor.cxx:973
 AliEveListAnalyserEditor.cxx:974
 AliEveListAnalyserEditor.cxx:975
 AliEveListAnalyserEditor.cxx:976
 AliEveListAnalyserEditor.cxx:977
 AliEveListAnalyserEditor.cxx:978
 AliEveListAnalyserEditor.cxx:979
 AliEveListAnalyserEditor.cxx:980
 AliEveListAnalyserEditor.cxx:981
 AliEveListAnalyserEditor.cxx:982
 AliEveListAnalyserEditor.cxx:983
 AliEveListAnalyserEditor.cxx:984
 AliEveListAnalyserEditor.cxx:985
 AliEveListAnalyserEditor.cxx:986
 AliEveListAnalyserEditor.cxx:987
 AliEveListAnalyserEditor.cxx:988
 AliEveListAnalyserEditor.cxx:989
 AliEveListAnalyserEditor.cxx:990
 AliEveListAnalyserEditor.cxx:991
 AliEveListAnalyserEditor.cxx:992
 AliEveListAnalyserEditor.cxx:993
 AliEveListAnalyserEditor.cxx:994
 AliEveListAnalyserEditor.cxx:995
 AliEveListAnalyserEditor.cxx:996
 AliEveListAnalyserEditor.cxx:997
 AliEveListAnalyserEditor.cxx:998
 AliEveListAnalyserEditor.cxx:999
 AliEveListAnalyserEditor.cxx:1000
 AliEveListAnalyserEditor.cxx:1001
 AliEveListAnalyserEditor.cxx:1002
 AliEveListAnalyserEditor.cxx:1003
 AliEveListAnalyserEditor.cxx:1004
 AliEveListAnalyserEditor.cxx:1005
 AliEveListAnalyserEditor.cxx:1006
 AliEveListAnalyserEditor.cxx:1007
 AliEveListAnalyserEditor.cxx:1008
 AliEveListAnalyserEditor.cxx:1009
 AliEveListAnalyserEditor.cxx:1010
 AliEveListAnalyserEditor.cxx:1011
 AliEveListAnalyserEditor.cxx:1012
 AliEveListAnalyserEditor.cxx:1013
 AliEveListAnalyserEditor.cxx:1014
 AliEveListAnalyserEditor.cxx:1015
 AliEveListAnalyserEditor.cxx:1016
 AliEveListAnalyserEditor.cxx:1017
 AliEveListAnalyserEditor.cxx:1018
 AliEveListAnalyserEditor.cxx:1019
 AliEveListAnalyserEditor.cxx:1020
 AliEveListAnalyserEditor.cxx:1021
 AliEveListAnalyserEditor.cxx:1022
 AliEveListAnalyserEditor.cxx:1023
 AliEveListAnalyserEditor.cxx:1024
 AliEveListAnalyserEditor.cxx:1025
 AliEveListAnalyserEditor.cxx:1026
 AliEveListAnalyserEditor.cxx:1027
 AliEveListAnalyserEditor.cxx:1028
 AliEveListAnalyserEditor.cxx:1029
 AliEveListAnalyserEditor.cxx:1030
 AliEveListAnalyserEditor.cxx:1031
 AliEveListAnalyserEditor.cxx:1032
 AliEveListAnalyserEditor.cxx:1033
 AliEveListAnalyserEditor.cxx:1034
 AliEveListAnalyserEditor.cxx:1035
 AliEveListAnalyserEditor.cxx:1036
 AliEveListAnalyserEditor.cxx:1037
 AliEveListAnalyserEditor.cxx:1038
 AliEveListAnalyserEditor.cxx:1039
 AliEveListAnalyserEditor.cxx:1040
 AliEveListAnalyserEditor.cxx:1041
 AliEveListAnalyserEditor.cxx:1042
 AliEveListAnalyserEditor.cxx:1043
 AliEveListAnalyserEditor.cxx:1044
 AliEveListAnalyserEditor.cxx:1045
 AliEveListAnalyserEditor.cxx:1046
 AliEveListAnalyserEditor.cxx:1047
 AliEveListAnalyserEditor.cxx:1048
 AliEveListAnalyserEditor.cxx:1049
 AliEveListAnalyserEditor.cxx:1050
 AliEveListAnalyserEditor.cxx:1051
 AliEveListAnalyserEditor.cxx:1052
 AliEveListAnalyserEditor.cxx:1053
 AliEveListAnalyserEditor.cxx:1054
 AliEveListAnalyserEditor.cxx:1055
 AliEveListAnalyserEditor.cxx:1056
 AliEveListAnalyserEditor.cxx:1057
 AliEveListAnalyserEditor.cxx:1058
 AliEveListAnalyserEditor.cxx:1059
 AliEveListAnalyserEditor.cxx:1060
 AliEveListAnalyserEditor.cxx:1061
 AliEveListAnalyserEditor.cxx:1062
 AliEveListAnalyserEditor.cxx:1063
 AliEveListAnalyserEditor.cxx:1064
 AliEveListAnalyserEditor.cxx:1065
 AliEveListAnalyserEditor.cxx:1066
 AliEveListAnalyserEditor.cxx:1067
 AliEveListAnalyserEditor.cxx:1068
 AliEveListAnalyserEditor.cxx:1069
 AliEveListAnalyserEditor.cxx:1070
 AliEveListAnalyserEditor.cxx:1071
 AliEveListAnalyserEditor.cxx:1072
 AliEveListAnalyserEditor.cxx:1073
 AliEveListAnalyserEditor.cxx:1074
 AliEveListAnalyserEditor.cxx:1075
 AliEveListAnalyserEditor.cxx:1076
 AliEveListAnalyserEditor.cxx:1077
 AliEveListAnalyserEditor.cxx:1078
 AliEveListAnalyserEditor.cxx:1079
 AliEveListAnalyserEditor.cxx:1080
 AliEveListAnalyserEditor.cxx:1081
 AliEveListAnalyserEditor.cxx:1082
 AliEveListAnalyserEditor.cxx:1083
 AliEveListAnalyserEditor.cxx:1084
 AliEveListAnalyserEditor.cxx:1085
 AliEveListAnalyserEditor.cxx:1086
 AliEveListAnalyserEditor.cxx:1087
 AliEveListAnalyserEditor.cxx:1088
 AliEveListAnalyserEditor.cxx:1089
 AliEveListAnalyserEditor.cxx:1090
 AliEveListAnalyserEditor.cxx:1091
 AliEveListAnalyserEditor.cxx:1092
 AliEveListAnalyserEditor.cxx:1093
 AliEveListAnalyserEditor.cxx:1094
 AliEveListAnalyserEditor.cxx:1095
 AliEveListAnalyserEditor.cxx:1096
 AliEveListAnalyserEditor.cxx:1097
 AliEveListAnalyserEditor.cxx:1098
 AliEveListAnalyserEditor.cxx:1099
 AliEveListAnalyserEditor.cxx:1100
 AliEveListAnalyserEditor.cxx:1101
 AliEveListAnalyserEditor.cxx:1102
 AliEveListAnalyserEditor.cxx:1103
 AliEveListAnalyserEditor.cxx:1104
 AliEveListAnalyserEditor.cxx:1105
 AliEveListAnalyserEditor.cxx:1106
 AliEveListAnalyserEditor.cxx:1107
 AliEveListAnalyserEditor.cxx:1108
 AliEveListAnalyserEditor.cxx:1109
 AliEveListAnalyserEditor.cxx:1110
 AliEveListAnalyserEditor.cxx:1111
 AliEveListAnalyserEditor.cxx:1112
 AliEveListAnalyserEditor.cxx:1113
 AliEveListAnalyserEditor.cxx:1114
 AliEveListAnalyserEditor.cxx:1115
 AliEveListAnalyserEditor.cxx:1116
 AliEveListAnalyserEditor.cxx:1117
 AliEveListAnalyserEditor.cxx:1118
 AliEveListAnalyserEditor.cxx:1119
 AliEveListAnalyserEditor.cxx:1120
 AliEveListAnalyserEditor.cxx:1121
 AliEveListAnalyserEditor.cxx:1122
 AliEveListAnalyserEditor.cxx:1123
 AliEveListAnalyserEditor.cxx:1124
 AliEveListAnalyserEditor.cxx:1125
 AliEveListAnalyserEditor.cxx:1126
 AliEveListAnalyserEditor.cxx:1127
 AliEveListAnalyserEditor.cxx:1128
 AliEveListAnalyserEditor.cxx:1129
 AliEveListAnalyserEditor.cxx:1130
 AliEveListAnalyserEditor.cxx:1131
 AliEveListAnalyserEditor.cxx:1132
 AliEveListAnalyserEditor.cxx:1133
 AliEveListAnalyserEditor.cxx:1134
 AliEveListAnalyserEditor.cxx:1135
 AliEveListAnalyserEditor.cxx:1136
 AliEveListAnalyserEditor.cxx:1137
 AliEveListAnalyserEditor.cxx:1138
 AliEveListAnalyserEditor.cxx:1139
 AliEveListAnalyserEditor.cxx:1140
 AliEveListAnalyserEditor.cxx:1141
 AliEveListAnalyserEditor.cxx:1142
 AliEveListAnalyserEditor.cxx:1143
 AliEveListAnalyserEditor.cxx:1144
 AliEveListAnalyserEditor.cxx:1145
 AliEveListAnalyserEditor.cxx:1146
 AliEveListAnalyserEditor.cxx:1147
 AliEveListAnalyserEditor.cxx:1148
 AliEveListAnalyserEditor.cxx:1149
 AliEveListAnalyserEditor.cxx:1150
 AliEveListAnalyserEditor.cxx:1151
 AliEveListAnalyserEditor.cxx:1152
 AliEveListAnalyserEditor.cxx:1153
 AliEveListAnalyserEditor.cxx:1154
 AliEveListAnalyserEditor.cxx:1155
 AliEveListAnalyserEditor.cxx:1156
 AliEveListAnalyserEditor.cxx:1157
 AliEveListAnalyserEditor.cxx:1158
 AliEveListAnalyserEditor.cxx:1159
 AliEveListAnalyserEditor.cxx:1160
 AliEveListAnalyserEditor.cxx:1161
 AliEveListAnalyserEditor.cxx:1162
 AliEveListAnalyserEditor.cxx:1163
 AliEveListAnalyserEditor.cxx:1164
 AliEveListAnalyserEditor.cxx:1165
 AliEveListAnalyserEditor.cxx:1166
 AliEveListAnalyserEditor.cxx:1167
 AliEveListAnalyserEditor.cxx:1168
 AliEveListAnalyserEditor.cxx:1169
 AliEveListAnalyserEditor.cxx:1170
 AliEveListAnalyserEditor.cxx:1171
 AliEveListAnalyserEditor.cxx:1172
 AliEveListAnalyserEditor.cxx:1173
 AliEveListAnalyserEditor.cxx:1174
 AliEveListAnalyserEditor.cxx:1175
 AliEveListAnalyserEditor.cxx:1176
 AliEveListAnalyserEditor.cxx:1177
 AliEveListAnalyserEditor.cxx:1178
 AliEveListAnalyserEditor.cxx:1179
 AliEveListAnalyserEditor.cxx:1180
 AliEveListAnalyserEditor.cxx:1181
 AliEveListAnalyserEditor.cxx:1182
 AliEveListAnalyserEditor.cxx:1183
 AliEveListAnalyserEditor.cxx:1184
 AliEveListAnalyserEditor.cxx:1185
 AliEveListAnalyserEditor.cxx:1186
 AliEveListAnalyserEditor.cxx:1187
 AliEveListAnalyserEditor.cxx:1188
 AliEveListAnalyserEditor.cxx:1189
 AliEveListAnalyserEditor.cxx:1190
 AliEveListAnalyserEditor.cxx:1191
 AliEveListAnalyserEditor.cxx:1192
 AliEveListAnalyserEditor.cxx:1193
 AliEveListAnalyserEditor.cxx:1194
 AliEveListAnalyserEditor.cxx:1195
 AliEveListAnalyserEditor.cxx:1196
 AliEveListAnalyserEditor.cxx:1197
 AliEveListAnalyserEditor.cxx:1198
 AliEveListAnalyserEditor.cxx:1199
 AliEveListAnalyserEditor.cxx:1200
 AliEveListAnalyserEditor.cxx:1201
 AliEveListAnalyserEditor.cxx:1202
 AliEveListAnalyserEditor.cxx:1203
 AliEveListAnalyserEditor.cxx:1204
 AliEveListAnalyserEditor.cxx:1205
 AliEveListAnalyserEditor.cxx:1206
 AliEveListAnalyserEditor.cxx:1207
 AliEveListAnalyserEditor.cxx:1208
 AliEveListAnalyserEditor.cxx:1209
 AliEveListAnalyserEditor.cxx:1210
 AliEveListAnalyserEditor.cxx:1211
 AliEveListAnalyserEditor.cxx:1212
 AliEveListAnalyserEditor.cxx:1213
 AliEveListAnalyserEditor.cxx:1214
 AliEveListAnalyserEditor.cxx:1215
 AliEveListAnalyserEditor.cxx:1216
 AliEveListAnalyserEditor.cxx:1217
 AliEveListAnalyserEditor.cxx:1218
 AliEveListAnalyserEditor.cxx:1219
 AliEveListAnalyserEditor.cxx:1220
 AliEveListAnalyserEditor.cxx:1221
 AliEveListAnalyserEditor.cxx:1222
 AliEveListAnalyserEditor.cxx:1223
 AliEveListAnalyserEditor.cxx:1224
 AliEveListAnalyserEditor.cxx:1225
 AliEveListAnalyserEditor.cxx:1226
 AliEveListAnalyserEditor.cxx:1227
 AliEveListAnalyserEditor.cxx:1228
 AliEveListAnalyserEditor.cxx:1229
 AliEveListAnalyserEditor.cxx:1230
 AliEveListAnalyserEditor.cxx:1231
 AliEveListAnalyserEditor.cxx:1232
 AliEveListAnalyserEditor.cxx:1233
 AliEveListAnalyserEditor.cxx:1234
 AliEveListAnalyserEditor.cxx:1235
 AliEveListAnalyserEditor.cxx:1236
 AliEveListAnalyserEditor.cxx:1237
 AliEveListAnalyserEditor.cxx:1238
 AliEveListAnalyserEditor.cxx:1239
 AliEveListAnalyserEditor.cxx:1240
 AliEveListAnalyserEditor.cxx:1241
 AliEveListAnalyserEditor.cxx:1242
 AliEveListAnalyserEditor.cxx:1243
 AliEveListAnalyserEditor.cxx:1244
 AliEveListAnalyserEditor.cxx:1245
 AliEveListAnalyserEditor.cxx:1246
 AliEveListAnalyserEditor.cxx:1247
 AliEveListAnalyserEditor.cxx:1248
 AliEveListAnalyserEditor.cxx:1249
 AliEveListAnalyserEditor.cxx:1250
 AliEveListAnalyserEditor.cxx:1251
 AliEveListAnalyserEditor.cxx:1252
 AliEveListAnalyserEditor.cxx:1253
 AliEveListAnalyserEditor.cxx:1254
 AliEveListAnalyserEditor.cxx:1255
 AliEveListAnalyserEditor.cxx:1256
 AliEveListAnalyserEditor.cxx:1257
 AliEveListAnalyserEditor.cxx:1258
 AliEveListAnalyserEditor.cxx:1259
 AliEveListAnalyserEditor.cxx:1260
 AliEveListAnalyserEditor.cxx:1261
 AliEveListAnalyserEditor.cxx:1262
 AliEveListAnalyserEditor.cxx:1263
 AliEveListAnalyserEditor.cxx:1264
 AliEveListAnalyserEditor.cxx:1265
 AliEveListAnalyserEditor.cxx:1266
 AliEveListAnalyserEditor.cxx:1267
 AliEveListAnalyserEditor.cxx:1268
 AliEveListAnalyserEditor.cxx:1269
 AliEveListAnalyserEditor.cxx:1270
 AliEveListAnalyserEditor.cxx:1271
 AliEveListAnalyserEditor.cxx:1272
 AliEveListAnalyserEditor.cxx:1273
 AliEveListAnalyserEditor.cxx:1274
 AliEveListAnalyserEditor.cxx:1275
 AliEveListAnalyserEditor.cxx:1276
 AliEveListAnalyserEditor.cxx:1277
 AliEveListAnalyserEditor.cxx:1278
 AliEveListAnalyserEditor.cxx:1279
 AliEveListAnalyserEditor.cxx:1280
 AliEveListAnalyserEditor.cxx:1281
 AliEveListAnalyserEditor.cxx:1282
 AliEveListAnalyserEditor.cxx:1283
 AliEveListAnalyserEditor.cxx:1284
 AliEveListAnalyserEditor.cxx:1285
 AliEveListAnalyserEditor.cxx:1286
 AliEveListAnalyserEditor.cxx:1287
 AliEveListAnalyserEditor.cxx:1288
 AliEveListAnalyserEditor.cxx:1289
 AliEveListAnalyserEditor.cxx:1290
 AliEveListAnalyserEditor.cxx:1291
 AliEveListAnalyserEditor.cxx:1292
 AliEveListAnalyserEditor.cxx:1293
 AliEveListAnalyserEditor.cxx:1294
 AliEveListAnalyserEditor.cxx:1295
 AliEveListAnalyserEditor.cxx:1296
 AliEveListAnalyserEditor.cxx:1297
 AliEveListAnalyserEditor.cxx:1298
 AliEveListAnalyserEditor.cxx:1299
 AliEveListAnalyserEditor.cxx:1300
 AliEveListAnalyserEditor.cxx:1301
 AliEveListAnalyserEditor.cxx:1302
 AliEveListAnalyserEditor.cxx:1303
 AliEveListAnalyserEditor.cxx:1304
 AliEveListAnalyserEditor.cxx:1305
 AliEveListAnalyserEditor.cxx:1306
 AliEveListAnalyserEditor.cxx:1307
 AliEveListAnalyserEditor.cxx:1308
 AliEveListAnalyserEditor.cxx:1309
 AliEveListAnalyserEditor.cxx:1310
 AliEveListAnalyserEditor.cxx:1311
 AliEveListAnalyserEditor.cxx:1312
 AliEveListAnalyserEditor.cxx:1313
 AliEveListAnalyserEditor.cxx:1314
 AliEveListAnalyserEditor.cxx:1315
 AliEveListAnalyserEditor.cxx:1316
 AliEveListAnalyserEditor.cxx:1317
 AliEveListAnalyserEditor.cxx:1318
 AliEveListAnalyserEditor.cxx:1319
 AliEveListAnalyserEditor.cxx:1320
 AliEveListAnalyserEditor.cxx:1321
 AliEveListAnalyserEditor.cxx:1322
 AliEveListAnalyserEditor.cxx:1323
 AliEveListAnalyserEditor.cxx:1324
 AliEveListAnalyserEditor.cxx:1325
 AliEveListAnalyserEditor.cxx:1326
 AliEveListAnalyserEditor.cxx:1327
 AliEveListAnalyserEditor.cxx:1328
 AliEveListAnalyserEditor.cxx:1329
 AliEveListAnalyserEditor.cxx:1330
 AliEveListAnalyserEditor.cxx:1331
 AliEveListAnalyserEditor.cxx:1332
 AliEveListAnalyserEditor.cxx:1333
 AliEveListAnalyserEditor.cxx:1334
 AliEveListAnalyserEditor.cxx:1335
 AliEveListAnalyserEditor.cxx:1336
 AliEveListAnalyserEditor.cxx:1337
 AliEveListAnalyserEditor.cxx:1338
 AliEveListAnalyserEditor.cxx:1339
 AliEveListAnalyserEditor.cxx:1340
 AliEveListAnalyserEditor.cxx:1341
 AliEveListAnalyserEditor.cxx:1342
 AliEveListAnalyserEditor.cxx:1343
 AliEveListAnalyserEditor.cxx:1344
 AliEveListAnalyserEditor.cxx:1345
 AliEveListAnalyserEditor.cxx:1346
 AliEveListAnalyserEditor.cxx:1347
 AliEveListAnalyserEditor.cxx:1348
 AliEveListAnalyserEditor.cxx:1349
 AliEveListAnalyserEditor.cxx:1350
 AliEveListAnalyserEditor.cxx:1351
 AliEveListAnalyserEditor.cxx:1352
 AliEveListAnalyserEditor.cxx:1353
 AliEveListAnalyserEditor.cxx:1354
 AliEveListAnalyserEditor.cxx:1355
 AliEveListAnalyserEditor.cxx:1356
 AliEveListAnalyserEditor.cxx:1357
 AliEveListAnalyserEditor.cxx:1358
 AliEveListAnalyserEditor.cxx:1359
 AliEveListAnalyserEditor.cxx:1360
 AliEveListAnalyserEditor.cxx:1361
 AliEveListAnalyserEditor.cxx:1362
 AliEveListAnalyserEditor.cxx:1363
 AliEveListAnalyserEditor.cxx:1364
 AliEveListAnalyserEditor.cxx:1365
 AliEveListAnalyserEditor.cxx:1366
 AliEveListAnalyserEditor.cxx:1367
 AliEveListAnalyserEditor.cxx:1368
 AliEveListAnalyserEditor.cxx:1369
 AliEveListAnalyserEditor.cxx:1370
 AliEveListAnalyserEditor.cxx:1371
 AliEveListAnalyserEditor.cxx:1372
 AliEveListAnalyserEditor.cxx:1373
 AliEveListAnalyserEditor.cxx:1374
 AliEveListAnalyserEditor.cxx:1375
 AliEveListAnalyserEditor.cxx:1376
 AliEveListAnalyserEditor.cxx:1377
 AliEveListAnalyserEditor.cxx:1378
 AliEveListAnalyserEditor.cxx:1379
 AliEveListAnalyserEditor.cxx:1380
 AliEveListAnalyserEditor.cxx:1381
 AliEveListAnalyserEditor.cxx:1382
 AliEveListAnalyserEditor.cxx:1383
 AliEveListAnalyserEditor.cxx:1384
 AliEveListAnalyserEditor.cxx:1385
 AliEveListAnalyserEditor.cxx:1386
 AliEveListAnalyserEditor.cxx:1387
 AliEveListAnalyserEditor.cxx:1388
 AliEveListAnalyserEditor.cxx:1389
 AliEveListAnalyserEditor.cxx:1390
 AliEveListAnalyserEditor.cxx:1391
 AliEveListAnalyserEditor.cxx:1392
 AliEveListAnalyserEditor.cxx:1393
 AliEveListAnalyserEditor.cxx:1394
 AliEveListAnalyserEditor.cxx:1395
 AliEveListAnalyserEditor.cxx:1396
 AliEveListAnalyserEditor.cxx:1397
 AliEveListAnalyserEditor.cxx:1398
 AliEveListAnalyserEditor.cxx:1399
 AliEveListAnalyserEditor.cxx:1400
 AliEveListAnalyserEditor.cxx:1401
 AliEveListAnalyserEditor.cxx:1402
 AliEveListAnalyserEditor.cxx:1403
 AliEveListAnalyserEditor.cxx:1404
 AliEveListAnalyserEditor.cxx:1405
 AliEveListAnalyserEditor.cxx:1406
 AliEveListAnalyserEditor.cxx:1407
 AliEveListAnalyserEditor.cxx:1408
 AliEveListAnalyserEditor.cxx:1409
 AliEveListAnalyserEditor.cxx:1410
 AliEveListAnalyserEditor.cxx:1411
 AliEveListAnalyserEditor.cxx:1412
 AliEveListAnalyserEditor.cxx:1413
 AliEveListAnalyserEditor.cxx:1414
 AliEveListAnalyserEditor.cxx:1415
 AliEveListAnalyserEditor.cxx:1416
 AliEveListAnalyserEditor.cxx:1417
 AliEveListAnalyserEditor.cxx:1418
 AliEveListAnalyserEditor.cxx:1419
 AliEveListAnalyserEditor.cxx:1420
 AliEveListAnalyserEditor.cxx:1421
 AliEveListAnalyserEditor.cxx:1422
 AliEveListAnalyserEditor.cxx:1423
 AliEveListAnalyserEditor.cxx:1424
 AliEveListAnalyserEditor.cxx:1425
 AliEveListAnalyserEditor.cxx:1426
 AliEveListAnalyserEditor.cxx:1427
 AliEveListAnalyserEditor.cxx:1428
 AliEveListAnalyserEditor.cxx:1429
 AliEveListAnalyserEditor.cxx:1430
 AliEveListAnalyserEditor.cxx:1431
 AliEveListAnalyserEditor.cxx:1432
 AliEveListAnalyserEditor.cxx:1433
 AliEveListAnalyserEditor.cxx:1434
 AliEveListAnalyserEditor.cxx:1435
 AliEveListAnalyserEditor.cxx:1436
 AliEveListAnalyserEditor.cxx:1437
 AliEveListAnalyserEditor.cxx:1438
 AliEveListAnalyserEditor.cxx:1439
 AliEveListAnalyserEditor.cxx:1440
 AliEveListAnalyserEditor.cxx:1441
 AliEveListAnalyserEditor.cxx:1442
 AliEveListAnalyserEditor.cxx:1443
 AliEveListAnalyserEditor.cxx:1444
 AliEveListAnalyserEditor.cxx:1445
 AliEveListAnalyserEditor.cxx:1446
 AliEveListAnalyserEditor.cxx:1447
 AliEveListAnalyserEditor.cxx:1448
 AliEveListAnalyserEditor.cxx:1449
 AliEveListAnalyserEditor.cxx:1450
 AliEveListAnalyserEditor.cxx:1451
 AliEveListAnalyserEditor.cxx:1452
 AliEveListAnalyserEditor.cxx:1453
 AliEveListAnalyserEditor.cxx:1454
 AliEveListAnalyserEditor.cxx:1455
 AliEveListAnalyserEditor.cxx:1456
 AliEveListAnalyserEditor.cxx:1457
 AliEveListAnalyserEditor.cxx:1458
 AliEveListAnalyserEditor.cxx:1459
 AliEveListAnalyserEditor.cxx:1460
 AliEveListAnalyserEditor.cxx:1461
 AliEveListAnalyserEditor.cxx:1462
 AliEveListAnalyserEditor.cxx:1463
 AliEveListAnalyserEditor.cxx:1464
 AliEveListAnalyserEditor.cxx:1465
 AliEveListAnalyserEditor.cxx:1466
 AliEveListAnalyserEditor.cxx:1467
 AliEveListAnalyserEditor.cxx:1468
 AliEveListAnalyserEditor.cxx:1469
 AliEveListAnalyserEditor.cxx:1470
 AliEveListAnalyserEditor.cxx:1471
 AliEveListAnalyserEditor.cxx:1472
 AliEveListAnalyserEditor.cxx:1473
 AliEveListAnalyserEditor.cxx:1474
 AliEveListAnalyserEditor.cxx:1475
 AliEveListAnalyserEditor.cxx:1476
 AliEveListAnalyserEditor.cxx:1477
 AliEveListAnalyserEditor.cxx:1478
 AliEveListAnalyserEditor.cxx:1479
 AliEveListAnalyserEditor.cxx:1480
 AliEveListAnalyserEditor.cxx:1481
 AliEveListAnalyserEditor.cxx:1482
 AliEveListAnalyserEditor.cxx:1483
 AliEveListAnalyserEditor.cxx:1484
 AliEveListAnalyserEditor.cxx:1485
 AliEveListAnalyserEditor.cxx:1486
 AliEveListAnalyserEditor.cxx:1487
 AliEveListAnalyserEditor.cxx:1488
 AliEveListAnalyserEditor.cxx:1489
 AliEveListAnalyserEditor.cxx:1490
 AliEveListAnalyserEditor.cxx:1491
 AliEveListAnalyserEditor.cxx:1492
 AliEveListAnalyserEditor.cxx:1493
 AliEveListAnalyserEditor.cxx:1494
 AliEveListAnalyserEditor.cxx:1495
 AliEveListAnalyserEditor.cxx:1496
 AliEveListAnalyserEditor.cxx:1497
 AliEveListAnalyserEditor.cxx:1498
 AliEveListAnalyserEditor.cxx:1499
 AliEveListAnalyserEditor.cxx:1500
 AliEveListAnalyserEditor.cxx:1501
 AliEveListAnalyserEditor.cxx:1502
 AliEveListAnalyserEditor.cxx:1503
 AliEveListAnalyserEditor.cxx:1504
 AliEveListAnalyserEditor.cxx:1505
 AliEveListAnalyserEditor.cxx:1506
 AliEveListAnalyserEditor.cxx:1507
 AliEveListAnalyserEditor.cxx:1508
 AliEveListAnalyserEditor.cxx:1509
 AliEveListAnalyserEditor.cxx:1510
 AliEveListAnalyserEditor.cxx:1511
 AliEveListAnalyserEditor.cxx:1512
 AliEveListAnalyserEditor.cxx:1513
 AliEveListAnalyserEditor.cxx:1514
 AliEveListAnalyserEditor.cxx:1515
 AliEveListAnalyserEditor.cxx:1516
 AliEveListAnalyserEditor.cxx:1517
 AliEveListAnalyserEditor.cxx:1518
 AliEveListAnalyserEditor.cxx:1519
 AliEveListAnalyserEditor.cxx:1520
 AliEveListAnalyserEditor.cxx:1521
 AliEveListAnalyserEditor.cxx:1522
 AliEveListAnalyserEditor.cxx:1523
 AliEveListAnalyserEditor.cxx:1524
 AliEveListAnalyserEditor.cxx:1525
 AliEveListAnalyserEditor.cxx:1526
 AliEveListAnalyserEditor.cxx:1527
 AliEveListAnalyserEditor.cxx:1528
 AliEveListAnalyserEditor.cxx:1529
 AliEveListAnalyserEditor.cxx:1530
 AliEveListAnalyserEditor.cxx:1531
 AliEveListAnalyserEditor.cxx:1532
 AliEveListAnalyserEditor.cxx:1533
 AliEveListAnalyserEditor.cxx:1534
 AliEveListAnalyserEditor.cxx:1535
 AliEveListAnalyserEditor.cxx:1536
 AliEveListAnalyserEditor.cxx:1537
 AliEveListAnalyserEditor.cxx:1538
 AliEveListAnalyserEditor.cxx:1539
 AliEveListAnalyserEditor.cxx:1540
 AliEveListAnalyserEditor.cxx:1541
 AliEveListAnalyserEditor.cxx:1542
 AliEveListAnalyserEditor.cxx:1543
 AliEveListAnalyserEditor.cxx:1544
 AliEveListAnalyserEditor.cxx:1545
 AliEveListAnalyserEditor.cxx:1546
 AliEveListAnalyserEditor.cxx:1547
 AliEveListAnalyserEditor.cxx:1548
 AliEveListAnalyserEditor.cxx:1549
 AliEveListAnalyserEditor.cxx:1550
 AliEveListAnalyserEditor.cxx:1551
 AliEveListAnalyserEditor.cxx:1552
 AliEveListAnalyserEditor.cxx:1553
 AliEveListAnalyserEditor.cxx:1554
 AliEveListAnalyserEditor.cxx:1555
 AliEveListAnalyserEditor.cxx:1556
 AliEveListAnalyserEditor.cxx:1557
 AliEveListAnalyserEditor.cxx:1558
 AliEveListAnalyserEditor.cxx:1559
 AliEveListAnalyserEditor.cxx:1560
 AliEveListAnalyserEditor.cxx:1561
 AliEveListAnalyserEditor.cxx:1562
 AliEveListAnalyserEditor.cxx:1563
 AliEveListAnalyserEditor.cxx:1564
 AliEveListAnalyserEditor.cxx:1565
 AliEveListAnalyserEditor.cxx:1566
 AliEveListAnalyserEditor.cxx:1567
 AliEveListAnalyserEditor.cxx:1568
 AliEveListAnalyserEditor.cxx:1569
 AliEveListAnalyserEditor.cxx:1570
 AliEveListAnalyserEditor.cxx:1571
 AliEveListAnalyserEditor.cxx:1572
 AliEveListAnalyserEditor.cxx:1573
 AliEveListAnalyserEditor.cxx:1574
 AliEveListAnalyserEditor.cxx:1575