ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

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

#include "AliEveTRDLoaderImp.h"
#include "AliEveTRDModuleImp.h"
#include "EveBase/AliEveEventManager.h"

#include <TEveManager.h>

//#include "TFile.h"
#include "TTree.h"

#include <TGButton.h>

#include "AliLog.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliTRDrawData.h"
#include "AliTRDrawStream.h"
#include "AliTRDdigitsManager.h"
#include "AliRawReaderRoot.h"
#include "AliRawReaderDate.h"

ClassImp(AliEveTRDLoaderSim)
ClassImp(AliEveTRDLoaderRaw)
ClassImp(AliEveTRDLoaderSimEditor)
//ClassImp(TRDLoaderRawEditor)

///////////////////////////////////////////////////////////
/////////////    AliEveTRDLoaderSim  /////////////////////
///////////////////////////////////////////////////////////


//______________________________________________________________________________
AliEveTRDLoaderSim::AliEveTRDLoaderSim(const Text_t* n, const Text_t* t) :
  AliEveTRDLoader(n, t)
  ,fRunLoader(0x0)
{
  // Constructor.
  if(gAlice && (fRunLoader = AliEveEventManager::AssertRunLoader())) SetDataLinked();
}

//______________________________________________________________________________
Bool_t	AliEveTRDLoaderSim::GoToEvent(int ev)
{
  // Go to given event.

  if(!fChildren.size()){
    AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
    return kFALSE;
  }
  if(!fDataType){
    AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button.");
    return kFALSE;
  }

  fEvent = ev;

  if(!fRunLoader){
    AliError("RunLoader not initialized.");
    return kFALSE;
  }
  fRunLoader->UnloadAll("TRD");
  Unload();

  if(fRunLoader->GetEvent(ev)) return kFALSE;
  TTree *t = 0;
  if(fDataType&kTRDHits){
    fRunLoader->LoadHits("TRD", "READ");
    t = fRunLoader->GetTreeH("TRD", kFALSE);
    if(!t) return kFALSE;
    if(!LoadHits(t)) return kFALSE;
  }
  if(fDataType&kTRDDigits){
    fRunLoader->LoadDigits("TRD", "READ");
    t = fRunLoader->GetTreeD("TRD", kFALSE);
    if(!t) return kFALSE;
    if(!LoadDigits(t)) return kFALSE;
  }
  if(fDataType&kTRDClusters){
    fRunLoader->LoadRecPoints("TRD", "READ");
    t = fRunLoader->GetTreeR("TRD", kFALSE);
    if(!t) return kFALSE;
    if(!LoadClusters(t)) return kFALSE;
  }
  if(fDataType&kTRDTracklets){
    fRunLoader->LoadTracks("TRD", "READ");
    t = fRunLoader->GetTreeT("TRD", kFALSE);
    if(!t) return kFALSE;
    if(!LoadTracklets(t)) return kFALSE;
  }

  gEve->Redraw3D();
  return kTRUE;
}


//______________________________________________________________________________
Bool_t	AliEveTRDLoaderSim::Open(const char *filename, const char *dir)
{
  // Open file in given dir.

  if(fRunLoader) return kTRUE;
  
  fRunLoader = AliRunLoader::Instance();
  if(!fRunLoader) fRunLoader = AliRunLoader::Open(filename,
         AliConfig::GetDefaultEventFolderName(),"read");
  if(!fRunLoader) return kFALSE;

  gAlice = fRunLoader->GetAliRun();
  if(!gAlice && fRunLoader->LoadgAlice()) return kFALSE;
  if(!gAlice) return kFALSE;
 
  fFilename = filename;
  fDir = dir;
  fDir += "/";
  fRunLoader->SetDirName(fDir);

  SetDataLinked();
  return kTRUE;
}


///////////////////////////////////////////////////////////
/////////////   AliEveTRDLoaderRaw    /////////////////////
///////////////////////////////////////////////////////////


//______________________________________________________________________________
AliEveTRDLoaderRaw::AliEveTRDLoaderRaw(const Text_t* n, const Text_t* t) :
  AliEveTRDLoader(n, t)
  ,fRawDateReader (0x0)
  ,fRawRootReader (0x0)
  ,fRaw           (0x0)
  ,fEventCnt(-1)
{
  // Constructor.
}

//______________________________________________________________________________
Bool_t  AliEveTRDLoaderRaw::Open(const char *filename, const char *dir)
{
  // Open file in gvenn dir.

  fFilename = filename;
  fDir = dir;
  fDir += "/";

  if(fRaw) delete fRaw;
  fRaw = new AliTRDrawData();

  if(fDataType&kTRDRawRoot){
    if(fRawRootReader) delete fRawRootReader;
    fRawRootReader = new AliRawReaderRoot(filename);
  } else if(fDataType&kTRDRawDate){
    if(fRawDateReader) delete fRawDateReader;
    fRawDateReader = new AliRawReaderDate(fDir+fFilename);
  } else {
    AliError("No data type was set.");
    return kFALSE;
  }
  SetDataLinked();
  return kTRUE;
}


//______________________________________________________________________________
Bool_t AliEveTRDLoaderRaw::GoToEvent(int ev)
{
  // Go to given event.

  //AliInfo(Form("Event %d %d %d", ev, fEvent, fEventCnt));


  if(!fChildren.size()){
    AliWarning("Please select first the chamber that you want to monitor from \"Chamber(s) selector\".");
    return kFALSE;
  }

  static const TEveException kEH("AliEveTRDLoader::GotoEvent ");
  if(fRawRootReader == 0x0) throw(kEH + "data file not opened.");

  fEvent = ev;
  if(ev == fEventCnt) return kTRUE;
  if(ev < fEventCnt) {
    fRawRootReader->RewindEvents();
    fEventCnt = -1;
  }

  Bool_t FOUND = kFALSE;
  while(fRawRootReader->NextEvent()){ 
    fEventCnt++;
    if(fEventCnt == ev){
      FOUND = kTRUE;
      break;
    }  
  }
  if(!FOUND) return kFALSE;
  
  LoadEvent();
  gEve->Redraw3D();

  return kTRUE;
}


//______________________________________________________________________________
Bool_t AliEveTRDLoaderRaw::LoadEvent()
{
  // Load event.
  AliInfo("Loading ...");

  static const TEveException kEH("AliEveTRDLoader::LoadEvent ");
  if(fRawRootReader == 0x0) throw(kEH + "data file not opened.");


  fRawRootReader->Reset();
  fRawRootReader->SelectEquipment(0, 1024, 1041);
  fRawRootReader->Select("TRD");
  
//   AliTRDrawStream::AllowCorruptedData();
//   AliTRDrawStream::DisableStackNumberChecker();
//   AliTRDrawStream::DisableStackLinkNumberChecker();

  AliTRDrawStream *pinput = new AliTRDrawStream(fRawRootReader);
  AliTRDrawStream &input = *pinput;

 // AliInfo(Form("Stream version: %s", input.IsA()->GetName()));

  AliEveTRDChamber *chmb;
  AliTRDdigitsManager *dm = new AliTRDdigitsManager();
  dm->CreateArrays();

  Int_t det    = 0;
  while ((det = input.NextChamber(dm)) >= 0){
    if(!(chmb=GetChamber(det))) continue;
    chmb->LoadDigits(dm);

    dm->RemoveDigits(det);
    dm->RemoveDictionaries(det);
    dm->ClearIndexes(det);
  }


  delete pinput;
  pinput = NULL;


  return kTRUE;
}



///////////////////////////////////////////////////////////
//////////// AliEveTRDLoaderSimEditor /////////////////////
///////////////////////////////////////////////////////////

//______________________________________________________________________________
AliEveTRDLoaderSimEditor::AliEveTRDLoaderSimEditor(const TGWindow* p, Int_t width, Int_t height,
                                                   UInt_t options, Pixel_t back) :
  TGedFrame(p, width, height, options | kVerticalFrame, back)
  ,fM(0x0)
  ,fCheckedHits(0x0)
  ,fCheckedDigits(0x0)
  ,fCheckedClusters(0x0)
  ,fCheckedTracklets(0x0)
{
  // Constructor.

  MakeTitle("AliEveTRDLoaderSim");

  // "Data selector" group frame
  TGGroupFrame *fGroupFrame = new TGGroupFrame(this,"Data selector");
  fCheckedHits = new TGCheckButton(fGroupFrame,"  Hits");
  fCheckedHits->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDHits));
  fGroupFrame->AddFrame(fCheckedHits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));

  fCheckedDigits = new TGCheckButton(fGroupFrame,"  Digits");
  fCheckedDigits->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDDigits));
  fGroupFrame->AddFrame(fCheckedDigits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));

  fCheckedClusters = new TGCheckButton(fGroupFrame,"  Clusters");
  fCheckedClusters->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDClusters));
  fGroupFrame->AddFrame(fCheckedClusters, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));

  fCheckedTracklets = new TGCheckButton(fGroupFrame,"  Tracklets ");
  fCheckedTracklets->Connect("Clicked()", "AliEveTRDLoaderSimEditor", this, Form("Toggle(=%d)", (Int_t)AliEveTRDLoader::kTRDTracklets));
  fGroupFrame->AddFrame(fCheckedTracklets, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));

  fGroupFrame->SetLayoutManager(new TGVerticalLayout(fGroupFrame));
  //	fGroupFrame->Resize(164,116);
  AddFrame(fGroupFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
}

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

  if(!(fM = dynamic_cast<AliEveTRDLoaderSim*>(obj))) return;

  Bool_t kRL   = (fM->IsDataLinked()) ? kTRUE : kFALSE;

  fCheckedHits->SetEnabled(kRL);
  if(kRL) fCheckedHits->SetState(fM->fDataType&AliEveTRDLoader::kTRDHits ? kButtonDown : kButtonUp);
  fCheckedDigits->SetEnabled(kRL);
  if(kRL) fCheckedDigits->SetState(fM->fDataType&AliEveTRDLoader::kTRDDigits ? kButtonDown : kButtonUp);
  fCheckedClusters->SetEnabled(kRL);
  if(kRL) fCheckedClusters->SetState(fM->fDataType&AliEveTRDLoader::kTRDClusters ? kButtonDown : kButtonUp);
  fCheckedTracklets->SetEnabled(kRL);
  if(kRL) fCheckedTracklets->SetState(fM->fDataType&AliEveTRDLoader::kTRDTracklets ? kButtonDown : kButtonUp);
}

//______________________________________________________________________________
void AliEveTRDLoaderSimEditor::Toggle(Int_t id)
{
  // Toggle given button id.

  switch(id){
  case AliEveTRDLoader::kTRDHits:
    fM->fDataType |= fCheckedHits->IsDown() ? AliEveTRDLoader::kTRDHits : 0;
    break;
  case AliEveTRDLoader::kTRDDigits:
    fM->fDataType |= fCheckedDigits->IsDown() ? AliEveTRDLoader::kTRDDigits : 0;
    break;
  case AliEveTRDLoader::kTRDClusters:
    fM->fDataType |= fCheckedClusters->IsDown() ? AliEveTRDLoader::kTRDClusters : 0;
    break;
  case AliEveTRDLoader::kTRDTracklets:
    fM->fDataType |= fCheckedTracklets->IsDown() ? AliEveTRDLoader::kTRDTracklets : 0;
    break;
  }
}

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