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

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

#ifndef AliEveTRDTrackList_H
#define AliEveTRDTrackList_H

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// AliEveTRDTrackList                                                   //
//                                                                      //
// An AliEveTRDTrackList is, in principal, a TEveElementList with some  //
// sophisticated features. You can add macros to this list, which then  //
// can be applied to the list of tracks (these tracks can be added to   //
// the list in the same way as for the TEveElementList). In general,    //
// please use AddMacro(...) for this purpose.                           //
// Macros that are no longer needed can be removed from the list via    //
// RemoveSelectedMacros(...). This function takes an iterator of the    //
// list of macros that are to be removed.                               //
// An entry looks like:                                                 //
// The data for each macro consists of path, name, type and the command //
// that will be used to apply the macro. This stuff is stored in a map  //
// which takes the macro name for the key and the above mentioned data  //
// in a TMacroData-object for the value.                                //
// You can get the macro type via GetMacroType(...).                    //
// With ApplySTSelectionMacros(...) or ApplyProcessMacros(...)          //
// respectively you can apply the macros to the track list via          //
// iterators (same style like for RemoveSelectedMacros(...)(cf. above)).//
// Selection macros (de-)select macros according to a selection rule    //
// by setting the rnr-state of the tracks.                              //
// If multiple selection macros are applied, a track is selected, if    //
// all selection macros select the track.                               //
// Process macros create data or histograms, which will be stored in    //
// a temporary file. The editor of this class will access this file     //
// and draw all the stuff within it's DrawHistos() function. The file   //
// will be deleted by the destructor.                                   //
//                                                                      //
// Currently, the following macro types are supported:                  //
// Selection macros:                                                    //
// Bool_t YourMacro(const AliTRDtrackV1*);                              //
// Bool_t YourMacro(const AliTRDtrackV1*, const AliTRDtrackV1*);        //
//                                                                      //
// Process macros:                                                      //
// void YourMacro(const AliTRDtrackV1*, Double_t*&, Int_t&);            //
// void YourMacro(const AliTRDtrackV1*, const AliTRDtrackV1*,           //
//                Double_t*&, Int_t&);                                  //
// TH1* YourMacro(const AliTRDtrackV1*);                                //
// TH1* YourMacro(const AliTRDtrackV1*, const AliTRDtrackV1*);          //
//                                                                      //
// The macros which take 2 tracks are applied to all track pairs        //
// (whereby BOTH tracks of the pair have to be selected by the single   //
// track selection macros and have to be unequal, otherwise they will   //
// be skipped) that have been selected by ALL correlated tracks         //
// selection macros. The selection macros with 2 tracks do NOT affect   //
// process macros that process only a single track!                     //
//////////////////////////////////////////////////////////////////////////


#include <TEveElement.h>
#include <AliEveTRDData.h>

#define SIGNATURE_ERROR   -1
#define NOT_EXIST_ERROR   -2
#define ERROR            -3
#define WARNING           0
#define SUCCESS           1

#define MAX_MACRO_NAME_LENGTH     100
#define MAX_MACRO_PATH_LENGTH     300
#define MAX_APPLY_COMMAND_LENGTH  120

#define UNSETBIT(n,i)  ((n) &= ~BIT(i))

class AliEveTRDTrack;
class AliEveTRDTrackListEditor;
class AliTRDReconstructor;
class TFile;
class TFunction;
class TH1;
class TObjString;
class TList;
class TMap;
class TPair;
//class TTree;//SRedirector;

class AliEveTRDTrackList: public TEveElementList
{
  friend class AliEveTRDTrackListEditor;

public:
  
  enum
  {
    // Maximum length (number of characters) for a macro name:
    fkMaxMacroNameLength = MAX_MACRO_NAME_LENGTH,    
    // Maximum length (number of characters) for a macro path:
    fkMaxMacroPathLength = MAX_MACRO_PATH_LENGTH,    
    // Maximum length (number of characters) for a macro pathname:
    fkMaxMacroPathNameLength = MAX_MACRO_NAME_LENGTH + MAX_MACRO_PATH_LENGTH,  
    // Maximum length (number of characters) for "apply macro" commands in addition to the length of the name, path... 
    fkMaxApplyCommandLength = MAX_APPLY_COMMAND_LENGTH  
  };

  // Macro types
  enum AliEveTRDTrackListMacroType
  {
    kUnknown = 0,
    kSingleTrackSelect = 1,
    kSingleTrackAnalyse = 2,
    kSingleTrackHisto = 3,
    kCorrelTrackSelect = 4,
    kCorrelTrackAnalyse = 5,
    kCorrelTrackHisto = 6
  };
  

  AliEveTRDTrackList(const Text_t* n = "AliEveTRDTrackList", const Text_t* t = "", Bool_t doColor = kFALSE);
  virtual ~AliEveTRDTrackList();

  Int_t AddMacro(const Char_t* path, const Char_t* name, Bool_t forceReload = kFALSE);                      
  Bool_t AddMacroFast(const Char_t* path, const Char_t* name, AliEveTRDTrackListMacroType type);        
  virtual void AddStandardContent();                           
  Bool_t ApplyProcessMacros(const TList* selIterator, const TList* procIterator);               
  void ApplySTSelectionMacros(const TList* iterator);

  // Returns the type of the macro of the corresponding entry (i.e. "macro.C (Path: path)"). 
  // If you have only the name and the path, you can simply use MakeMacroEntry.
  // If "UseList" is kTRUE, the type will be looked up in the internal list (very fast). But if this list
  // does not exist, you have to use kFALSE for this parameter. Then the type will be determined by the
  // prototype! NOTE: It is assumed that the macro has been compiled! If not, the return value is not
  // predictable, but normally will be kUnknown.
  // Note: AddMacro(Fast) will update the internal list and RemoveProcess(/Selection)Macros respectively.
  AliEveTRDTrackListMacroType GetMacroType(const Char_t* name, Bool_t UseList = kTRUE) const; 
  void RemoveSelectedMacros(const TList* iterator);                                    

protected:
  AliEveTRDTrackListEditor* fEditor; // Pointer to the editor of this list             

  TList* fDataFromMacroList;         // List of macros that currently have data for histograms

  TMap*  fMacroList;                 // Stores the names, paths, types and commands of all macros added to this list

  static TFile *fgData;              //! File containing processed data

  Int_t fHistoDataSelected;          // Stores the selection for the data of the histograms
  Int_t fMacroListSelected;          // Stores the selection of the macro list

  Char_t fSelectedTab;               // Holds the index of the selected tab
  UChar_t fSelectedStyle;            // Holds the selected track style

  Char_t GetSelectedTab() const                          // Gets the selected tab
    { return fSelectedTab;  }

  UChar_t GetSelectedTrackStyle() const                  // Gets the selected track style
    { return fSelectedStyle;  }

  Bool_t HistoDataIsSelected(Int_t index) const          // Is entry in list selected?
    { return TESTBIT(fHistoDataSelected, index);  }  
   
  Bool_t MacroListIsSelected(Int_t index) const          // Is entry in list selected?
    { return TESTBIT(fMacroListSelected, index);  }     

  void SetHistoDataSelection(Int_t index, Bool_t set)       // Set selection of entry in list
    { if (set) SETBIT(fHistoDataSelected, index); else UNSETBIT(fHistoDataSelected, index);  }  

  void SetMacroListSelection(Int_t index, Bool_t set)       // Set selection of entry in list
    { if (set) SETBIT(fMacroListSelected, index); else UNSETBIT(fMacroListSelected, index);  }  
    
  void SetSelectedTab(Int_t index)                          // Sets the selected tab
    { fSelectedTab = (Char_t)index; }  

  void SetSelectedTrackStyle(UChar_t index)                 // Sets the selected track style
    { fSelectedStyle = index;  }

  void UpdateTrackStyle(AliEveTRDTrack::AliEveTRDTrackState s, UChar_t ss = 0);      

private:
  AliEveTRDTrackList(const AliEveTRDTrackList&);            // Not implemented
  AliEveTRDTrackList& operator=(const AliEveTRDTrackList&); // Not implemented             

  ClassDef(AliEveTRDTrackList, 0);  // Class containing a list of tracks
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TMacroData                                                           //
//                                                                      //
// Stores macro data which will be used by AliEveTRDTrackList.          //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

class TMacroData: public TObject
{
public:
  TMacroData(const Char_t* name, const Char_t* path,                                                  // Constructor
             AliEveTRDTrackList::AliEveTRDTrackListMacroType type = AliEveTRDTrackList::kUnknown):
    TObject(),
    fIsSelected(kFALSE),
    fType(AliEveTRDTrackList::kUnknown)
  {
    // The command is automatically set via type.

    SetName(name);
    SetPath(path);
    SetType(type);

    // Register the commands for each type here
    switch (type)
    {
      case AliEveTRDTrackList::kSingleTrackSelect:
      case AliEveTRDTrackList::kSingleTrackHisto:
        SetCmd(Form("%s(automaticTrackV1_1);", name));
        break;

      case AliEveTRDTrackList::kSingleTrackAnalyse:
        SetCmd(Form("%s(automaticTrackV1_1, results, n);", name));
        break;

      case AliEveTRDTrackList::kCorrelTrackSelect:
      case AliEveTRDTrackList::kCorrelTrackHisto:
        SetCmd(Form("%s(automaticTrackV1_1, automaticTrackV1_2);", name));
        break;

      case AliEveTRDTrackList::kCorrelTrackAnalyse:
        SetCmd(Form("%s(automaticTrackV1_1, automaticTrackV1_2, results, n);", name));
        break;

      default:
        SetCmd("");
        break;
    }
  }

  const Char_t* GetCmd() const                // Returns the command that will be used to call this macro
    { return fCmd;  }
  const Char_t* GetName() const               // Returns the macro name (without ".C")
    { return fName;  }
  const Char_t* GetPath() const               // Returns the path of the macro
    { return fPath;  }
  AliEveTRDTrackList::AliEveTRDTrackListMacroType GetType() const   // Returns the type of the macro
    { return fType;  }
  Bool_t IsProcessMacro() const             // Returns whether the macro is a process type macro or not
  {
    switch (fType)
    {
      case AliEveTRDTrackList::kSingleTrackAnalyse:
      case AliEveTRDTrackList::kSingleTrackHisto:
      case AliEveTRDTrackList::kCorrelTrackAnalyse:
      case AliEveTRDTrackList::kCorrelTrackHisto:
        return kTRUE;
        break;
      default:
        break;
    }
    
    return kFALSE;
  }

  Bool_t IsSelected() const                   // Returns whether the macro is selected or not
    { return fIsSelected; }
  Bool_t IsSelectionMacro() const             // Returns whether the macro is a selection type macro or not
  {
    switch (fType)
    {
      case AliEveTRDTrackList::kSingleTrackSelect:
      case AliEveTRDTrackList::kCorrelTrackSelect:
        return kTRUE;
        break;
      default:
        break;
    }
    
    return kFALSE;
  }

  void SetCmd(const char* newCmd)             // Sets the command that will be used to call this macro
  { 
    memset(fCmd, '\0', sizeof(Char_t) * MAX_APPLY_COMMAND_LENGTH);
    snprintf(fCmd, MAX_APPLY_COMMAND_LENGTH, "%s", newCmd);
  }
  void SetName(const char* newName)           // Sets the macro name (please use without ".C")
  { 
    memset(fName, '\0', sizeof(Char_t) * MAX_MACRO_NAME_LENGTH);
    snprintf(fName, MAX_MACRO_NAME_LENGTH, "%s", newName);
  }
  void SetPath(const char* newPath)           // Sets the path of the macro
  { 
    memset(fPath, '\0', sizeof(Char_t) * MAX_MACRO_PATH_LENGTH);
    snprintf(fPath, MAX_MACRO_PATH_LENGTH, "%s", newPath);
  }
  void SetSelected(Bool_t selection)          // Sets whether the macro is selected or not
  {
    fIsSelected = selection;
  }
  void SetType(AliEveTRDTrackList::AliEveTRDTrackListMacroType newType)  // Sets the type of the macro
  {
    fType = newType;
  }

private:
  Char_t fCmd[MAX_APPLY_COMMAND_LENGTH];                  // Command that will be used to call this macro
  Char_t fName[MAX_MACRO_NAME_LENGTH];                    // Macro name (without ".C"!)
  Char_t fPath[MAX_MACRO_PATH_LENGTH];                    // Path of the macro
  Bool_t fIsSelected;                                     // Is macro selected (e.g. in the editor's list)?
  AliEveTRDTrackList::AliEveTRDTrackListMacroType fType;  // Type of the macro  
};

#endif
 AliEveTRDTrackList.h:1
 AliEveTRDTrackList.h:2
 AliEveTRDTrackList.h:3
 AliEveTRDTrackList.h:4
 AliEveTRDTrackList.h:5
 AliEveTRDTrackList.h:6
 AliEveTRDTrackList.h:7
 AliEveTRDTrackList.h:8
 AliEveTRDTrackList.h:9
 AliEveTRDTrackList.h:10
 AliEveTRDTrackList.h:11
 AliEveTRDTrackList.h:12
 AliEveTRDTrackList.h:13
 AliEveTRDTrackList.h:14
 AliEveTRDTrackList.h:15
 AliEveTRDTrackList.h:16
 AliEveTRDTrackList.h:17
 AliEveTRDTrackList.h:18
 AliEveTRDTrackList.h:19
 AliEveTRDTrackList.h:20
 AliEveTRDTrackList.h:21
 AliEveTRDTrackList.h:22
 AliEveTRDTrackList.h:23
 AliEveTRDTrackList.h:24
 AliEveTRDTrackList.h:25
 AliEveTRDTrackList.h:26
 AliEveTRDTrackList.h:27
 AliEveTRDTrackList.h:28
 AliEveTRDTrackList.h:29
 AliEveTRDTrackList.h:30
 AliEveTRDTrackList.h:31
 AliEveTRDTrackList.h:32
 AliEveTRDTrackList.h:33
 AliEveTRDTrackList.h:34
 AliEveTRDTrackList.h:35
 AliEveTRDTrackList.h:36
 AliEveTRDTrackList.h:37
 AliEveTRDTrackList.h:38
 AliEveTRDTrackList.h:39
 AliEveTRDTrackList.h:40
 AliEveTRDTrackList.h:41
 AliEveTRDTrackList.h:42
 AliEveTRDTrackList.h:43
 AliEveTRDTrackList.h:44
 AliEveTRDTrackList.h:45
 AliEveTRDTrackList.h:46
 AliEveTRDTrackList.h:47
 AliEveTRDTrackList.h:48
 AliEveTRDTrackList.h:49
 AliEveTRDTrackList.h:50
 AliEveTRDTrackList.h:51
 AliEveTRDTrackList.h:52
 AliEveTRDTrackList.h:53
 AliEveTRDTrackList.h:54
 AliEveTRDTrackList.h:55
 AliEveTRDTrackList.h:56
 AliEveTRDTrackList.h:57
 AliEveTRDTrackList.h:58
 AliEveTRDTrackList.h:59
 AliEveTRDTrackList.h:60
 AliEveTRDTrackList.h:61
 AliEveTRDTrackList.h:62
 AliEveTRDTrackList.h:63
 AliEveTRDTrackList.h:64
 AliEveTRDTrackList.h:65
 AliEveTRDTrackList.h:66
 AliEveTRDTrackList.h:67
 AliEveTRDTrackList.h:68
 AliEveTRDTrackList.h:69
 AliEveTRDTrackList.h:70
 AliEveTRDTrackList.h:71
 AliEveTRDTrackList.h:72
 AliEveTRDTrackList.h:73
 AliEveTRDTrackList.h:74
 AliEveTRDTrackList.h:75
 AliEveTRDTrackList.h:76
 AliEveTRDTrackList.h:77
 AliEveTRDTrackList.h:78
 AliEveTRDTrackList.h:79
 AliEveTRDTrackList.h:80
 AliEveTRDTrackList.h:81
 AliEveTRDTrackList.h:82
 AliEveTRDTrackList.h:83
 AliEveTRDTrackList.h:84
 AliEveTRDTrackList.h:85
 AliEveTRDTrackList.h:86
 AliEveTRDTrackList.h:87
 AliEveTRDTrackList.h:88
 AliEveTRDTrackList.h:89
 AliEveTRDTrackList.h:90
 AliEveTRDTrackList.h:91
 AliEveTRDTrackList.h:92
 AliEveTRDTrackList.h:93
 AliEveTRDTrackList.h:94
 AliEveTRDTrackList.h:95
 AliEveTRDTrackList.h:96
 AliEveTRDTrackList.h:97
 AliEveTRDTrackList.h:98
 AliEveTRDTrackList.h:99
 AliEveTRDTrackList.h:100
 AliEveTRDTrackList.h:101
 AliEveTRDTrackList.h:102
 AliEveTRDTrackList.h:103
 AliEveTRDTrackList.h:104
 AliEveTRDTrackList.h:105
 AliEveTRDTrackList.h:106
 AliEveTRDTrackList.h:107
 AliEveTRDTrackList.h:108
 AliEveTRDTrackList.h:109
 AliEveTRDTrackList.h:110
 AliEveTRDTrackList.h:111
 AliEveTRDTrackList.h:112
 AliEveTRDTrackList.h:113
 AliEveTRDTrackList.h:114
 AliEveTRDTrackList.h:115
 AliEveTRDTrackList.h:116
 AliEveTRDTrackList.h:117
 AliEveTRDTrackList.h:118
 AliEveTRDTrackList.h:119
 AliEveTRDTrackList.h:120
 AliEveTRDTrackList.h:121
 AliEveTRDTrackList.h:122
 AliEveTRDTrackList.h:123
 AliEveTRDTrackList.h:124
 AliEveTRDTrackList.h:125
 AliEveTRDTrackList.h:126
 AliEveTRDTrackList.h:127
 AliEveTRDTrackList.h:128
 AliEveTRDTrackList.h:129
 AliEveTRDTrackList.h:130
 AliEveTRDTrackList.h:131
 AliEveTRDTrackList.h:132
 AliEveTRDTrackList.h:133
 AliEveTRDTrackList.h:134
 AliEveTRDTrackList.h:135
 AliEveTRDTrackList.h:136
 AliEveTRDTrackList.h:137
 AliEveTRDTrackList.h:138
 AliEveTRDTrackList.h:139
 AliEveTRDTrackList.h:140
 AliEveTRDTrackList.h:141
 AliEveTRDTrackList.h:142
 AliEveTRDTrackList.h:143
 AliEveTRDTrackList.h:144
 AliEveTRDTrackList.h:145
 AliEveTRDTrackList.h:146
 AliEveTRDTrackList.h:147
 AliEveTRDTrackList.h:148
 AliEveTRDTrackList.h:149
 AliEveTRDTrackList.h:150
 AliEveTRDTrackList.h:151
 AliEveTRDTrackList.h:152
 AliEveTRDTrackList.h:153
 AliEveTRDTrackList.h:154
 AliEveTRDTrackList.h:155
 AliEveTRDTrackList.h:156
 AliEveTRDTrackList.h:157
 AliEveTRDTrackList.h:158
 AliEveTRDTrackList.h:159
 AliEveTRDTrackList.h:160
 AliEveTRDTrackList.h:161
 AliEveTRDTrackList.h:162
 AliEveTRDTrackList.h:163
 AliEveTRDTrackList.h:164
 AliEveTRDTrackList.h:165
 AliEveTRDTrackList.h:166
 AliEveTRDTrackList.h:167
 AliEveTRDTrackList.h:168
 AliEveTRDTrackList.h:169
 AliEveTRDTrackList.h:170
 AliEveTRDTrackList.h:171
 AliEveTRDTrackList.h:172
 AliEveTRDTrackList.h:173
 AliEveTRDTrackList.h:174
 AliEveTRDTrackList.h:175
 AliEveTRDTrackList.h:176
 AliEveTRDTrackList.h:177
 AliEveTRDTrackList.h:178
 AliEveTRDTrackList.h:179
 AliEveTRDTrackList.h:180
 AliEveTRDTrackList.h:181
 AliEveTRDTrackList.h:182
 AliEveTRDTrackList.h:183
 AliEveTRDTrackList.h:184
 AliEveTRDTrackList.h:185
 AliEveTRDTrackList.h:186
 AliEveTRDTrackList.h:187
 AliEveTRDTrackList.h:188
 AliEveTRDTrackList.h:189
 AliEveTRDTrackList.h:190
 AliEveTRDTrackList.h:191
 AliEveTRDTrackList.h:192
 AliEveTRDTrackList.h:193
 AliEveTRDTrackList.h:194
 AliEveTRDTrackList.h:195
 AliEveTRDTrackList.h:196
 AliEveTRDTrackList.h:197
 AliEveTRDTrackList.h:198
 AliEveTRDTrackList.h:199
 AliEveTRDTrackList.h:200
 AliEveTRDTrackList.h:201
 AliEveTRDTrackList.h:202
 AliEveTRDTrackList.h:203
 AliEveTRDTrackList.h:204
 AliEveTRDTrackList.h:205
 AliEveTRDTrackList.h:206
 AliEveTRDTrackList.h:207
 AliEveTRDTrackList.h:208
 AliEveTRDTrackList.h:209
 AliEveTRDTrackList.h:210
 AliEveTRDTrackList.h:211
 AliEveTRDTrackList.h:212
 AliEveTRDTrackList.h:213
 AliEveTRDTrackList.h:214
 AliEveTRDTrackList.h:215
 AliEveTRDTrackList.h:216
 AliEveTRDTrackList.h:217
 AliEveTRDTrackList.h:218
 AliEveTRDTrackList.h:219
 AliEveTRDTrackList.h:220
 AliEveTRDTrackList.h:221
 AliEveTRDTrackList.h:222
 AliEveTRDTrackList.h:223
 AliEveTRDTrackList.h:224
 AliEveTRDTrackList.h:225
 AliEveTRDTrackList.h:226
 AliEveTRDTrackList.h:227
 AliEveTRDTrackList.h:228
 AliEveTRDTrackList.h:229
 AliEveTRDTrackList.h:230
 AliEveTRDTrackList.h:231
 AliEveTRDTrackList.h:232
 AliEveTRDTrackList.h:233
 AliEveTRDTrackList.h:234
 AliEveTRDTrackList.h:235
 AliEveTRDTrackList.h:236
 AliEveTRDTrackList.h:237
 AliEveTRDTrackList.h:238
 AliEveTRDTrackList.h:239
 AliEveTRDTrackList.h:240
 AliEveTRDTrackList.h:241
 AliEveTRDTrackList.h:242
 AliEveTRDTrackList.h:243
 AliEveTRDTrackList.h:244
 AliEveTRDTrackList.h:245
 AliEveTRDTrackList.h:246
 AliEveTRDTrackList.h:247
 AliEveTRDTrackList.h:248
 AliEveTRDTrackList.h:249
 AliEveTRDTrackList.h:250
 AliEveTRDTrackList.h:251
 AliEveTRDTrackList.h:252
 AliEveTRDTrackList.h:253
 AliEveTRDTrackList.h:254
 AliEveTRDTrackList.h:255
 AliEveTRDTrackList.h:256
 AliEveTRDTrackList.h:257
 AliEveTRDTrackList.h:258
 AliEveTRDTrackList.h:259
 AliEveTRDTrackList.h:260
 AliEveTRDTrackList.h:261
 AliEveTRDTrackList.h:262
 AliEveTRDTrackList.h:263
 AliEveTRDTrackList.h:264
 AliEveTRDTrackList.h:265
 AliEveTRDTrackList.h:266
 AliEveTRDTrackList.h:267
 AliEveTRDTrackList.h:268
 AliEveTRDTrackList.h:269
 AliEveTRDTrackList.h:270
 AliEveTRDTrackList.h:271
 AliEveTRDTrackList.h:272
 AliEveTRDTrackList.h:273
 AliEveTRDTrackList.h:274
 AliEveTRDTrackList.h:275
 AliEveTRDTrackList.h:276
 AliEveTRDTrackList.h:277
 AliEveTRDTrackList.h:278
 AliEveTRDTrackList.h:279
 AliEveTRDTrackList.h:280
 AliEveTRDTrackList.h:281
 AliEveTRDTrackList.h:282
 AliEveTRDTrackList.h:283
 AliEveTRDTrackList.h:284
 AliEveTRDTrackList.h:285
 AliEveTRDTrackList.h:286
 AliEveTRDTrackList.h:287
 AliEveTRDTrackList.h:288
 AliEveTRDTrackList.h:289
 AliEveTRDTrackList.h:290
 AliEveTRDTrackList.h:291
 AliEveTRDTrackList.h:292
 AliEveTRDTrackList.h:293
 AliEveTRDTrackList.h:294
 AliEveTRDTrackList.h:295
 AliEveTRDTrackList.h:296
 AliEveTRDTrackList.h:297
 AliEveTRDTrackList.h:298
 AliEveTRDTrackList.h:299
 AliEveTRDTrackList.h:300
 AliEveTRDTrackList.h:301
 AliEveTRDTrackList.h:302
 AliEveTRDTrackList.h:303
 AliEveTRDTrackList.h:304
 AliEveTRDTrackList.h:305
 AliEveTRDTrackList.h:306
 AliEveTRDTrackList.h:307
 AliEveTRDTrackList.h:308
 AliEveTRDTrackList.h:309
 AliEveTRDTrackList.h:310
 AliEveTRDTrackList.h:311