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

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// AliEveTRDTrackListEditor                                             //
//                                                                      //
// The AliEveTRDTrackListEditor provides the graphical functionality    //
// for the AliEveTRDTrackList. 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 //
// AliEveTRDTrackList 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.                                                     //
//////////////////////////////////////////////////////////////////////////

#include <AliLog.h>
#include <EveDet/AliEveTRDData.h>
#include <EveDet/AliEveTRDTrackList.h>
#include "AliEveTRDTrackListEditor.h"
#include <EveBase/AliEveEventManager.h>
#include <AliTRDReconstructor.h>
#include <AliTRDtrackV1.h>

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


ClassImp(AliEveTRDTrackListEditor)

///////////////////////////////////////////////////////////
/////////////   AliEveTRDTrackListEditor //////////////////
///////////////////////////////////////////////////////////
AliEveTRDTrackListEditor::AliEveTRDTrackListEditor(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),
  fStyleFrame(0),
  fMainFrame(0),
  fHistoFrame(0),
  fHistoSubFrame(0),
  fBrowseFrame(0),
  fbgStyleColor(0),
  fbgStyleTrack(0),
  frbColor(new TGRadioButton*[3]),
  frbTrack(new TGRadioButton*[3]),
  fbBrowse(0),
  fbNew(0),
  fbApplyMacros(0),
  fbRemoveMacros(0),
  fbDrawHisto(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), fLine5(0),
  fCheckButtons(0)
{
  // Creates the AliEveTRDTrackListEditor.

  // Style stuff
  fLine5 = new TGHorizontal3DLine(this, 194, 8);
  AddFrame(fLine5, new TGLayoutHints(kLHintsLeft  | kLHintsTop, 2, 2, 8, 8));
  fStyleFrame = new TGHorizontalFrame(this);
  AddFrame(fStyleFrame);

  // Style - Track model
  fbgStyleTrack = new TGButtonGroup(fStyleFrame, "Track model");
  fbgStyleTrack->SetMapSubwindows(kTRUE);
  fbgStyleTrack->Resize(194, 200);
  fStyleFrame->AddFrame(fbgStyleTrack);

  frbTrack[0] = new TGRadioButton(fbgStyleTrack, "Rieman", 0);
  frbTrack[0]->SetToolTipText("Set the track model to \"Rieman\" (i.e. the used fit method)");
  frbTrack[1] = new TGRadioButton(fbgStyleTrack, "Kalman", 1);
  frbTrack[1]->SetToolTipText("Set the track model to \"Kalman\" (i.e. the used fit method)");
  frbTrack[2] = new TGRadioButton(fbgStyleTrack, "Line", 2);
  frbTrack[2]->SetToolTipText("Set the track model to \"Line\" (i.e. the used fit method)");

  // Style - Color model
  fbgStyleColor = new TGButtonGroup(fStyleFrame, "Color model");
  fbgStyleColor->SetMapSubwindows(kTRUE);
  fbgStyleColor->Resize(194, 200);
  fStyleFrame->AddFrame(fbgStyleColor);

  frbColor[0] = new TGRadioButton(fbgStyleColor, "PID LQ", 0);
  frbColor[0]->SetToolTipText("Set color model to \"PID LQ\" -> 2 dimensional likelihood particle identification");
  frbColor[1] = new TGRadioButton(fbgStyleColor, "PID NN", 1);
  frbColor[1]->SetToolTipText("Set color model to \"PID NN\" -> Neural network particle identification");
  frbColor[2] = new TGRadioButton(fbgStyleColor, "ESD Source", 2);
  frbColor[2]->SetToolTipText("Set color model to \"ESD Source\" -> By source (TPC track prolongation or TRD stand alone)");
  
  // Functionality for adding plugins  
  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()","AliEveTRDTrackListEditor", this, "HandleMacroPathSet()"); 
  fBrowseFrame->AddFrame(fteField);
  
  fbBrowse = new TGTextButton(fBrowseFrame, "Browse");
  fbBrowse->SetToolTipText("Browse the macro you want to add");
  fbBrowse->Connect("Clicked()", "AliEveTRDTrackListEditor", this, "BrowseMacros()");
  fBrowseFrame->AddFrame(fbBrowse);
  
  fbNew = new TGTextButton(fBrowseFrame, "New");
  fbNew->SetToolTipText("Start macro creation wizard");
  fbNew->Connect("Clicked()", "AliEveTRDTrackListEditor", 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 tracks -> A data file will be generated");
  fbApplyMacros->Connect("Clicked()", "AliEveTRDTrackListEditor", 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()", "AliEveTRDTrackListEditor", 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()", "AliEveTRDTrackListEditor", 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->fIniDir = (Char_t*)"$ALICE_ROOT/PWGPP/TRD/macros/EVE";
  fFileInfo->fFileTypeIdx = 2;
  fFileInfo->fMultipleSelection = kTRUE;

  fHistoCanvasName = new TGString("");

  // Handle style changed signals:
  fbgStyleTrack->Connect("Clicked(Int_t)", "AliEveTRDTrackListEditor", this, "SetTrackModel(Int_t)");
  fbgStyleColor->Connect("Clicked(Int_t)", "AliEveTRDTrackListEditor", this, "SetTrackColor(Int_t)");

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

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

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

//______________________________________________________
AliEveTRDTrackListEditor::~AliEveTRDTrackListEditor()
{
  // 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 AliEveTRDTrackListEditor::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 track selection macro: Bool_t YourMacro(const AliTRDtrackV1*)\n...a correlated tracks selection macro: Bool_t YourMacro(const AliTRDtrackV1*, const AliTRDtrackV1*)\n...a single track analyse macro: void YourMacro(const AliTRDtrackV1*, Double_t*&, Int_t&)\n...a correlated tracks analyse macro: void YourMacro(const AliTRDtrackV1*, const AliTRDtrackV1*, Double_t*&, Int_t&)\n...a single track histo macro: TH1* YourMacro(const AliTRDtrackV1*)\n...a correlated tracks histo macro: TH1* YourMacro(const AliTRDtrackV1*, const AliTRDtrackV1*)", 
                 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;
  default:
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 Form("AliEveTRDTrackList::AddMacro exited with unknown return value: %d", result),
                 kMBIconExclamation, kMBOk);
    break;
  }
}

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

  Bool_t success = kFALSE;

  // First apply the single track selection macros
  TList* selIterator = new TList();
  ftlMacroSelList->GetSelectedEntries(selIterator);
  fM->ApplySTSelectionMacros(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();

  // AlieveTRDTrackList::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", 
                 "AliEveTRDTrackList::ApplyProcessMacros experienced an error (cf. CINT-output)!", 
                 kMBIconExclamation, kMBOk);  
  }
}

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

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


//______________________________________________________
void AliEveTRDTrackListEditor::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);
    }
  }

  // -> The following problem has been fixed (trunk -> Changes according to 03 September 2008):
  // Some error occurs, when one ends the filedialog with "cancel": fileInfo->fFileNamesList is set to 0x0, but
  // in the next launch no new memory is allocated. So do this manually.
  //if (fileInfo->fFileNamesList == 0)  fileInfo->fFileNamesList = new TList();
}

//______________________________________________________
void AliEveTRDTrackListEditor::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 AliEveTRDTrackListEditor::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 || nHistograms>3) {
//     new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
//                  Form("Number of selected projections [%d] outside range [1-3]!", nHistograms), kMBIconExclamation, kMBOk);
//     return;
//   }

  TFile* file(NULL);
  if (!(file=TFile::Open(Form("/tmp/TRD.TrackListMacroData_%s.root", gSystem->Getenv("USER")), "READ"))) {
    AliError(Form("Cannot open file \"/tmp/TRD.TrackListMacroData_%s.root\"",
                                  gSystem->Getenv("USER")));
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms", 
                 Form("Cannot open file \"/tmp/TRD.TrackListMacroData_%s.root\"", gSystem->Getenv("USER")),
                 kMBIconExclamation, kMBOk);
    return;
  }
  TTree *ts(NULL);//, *tc(NULL);
  if (!(ts=(TTree*)file->Get("sTrack"))) {
    AliError(Form("Cannot find tree \"sTrack\" in file \"/tmp/TRD.TrackListMacroData_%s.root\"",
                                  gSystem->Getenv("USER")));
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms",
                 Form("Cannot find tree \"sTrack\" in file \"/tmp/TRD.TrackListMacroData_%s.root\"", gSystem->Getenv("USER")),
                 kMBIconExclamation, kMBOk);
    return;
  }
//   if (!(tc=(TTree*)file->Get("cTrack"))) {
//     AliError(Form("Cannot find tree \"cTrack\" in file \"/tmp/TRD.TrackListMacroData_%s.root\"",
//                                   gSystem->Getenv("USER")));
//     new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms",
//                  Form("Cannot find tree \"cTrack\" in file \"/tmp/TRD.TrackListMacroData_%s.root\"", gSystem->Getenv("USER")),
//                  kMBIconExclamation, kMBOk);
//     return;
//   }

  // Close any potential tab left from previous plottings
  TGTab *tab(gEve->GetBrowser()->GetTab(1)); TGTabElement *tt(NULL);
  TString vs; Int_t canvas(0), singleSelected(0);
  while((tt=tab->GetTabTab(1))){
    AliDebug(1, Form("Deleting tab[%s]", tt->GetString()));
    tab->CloseTab(1); // trick. always close second tab due to internal renumbering inside TGTab
  }
  // Check, if a histo macro shall be drawn
  canvas=0;
  TH1* myHist(NULL);
  for (Int_t j = 0; j < fM->fDataFromMacroList->GetEntries(); j++) {
    if (fCheckButtons[j]->TGButton::GetState() != kButtonDown) continue;
    TString s(fCheckButtons[j]->GetTitle()); Int_t idx(s.Index('['));
    // Histo macro
    if(idx<0) {
      if (!(myHist = (TH1*)file->Get(s.Data()))) {
        AliError(Form("No histo[%s] found !", s.Data()));
        new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw histograms",
                    Form("No histo[%s] found !", s.Data()), kMBIconExclamation, kMBOk);
      } else {
        SetDrawingToHistoCanvasTab(++canvas);
        myHist->DrawCopy();
        UpdateHistoCanvasTab(canvas);
      }
    } else {
      TString ss=s(0, idx);
      if (!ts->GetBranch(ss.Data())) {
        AliError(Form("No data for macro \"%s\" found !", ss.Data()));
        new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error - Draw tree",
                    Form("No data for macro \"%s\" found !",
                          ss.Data()), kMBIconExclamation, kMBOk);
        continue;
      } else {
        if(!singleSelected){
          vs=s;
          singleSelected++;
        } else if(singleSelected<3){
          vs+=":";vs+=s;
          singleSelected++;
        } else {
          AliError(Form("Variable \"%s\" can no longer be attached to plot !", s.Data()));
        }
      }
    }
  }
  if(singleSelected){
    SetDrawingToHistoCanvasTab(++canvas);
    ts->Draw(vs.Data());
    UpdateHistoCanvasTab(canvas);
  }


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

//______________________________________________________
Int_t AliEveTRDTrackListEditor::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 AliEveTRDTrackListEditor::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".

  Char_t bname[AliEveTRDTrackList::fkMaxMacroNameLength]; // allocate buffers

  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) {
        name= bname;
        memset(name, '\0', sizeof(Char_t) * AliEveTRDTrackList::fkMaxMacroNameLength);
        snprintf(name, AliEveTRDTrackList::fkMaxMacroNameLength, "%s", fteField->GetText());

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

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

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

  // Inherit the macro list and track style for the next track list!
  fInheritSettings = kTRUE;

  // Close the tabs
  CloseTabs();
}

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

  fM->SetSelectedTab(index);
}

//______________________________________________________
void AliEveTRDTrackListEditor::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 AliEveTRDTrackList. 
  // Then the interior map will be cleaned up. With this, the settings will be inherited from the previously 
  // loaded AliEveTRDTrackList.

  if (fInheritedMacroList == 0)  return;

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

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

//______________________________________________________
void AliEveTRDTrackListEditor::InheritStyle()
{
  // The old styles are stored in the corresponding button groups. This function will replace
  // the style settings of the newly loaded AliEveTRDTrackList with the old styles. With this, the settings
  // will be inherited from the previously loaded AliEveTRDTrackList.

  for (Int_t ind = 0; ind < 3; ind++)
  {
    if (fbgStyleTrack->GetButton(ind)->IsOn())
    {
      SetTrackModel(ind);
      break;
    }
  }
  for (Int_t ind = 0; ind < 3; ind++)
  {
    if (fbgStyleColor->GetButton(ind)->IsOn())
    {
      SetTrackColor(ind);
      break;
    }
  }
}

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

  TList iterator;
  ftlMacroList->GetSelectedEntries(&iterator);
  fM->RemoveSelectedMacros(&iterator);


  iterator.Clear();
  ftlMacroSelList->GetSelectedEntries(&iterator);
  fM->RemoveSelectedMacros(&iterator);

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

//______________________________________________________
void AliEveTRDTrackListEditor::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 track list to track 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;
  TMacroData* macro = 0;
  
  while ((key = iter->Next()) != 0)
  {
    macro = (TMacroData*)fM->fMacroList->GetValue(key);
    if (macro != 0) fInheritedMacroList->Add(new TObjString(key->GetName()), 
                                             new TMacroData(macro->GetName(), macro->GetPath(), macro->GetType()));
    else
    {
      Error("AliEveTRDTrackListEditor::SaveMacroList", "Failed to inherit the macro \"%s\"!", key->GetName());
    }
  }
}

//______________________________________________________
void AliEveTRDTrackListEditor::SetDrawingToHistoCanvasTab(Int_t canvas)
{
  // Sets gPad to the tab with the name of the current AliEveTRDTrackList. 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.

  AliDebug(1, Form("Build Tab[%s_%d]", fM->GetName(), canvas));
  fHistoCanvas = gEve->AddCanvasTab(Form("%s_%d", fM->GetName(), canvas));
  fHistoCanvas->SetName(Form("c_%d", canvas));
  fHistoCanvas->cd();
}

//______________________________________________________
void AliEveTRDTrackListEditor::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<AliEveTRDTrackList*>(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();
    InheritStyle();

    fInheritSettings = kFALSE;
  }

  // Select the correct styles
  Int_t b = 0;
  UChar_t style = fM->GetSelectedTrackStyle();
  if (TESTBIT(style, AliEveTRDTrack::kSource)) b = 2;
  else 
  {
    if (TESTBIT(style, AliEveTRDTrack::kPID)) b = 1;
    else b = 0;
  } 
  fbgStyleColor->SetButton(b, kTRUE);


  if (TESTBIT(style, AliEveTRDTrack::kTrackCosmics)) b = 2;
  else
  {
    if (TESTBIT(style, AliEveTRDTrack::kTrackModel)) b = 1;
    else b = 0;
  }
  fbgStyleTrack->SetButton(b, kTRUE);
  
  UpdateMacroList();
  UpdateHistoList(); 

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

//______________________________________________________
void AliEveTRDTrackListEditor::SetTrackColor(Int_t ind)
{
  // Sets the color model for the tracks, updates the tracks with this model and
  // redraws the scene.

  switch(ind)
  { 
    case AliTRDpidUtil::kLQ:
      fM->UpdateTrackStyle(AliEveTRDTrack::kPID, AliTRDpidUtil::kLQ);
      break;
    case AliTRDpidUtil::kNN:
      fM->UpdateTrackStyle(AliEveTRDTrack::kPID, AliTRDpidUtil::kNN);
      break;
    default:
      fM->UpdateTrackStyle(AliEveTRDTrack::kSource);
      break;
  }

  gEve->Redraw3D();
}

//______________________________________________________
void AliEveTRDTrackListEditor::SetTrackModel(Int_t ind)
{
  // Sets the track model for the tracks, updates the tracks with this model and
  // redraws the scene.

  switch(ind)
  { 
    case AliEveTRDTrack::kRieman:
      fM->UpdateTrackStyle(AliEveTRDTrack::kTrackModel, AliEveTRDTrack::kRieman);
      break;
    case AliEveTRDTrack::kKalman:
      fM->UpdateTrackStyle(AliEveTRDTrack::kTrackModel, AliEveTRDTrack::kKalman);
      break;
    default:
      fM->UpdateTrackStyle(AliEveTRDTrack::kTrackCosmics);
      break;
  }

  gEve->Redraw3D();
}

//______________________________________________________
void AliEveTRDTrackListEditor::UpdateDataFromMacroListSelection()
{
  // Saves the current selection in the "Histograms"-tab to the current
  // AliEveTRDTrackList. 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 AliEveTRDTrackListEditor::UpdateHistoCanvasTab(Int_t canvas)
{
  // Updates the histogram and the corresponding tab (including titles).

  // Update name of the tab (tab has been set to current tab!)
  //fHistoCanvasName->SetString(Form("%s_%d", fM->GetName(), canvas));

  // 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(canvas)->GetCurrentTab()->SetText(new TGString(fHistoCanvasName));

  // Switch tabs to force redrawing
  TGTab *tab(gEve->GetBrowser()->GetTab(1));
  if(tab->GetCurrent() != canvas){
    AliError(Form("Curent tab[%s] tabId[%d] mismatch %d", tab->GetCurrentTab()->GetString(), tab->GetCurrent(), canvas));
    return;
  }
  if(!tab->SetTab(canvas)){
    AliError(Form("Failed updating tab[%d]", canvas));
    return;
  }
  fHistoCanvas->Modified();
  fHistoCanvas->Update();
}

//______________________________________________________
void AliEveTRDTrackListEditor::UpdateHistoList()
{
  // Reloads (updates) the buttons in the "Histograms"-tab via
  // the current AliEveTRDTrackList (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()", "AliEveTRDTrackListEditor", this, "UpdateDataFromMacroListSelection()");
            
    iter = (TObjString*)fM->fDataFromMacroList->After(iter);
  }  
}

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

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

  Int_t ind = 0;
  while ((key = iter->Next()) != 0)
  {
    macro = (TMacroData*)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("AliEveTRDTrackListEditor::UpdateMacroList()", 
              "Macro \"%s/%s.C\" is neither a selection macro nor a process macro!",
                   macro->GetPath(), macro->GetName());
      }
    }
    else
    {
      Error("AliEveTRDTrackListEditor::UpdateMacroList()", 
              "Macro list is corrupted: Macro \"%s\" not found!", key->GetName());
    }
  }

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

//______________________________________________________
void AliEveTRDTrackListEditor::UpdateMacroListSelection(Int_t ind)
{
  // Saves the current selection in the macro listS to the current
  // AliEveTRDTrackList. 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(AliEveTRDMacroWizard)
/////////////////////////////////////////////////

//______________________________________________________
AliEveTRDMacroWizard::AliEveTRDMacroWizard(const TGWindow* p)
  :TGMainFrame(p ? p : gClient->GetRoot(), 10, 10, kMainFrame | kVerticalFrame)
  ,fText(0x0)
  ,fCombo(0x0)
  ,fTextEdit(0x0)
  ,fbCreate(0x0)
  ,fbCancel(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));

  fText = new TGTextEntry(fFrameName);
  fText->SetMaxLength(255);
  fText->SetAlignment(kTextLeft);
  fText->SetText("");
  fText->Resize(width, fText->GetDefaultHeight());
  fFrameName->AddFrame(fText, 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*fText->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 Track Selection", AliEveTRDTrackList::kSingleTrackSelect);
  fCombo->AddEntry("Pair Tracks Selection", AliEveTRDTrackList::kCorrelTrackSelect);
  fCombo->AddEntry("Single Track Analyse", AliEveTRDTrackList::kSingleTrackAnalyse);
  fCombo->AddEntry("Single Track Histo", AliEveTRDTrackList::kSingleTrackHisto);
  fCombo->AddEntry("Pair Tracks Analyse", AliEveTRDTrackList::kCorrelTrackAnalyse);
  fCombo->AddEntry("Pair Tracks Histo", AliEveTRDTrackList::kCorrelTrackHisto);
  fCombo->Select(-1);
  fCombo->Resize(width, fText->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(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("TRD Macro Wizard");
  SetMWMHints(kMWMDecorAll,
              kMWMFuncAll,
              kMWMInputModeless);
  MapSubwindows();

  Resize(GetDefaultSize());
  MapWindow();

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

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

const Char_t *fIncludes = 
"#if !defined(__CINT__) || defined(__MAKECINT__)\n"
"#include <TROOT.h>\n"
"#include <TH1.h>\n"
"#include <TRD/AliTRDgeometry.h>\n"
"#include <TRD/AliTRDcluster.h>\n"
"#include <TRD/AliTRDseedV1.h>\n"
"#include <TRD/AliTRDtrackV1.h>\n"
"#endif\n";

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

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

,"  if (!track) return 0x0;\n"
"  TH1* h = 0x0;\n\n"
"// Set bins, xmin and xmax here\n"
"  Int_t n = 1;\n"
"  Double_t xmin = 0;\n"
"  Double_t xmax = 100;\n\n" 
"  if(!(h = (TH1*)gROOT->FindObject(\"h\"))){\n"
"    h = new TH1(\"h\", \"Title\", n, xmin, xmax);\n"
"    h->GetXaxis()->SetTitle("");\n"
"    h->GetYaxis()->SetTitle("");\n"
"  } else h->Reset();\n"

,"  if (!track) return kFALSE;\n"
"  if (!track2) return kFALSE;\n"

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

,"  if (!track) return 0x0;\n"
"  if (!track2) return 0x0;\n"
"  TH1* h = 0x0;\n\n"
"// Set bins, xmin and xmax here\n"
"  Int_t n = 1;\n"
"  Double_t xmin = 0;\n"
"  Double_t xmax = 100;\n\n" 
"  if(!(h = (TH1*)gROOT->FindObject(\"h\"))){\n"
"    h = new TH1(\"h\", \"Title\", n, xmin, xmax);\n"
"    h->GetXaxis()->SetTitle("");\n"
"    h->GetYaxis()->SetTitle("");\n"
"  } else h->Reset();\n"
};
//______________________________________________________
void AliEveTRDMacroWizard::Create(Int_t type)
{
  // Creates the macro with the selected type (combo box).

  const Char_t *name = fText->GetText();
  if(strcmp(name,"")==0){
    AliInfo("Please specify a name for your macro.");
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "Please specify a name for your macro.", kMBIconExclamation, kMBOk);
    //fCombo->Select(-1);
    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
    AliInfo(Form("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);
    //fCombo->Select(-1);
    return;
  }

  FILE* fp = 0x0;
  if(!(fp = fopen(Form("%s.C", name), "wt"))){
    AliInfo("Couldn't create macro file.");
    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
                 "Couldn't create macro file.", kMBIconExclamation, kMBOk);
    //fCombo->Select(-1);
    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);

  fprintf(fp, "\n%s\n", fIncludes);

  switch(type){
  case AliEveTRDTrackList::kSingleTrackSelect:
    fprintf(fp, "Bool_t %s(const AliTRDtrackV1 *track)\n", name);
    break;
  case AliEveTRDTrackList::kCorrelTrackSelect:
    fprintf(fp, "Bool_t %s(const AliTRDtrackV1 *track, const AliTRDtrackV1 *track2)\n", name);
    break;
  case AliEveTRDTrackList::kSingleTrackAnalyse:
    fprintf(fp, "void %s(const AliTRDtrackV1 *track, Double_t*& r, Int_t& n)\n", name);
    break;
  case AliEveTRDTrackList::kSingleTrackHisto:
    fprintf(fp, "TH1* %s(const AliTRDtrackV1 *track)\n", name);
    break;
  case AliEveTRDTrackList::kCorrelTrackAnalyse:
    fprintf(fp, "void %s(const AliTRDtrackV1 *track, const AliTRDtrackV1 *track2, Double_t*& r, Int_t& n)\n", name);
    break;
  case AliEveTRDTrackList::kCorrelTrackHisto:
    fprintf(fp, "TH1* %s(const AliTRDtrackV1 *track, const AliTRDtrackV1 *track2)\n", name);
    break;
  default:
    AliInfo(Form("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));
    //fCombo->Select(-1);
    return;
  }
  
  fprintf(fp, "{\n%s\n", fMacroTemplate[type]);
  fprintf(fp, "// add your own code here\n\n\n}\n");
  fclose(fp);

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

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

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

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

  Create(fCombo->GetSelected());
}
 AliEveTRDTrackListEditor.cxx:1
 AliEveTRDTrackListEditor.cxx:2
 AliEveTRDTrackListEditor.cxx:3
 AliEveTRDTrackListEditor.cxx:4
 AliEveTRDTrackListEditor.cxx:5
 AliEveTRDTrackListEditor.cxx:6
 AliEveTRDTrackListEditor.cxx:7
 AliEveTRDTrackListEditor.cxx:8
 AliEveTRDTrackListEditor.cxx:9
 AliEveTRDTrackListEditor.cxx:10
 AliEveTRDTrackListEditor.cxx:11
 AliEveTRDTrackListEditor.cxx:12
 AliEveTRDTrackListEditor.cxx:13
 AliEveTRDTrackListEditor.cxx:14
 AliEveTRDTrackListEditor.cxx:15
 AliEveTRDTrackListEditor.cxx:16
 AliEveTRDTrackListEditor.cxx:17
 AliEveTRDTrackListEditor.cxx:18
 AliEveTRDTrackListEditor.cxx:19
 AliEveTRDTrackListEditor.cxx:20
 AliEveTRDTrackListEditor.cxx:21
 AliEveTRDTrackListEditor.cxx:22
 AliEveTRDTrackListEditor.cxx:23
 AliEveTRDTrackListEditor.cxx:24
 AliEveTRDTrackListEditor.cxx:25
 AliEveTRDTrackListEditor.cxx:26
 AliEveTRDTrackListEditor.cxx:27
 AliEveTRDTrackListEditor.cxx:28
 AliEveTRDTrackListEditor.cxx:29
 AliEveTRDTrackListEditor.cxx:30
 AliEveTRDTrackListEditor.cxx:31
 AliEveTRDTrackListEditor.cxx:32
 AliEveTRDTrackListEditor.cxx:33
 AliEveTRDTrackListEditor.cxx:34
 AliEveTRDTrackListEditor.cxx:35
 AliEveTRDTrackListEditor.cxx:36
 AliEveTRDTrackListEditor.cxx:37
 AliEveTRDTrackListEditor.cxx:38
 AliEveTRDTrackListEditor.cxx:39
 AliEveTRDTrackListEditor.cxx:40
 AliEveTRDTrackListEditor.cxx:41
 AliEveTRDTrackListEditor.cxx:42
 AliEveTRDTrackListEditor.cxx:43
 AliEveTRDTrackListEditor.cxx:44
 AliEveTRDTrackListEditor.cxx:45
 AliEveTRDTrackListEditor.cxx:46
 AliEveTRDTrackListEditor.cxx:47
 AliEveTRDTrackListEditor.cxx:48
 AliEveTRDTrackListEditor.cxx:49
 AliEveTRDTrackListEditor.cxx:50
 AliEveTRDTrackListEditor.cxx:51
 AliEveTRDTrackListEditor.cxx:52
 AliEveTRDTrackListEditor.cxx:53
 AliEveTRDTrackListEditor.cxx:54
 AliEveTRDTrackListEditor.cxx:55
 AliEveTRDTrackListEditor.cxx:56
 AliEveTRDTrackListEditor.cxx:57
 AliEveTRDTrackListEditor.cxx:58
 AliEveTRDTrackListEditor.cxx:59
 AliEveTRDTrackListEditor.cxx:60
 AliEveTRDTrackListEditor.cxx:61
 AliEveTRDTrackListEditor.cxx:62
 AliEveTRDTrackListEditor.cxx:63
 AliEveTRDTrackListEditor.cxx:64
 AliEveTRDTrackListEditor.cxx:65
 AliEveTRDTrackListEditor.cxx:66
 AliEveTRDTrackListEditor.cxx:67
 AliEveTRDTrackListEditor.cxx:68
 AliEveTRDTrackListEditor.cxx:69
 AliEveTRDTrackListEditor.cxx:70
 AliEveTRDTrackListEditor.cxx:71
 AliEveTRDTrackListEditor.cxx:72
 AliEveTRDTrackListEditor.cxx:73
 AliEveTRDTrackListEditor.cxx:74
 AliEveTRDTrackListEditor.cxx:75
 AliEveTRDTrackListEditor.cxx:76
 AliEveTRDTrackListEditor.cxx:77
 AliEveTRDTrackListEditor.cxx:78
 AliEveTRDTrackListEditor.cxx:79
 AliEveTRDTrackListEditor.cxx:80
 AliEveTRDTrackListEditor.cxx:81
 AliEveTRDTrackListEditor.cxx:82
 AliEveTRDTrackListEditor.cxx:83
 AliEveTRDTrackListEditor.cxx:84
 AliEveTRDTrackListEditor.cxx:85
 AliEveTRDTrackListEditor.cxx:86
 AliEveTRDTrackListEditor.cxx:87
 AliEveTRDTrackListEditor.cxx:88
 AliEveTRDTrackListEditor.cxx:89
 AliEveTRDTrackListEditor.cxx:90
 AliEveTRDTrackListEditor.cxx:91
 AliEveTRDTrackListEditor.cxx:92
 AliEveTRDTrackListEditor.cxx:93
 AliEveTRDTrackListEditor.cxx:94
 AliEveTRDTrackListEditor.cxx:95
 AliEveTRDTrackListEditor.cxx:96
 AliEveTRDTrackListEditor.cxx:97
 AliEveTRDTrackListEditor.cxx:98
 AliEveTRDTrackListEditor.cxx:99
 AliEveTRDTrackListEditor.cxx:100
 AliEveTRDTrackListEditor.cxx:101
 AliEveTRDTrackListEditor.cxx:102
 AliEveTRDTrackListEditor.cxx:103
 AliEveTRDTrackListEditor.cxx:104
 AliEveTRDTrackListEditor.cxx:105
 AliEveTRDTrackListEditor.cxx:106
 AliEveTRDTrackListEditor.cxx:107
 AliEveTRDTrackListEditor.cxx:108
 AliEveTRDTrackListEditor.cxx:109
 AliEveTRDTrackListEditor.cxx:110
 AliEveTRDTrackListEditor.cxx:111
 AliEveTRDTrackListEditor.cxx:112
 AliEveTRDTrackListEditor.cxx:113
 AliEveTRDTrackListEditor.cxx:114
 AliEveTRDTrackListEditor.cxx:115
 AliEveTRDTrackListEditor.cxx:116
 AliEveTRDTrackListEditor.cxx:117
 AliEveTRDTrackListEditor.cxx:118
 AliEveTRDTrackListEditor.cxx:119
 AliEveTRDTrackListEditor.cxx:120
 AliEveTRDTrackListEditor.cxx:121
 AliEveTRDTrackListEditor.cxx:122
 AliEveTRDTrackListEditor.cxx:123
 AliEveTRDTrackListEditor.cxx:124
 AliEveTRDTrackListEditor.cxx:125
 AliEveTRDTrackListEditor.cxx:126
 AliEveTRDTrackListEditor.cxx:127
 AliEveTRDTrackListEditor.cxx:128
 AliEveTRDTrackListEditor.cxx:129
 AliEveTRDTrackListEditor.cxx:130
 AliEveTRDTrackListEditor.cxx:131
 AliEveTRDTrackListEditor.cxx:132
 AliEveTRDTrackListEditor.cxx:133
 AliEveTRDTrackListEditor.cxx:134
 AliEveTRDTrackListEditor.cxx:135
 AliEveTRDTrackListEditor.cxx:136
 AliEveTRDTrackListEditor.cxx:137
 AliEveTRDTrackListEditor.cxx:138
 AliEveTRDTrackListEditor.cxx:139
 AliEveTRDTrackListEditor.cxx:140
 AliEveTRDTrackListEditor.cxx:141
 AliEveTRDTrackListEditor.cxx:142
 AliEveTRDTrackListEditor.cxx:143
 AliEveTRDTrackListEditor.cxx:144
 AliEveTRDTrackListEditor.cxx:145
 AliEveTRDTrackListEditor.cxx:146
 AliEveTRDTrackListEditor.cxx:147
 AliEveTRDTrackListEditor.cxx:148
 AliEveTRDTrackListEditor.cxx:149
 AliEveTRDTrackListEditor.cxx:150
 AliEveTRDTrackListEditor.cxx:151
 AliEveTRDTrackListEditor.cxx:152
 AliEveTRDTrackListEditor.cxx:153
 AliEveTRDTrackListEditor.cxx:154
 AliEveTRDTrackListEditor.cxx:155
 AliEveTRDTrackListEditor.cxx:156
 AliEveTRDTrackListEditor.cxx:157
 AliEveTRDTrackListEditor.cxx:158
 AliEveTRDTrackListEditor.cxx:159
 AliEveTRDTrackListEditor.cxx:160
 AliEveTRDTrackListEditor.cxx:161
 AliEveTRDTrackListEditor.cxx:162
 AliEveTRDTrackListEditor.cxx:163
 AliEveTRDTrackListEditor.cxx:164
 AliEveTRDTrackListEditor.cxx:165
 AliEveTRDTrackListEditor.cxx:166
 AliEveTRDTrackListEditor.cxx:167
 AliEveTRDTrackListEditor.cxx:168
 AliEveTRDTrackListEditor.cxx:169
 AliEveTRDTrackListEditor.cxx:170
 AliEveTRDTrackListEditor.cxx:171
 AliEveTRDTrackListEditor.cxx:172
 AliEveTRDTrackListEditor.cxx:173
 AliEveTRDTrackListEditor.cxx:174
 AliEveTRDTrackListEditor.cxx:175
 AliEveTRDTrackListEditor.cxx:176
 AliEveTRDTrackListEditor.cxx:177
 AliEveTRDTrackListEditor.cxx:178
 AliEveTRDTrackListEditor.cxx:179
 AliEveTRDTrackListEditor.cxx:180
 AliEveTRDTrackListEditor.cxx:181
 AliEveTRDTrackListEditor.cxx:182
 AliEveTRDTrackListEditor.cxx:183
 AliEveTRDTrackListEditor.cxx:184
 AliEveTRDTrackListEditor.cxx:185
 AliEveTRDTrackListEditor.cxx:186
 AliEveTRDTrackListEditor.cxx:187
 AliEveTRDTrackListEditor.cxx:188
 AliEveTRDTrackListEditor.cxx:189
 AliEveTRDTrackListEditor.cxx:190
 AliEveTRDTrackListEditor.cxx:191
 AliEveTRDTrackListEditor.cxx:192
 AliEveTRDTrackListEditor.cxx:193
 AliEveTRDTrackListEditor.cxx:194
 AliEveTRDTrackListEditor.cxx:195
 AliEveTRDTrackListEditor.cxx:196
 AliEveTRDTrackListEditor.cxx:197
 AliEveTRDTrackListEditor.cxx:198
 AliEveTRDTrackListEditor.cxx:199
 AliEveTRDTrackListEditor.cxx:200
 AliEveTRDTrackListEditor.cxx:201
 AliEveTRDTrackListEditor.cxx:202
 AliEveTRDTrackListEditor.cxx:203
 AliEveTRDTrackListEditor.cxx:204
 AliEveTRDTrackListEditor.cxx:205
 AliEveTRDTrackListEditor.cxx:206
 AliEveTRDTrackListEditor.cxx:207
 AliEveTRDTrackListEditor.cxx:208
 AliEveTRDTrackListEditor.cxx:209
 AliEveTRDTrackListEditor.cxx:210
 AliEveTRDTrackListEditor.cxx:211
 AliEveTRDTrackListEditor.cxx:212
 AliEveTRDTrackListEditor.cxx:213
 AliEveTRDTrackListEditor.cxx:214
 AliEveTRDTrackListEditor.cxx:215
 AliEveTRDTrackListEditor.cxx:216
 AliEveTRDTrackListEditor.cxx:217
 AliEveTRDTrackListEditor.cxx:218
 AliEveTRDTrackListEditor.cxx:219
 AliEveTRDTrackListEditor.cxx:220
 AliEveTRDTrackListEditor.cxx:221
 AliEveTRDTrackListEditor.cxx:222
 AliEveTRDTrackListEditor.cxx:223
 AliEveTRDTrackListEditor.cxx:224
 AliEveTRDTrackListEditor.cxx:225
 AliEveTRDTrackListEditor.cxx:226
 AliEveTRDTrackListEditor.cxx:227
 AliEveTRDTrackListEditor.cxx:228
 AliEveTRDTrackListEditor.cxx:229
 AliEveTRDTrackListEditor.cxx:230
 AliEveTRDTrackListEditor.cxx:231
 AliEveTRDTrackListEditor.cxx:232
 AliEveTRDTrackListEditor.cxx:233
 AliEveTRDTrackListEditor.cxx:234
 AliEveTRDTrackListEditor.cxx:235
 AliEveTRDTrackListEditor.cxx:236
 AliEveTRDTrackListEditor.cxx:237
 AliEveTRDTrackListEditor.cxx:238
 AliEveTRDTrackListEditor.cxx:239
 AliEveTRDTrackListEditor.cxx:240
 AliEveTRDTrackListEditor.cxx:241
 AliEveTRDTrackListEditor.cxx:242
 AliEveTRDTrackListEditor.cxx:243
 AliEveTRDTrackListEditor.cxx:244
 AliEveTRDTrackListEditor.cxx:245
 AliEveTRDTrackListEditor.cxx:246
 AliEveTRDTrackListEditor.cxx:247
 AliEveTRDTrackListEditor.cxx:248
 AliEveTRDTrackListEditor.cxx:249
 AliEveTRDTrackListEditor.cxx:250
 AliEveTRDTrackListEditor.cxx:251
 AliEveTRDTrackListEditor.cxx:252
 AliEveTRDTrackListEditor.cxx:253
 AliEveTRDTrackListEditor.cxx:254
 AliEveTRDTrackListEditor.cxx:255
 AliEveTRDTrackListEditor.cxx:256
 AliEveTRDTrackListEditor.cxx:257
 AliEveTRDTrackListEditor.cxx:258
 AliEveTRDTrackListEditor.cxx:259
 AliEveTRDTrackListEditor.cxx:260
 AliEveTRDTrackListEditor.cxx:261
 AliEveTRDTrackListEditor.cxx:262
 AliEveTRDTrackListEditor.cxx:263
 AliEveTRDTrackListEditor.cxx:264
 AliEveTRDTrackListEditor.cxx:265
 AliEveTRDTrackListEditor.cxx:266
 AliEveTRDTrackListEditor.cxx:267
 AliEveTRDTrackListEditor.cxx:268
 AliEveTRDTrackListEditor.cxx:269
 AliEveTRDTrackListEditor.cxx:270
 AliEveTRDTrackListEditor.cxx:271
 AliEveTRDTrackListEditor.cxx:272
 AliEveTRDTrackListEditor.cxx:273
 AliEveTRDTrackListEditor.cxx:274
 AliEveTRDTrackListEditor.cxx:275
 AliEveTRDTrackListEditor.cxx:276
 AliEveTRDTrackListEditor.cxx:277
 AliEveTRDTrackListEditor.cxx:278
 AliEveTRDTrackListEditor.cxx:279
 AliEveTRDTrackListEditor.cxx:280
 AliEveTRDTrackListEditor.cxx:281
 AliEveTRDTrackListEditor.cxx:282
 AliEveTRDTrackListEditor.cxx:283
 AliEveTRDTrackListEditor.cxx:284
 AliEveTRDTrackListEditor.cxx:285
 AliEveTRDTrackListEditor.cxx:286
 AliEveTRDTrackListEditor.cxx:287
 AliEveTRDTrackListEditor.cxx:288
 AliEveTRDTrackListEditor.cxx:289
 AliEveTRDTrackListEditor.cxx:290
 AliEveTRDTrackListEditor.cxx:291
 AliEveTRDTrackListEditor.cxx:292
 AliEveTRDTrackListEditor.cxx:293
 AliEveTRDTrackListEditor.cxx:294
 AliEveTRDTrackListEditor.cxx:295
 AliEveTRDTrackListEditor.cxx:296
 AliEveTRDTrackListEditor.cxx:297
 AliEveTRDTrackListEditor.cxx:298
 AliEveTRDTrackListEditor.cxx:299
 AliEveTRDTrackListEditor.cxx:300
 AliEveTRDTrackListEditor.cxx:301
 AliEveTRDTrackListEditor.cxx:302
 AliEveTRDTrackListEditor.cxx:303
 AliEveTRDTrackListEditor.cxx:304
 AliEveTRDTrackListEditor.cxx:305
 AliEveTRDTrackListEditor.cxx:306
 AliEveTRDTrackListEditor.cxx:307
 AliEveTRDTrackListEditor.cxx:308
 AliEveTRDTrackListEditor.cxx:309
 AliEveTRDTrackListEditor.cxx:310
 AliEveTRDTrackListEditor.cxx:311
 AliEveTRDTrackListEditor.cxx:312
 AliEveTRDTrackListEditor.cxx:313
 AliEveTRDTrackListEditor.cxx:314
 AliEveTRDTrackListEditor.cxx:315
 AliEveTRDTrackListEditor.cxx:316
 AliEveTRDTrackListEditor.cxx:317
 AliEveTRDTrackListEditor.cxx:318
 AliEveTRDTrackListEditor.cxx:319
 AliEveTRDTrackListEditor.cxx:320
 AliEveTRDTrackListEditor.cxx:321
 AliEveTRDTrackListEditor.cxx:322
 AliEveTRDTrackListEditor.cxx:323
 AliEveTRDTrackListEditor.cxx:324
 AliEveTRDTrackListEditor.cxx:325
 AliEveTRDTrackListEditor.cxx:326
 AliEveTRDTrackListEditor.cxx:327
 AliEveTRDTrackListEditor.cxx:328
 AliEveTRDTrackListEditor.cxx:329
 AliEveTRDTrackListEditor.cxx:330
 AliEveTRDTrackListEditor.cxx:331
 AliEveTRDTrackListEditor.cxx:332
 AliEveTRDTrackListEditor.cxx:333
 AliEveTRDTrackListEditor.cxx:334
 AliEveTRDTrackListEditor.cxx:335
 AliEveTRDTrackListEditor.cxx:336
 AliEveTRDTrackListEditor.cxx:337
 AliEveTRDTrackListEditor.cxx:338
 AliEveTRDTrackListEditor.cxx:339
 AliEveTRDTrackListEditor.cxx:340
 AliEveTRDTrackListEditor.cxx:341
 AliEveTRDTrackListEditor.cxx:342
 AliEveTRDTrackListEditor.cxx:343
 AliEveTRDTrackListEditor.cxx:344
 AliEveTRDTrackListEditor.cxx:345
 AliEveTRDTrackListEditor.cxx:346
 AliEveTRDTrackListEditor.cxx:347
 AliEveTRDTrackListEditor.cxx:348
 AliEveTRDTrackListEditor.cxx:349
 AliEveTRDTrackListEditor.cxx:350
 AliEveTRDTrackListEditor.cxx:351
 AliEveTRDTrackListEditor.cxx:352
 AliEveTRDTrackListEditor.cxx:353
 AliEveTRDTrackListEditor.cxx:354
 AliEveTRDTrackListEditor.cxx:355
 AliEveTRDTrackListEditor.cxx:356
 AliEveTRDTrackListEditor.cxx:357
 AliEveTRDTrackListEditor.cxx:358
 AliEveTRDTrackListEditor.cxx:359
 AliEveTRDTrackListEditor.cxx:360
 AliEveTRDTrackListEditor.cxx:361
 AliEveTRDTrackListEditor.cxx:362
 AliEveTRDTrackListEditor.cxx:363
 AliEveTRDTrackListEditor.cxx:364
 AliEveTRDTrackListEditor.cxx:365
 AliEveTRDTrackListEditor.cxx:366
 AliEveTRDTrackListEditor.cxx:367
 AliEveTRDTrackListEditor.cxx:368
 AliEveTRDTrackListEditor.cxx:369
 AliEveTRDTrackListEditor.cxx:370
 AliEveTRDTrackListEditor.cxx:371
 AliEveTRDTrackListEditor.cxx:372
 AliEveTRDTrackListEditor.cxx:373
 AliEveTRDTrackListEditor.cxx:374
 AliEveTRDTrackListEditor.cxx:375
 AliEveTRDTrackListEditor.cxx:376
 AliEveTRDTrackListEditor.cxx:377
 AliEveTRDTrackListEditor.cxx:378
 AliEveTRDTrackListEditor.cxx:379
 AliEveTRDTrackListEditor.cxx:380
 AliEveTRDTrackListEditor.cxx:381
 AliEveTRDTrackListEditor.cxx:382
 AliEveTRDTrackListEditor.cxx:383
 AliEveTRDTrackListEditor.cxx:384
 AliEveTRDTrackListEditor.cxx:385
 AliEveTRDTrackListEditor.cxx:386
 AliEveTRDTrackListEditor.cxx:387
 AliEveTRDTrackListEditor.cxx:388
 AliEveTRDTrackListEditor.cxx:389
 AliEveTRDTrackListEditor.cxx:390
 AliEveTRDTrackListEditor.cxx:391
 AliEveTRDTrackListEditor.cxx:392
 AliEveTRDTrackListEditor.cxx:393
 AliEveTRDTrackListEditor.cxx:394
 AliEveTRDTrackListEditor.cxx:395
 AliEveTRDTrackListEditor.cxx:396
 AliEveTRDTrackListEditor.cxx:397
 AliEveTRDTrackListEditor.cxx:398
 AliEveTRDTrackListEditor.cxx:399
 AliEveTRDTrackListEditor.cxx:400
 AliEveTRDTrackListEditor.cxx:401
 AliEveTRDTrackListEditor.cxx:402
 AliEveTRDTrackListEditor.cxx:403
 AliEveTRDTrackListEditor.cxx:404
 AliEveTRDTrackListEditor.cxx:405
 AliEveTRDTrackListEditor.cxx:406
 AliEveTRDTrackListEditor.cxx:407
 AliEveTRDTrackListEditor.cxx:408
 AliEveTRDTrackListEditor.cxx:409
 AliEveTRDTrackListEditor.cxx:410
 AliEveTRDTrackListEditor.cxx:411
 AliEveTRDTrackListEditor.cxx:412
 AliEveTRDTrackListEditor.cxx:413
 AliEveTRDTrackListEditor.cxx:414
 AliEveTRDTrackListEditor.cxx:415
 AliEveTRDTrackListEditor.cxx:416
 AliEveTRDTrackListEditor.cxx:417
 AliEveTRDTrackListEditor.cxx:418
 AliEveTRDTrackListEditor.cxx:419
 AliEveTRDTrackListEditor.cxx:420
 AliEveTRDTrackListEditor.cxx:421
 AliEveTRDTrackListEditor.cxx:422
 AliEveTRDTrackListEditor.cxx:423
 AliEveTRDTrackListEditor.cxx:424
 AliEveTRDTrackListEditor.cxx:425
 AliEveTRDTrackListEditor.cxx:426
 AliEveTRDTrackListEditor.cxx:427
 AliEveTRDTrackListEditor.cxx:428
 AliEveTRDTrackListEditor.cxx:429
 AliEveTRDTrackListEditor.cxx:430
 AliEveTRDTrackListEditor.cxx:431
 AliEveTRDTrackListEditor.cxx:432
 AliEveTRDTrackListEditor.cxx:433
 AliEveTRDTrackListEditor.cxx:434
 AliEveTRDTrackListEditor.cxx:435
 AliEveTRDTrackListEditor.cxx:436
 AliEveTRDTrackListEditor.cxx:437
 AliEveTRDTrackListEditor.cxx:438
 AliEveTRDTrackListEditor.cxx:439
 AliEveTRDTrackListEditor.cxx:440
 AliEveTRDTrackListEditor.cxx:441
 AliEveTRDTrackListEditor.cxx:442
 AliEveTRDTrackListEditor.cxx:443
 AliEveTRDTrackListEditor.cxx:444
 AliEveTRDTrackListEditor.cxx:445
 AliEveTRDTrackListEditor.cxx:446
 AliEveTRDTrackListEditor.cxx:447
 AliEveTRDTrackListEditor.cxx:448
 AliEveTRDTrackListEditor.cxx:449
 AliEveTRDTrackListEditor.cxx:450
 AliEveTRDTrackListEditor.cxx:451
 AliEveTRDTrackListEditor.cxx:452
 AliEveTRDTrackListEditor.cxx:453
 AliEveTRDTrackListEditor.cxx:454
 AliEveTRDTrackListEditor.cxx:455
 AliEveTRDTrackListEditor.cxx:456
 AliEveTRDTrackListEditor.cxx:457
 AliEveTRDTrackListEditor.cxx:458
 AliEveTRDTrackListEditor.cxx:459
 AliEveTRDTrackListEditor.cxx:460
 AliEveTRDTrackListEditor.cxx:461
 AliEveTRDTrackListEditor.cxx:462
 AliEveTRDTrackListEditor.cxx:463
 AliEveTRDTrackListEditor.cxx:464
 AliEveTRDTrackListEditor.cxx:465
 AliEveTRDTrackListEditor.cxx:466
 AliEveTRDTrackListEditor.cxx:467
 AliEveTRDTrackListEditor.cxx:468
 AliEveTRDTrackListEditor.cxx:469
 AliEveTRDTrackListEditor.cxx:470
 AliEveTRDTrackListEditor.cxx:471
 AliEveTRDTrackListEditor.cxx:472
 AliEveTRDTrackListEditor.cxx:473
 AliEveTRDTrackListEditor.cxx:474
 AliEveTRDTrackListEditor.cxx:475
 AliEveTRDTrackListEditor.cxx:476
 AliEveTRDTrackListEditor.cxx:477
 AliEveTRDTrackListEditor.cxx:478
 AliEveTRDTrackListEditor.cxx:479
 AliEveTRDTrackListEditor.cxx:480
 AliEveTRDTrackListEditor.cxx:481
 AliEveTRDTrackListEditor.cxx:482
 AliEveTRDTrackListEditor.cxx:483
 AliEveTRDTrackListEditor.cxx:484
 AliEveTRDTrackListEditor.cxx:485
 AliEveTRDTrackListEditor.cxx:486
 AliEveTRDTrackListEditor.cxx:487
 AliEveTRDTrackListEditor.cxx:488
 AliEveTRDTrackListEditor.cxx:489
 AliEveTRDTrackListEditor.cxx:490
 AliEveTRDTrackListEditor.cxx:491
 AliEveTRDTrackListEditor.cxx:492
 AliEveTRDTrackListEditor.cxx:493
 AliEveTRDTrackListEditor.cxx:494
 AliEveTRDTrackListEditor.cxx:495
 AliEveTRDTrackListEditor.cxx:496
 AliEveTRDTrackListEditor.cxx:497
 AliEveTRDTrackListEditor.cxx:498
 AliEveTRDTrackListEditor.cxx:499
 AliEveTRDTrackListEditor.cxx:500
 AliEveTRDTrackListEditor.cxx:501
 AliEveTRDTrackListEditor.cxx:502
 AliEveTRDTrackListEditor.cxx:503
 AliEveTRDTrackListEditor.cxx:504
 AliEveTRDTrackListEditor.cxx:505
 AliEveTRDTrackListEditor.cxx:506
 AliEveTRDTrackListEditor.cxx:507
 AliEveTRDTrackListEditor.cxx:508
 AliEveTRDTrackListEditor.cxx:509
 AliEveTRDTrackListEditor.cxx:510
 AliEveTRDTrackListEditor.cxx:511
 AliEveTRDTrackListEditor.cxx:512
 AliEveTRDTrackListEditor.cxx:513
 AliEveTRDTrackListEditor.cxx:514
 AliEveTRDTrackListEditor.cxx:515
 AliEveTRDTrackListEditor.cxx:516
 AliEveTRDTrackListEditor.cxx:517
 AliEveTRDTrackListEditor.cxx:518
 AliEveTRDTrackListEditor.cxx:519
 AliEveTRDTrackListEditor.cxx:520
 AliEveTRDTrackListEditor.cxx:521
 AliEveTRDTrackListEditor.cxx:522
 AliEveTRDTrackListEditor.cxx:523
 AliEveTRDTrackListEditor.cxx:524
 AliEveTRDTrackListEditor.cxx:525
 AliEveTRDTrackListEditor.cxx:526
 AliEveTRDTrackListEditor.cxx:527
 AliEveTRDTrackListEditor.cxx:528
 AliEveTRDTrackListEditor.cxx:529
 AliEveTRDTrackListEditor.cxx:530
 AliEveTRDTrackListEditor.cxx:531
 AliEveTRDTrackListEditor.cxx:532
 AliEveTRDTrackListEditor.cxx:533
 AliEveTRDTrackListEditor.cxx:534
 AliEveTRDTrackListEditor.cxx:535
 AliEveTRDTrackListEditor.cxx:536
 AliEveTRDTrackListEditor.cxx:537
 AliEveTRDTrackListEditor.cxx:538
 AliEveTRDTrackListEditor.cxx:539
 AliEveTRDTrackListEditor.cxx:540
 AliEveTRDTrackListEditor.cxx:541
 AliEveTRDTrackListEditor.cxx:542
 AliEveTRDTrackListEditor.cxx:543
 AliEveTRDTrackListEditor.cxx:544
 AliEveTRDTrackListEditor.cxx:545
 AliEveTRDTrackListEditor.cxx:546
 AliEveTRDTrackListEditor.cxx:547
 AliEveTRDTrackListEditor.cxx:548
 AliEveTRDTrackListEditor.cxx:549
 AliEveTRDTrackListEditor.cxx:550
 AliEveTRDTrackListEditor.cxx:551
 AliEveTRDTrackListEditor.cxx:552
 AliEveTRDTrackListEditor.cxx:553
 AliEveTRDTrackListEditor.cxx:554
 AliEveTRDTrackListEditor.cxx:555
 AliEveTRDTrackListEditor.cxx:556
 AliEveTRDTrackListEditor.cxx:557
 AliEveTRDTrackListEditor.cxx:558
 AliEveTRDTrackListEditor.cxx:559
 AliEveTRDTrackListEditor.cxx:560
 AliEveTRDTrackListEditor.cxx:561
 AliEveTRDTrackListEditor.cxx:562
 AliEveTRDTrackListEditor.cxx:563
 AliEveTRDTrackListEditor.cxx:564
 AliEveTRDTrackListEditor.cxx:565
 AliEveTRDTrackListEditor.cxx:566
 AliEveTRDTrackListEditor.cxx:567
 AliEveTRDTrackListEditor.cxx:568
 AliEveTRDTrackListEditor.cxx:569
 AliEveTRDTrackListEditor.cxx:570
 AliEveTRDTrackListEditor.cxx:571
 AliEveTRDTrackListEditor.cxx:572
 AliEveTRDTrackListEditor.cxx:573
 AliEveTRDTrackListEditor.cxx:574
 AliEveTRDTrackListEditor.cxx:575
 AliEveTRDTrackListEditor.cxx:576
 AliEveTRDTrackListEditor.cxx:577
 AliEveTRDTrackListEditor.cxx:578
 AliEveTRDTrackListEditor.cxx:579
 AliEveTRDTrackListEditor.cxx:580
 AliEveTRDTrackListEditor.cxx:581
 AliEveTRDTrackListEditor.cxx:582
 AliEveTRDTrackListEditor.cxx:583
 AliEveTRDTrackListEditor.cxx:584
 AliEveTRDTrackListEditor.cxx:585
 AliEveTRDTrackListEditor.cxx:586
 AliEveTRDTrackListEditor.cxx:587
 AliEveTRDTrackListEditor.cxx:588
 AliEveTRDTrackListEditor.cxx:589
 AliEveTRDTrackListEditor.cxx:590
 AliEveTRDTrackListEditor.cxx:591
 AliEveTRDTrackListEditor.cxx:592
 AliEveTRDTrackListEditor.cxx:593
 AliEveTRDTrackListEditor.cxx:594
 AliEveTRDTrackListEditor.cxx:595
 AliEveTRDTrackListEditor.cxx:596
 AliEveTRDTrackListEditor.cxx:597
 AliEveTRDTrackListEditor.cxx:598
 AliEveTRDTrackListEditor.cxx:599
 AliEveTRDTrackListEditor.cxx:600
 AliEveTRDTrackListEditor.cxx:601
 AliEveTRDTrackListEditor.cxx:602
 AliEveTRDTrackListEditor.cxx:603
 AliEveTRDTrackListEditor.cxx:604
 AliEveTRDTrackListEditor.cxx:605
 AliEveTRDTrackListEditor.cxx:606
 AliEveTRDTrackListEditor.cxx:607
 AliEveTRDTrackListEditor.cxx:608
 AliEveTRDTrackListEditor.cxx:609
 AliEveTRDTrackListEditor.cxx:610
 AliEveTRDTrackListEditor.cxx:611
 AliEveTRDTrackListEditor.cxx:612
 AliEveTRDTrackListEditor.cxx:613
 AliEveTRDTrackListEditor.cxx:614
 AliEveTRDTrackListEditor.cxx:615
 AliEveTRDTrackListEditor.cxx:616
 AliEveTRDTrackListEditor.cxx:617
 AliEveTRDTrackListEditor.cxx:618
 AliEveTRDTrackListEditor.cxx:619
 AliEveTRDTrackListEditor.cxx:620
 AliEveTRDTrackListEditor.cxx:621
 AliEveTRDTrackListEditor.cxx:622
 AliEveTRDTrackListEditor.cxx:623
 AliEveTRDTrackListEditor.cxx:624
 AliEveTRDTrackListEditor.cxx:625
 AliEveTRDTrackListEditor.cxx:626
 AliEveTRDTrackListEditor.cxx:627
 AliEveTRDTrackListEditor.cxx:628
 AliEveTRDTrackListEditor.cxx:629
 AliEveTRDTrackListEditor.cxx:630
 AliEveTRDTrackListEditor.cxx:631
 AliEveTRDTrackListEditor.cxx:632
 AliEveTRDTrackListEditor.cxx:633
 AliEveTRDTrackListEditor.cxx:634
 AliEveTRDTrackListEditor.cxx:635
 AliEveTRDTrackListEditor.cxx:636
 AliEveTRDTrackListEditor.cxx:637
 AliEveTRDTrackListEditor.cxx:638
 AliEveTRDTrackListEditor.cxx:639
 AliEveTRDTrackListEditor.cxx:640
 AliEveTRDTrackListEditor.cxx:641
 AliEveTRDTrackListEditor.cxx:642
 AliEveTRDTrackListEditor.cxx:643
 AliEveTRDTrackListEditor.cxx:644
 AliEveTRDTrackListEditor.cxx:645
 AliEveTRDTrackListEditor.cxx:646
 AliEveTRDTrackListEditor.cxx:647
 AliEveTRDTrackListEditor.cxx:648
 AliEveTRDTrackListEditor.cxx:649
 AliEveTRDTrackListEditor.cxx:650
 AliEveTRDTrackListEditor.cxx:651
 AliEveTRDTrackListEditor.cxx:652
 AliEveTRDTrackListEditor.cxx:653
 AliEveTRDTrackListEditor.cxx:654
 AliEveTRDTrackListEditor.cxx:655
 AliEveTRDTrackListEditor.cxx:656
 AliEveTRDTrackListEditor.cxx:657
 AliEveTRDTrackListEditor.cxx:658
 AliEveTRDTrackListEditor.cxx:659
 AliEveTRDTrackListEditor.cxx:660
 AliEveTRDTrackListEditor.cxx:661
 AliEveTRDTrackListEditor.cxx:662
 AliEveTRDTrackListEditor.cxx:663
 AliEveTRDTrackListEditor.cxx:664
 AliEveTRDTrackListEditor.cxx:665
 AliEveTRDTrackListEditor.cxx:666
 AliEveTRDTrackListEditor.cxx:667
 AliEveTRDTrackListEditor.cxx:668
 AliEveTRDTrackListEditor.cxx:669
 AliEveTRDTrackListEditor.cxx:670
 AliEveTRDTrackListEditor.cxx:671
 AliEveTRDTrackListEditor.cxx:672
 AliEveTRDTrackListEditor.cxx:673
 AliEveTRDTrackListEditor.cxx:674
 AliEveTRDTrackListEditor.cxx:675
 AliEveTRDTrackListEditor.cxx:676
 AliEveTRDTrackListEditor.cxx:677
 AliEveTRDTrackListEditor.cxx:678
 AliEveTRDTrackListEditor.cxx:679
 AliEveTRDTrackListEditor.cxx:680
 AliEveTRDTrackListEditor.cxx:681
 AliEveTRDTrackListEditor.cxx:682
 AliEveTRDTrackListEditor.cxx:683
 AliEveTRDTrackListEditor.cxx:684
 AliEveTRDTrackListEditor.cxx:685
 AliEveTRDTrackListEditor.cxx:686
 AliEveTRDTrackListEditor.cxx:687
 AliEveTRDTrackListEditor.cxx:688
 AliEveTRDTrackListEditor.cxx:689
 AliEveTRDTrackListEditor.cxx:690
 AliEveTRDTrackListEditor.cxx:691
 AliEveTRDTrackListEditor.cxx:692
 AliEveTRDTrackListEditor.cxx:693
 AliEveTRDTrackListEditor.cxx:694
 AliEveTRDTrackListEditor.cxx:695
 AliEveTRDTrackListEditor.cxx:696
 AliEveTRDTrackListEditor.cxx:697
 AliEveTRDTrackListEditor.cxx:698
 AliEveTRDTrackListEditor.cxx:699
 AliEveTRDTrackListEditor.cxx:700
 AliEveTRDTrackListEditor.cxx:701
 AliEveTRDTrackListEditor.cxx:702
 AliEveTRDTrackListEditor.cxx:703
 AliEveTRDTrackListEditor.cxx:704
 AliEveTRDTrackListEditor.cxx:705
 AliEveTRDTrackListEditor.cxx:706
 AliEveTRDTrackListEditor.cxx:707
 AliEveTRDTrackListEditor.cxx:708
 AliEveTRDTrackListEditor.cxx:709
 AliEveTRDTrackListEditor.cxx:710
 AliEveTRDTrackListEditor.cxx:711
 AliEveTRDTrackListEditor.cxx:712
 AliEveTRDTrackListEditor.cxx:713
 AliEveTRDTrackListEditor.cxx:714
 AliEveTRDTrackListEditor.cxx:715
 AliEveTRDTrackListEditor.cxx:716
 AliEveTRDTrackListEditor.cxx:717
 AliEveTRDTrackListEditor.cxx:718
 AliEveTRDTrackListEditor.cxx:719
 AliEveTRDTrackListEditor.cxx:720
 AliEveTRDTrackListEditor.cxx:721
 AliEveTRDTrackListEditor.cxx:722
 AliEveTRDTrackListEditor.cxx:723
 AliEveTRDTrackListEditor.cxx:724
 AliEveTRDTrackListEditor.cxx:725
 AliEveTRDTrackListEditor.cxx:726
 AliEveTRDTrackListEditor.cxx:727
 AliEveTRDTrackListEditor.cxx:728
 AliEveTRDTrackListEditor.cxx:729
 AliEveTRDTrackListEditor.cxx:730
 AliEveTRDTrackListEditor.cxx:731
 AliEveTRDTrackListEditor.cxx:732
 AliEveTRDTrackListEditor.cxx:733
 AliEveTRDTrackListEditor.cxx:734
 AliEveTRDTrackListEditor.cxx:735
 AliEveTRDTrackListEditor.cxx:736
 AliEveTRDTrackListEditor.cxx:737
 AliEveTRDTrackListEditor.cxx:738
 AliEveTRDTrackListEditor.cxx:739
 AliEveTRDTrackListEditor.cxx:740
 AliEveTRDTrackListEditor.cxx:741
 AliEveTRDTrackListEditor.cxx:742
 AliEveTRDTrackListEditor.cxx:743
 AliEveTRDTrackListEditor.cxx:744
 AliEveTRDTrackListEditor.cxx:745
 AliEveTRDTrackListEditor.cxx:746
 AliEveTRDTrackListEditor.cxx:747
 AliEveTRDTrackListEditor.cxx:748
 AliEveTRDTrackListEditor.cxx:749
 AliEveTRDTrackListEditor.cxx:750
 AliEveTRDTrackListEditor.cxx:751
 AliEveTRDTrackListEditor.cxx:752
 AliEveTRDTrackListEditor.cxx:753
 AliEveTRDTrackListEditor.cxx:754
 AliEveTRDTrackListEditor.cxx:755
 AliEveTRDTrackListEditor.cxx:756
 AliEveTRDTrackListEditor.cxx:757
 AliEveTRDTrackListEditor.cxx:758
 AliEveTRDTrackListEditor.cxx:759
 AliEveTRDTrackListEditor.cxx:760
 AliEveTRDTrackListEditor.cxx:761
 AliEveTRDTrackListEditor.cxx:762
 AliEveTRDTrackListEditor.cxx:763
 AliEveTRDTrackListEditor.cxx:764
 AliEveTRDTrackListEditor.cxx:765
 AliEveTRDTrackListEditor.cxx:766
 AliEveTRDTrackListEditor.cxx:767
 AliEveTRDTrackListEditor.cxx:768
 AliEveTRDTrackListEditor.cxx:769
 AliEveTRDTrackListEditor.cxx:770
 AliEveTRDTrackListEditor.cxx:771
 AliEveTRDTrackListEditor.cxx:772
 AliEveTRDTrackListEditor.cxx:773
 AliEveTRDTrackListEditor.cxx:774
 AliEveTRDTrackListEditor.cxx:775
 AliEveTRDTrackListEditor.cxx:776
 AliEveTRDTrackListEditor.cxx:777
 AliEveTRDTrackListEditor.cxx:778
 AliEveTRDTrackListEditor.cxx:779
 AliEveTRDTrackListEditor.cxx:780
 AliEveTRDTrackListEditor.cxx:781
 AliEveTRDTrackListEditor.cxx:782
 AliEveTRDTrackListEditor.cxx:783
 AliEveTRDTrackListEditor.cxx:784
 AliEveTRDTrackListEditor.cxx:785
 AliEveTRDTrackListEditor.cxx:786
 AliEveTRDTrackListEditor.cxx:787
 AliEveTRDTrackListEditor.cxx:788
 AliEveTRDTrackListEditor.cxx:789
 AliEveTRDTrackListEditor.cxx:790
 AliEveTRDTrackListEditor.cxx:791
 AliEveTRDTrackListEditor.cxx:792
 AliEveTRDTrackListEditor.cxx:793
 AliEveTRDTrackListEditor.cxx:794
 AliEveTRDTrackListEditor.cxx:795
 AliEveTRDTrackListEditor.cxx:796
 AliEveTRDTrackListEditor.cxx:797
 AliEveTRDTrackListEditor.cxx:798
 AliEveTRDTrackListEditor.cxx:799
 AliEveTRDTrackListEditor.cxx:800
 AliEveTRDTrackListEditor.cxx:801
 AliEveTRDTrackListEditor.cxx:802
 AliEveTRDTrackListEditor.cxx:803
 AliEveTRDTrackListEditor.cxx:804
 AliEveTRDTrackListEditor.cxx:805
 AliEveTRDTrackListEditor.cxx:806
 AliEveTRDTrackListEditor.cxx:807
 AliEveTRDTrackListEditor.cxx:808
 AliEveTRDTrackListEditor.cxx:809
 AliEveTRDTrackListEditor.cxx:810
 AliEveTRDTrackListEditor.cxx:811
 AliEveTRDTrackListEditor.cxx:812
 AliEveTRDTrackListEditor.cxx:813
 AliEveTRDTrackListEditor.cxx:814
 AliEveTRDTrackListEditor.cxx:815
 AliEveTRDTrackListEditor.cxx:816
 AliEveTRDTrackListEditor.cxx:817
 AliEveTRDTrackListEditor.cxx:818
 AliEveTRDTrackListEditor.cxx:819
 AliEveTRDTrackListEditor.cxx:820
 AliEveTRDTrackListEditor.cxx:821
 AliEveTRDTrackListEditor.cxx:822
 AliEveTRDTrackListEditor.cxx:823
 AliEveTRDTrackListEditor.cxx:824
 AliEveTRDTrackListEditor.cxx:825
 AliEveTRDTrackListEditor.cxx:826
 AliEveTRDTrackListEditor.cxx:827
 AliEveTRDTrackListEditor.cxx:828
 AliEveTRDTrackListEditor.cxx:829
 AliEveTRDTrackListEditor.cxx:830
 AliEveTRDTrackListEditor.cxx:831
 AliEveTRDTrackListEditor.cxx:832
 AliEveTRDTrackListEditor.cxx:833
 AliEveTRDTrackListEditor.cxx:834
 AliEveTRDTrackListEditor.cxx:835
 AliEveTRDTrackListEditor.cxx:836
 AliEveTRDTrackListEditor.cxx:837
 AliEveTRDTrackListEditor.cxx:838
 AliEveTRDTrackListEditor.cxx:839
 AliEveTRDTrackListEditor.cxx:840
 AliEveTRDTrackListEditor.cxx:841
 AliEveTRDTrackListEditor.cxx:842
 AliEveTRDTrackListEditor.cxx:843
 AliEveTRDTrackListEditor.cxx:844
 AliEveTRDTrackListEditor.cxx:845
 AliEveTRDTrackListEditor.cxx:846
 AliEveTRDTrackListEditor.cxx:847
 AliEveTRDTrackListEditor.cxx:848
 AliEveTRDTrackListEditor.cxx:849
 AliEveTRDTrackListEditor.cxx:850
 AliEveTRDTrackListEditor.cxx:851
 AliEveTRDTrackListEditor.cxx:852
 AliEveTRDTrackListEditor.cxx:853
 AliEveTRDTrackListEditor.cxx:854
 AliEveTRDTrackListEditor.cxx:855
 AliEveTRDTrackListEditor.cxx:856
 AliEveTRDTrackListEditor.cxx:857
 AliEveTRDTrackListEditor.cxx:858
 AliEveTRDTrackListEditor.cxx:859
 AliEveTRDTrackListEditor.cxx:860
 AliEveTRDTrackListEditor.cxx:861
 AliEveTRDTrackListEditor.cxx:862
 AliEveTRDTrackListEditor.cxx:863
 AliEveTRDTrackListEditor.cxx:864
 AliEveTRDTrackListEditor.cxx:865
 AliEveTRDTrackListEditor.cxx:866
 AliEveTRDTrackListEditor.cxx:867
 AliEveTRDTrackListEditor.cxx:868
 AliEveTRDTrackListEditor.cxx:869
 AliEveTRDTrackListEditor.cxx:870
 AliEveTRDTrackListEditor.cxx:871
 AliEveTRDTrackListEditor.cxx:872
 AliEveTRDTrackListEditor.cxx:873
 AliEveTRDTrackListEditor.cxx:874
 AliEveTRDTrackListEditor.cxx:875
 AliEveTRDTrackListEditor.cxx:876
 AliEveTRDTrackListEditor.cxx:877
 AliEveTRDTrackListEditor.cxx:878
 AliEveTRDTrackListEditor.cxx:879
 AliEveTRDTrackListEditor.cxx:880
 AliEveTRDTrackListEditor.cxx:881
 AliEveTRDTrackListEditor.cxx:882
 AliEveTRDTrackListEditor.cxx:883
 AliEveTRDTrackListEditor.cxx:884
 AliEveTRDTrackListEditor.cxx:885
 AliEveTRDTrackListEditor.cxx:886
 AliEveTRDTrackListEditor.cxx:887
 AliEveTRDTrackListEditor.cxx:888
 AliEveTRDTrackListEditor.cxx:889
 AliEveTRDTrackListEditor.cxx:890
 AliEveTRDTrackListEditor.cxx:891
 AliEveTRDTrackListEditor.cxx:892
 AliEveTRDTrackListEditor.cxx:893
 AliEveTRDTrackListEditor.cxx:894
 AliEveTRDTrackListEditor.cxx:895
 AliEveTRDTrackListEditor.cxx:896
 AliEveTRDTrackListEditor.cxx:897
 AliEveTRDTrackListEditor.cxx:898
 AliEveTRDTrackListEditor.cxx:899
 AliEveTRDTrackListEditor.cxx:900
 AliEveTRDTrackListEditor.cxx:901
 AliEveTRDTrackListEditor.cxx:902
 AliEveTRDTrackListEditor.cxx:903
 AliEveTRDTrackListEditor.cxx:904
 AliEveTRDTrackListEditor.cxx:905
 AliEveTRDTrackListEditor.cxx:906
 AliEveTRDTrackListEditor.cxx:907
 AliEveTRDTrackListEditor.cxx:908
 AliEveTRDTrackListEditor.cxx:909
 AliEveTRDTrackListEditor.cxx:910
 AliEveTRDTrackListEditor.cxx:911
 AliEveTRDTrackListEditor.cxx:912
 AliEveTRDTrackListEditor.cxx:913
 AliEveTRDTrackListEditor.cxx:914
 AliEveTRDTrackListEditor.cxx:915
 AliEveTRDTrackListEditor.cxx:916
 AliEveTRDTrackListEditor.cxx:917
 AliEveTRDTrackListEditor.cxx:918
 AliEveTRDTrackListEditor.cxx:919
 AliEveTRDTrackListEditor.cxx:920
 AliEveTRDTrackListEditor.cxx:921
 AliEveTRDTrackListEditor.cxx:922
 AliEveTRDTrackListEditor.cxx:923
 AliEveTRDTrackListEditor.cxx:924
 AliEveTRDTrackListEditor.cxx:925
 AliEveTRDTrackListEditor.cxx:926
 AliEveTRDTrackListEditor.cxx:927
 AliEveTRDTrackListEditor.cxx:928
 AliEveTRDTrackListEditor.cxx:929
 AliEveTRDTrackListEditor.cxx:930
 AliEveTRDTrackListEditor.cxx:931
 AliEveTRDTrackListEditor.cxx:932
 AliEveTRDTrackListEditor.cxx:933
 AliEveTRDTrackListEditor.cxx:934
 AliEveTRDTrackListEditor.cxx:935
 AliEveTRDTrackListEditor.cxx:936
 AliEveTRDTrackListEditor.cxx:937
 AliEveTRDTrackListEditor.cxx:938
 AliEveTRDTrackListEditor.cxx:939
 AliEveTRDTrackListEditor.cxx:940
 AliEveTRDTrackListEditor.cxx:941
 AliEveTRDTrackListEditor.cxx:942
 AliEveTRDTrackListEditor.cxx:943
 AliEveTRDTrackListEditor.cxx:944
 AliEveTRDTrackListEditor.cxx:945
 AliEveTRDTrackListEditor.cxx:946
 AliEveTRDTrackListEditor.cxx:947
 AliEveTRDTrackListEditor.cxx:948
 AliEveTRDTrackListEditor.cxx:949
 AliEveTRDTrackListEditor.cxx:950
 AliEveTRDTrackListEditor.cxx:951
 AliEveTRDTrackListEditor.cxx:952
 AliEveTRDTrackListEditor.cxx:953
 AliEveTRDTrackListEditor.cxx:954
 AliEveTRDTrackListEditor.cxx:955
 AliEveTRDTrackListEditor.cxx:956
 AliEveTRDTrackListEditor.cxx:957
 AliEveTRDTrackListEditor.cxx:958
 AliEveTRDTrackListEditor.cxx:959
 AliEveTRDTrackListEditor.cxx:960
 AliEveTRDTrackListEditor.cxx:961
 AliEveTRDTrackListEditor.cxx:962
 AliEveTRDTrackListEditor.cxx:963
 AliEveTRDTrackListEditor.cxx:964
 AliEveTRDTrackListEditor.cxx:965
 AliEveTRDTrackListEditor.cxx:966
 AliEveTRDTrackListEditor.cxx:967
 AliEveTRDTrackListEditor.cxx:968
 AliEveTRDTrackListEditor.cxx:969
 AliEveTRDTrackListEditor.cxx:970
 AliEveTRDTrackListEditor.cxx:971
 AliEveTRDTrackListEditor.cxx:972
 AliEveTRDTrackListEditor.cxx:973
 AliEveTRDTrackListEditor.cxx:974
 AliEveTRDTrackListEditor.cxx:975
 AliEveTRDTrackListEditor.cxx:976
 AliEveTRDTrackListEditor.cxx:977
 AliEveTRDTrackListEditor.cxx:978
 AliEveTRDTrackListEditor.cxx:979
 AliEveTRDTrackListEditor.cxx:980
 AliEveTRDTrackListEditor.cxx:981
 AliEveTRDTrackListEditor.cxx:982
 AliEveTRDTrackListEditor.cxx:983
 AliEveTRDTrackListEditor.cxx:984
 AliEveTRDTrackListEditor.cxx:985
 AliEveTRDTrackListEditor.cxx:986
 AliEveTRDTrackListEditor.cxx:987
 AliEveTRDTrackListEditor.cxx:988
 AliEveTRDTrackListEditor.cxx:989
 AliEveTRDTrackListEditor.cxx:990
 AliEveTRDTrackListEditor.cxx:991
 AliEveTRDTrackListEditor.cxx:992
 AliEveTRDTrackListEditor.cxx:993
 AliEveTRDTrackListEditor.cxx:994
 AliEveTRDTrackListEditor.cxx:995
 AliEveTRDTrackListEditor.cxx:996
 AliEveTRDTrackListEditor.cxx:997
 AliEveTRDTrackListEditor.cxx:998
 AliEveTRDTrackListEditor.cxx:999
 AliEveTRDTrackListEditor.cxx:1000
 AliEveTRDTrackListEditor.cxx:1001
 AliEveTRDTrackListEditor.cxx:1002
 AliEveTRDTrackListEditor.cxx:1003
 AliEveTRDTrackListEditor.cxx:1004
 AliEveTRDTrackListEditor.cxx:1005
 AliEveTRDTrackListEditor.cxx:1006
 AliEveTRDTrackListEditor.cxx:1007
 AliEveTRDTrackListEditor.cxx:1008
 AliEveTRDTrackListEditor.cxx:1009
 AliEveTRDTrackListEditor.cxx:1010
 AliEveTRDTrackListEditor.cxx:1011
 AliEveTRDTrackListEditor.cxx:1012
 AliEveTRDTrackListEditor.cxx:1013
 AliEveTRDTrackListEditor.cxx:1014
 AliEveTRDTrackListEditor.cxx:1015
 AliEveTRDTrackListEditor.cxx:1016
 AliEveTRDTrackListEditor.cxx:1017
 AliEveTRDTrackListEditor.cxx:1018
 AliEveTRDTrackListEditor.cxx:1019
 AliEveTRDTrackListEditor.cxx:1020
 AliEveTRDTrackListEditor.cxx:1021
 AliEveTRDTrackListEditor.cxx:1022
 AliEveTRDTrackListEditor.cxx:1023
 AliEveTRDTrackListEditor.cxx:1024
 AliEveTRDTrackListEditor.cxx:1025
 AliEveTRDTrackListEditor.cxx:1026
 AliEveTRDTrackListEditor.cxx:1027
 AliEveTRDTrackListEditor.cxx:1028
 AliEveTRDTrackListEditor.cxx:1029
 AliEveTRDTrackListEditor.cxx:1030
 AliEveTRDTrackListEditor.cxx:1031
 AliEveTRDTrackListEditor.cxx:1032
 AliEveTRDTrackListEditor.cxx:1033
 AliEveTRDTrackListEditor.cxx:1034
 AliEveTRDTrackListEditor.cxx:1035
 AliEveTRDTrackListEditor.cxx:1036
 AliEveTRDTrackListEditor.cxx:1037
 AliEveTRDTrackListEditor.cxx:1038
 AliEveTRDTrackListEditor.cxx:1039
 AliEveTRDTrackListEditor.cxx:1040
 AliEveTRDTrackListEditor.cxx:1041
 AliEveTRDTrackListEditor.cxx:1042
 AliEveTRDTrackListEditor.cxx:1043
 AliEveTRDTrackListEditor.cxx:1044
 AliEveTRDTrackListEditor.cxx:1045
 AliEveTRDTrackListEditor.cxx:1046
 AliEveTRDTrackListEditor.cxx:1047
 AliEveTRDTrackListEditor.cxx:1048
 AliEveTRDTrackListEditor.cxx:1049
 AliEveTRDTrackListEditor.cxx:1050
 AliEveTRDTrackListEditor.cxx:1051
 AliEveTRDTrackListEditor.cxx:1052
 AliEveTRDTrackListEditor.cxx:1053
 AliEveTRDTrackListEditor.cxx:1054
 AliEveTRDTrackListEditor.cxx:1055
 AliEveTRDTrackListEditor.cxx:1056
 AliEveTRDTrackListEditor.cxx:1057
 AliEveTRDTrackListEditor.cxx:1058
 AliEveTRDTrackListEditor.cxx:1059
 AliEveTRDTrackListEditor.cxx:1060
 AliEveTRDTrackListEditor.cxx:1061
 AliEveTRDTrackListEditor.cxx:1062
 AliEveTRDTrackListEditor.cxx:1063
 AliEveTRDTrackListEditor.cxx:1064
 AliEveTRDTrackListEditor.cxx:1065
 AliEveTRDTrackListEditor.cxx:1066
 AliEveTRDTrackListEditor.cxx:1067
 AliEveTRDTrackListEditor.cxx:1068
 AliEveTRDTrackListEditor.cxx:1069
 AliEveTRDTrackListEditor.cxx:1070
 AliEveTRDTrackListEditor.cxx:1071
 AliEveTRDTrackListEditor.cxx:1072
 AliEveTRDTrackListEditor.cxx:1073
 AliEveTRDTrackListEditor.cxx:1074
 AliEveTRDTrackListEditor.cxx:1075
 AliEveTRDTrackListEditor.cxx:1076
 AliEveTRDTrackListEditor.cxx:1077
 AliEveTRDTrackListEditor.cxx:1078
 AliEveTRDTrackListEditor.cxx:1079
 AliEveTRDTrackListEditor.cxx:1080
 AliEveTRDTrackListEditor.cxx:1081
 AliEveTRDTrackListEditor.cxx:1082
 AliEveTRDTrackListEditor.cxx:1083
 AliEveTRDTrackListEditor.cxx:1084
 AliEveTRDTrackListEditor.cxx:1085
 AliEveTRDTrackListEditor.cxx:1086
 AliEveTRDTrackListEditor.cxx:1087
 AliEveTRDTrackListEditor.cxx:1088
 AliEveTRDTrackListEditor.cxx:1089
 AliEveTRDTrackListEditor.cxx:1090
 AliEveTRDTrackListEditor.cxx:1091
 AliEveTRDTrackListEditor.cxx:1092
 AliEveTRDTrackListEditor.cxx:1093
 AliEveTRDTrackListEditor.cxx:1094
 AliEveTRDTrackListEditor.cxx:1095
 AliEveTRDTrackListEditor.cxx:1096
 AliEveTRDTrackListEditor.cxx:1097
 AliEveTRDTrackListEditor.cxx:1098
 AliEveTRDTrackListEditor.cxx:1099
 AliEveTRDTrackListEditor.cxx:1100
 AliEveTRDTrackListEditor.cxx:1101
 AliEveTRDTrackListEditor.cxx:1102
 AliEveTRDTrackListEditor.cxx:1103
 AliEveTRDTrackListEditor.cxx:1104
 AliEveTRDTrackListEditor.cxx:1105
 AliEveTRDTrackListEditor.cxx:1106
 AliEveTRDTrackListEditor.cxx:1107
 AliEveTRDTrackListEditor.cxx:1108
 AliEveTRDTrackListEditor.cxx:1109
 AliEveTRDTrackListEditor.cxx:1110
 AliEveTRDTrackListEditor.cxx:1111
 AliEveTRDTrackListEditor.cxx:1112
 AliEveTRDTrackListEditor.cxx:1113
 AliEveTRDTrackListEditor.cxx:1114
 AliEveTRDTrackListEditor.cxx:1115
 AliEveTRDTrackListEditor.cxx:1116
 AliEveTRDTrackListEditor.cxx:1117
 AliEveTRDTrackListEditor.cxx:1118
 AliEveTRDTrackListEditor.cxx:1119
 AliEveTRDTrackListEditor.cxx:1120
 AliEveTRDTrackListEditor.cxx:1121
 AliEveTRDTrackListEditor.cxx:1122
 AliEveTRDTrackListEditor.cxx:1123
 AliEveTRDTrackListEditor.cxx:1124
 AliEveTRDTrackListEditor.cxx:1125
 AliEveTRDTrackListEditor.cxx:1126
 AliEveTRDTrackListEditor.cxx:1127
 AliEveTRDTrackListEditor.cxx:1128
 AliEveTRDTrackListEditor.cxx:1129
 AliEveTRDTrackListEditor.cxx:1130
 AliEveTRDTrackListEditor.cxx:1131
 AliEveTRDTrackListEditor.cxx:1132
 AliEveTRDTrackListEditor.cxx:1133
 AliEveTRDTrackListEditor.cxx:1134
 AliEveTRDTrackListEditor.cxx:1135
 AliEveTRDTrackListEditor.cxx:1136
 AliEveTRDTrackListEditor.cxx:1137
 AliEveTRDTrackListEditor.cxx:1138
 AliEveTRDTrackListEditor.cxx:1139
 AliEveTRDTrackListEditor.cxx:1140
 AliEveTRDTrackListEditor.cxx:1141
 AliEveTRDTrackListEditor.cxx:1142
 AliEveTRDTrackListEditor.cxx:1143
 AliEveTRDTrackListEditor.cxx:1144
 AliEveTRDTrackListEditor.cxx:1145
 AliEveTRDTrackListEditor.cxx:1146
 AliEveTRDTrackListEditor.cxx:1147
 AliEveTRDTrackListEditor.cxx:1148
 AliEveTRDTrackListEditor.cxx:1149
 AliEveTRDTrackListEditor.cxx:1150
 AliEveTRDTrackListEditor.cxx:1151
 AliEveTRDTrackListEditor.cxx:1152
 AliEveTRDTrackListEditor.cxx:1153
 AliEveTRDTrackListEditor.cxx:1154
 AliEveTRDTrackListEditor.cxx:1155
 AliEveTRDTrackListEditor.cxx:1156
 AliEveTRDTrackListEditor.cxx:1157
 AliEveTRDTrackListEditor.cxx:1158
 AliEveTRDTrackListEditor.cxx:1159
 AliEveTRDTrackListEditor.cxx:1160
 AliEveTRDTrackListEditor.cxx:1161
 AliEveTRDTrackListEditor.cxx:1162
 AliEveTRDTrackListEditor.cxx:1163
 AliEveTRDTrackListEditor.cxx:1164
 AliEveTRDTrackListEditor.cxx:1165
 AliEveTRDTrackListEditor.cxx:1166
 AliEveTRDTrackListEditor.cxx:1167
 AliEveTRDTrackListEditor.cxx:1168
 AliEveTRDTrackListEditor.cxx:1169
 AliEveTRDTrackListEditor.cxx:1170
 AliEveTRDTrackListEditor.cxx:1171
 AliEveTRDTrackListEditor.cxx:1172
 AliEveTRDTrackListEditor.cxx:1173
 AliEveTRDTrackListEditor.cxx:1174
 AliEveTRDTrackListEditor.cxx:1175
 AliEveTRDTrackListEditor.cxx:1176
 AliEveTRDTrackListEditor.cxx:1177
 AliEveTRDTrackListEditor.cxx:1178
 AliEveTRDTrackListEditor.cxx:1179
 AliEveTRDTrackListEditor.cxx:1180
 AliEveTRDTrackListEditor.cxx:1181
 AliEveTRDTrackListEditor.cxx:1182
 AliEveTRDTrackListEditor.cxx:1183
 AliEveTRDTrackListEditor.cxx:1184
 AliEveTRDTrackListEditor.cxx:1185
 AliEveTRDTrackListEditor.cxx:1186
 AliEveTRDTrackListEditor.cxx:1187
 AliEveTRDTrackListEditor.cxx:1188
 AliEveTRDTrackListEditor.cxx:1189
 AliEveTRDTrackListEditor.cxx:1190
 AliEveTRDTrackListEditor.cxx:1191
 AliEveTRDTrackListEditor.cxx:1192
 AliEveTRDTrackListEditor.cxx:1193
 AliEveTRDTrackListEditor.cxx:1194
 AliEveTRDTrackListEditor.cxx:1195
 AliEveTRDTrackListEditor.cxx:1196
 AliEveTRDTrackListEditor.cxx:1197
 AliEveTRDTrackListEditor.cxx:1198
 AliEveTRDTrackListEditor.cxx:1199
 AliEveTRDTrackListEditor.cxx:1200
 AliEveTRDTrackListEditor.cxx:1201
 AliEveTRDTrackListEditor.cxx:1202
 AliEveTRDTrackListEditor.cxx:1203
 AliEveTRDTrackListEditor.cxx:1204
 AliEveTRDTrackListEditor.cxx:1205
 AliEveTRDTrackListEditor.cxx:1206
 AliEveTRDTrackListEditor.cxx:1207
 AliEveTRDTrackListEditor.cxx:1208
 AliEveTRDTrackListEditor.cxx:1209
 AliEveTRDTrackListEditor.cxx:1210
 AliEveTRDTrackListEditor.cxx:1211
 AliEveTRDTrackListEditor.cxx:1212
 AliEveTRDTrackListEditor.cxx:1213
 AliEveTRDTrackListEditor.cxx:1214
 AliEveTRDTrackListEditor.cxx:1215
 AliEveTRDTrackListEditor.cxx:1216
 AliEveTRDTrackListEditor.cxx:1217