ROOT logo
/////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                         //
//  class AliDataLoader                                                                    //
//                                                                                         //
//  Container of all data needed for full                                                  //
//  description of each data type                                                          //
//  (Hits, Kine, ...)                                                                      //
//                                                                                         //
//  Each data loader has a basic standard setup of BaseLoaders                             //
//  which can be identuified by indexes (defined by EStdBasicLoaders)                      //
//  Data managed by these standard base loaders has fixed naming convention                //
//  e.g. - tree with hits is always named TreeH                                            //
//                     (defined in AliLoader::fgkDefaultHitsContainerName)                 //
//                                                                                         //
//  EStdBasicLoaders   idx     Object Type        Description                              //
//      kData           0    TTree or TObject     main data itself (hits,digits,...)       //
//                                                                                         //
//                                                                                         //
//  User can define and add more basic loaders even Run Time.                              //
//  Caution: in order to save information about added base loader                          //
//  user must rewrite Run Loader to galice.file, overwriting old setup                     //
//                                                                                         //
/////////////////////////////////////////////////////////////////////////////////////////////

/* $Id$ */

#include "AliDataLoader.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliObjectLoader.h"
#include "AliTreeLoader.h"
#include "AliLog.h"

#include <TFile.h>
#include <TROOT.h>
#include <TString.h>
#include <TBits.h>

ClassImp(AliDataLoader)

//______________________________________________________________________________
AliDataLoader::AliDataLoader():
 fFileName(0),
 fFile(0x0),
 fDirectory(0x0),
 fFileOption(),
 fCompressionLevel(2),
 fNEventsPerFile(0),
 fBaseLoaders(0x0),
 fEventFolder(0x0),
 fFolder(0x0)
{
  
}

//______________________________________________________________________________
AliDataLoader::AliDataLoader(const char* filename, const char* contname, 
			     const char* name, Option_t* opt):
 TNamed(name,name),
 fFileName(filename),
 fFile(0x0),
 fDirectory(0x0),
 fFileOption(0),
 fCompressionLevel(2),
 fNEventsPerFile(0),
 fBaseLoaders(new TObjArray(4)),
 fEventFolder(0x0),
 fFolder(0x0)
{
  //constructor
  // creates a 0 loader, depending on option, default "T" is specialized loader for trees
  // else standard object loader
  // trees needs special care, becouse we need to set dir before writing
  AliDebug(1, Form("File name is %s",fFileName.Data()));
  
  TString option(opt);
  AliBaseLoader* bl;
  if (option.CompareTo("T",TString::kIgnoreCase) == 0)
    bl = new AliTreeLoader(contname,this);
  else 
    bl = new AliObjectLoader(contname,this);
  fBaseLoaders->AddAt(bl,kData);
  
}

//______________________________________________________________________________
AliDataLoader::~AliDataLoader()
{
  //
  //dtor
  //
  UnloadAll();
}

//______________________________________________________________________________
Int_t  AliDataLoader::SetEvent()
{
  //
  // The same that GetEvent but do not post data to folders
  //
  AliRunLoader* rl = GetRunLoader();
  if (rl == 0x0)
    {
      AliError("Can not get RunGettr");
      return 1;
    }
  
  Int_t evno = rl->GetEventNumber();
  
  TIter next(fBaseLoaders);
  AliBaseLoader* bl;
  while ((bl = (AliBaseLoader*)next()))
    {
      if (bl->DoNotReload() == kFALSE) bl->Clean();
    }
  
  if(fFile)
    {
      if (CheckReload())
	{
	  delete fFile;
	  fFile = 0x0;
	  AliDebug(1, Form("Reloading new file. File opt is %s",fFileOption.Data()));
	  OpenFile(fFileOption);
	}
      
      fDirectory = AliLoader::ChangeDir(fFile,evno);
      if (fDirectory == 0x0)
	{
	  AliError(Form("Can not chage directory in file %s",fFile->GetName()));
	  return 1;
	}
    }
  return 0;
}

//______________________________________________________________________________
Int_t  AliDataLoader::GetEvent()
{
  // posts all loaded data from files to White Board
  // event number is defined in RunLoader
  // 
  //returns:
  //     0  - in case of no error
  //     1  - event not found
  //     
  //for each base laoder post, if was loaded before GetEvent
  
  //call set event to switch to new directory in file
  
  
  //post all data that were loaded before 
  // ->SetEvent does not call Unload, but only cleans White Board
  // such IsLoaded flag stays untached
  
  if ( AliLoader::TestFileOption(fFileOption) == kTRUE ) //if file is read or update mode try to post
    {                                                     //in other case there is no sense to post: file is new
      TIter nextbl(fBaseLoaders);
      AliBaseLoader* bl;
      while ((bl = (AliBaseLoader*)nextbl()))
	{
	  if (bl->IsLoaded())
	    {
	      if (bl->DoNotReload() == kFALSE) bl->Post();
	    }
	} 
    }
  return 0;
}

//______________________________________________________________________________
Int_t AliDataLoader::OpenFile(Option_t* opt)
{
  //Opens file named 'filename', and assigns pointer to it to 'file'
  //jumps to fDirectoryectory corresponding to current event and stores the pointer to it in 'fDirectory'
  //option 'opt' is passed to TFile::Open
  if (fFile)
    {
      if(fFile->IsOpen() == kTRUE)
	{
	  AliWarning(Form(" File %s already opened. First close it.",fFile->GetName()));
	  return 0;
	}
      else
	{
	  AliWarning(Form("Pointer to file %s is not null, but file is not opened",
			  fFile->GetName()));
	  delete fFile;
	  fFile = 0x0;
	}
    }
  
  TString fname(SetFileOffset(fFileName));
  
  fFile = (TFile *)(gROOT->GetListOfFiles()->FindObject(fname));
  if (fFile)
    {
      if(fFile->IsOpen() == kTRUE)
	{
	  TString option1 = fFile->GetOption();
	  if (option1.CompareTo("read",TString::kIgnoreCase) == 0)
	    {
	      AliInfo(Form("File %s already opened in read mode.",fFile->GetName()));
	    }
	  else
	    {
	      TString option2 = opt;
	      if (option2.CompareTo("read",TString::kIgnoreCase) == 0)
		{
		  AliInfo(Form("Open already opened file %s in read mode.",fFile->GetName()));
		}
	      else {
		AliWarning(Form("File %s already opened by sombody else. First close it.",
				fFile->GetName()));
		return 0;
	      }
	    }
	}
    }
  
  fFileOption = opt;
  fFile = TFile::Open(fname,fFileOption);//open the file
  if (fFile == 0x0)
    {//file is null
      AliError(Form("Can not open file %s",fname.Data()));
      return 1;
    }
  if (fFile->IsOpen() == kFALSE)
    {//file is null
      AliError(Form("Can not open file %s",fname.Data()));
      return 1;
    }
  
  fFile->SetBit(TFile::kDevNull);
  fFile->SetCompressionLevel(fCompressionLevel);
  
  AliRunLoader* rg = GetRunLoader();
  if (rg == 0x0)
    {
      AliError("Can not find Run-Loader in folder.");
      return 2;
    }
  Int_t evno = rg->GetEventNumber();
  
  fDirectory = AliLoader::ChangeDir(fFile,evno);
  if (fDirectory == 0x0)
    {
      AliError(Form("Can not chage fDirectory in file %s.",fFile->GetName()));
      return 3; 
    }
  return 0;
}

//______________________________________________________________________________
void AliDataLoader::Unload()
{
  //
  //unloads main data -  shortcut method 
  //
  GetBaseLoader(0)->Unload();
}

//______________________________________________________________________________
void AliDataLoader::UnloadAll()
{
  //
  // Unloads all data 
  //
  if ( fFile == 0x0 ) return; //nothing loaded
  
  TIter next(fBaseLoaders);
  AliBaseLoader* bl;
  while ((bl = (AliBaseLoader*)next()))
    {
      bl->Unload();
    }
}


//______________________________________________________________________________
Int_t AliDataLoader::Reload()
{
  //
  // Unloads and loads data again
  //
  if ( fFile == 0x0 ) return 0;
  
  TBits loaded(fBaseLoaders->GetEntries());  
  TIter next(fBaseLoaders);
  AliBaseLoader* bl;
  
  Int_t i = 0;
  while ((bl = (AliBaseLoader*)next()))
    {
      if (bl->IsLoaded())
	{
	  loaded.SetBitNumber(i++,kTRUE);
	  bl->Unload();
	}
    }
  
  Int_t retval;
  i = 0;  
  next.Reset();
  while ((bl = (AliBaseLoader*)next()))
    {
      if (loaded.TestBitNumber(i++))
	{
	  retval = bl->Load(fFileOption);
	  if (retval) 
	    {
	      AliError(Form("Error occur while loading %s",bl->GetName()));
	      return retval;
	    }
	}
    }
  return 0;
}


//______________________________________________________________________________
Int_t AliDataLoader::WriteData(Option_t* opt)
{
  //
  // Writes primary data ==  first BaseLoader
  //
  AliDebug(1, Form("Writing %s container for %s data. Option is %s.",
		   GetBaseLoader(0)->GetName(),GetName(),opt));
  return GetBaseLoader(0)->WriteData(opt);
}

//______________________________________________________________________________
Int_t AliDataLoader::Load(Option_t* opt)
{
  //
  // Writes primary data ==  first BaseLoader
  //
  return GetBaseLoader(0)->Load(opt);
}

//______________________________________________________________________________
Int_t  AliDataLoader::SetEventFolder(TFolder* eventfolder)
{
  //
  // Sets the event folder
  //
  if (eventfolder == 0x0)
    {
      AliError("Stupid joke. Argument is NULL");
      return 1;
    }
  AliDebug(1, Form("name = %s Setting Event Folder named %s.",
		   GetName(),eventfolder->GetName()));
  
  fEventFolder = eventfolder;
  return 0;
}


//______________________________________________________________________________
Int_t  AliDataLoader::SetFolder(TFolder* folder)
{
  // Sets the folder and the data loaders
  if (folder == 0x0)
    {
      AliError("Stupid joke. Argument is NULL");
    return 1;
    }
  
  AliDebug(1, Form("name = %s Setting folder named %s.",GetName(),folder->GetName()));
  
  fFolder = folder;
  TIter next(fBaseLoaders);
  AliBaseLoader* bl;
  
  while ((bl = (AliBaseLoader*)next()))
    {
      bl->SetDataLoader(this);
    }  
  
  return 0;
}

//______________________________________________________________________________
TFolder* AliDataLoader::GetEventFolder()
{
  //
  // Get EVENT folder
  // Data that are changing from event to event, even in single run
  //
  AliDebug(1, "EF = %#x");
  return fEventFolder;
}

//______________________________________________________________________________
AliRunLoader* AliDataLoader::GetRunLoader()
{
  //
  // Gets the run-loader from event folder
  //
  AliRunLoader* rg = 0x0;
  TFolder* ef = GetEventFolder();
  if (ef == 0x0)
   {
     AliError("Can not get event folder.");
     return 0;
   }
  rg = dynamic_cast<AliRunLoader*>(ef->FindObject(AliRunLoader::GetRunLoaderName()));
  return rg;
}

//______________________________________________________________________________
void AliDataLoader::CloseFile()
{
  //
  // Closes file
  //
  TIter next(fBaseLoaders);
  AliBaseLoader* bl;
  while ((bl = (AliBaseLoader*)next()))
    {
      if (bl->IsLoaded()) return;
    }
  
  AliDebug(1, "Closing (object) file.");
  
  if (fFile) {
    fFile->Close("R");
    delete fFile;
    fFile = 0x0;
  }
  fDirectory = 0x0;
}


//______________________________________________________________________________
void AliDataLoader::Clean()
{
  //
  // Cleans main data
  //
  GetBaseLoader(0)->Clean();
}

//______________________________________________________________________________
void AliDataLoader::CleanAll()
{
  //
  // Cleans all folders 
  //
  TIter next(fBaseLoaders);
  AliBaseLoader* bl;
  while ((bl = (AliBaseLoader*)next()))
    {
      bl->Clean();
    }
}

//______________________________________________________________________________
void AliDataLoader::SetFileNameSuffix(const TString& suffix)
{
  //
  // adds the suffix before ".root", 
  // e.g. TPC.Digits.root -> TPC.DigitsMerged.root
  // made on Jiri Chudoba demand
  //
  AliDebug(1, Form("suffix=%s",suffix.Data()));
  AliDebug(1, Form("   Digits File Name before: %s",fFileName.Data()));
  
  static const TString dotroot(".root");
  const TString& suffixdotroot = suffix + dotroot;
  fFileName = fFileName.ReplaceAll(dotroot,suffixdotroot);
  
  AliDebug(1, Form("                    after : %s",fFileName.Data()));
}

//______________________________________________________________________________
Bool_t AliDataLoader::CheckReload()
{
  //
  // Checks if we have to reload given file
  //
  if (fFile == 0x0) return kFALSE;
  TString tmp = SetFileOffset(fFileName);
  if (tmp.CompareTo(fFile->GetName())) return kTRUE;  //file must be reloaded
  return  kFALSE;
}

//______________________________________________________________________________
const TString AliDataLoader::SetFileOffset(const TString& fname)
{
  //
  // Return fname
  //
  Long_t offset = (Long_t)GetRunLoader()->GetFileOffset();
  if (fNEventsPerFile > 0) {
    offset = GetRunLoader()->GetEventNumber()/fNEventsPerFile;
  }
  if (offset < 1) return fname;
  
  TString soffset;
  soffset += offset;//automatic conversion to string
  TString dotroot(".root");
  const TString& offfsetdotroot = offset + dotroot;
  TString out = fname;
  out = out.ReplaceAll(dotroot,offfsetdotroot);
  AliDebug(1, Form("in=%s  out=%s.",fname.Data(),out.Data()));
  return out;
}

//______________________________________________________________________________
void AliDataLoader::SetFileOption(Option_t* newopt)
{
  //
  // Sets file option
  //
  if (fFileOption.CompareTo(newopt) == 0) return;
  fFileOption = newopt;
  Reload();
}

//______________________________________________________________________________
void AliDataLoader::SetCompressionLevel(Int_t cl)
{
  //
  // Sets comression level for data defined by di
  //
  fCompressionLevel = cl;
  if (fFile) fFile->SetCompressionLevel(cl);
}

//______________________________________________________________________________
void AliDataLoader::MakeTree()
{
  //
  // Makes tree for the current data loader
  //
  AliTreeLoader* tl = dynamic_cast<AliTreeLoader*>(fBaseLoaders->At(0));
  if (tl == 0x0)
   {
     AliError("Can not make a tree because main base loader is not a tree loader");
     return;
   }
  tl->MakeTree();
}

//______________________________________________________________________________
Bool_t AliDataLoader::IsFileWritable() const
{
  //
  // Returns true if file is writable
  //
  return (fFile)?fFile->IsWritable():kFALSE;
}

//______________________________________________________________________________
Bool_t AliDataLoader::IsFileOpen() const
{
  //
  // Returns true if file is writable
  //
  return (fFile)?fFile->IsOpen():kFALSE;
}

//______________________________________________________________________________
Bool_t AliDataLoader::IsOptionContrary(const TString& option) const
{
  // Checks if passed option is contrary with file open option 
  // which is passed option "writable" and existing option not wriable
  // in reverse case it is no harm so it is NOT contrary
  if (fFile == 0x0) return kFALSE; //file is not opened - no problem
  
  if ( ( AliLoader::IsOptionWritable(option)      == kTRUE  ) &&     // passed option is writable and 
       ( AliLoader::IsOptionWritable(fFileOption) == kFALSE )    )   // existing one is not writable
    {
      return kTRUE;
    }
  
  return kFALSE;
}


//______________________________________________________________________________
void AliDataLoader::AddBaseLoader(AliBaseLoader* bl)
{
  //Adds a base loader to lits of base loaders managed by this data loader
  //Managed data will be stored in proper root directory,
  //and posted to 
  // - in case of tree/object - data folder connected with detector associated with this data loader
  
  if (bl == 0x0)
    {
      AliWarning("Pointer is null.");
      return;
    }
  
  TObject* obj = fBaseLoaders->FindObject(bl->GetName());
  if (obj)
    {
      AliError("Can not add this base loader.");
      AliError(Form("There exists already base loader which manages data named %s for this detector.",obj->GetName()));
      return;
    }
 
  fBaseLoaders->Add(bl);
}

//______________________________________________________________________________
AliBaseLoader* AliDataLoader::GetBaseLoader(const TString& name) const
{
  //
  // Return pointer to base loader
  //
  return dynamic_cast<AliBaseLoader*>(fBaseLoaders->FindObject(name));
}

//______________________________________________________________________________
AliBaseLoader* AliDataLoader::GetBaseLoader(Int_t n) const
{
  //
  // Gets the n-th base loader (what is n?)
  //
  return dynamic_cast<AliBaseLoader*>(fBaseLoaders->At(n));
}

//______________________________________________________________________________
TTree* AliDataLoader::Tree() const
{
  // Returns tree from the main base loader
  // it is just shortcut method for comfort of user
  // main storage object does not have to be Tree  - 
  // that is why first we need to check if it is a TreeLoader 
  AliTreeLoader* tl = dynamic_cast<AliTreeLoader*>(GetBaseLoader(0));
  if (tl == 0x0) return 0x0;
  return tl->Tree();
}

//______________________________________________________________________________
void  AliDataLoader::SetDirName(TString& dirname)
{
  //
  // Sets the directory name where the files will be stored
  //
  AliDebug(10, Form("FileName before %s",fFileName.Data()));
  Int_t n = fFileName.Last('/');
  AliDebug(10, Form("Slash found on pos %d",n));
  if (n > 0) fFileName = fFileName.Remove(0,n+1);
  AliDebug(10, Form("Core FileName %s",fFileName.Data()));
  fFileName = dirname + fFileName;
  AliDebug(10, Form("FileName after %s",fFileName.Data()));
}

//______________________________________________________________________________
AliObjectLoader* AliDataLoader::GetBaseDataLoader()
{
  //
  // Gets the base data loader
  //
  return dynamic_cast<AliObjectLoader*>(GetBaseLoader(kData));
}

//______________________________________________________________________________
void AliDataLoader::SetBaseDataLoader(AliBaseLoader* bl)
{
  //
  // Sets data base loader
  //
  if (bl == 0x0)
    {
      AliError("Parameter is null");
      return;
    }
  if (GetBaseDataLoader()) delete GetBaseDataLoader();
  fBaseLoaders->AddAt(bl,kData);
}

//______________________________________________________________________________
void AliDataLoader::Synchronize()
{
  //
  // Synchronizes all writable files 
  //
  if ( fFile ) fFile->Flush();
}



 AliDataLoader.cxx:1
 AliDataLoader.cxx:2
 AliDataLoader.cxx:3
 AliDataLoader.cxx:4
 AliDataLoader.cxx:5
 AliDataLoader.cxx:6
 AliDataLoader.cxx:7
 AliDataLoader.cxx:8
 AliDataLoader.cxx:9
 AliDataLoader.cxx:10
 AliDataLoader.cxx:11
 AliDataLoader.cxx:12
 AliDataLoader.cxx:13
 AliDataLoader.cxx:14
 AliDataLoader.cxx:15
 AliDataLoader.cxx:16
 AliDataLoader.cxx:17
 AliDataLoader.cxx:18
 AliDataLoader.cxx:19
 AliDataLoader.cxx:20
 AliDataLoader.cxx:21
 AliDataLoader.cxx:22
 AliDataLoader.cxx:23
 AliDataLoader.cxx:24
 AliDataLoader.cxx:25
 AliDataLoader.cxx:26
 AliDataLoader.cxx:27
 AliDataLoader.cxx:28
 AliDataLoader.cxx:29
 AliDataLoader.cxx:30
 AliDataLoader.cxx:31
 AliDataLoader.cxx:32
 AliDataLoader.cxx:33
 AliDataLoader.cxx:34
 AliDataLoader.cxx:35
 AliDataLoader.cxx:36
 AliDataLoader.cxx:37
 AliDataLoader.cxx:38
 AliDataLoader.cxx:39
 AliDataLoader.cxx:40
 AliDataLoader.cxx:41
 AliDataLoader.cxx:42
 AliDataLoader.cxx:43
 AliDataLoader.cxx:44
 AliDataLoader.cxx:45
 AliDataLoader.cxx:46
 AliDataLoader.cxx:47
 AliDataLoader.cxx:48
 AliDataLoader.cxx:49
 AliDataLoader.cxx:50
 AliDataLoader.cxx:51
 AliDataLoader.cxx:52
 AliDataLoader.cxx:53
 AliDataLoader.cxx:54
 AliDataLoader.cxx:55
 AliDataLoader.cxx:56
 AliDataLoader.cxx:57
 AliDataLoader.cxx:58
 AliDataLoader.cxx:59
 AliDataLoader.cxx:60
 AliDataLoader.cxx:61
 AliDataLoader.cxx:62
 AliDataLoader.cxx:63
 AliDataLoader.cxx:64
 AliDataLoader.cxx:65
 AliDataLoader.cxx:66
 AliDataLoader.cxx:67
 AliDataLoader.cxx:68
 AliDataLoader.cxx:69
 AliDataLoader.cxx:70
 AliDataLoader.cxx:71
 AliDataLoader.cxx:72
 AliDataLoader.cxx:73
 AliDataLoader.cxx:74
 AliDataLoader.cxx:75
 AliDataLoader.cxx:76
 AliDataLoader.cxx:77
 AliDataLoader.cxx:78
 AliDataLoader.cxx:79
 AliDataLoader.cxx:80
 AliDataLoader.cxx:81
 AliDataLoader.cxx:82
 AliDataLoader.cxx:83
 AliDataLoader.cxx:84
 AliDataLoader.cxx:85
 AliDataLoader.cxx:86
 AliDataLoader.cxx:87
 AliDataLoader.cxx:88
 AliDataLoader.cxx:89
 AliDataLoader.cxx:90
 AliDataLoader.cxx:91
 AliDataLoader.cxx:92
 AliDataLoader.cxx:93
 AliDataLoader.cxx:94
 AliDataLoader.cxx:95
 AliDataLoader.cxx:96
 AliDataLoader.cxx:97
 AliDataLoader.cxx:98
 AliDataLoader.cxx:99
 AliDataLoader.cxx:100
 AliDataLoader.cxx:101
 AliDataLoader.cxx:102
 AliDataLoader.cxx:103
 AliDataLoader.cxx:104
 AliDataLoader.cxx:105
 AliDataLoader.cxx:106
 AliDataLoader.cxx:107
 AliDataLoader.cxx:108
 AliDataLoader.cxx:109
 AliDataLoader.cxx:110
 AliDataLoader.cxx:111
 AliDataLoader.cxx:112
 AliDataLoader.cxx:113
 AliDataLoader.cxx:114
 AliDataLoader.cxx:115
 AliDataLoader.cxx:116
 AliDataLoader.cxx:117
 AliDataLoader.cxx:118
 AliDataLoader.cxx:119
 AliDataLoader.cxx:120
 AliDataLoader.cxx:121
 AliDataLoader.cxx:122
 AliDataLoader.cxx:123
 AliDataLoader.cxx:124
 AliDataLoader.cxx:125
 AliDataLoader.cxx:126
 AliDataLoader.cxx:127
 AliDataLoader.cxx:128
 AliDataLoader.cxx:129
 AliDataLoader.cxx:130
 AliDataLoader.cxx:131
 AliDataLoader.cxx:132
 AliDataLoader.cxx:133
 AliDataLoader.cxx:134
 AliDataLoader.cxx:135
 AliDataLoader.cxx:136
 AliDataLoader.cxx:137
 AliDataLoader.cxx:138
 AliDataLoader.cxx:139
 AliDataLoader.cxx:140
 AliDataLoader.cxx:141
 AliDataLoader.cxx:142
 AliDataLoader.cxx:143
 AliDataLoader.cxx:144
 AliDataLoader.cxx:145
 AliDataLoader.cxx:146
 AliDataLoader.cxx:147
 AliDataLoader.cxx:148
 AliDataLoader.cxx:149
 AliDataLoader.cxx:150
 AliDataLoader.cxx:151
 AliDataLoader.cxx:152
 AliDataLoader.cxx:153
 AliDataLoader.cxx:154
 AliDataLoader.cxx:155
 AliDataLoader.cxx:156
 AliDataLoader.cxx:157
 AliDataLoader.cxx:158
 AliDataLoader.cxx:159
 AliDataLoader.cxx:160
 AliDataLoader.cxx:161
 AliDataLoader.cxx:162
 AliDataLoader.cxx:163
 AliDataLoader.cxx:164
 AliDataLoader.cxx:165
 AliDataLoader.cxx:166
 AliDataLoader.cxx:167
 AliDataLoader.cxx:168
 AliDataLoader.cxx:169
 AliDataLoader.cxx:170
 AliDataLoader.cxx:171
 AliDataLoader.cxx:172
 AliDataLoader.cxx:173
 AliDataLoader.cxx:174
 AliDataLoader.cxx:175
 AliDataLoader.cxx:176
 AliDataLoader.cxx:177
 AliDataLoader.cxx:178
 AliDataLoader.cxx:179
 AliDataLoader.cxx:180
 AliDataLoader.cxx:181
 AliDataLoader.cxx:182
 AliDataLoader.cxx:183
 AliDataLoader.cxx:184
 AliDataLoader.cxx:185
 AliDataLoader.cxx:186
 AliDataLoader.cxx:187
 AliDataLoader.cxx:188
 AliDataLoader.cxx:189
 AliDataLoader.cxx:190
 AliDataLoader.cxx:191
 AliDataLoader.cxx:192
 AliDataLoader.cxx:193
 AliDataLoader.cxx:194
 AliDataLoader.cxx:195
 AliDataLoader.cxx:196
 AliDataLoader.cxx:197
 AliDataLoader.cxx:198
 AliDataLoader.cxx:199
 AliDataLoader.cxx:200
 AliDataLoader.cxx:201
 AliDataLoader.cxx:202
 AliDataLoader.cxx:203
 AliDataLoader.cxx:204
 AliDataLoader.cxx:205
 AliDataLoader.cxx:206
 AliDataLoader.cxx:207
 AliDataLoader.cxx:208
 AliDataLoader.cxx:209
 AliDataLoader.cxx:210
 AliDataLoader.cxx:211
 AliDataLoader.cxx:212
 AliDataLoader.cxx:213
 AliDataLoader.cxx:214
 AliDataLoader.cxx:215
 AliDataLoader.cxx:216
 AliDataLoader.cxx:217
 AliDataLoader.cxx:218
 AliDataLoader.cxx:219
 AliDataLoader.cxx:220
 AliDataLoader.cxx:221
 AliDataLoader.cxx:222
 AliDataLoader.cxx:223
 AliDataLoader.cxx:224
 AliDataLoader.cxx:225
 AliDataLoader.cxx:226
 AliDataLoader.cxx:227
 AliDataLoader.cxx:228
 AliDataLoader.cxx:229
 AliDataLoader.cxx:230
 AliDataLoader.cxx:231
 AliDataLoader.cxx:232
 AliDataLoader.cxx:233
 AliDataLoader.cxx:234
 AliDataLoader.cxx:235
 AliDataLoader.cxx:236
 AliDataLoader.cxx:237
 AliDataLoader.cxx:238
 AliDataLoader.cxx:239
 AliDataLoader.cxx:240
 AliDataLoader.cxx:241
 AliDataLoader.cxx:242
 AliDataLoader.cxx:243
 AliDataLoader.cxx:244
 AliDataLoader.cxx:245
 AliDataLoader.cxx:246
 AliDataLoader.cxx:247
 AliDataLoader.cxx:248
 AliDataLoader.cxx:249
 AliDataLoader.cxx:250
 AliDataLoader.cxx:251
 AliDataLoader.cxx:252
 AliDataLoader.cxx:253
 AliDataLoader.cxx:254
 AliDataLoader.cxx:255
 AliDataLoader.cxx:256
 AliDataLoader.cxx:257
 AliDataLoader.cxx:258
 AliDataLoader.cxx:259
 AliDataLoader.cxx:260
 AliDataLoader.cxx:261
 AliDataLoader.cxx:262
 AliDataLoader.cxx:263
 AliDataLoader.cxx:264
 AliDataLoader.cxx:265
 AliDataLoader.cxx:266
 AliDataLoader.cxx:267
 AliDataLoader.cxx:268
 AliDataLoader.cxx:269
 AliDataLoader.cxx:270
 AliDataLoader.cxx:271
 AliDataLoader.cxx:272
 AliDataLoader.cxx:273
 AliDataLoader.cxx:274
 AliDataLoader.cxx:275
 AliDataLoader.cxx:276
 AliDataLoader.cxx:277
 AliDataLoader.cxx:278
 AliDataLoader.cxx:279
 AliDataLoader.cxx:280
 AliDataLoader.cxx:281
 AliDataLoader.cxx:282
 AliDataLoader.cxx:283
 AliDataLoader.cxx:284
 AliDataLoader.cxx:285
 AliDataLoader.cxx:286
 AliDataLoader.cxx:287
 AliDataLoader.cxx:288
 AliDataLoader.cxx:289
 AliDataLoader.cxx:290
 AliDataLoader.cxx:291
 AliDataLoader.cxx:292
 AliDataLoader.cxx:293
 AliDataLoader.cxx:294
 AliDataLoader.cxx:295
 AliDataLoader.cxx:296
 AliDataLoader.cxx:297
 AliDataLoader.cxx:298
 AliDataLoader.cxx:299
 AliDataLoader.cxx:300
 AliDataLoader.cxx:301
 AliDataLoader.cxx:302
 AliDataLoader.cxx:303
 AliDataLoader.cxx:304
 AliDataLoader.cxx:305
 AliDataLoader.cxx:306
 AliDataLoader.cxx:307
 AliDataLoader.cxx:308
 AliDataLoader.cxx:309
 AliDataLoader.cxx:310
 AliDataLoader.cxx:311
 AliDataLoader.cxx:312
 AliDataLoader.cxx:313
 AliDataLoader.cxx:314
 AliDataLoader.cxx:315
 AliDataLoader.cxx:316
 AliDataLoader.cxx:317
 AliDataLoader.cxx:318
 AliDataLoader.cxx:319
 AliDataLoader.cxx:320
 AliDataLoader.cxx:321
 AliDataLoader.cxx:322
 AliDataLoader.cxx:323
 AliDataLoader.cxx:324
 AliDataLoader.cxx:325
 AliDataLoader.cxx:326
 AliDataLoader.cxx:327
 AliDataLoader.cxx:328
 AliDataLoader.cxx:329
 AliDataLoader.cxx:330
 AliDataLoader.cxx:331
 AliDataLoader.cxx:332
 AliDataLoader.cxx:333
 AliDataLoader.cxx:334
 AliDataLoader.cxx:335
 AliDataLoader.cxx:336
 AliDataLoader.cxx:337
 AliDataLoader.cxx:338
 AliDataLoader.cxx:339
 AliDataLoader.cxx:340
 AliDataLoader.cxx:341
 AliDataLoader.cxx:342
 AliDataLoader.cxx:343
 AliDataLoader.cxx:344
 AliDataLoader.cxx:345
 AliDataLoader.cxx:346
 AliDataLoader.cxx:347
 AliDataLoader.cxx:348
 AliDataLoader.cxx:349
 AliDataLoader.cxx:350
 AliDataLoader.cxx:351
 AliDataLoader.cxx:352
 AliDataLoader.cxx:353
 AliDataLoader.cxx:354
 AliDataLoader.cxx:355
 AliDataLoader.cxx:356
 AliDataLoader.cxx:357
 AliDataLoader.cxx:358
 AliDataLoader.cxx:359
 AliDataLoader.cxx:360
 AliDataLoader.cxx:361
 AliDataLoader.cxx:362
 AliDataLoader.cxx:363
 AliDataLoader.cxx:364
 AliDataLoader.cxx:365
 AliDataLoader.cxx:366
 AliDataLoader.cxx:367
 AliDataLoader.cxx:368
 AliDataLoader.cxx:369
 AliDataLoader.cxx:370
 AliDataLoader.cxx:371
 AliDataLoader.cxx:372
 AliDataLoader.cxx:373
 AliDataLoader.cxx:374
 AliDataLoader.cxx:375
 AliDataLoader.cxx:376
 AliDataLoader.cxx:377
 AliDataLoader.cxx:378
 AliDataLoader.cxx:379
 AliDataLoader.cxx:380
 AliDataLoader.cxx:381
 AliDataLoader.cxx:382
 AliDataLoader.cxx:383
 AliDataLoader.cxx:384
 AliDataLoader.cxx:385
 AliDataLoader.cxx:386
 AliDataLoader.cxx:387
 AliDataLoader.cxx:388
 AliDataLoader.cxx:389
 AliDataLoader.cxx:390
 AliDataLoader.cxx:391
 AliDataLoader.cxx:392
 AliDataLoader.cxx:393
 AliDataLoader.cxx:394
 AliDataLoader.cxx:395
 AliDataLoader.cxx:396
 AliDataLoader.cxx:397
 AliDataLoader.cxx:398
 AliDataLoader.cxx:399
 AliDataLoader.cxx:400
 AliDataLoader.cxx:401
 AliDataLoader.cxx:402
 AliDataLoader.cxx:403
 AliDataLoader.cxx:404
 AliDataLoader.cxx:405
 AliDataLoader.cxx:406
 AliDataLoader.cxx:407
 AliDataLoader.cxx:408
 AliDataLoader.cxx:409
 AliDataLoader.cxx:410
 AliDataLoader.cxx:411
 AliDataLoader.cxx:412
 AliDataLoader.cxx:413
 AliDataLoader.cxx:414
 AliDataLoader.cxx:415
 AliDataLoader.cxx:416
 AliDataLoader.cxx:417
 AliDataLoader.cxx:418
 AliDataLoader.cxx:419
 AliDataLoader.cxx:420
 AliDataLoader.cxx:421
 AliDataLoader.cxx:422
 AliDataLoader.cxx:423
 AliDataLoader.cxx:424
 AliDataLoader.cxx:425
 AliDataLoader.cxx:426
 AliDataLoader.cxx:427
 AliDataLoader.cxx:428
 AliDataLoader.cxx:429
 AliDataLoader.cxx:430
 AliDataLoader.cxx:431
 AliDataLoader.cxx:432
 AliDataLoader.cxx:433
 AliDataLoader.cxx:434
 AliDataLoader.cxx:435
 AliDataLoader.cxx:436
 AliDataLoader.cxx:437
 AliDataLoader.cxx:438
 AliDataLoader.cxx:439
 AliDataLoader.cxx:440
 AliDataLoader.cxx:441
 AliDataLoader.cxx:442
 AliDataLoader.cxx:443
 AliDataLoader.cxx:444
 AliDataLoader.cxx:445
 AliDataLoader.cxx:446
 AliDataLoader.cxx:447
 AliDataLoader.cxx:448
 AliDataLoader.cxx:449
 AliDataLoader.cxx:450
 AliDataLoader.cxx:451
 AliDataLoader.cxx:452
 AliDataLoader.cxx:453
 AliDataLoader.cxx:454
 AliDataLoader.cxx:455
 AliDataLoader.cxx:456
 AliDataLoader.cxx:457
 AliDataLoader.cxx:458
 AliDataLoader.cxx:459
 AliDataLoader.cxx:460
 AliDataLoader.cxx:461
 AliDataLoader.cxx:462
 AliDataLoader.cxx:463
 AliDataLoader.cxx:464
 AliDataLoader.cxx:465
 AliDataLoader.cxx:466
 AliDataLoader.cxx:467
 AliDataLoader.cxx:468
 AliDataLoader.cxx:469
 AliDataLoader.cxx:470
 AliDataLoader.cxx:471
 AliDataLoader.cxx:472
 AliDataLoader.cxx:473
 AliDataLoader.cxx:474
 AliDataLoader.cxx:475
 AliDataLoader.cxx:476
 AliDataLoader.cxx:477
 AliDataLoader.cxx:478
 AliDataLoader.cxx:479
 AliDataLoader.cxx:480
 AliDataLoader.cxx:481
 AliDataLoader.cxx:482
 AliDataLoader.cxx:483
 AliDataLoader.cxx:484
 AliDataLoader.cxx:485
 AliDataLoader.cxx:486
 AliDataLoader.cxx:487
 AliDataLoader.cxx:488
 AliDataLoader.cxx:489
 AliDataLoader.cxx:490
 AliDataLoader.cxx:491
 AliDataLoader.cxx:492
 AliDataLoader.cxx:493
 AliDataLoader.cxx:494
 AliDataLoader.cxx:495
 AliDataLoader.cxx:496
 AliDataLoader.cxx:497
 AliDataLoader.cxx:498
 AliDataLoader.cxx:499
 AliDataLoader.cxx:500
 AliDataLoader.cxx:501
 AliDataLoader.cxx:502
 AliDataLoader.cxx:503
 AliDataLoader.cxx:504
 AliDataLoader.cxx:505
 AliDataLoader.cxx:506
 AliDataLoader.cxx:507
 AliDataLoader.cxx:508
 AliDataLoader.cxx:509
 AliDataLoader.cxx:510
 AliDataLoader.cxx:511
 AliDataLoader.cxx:512
 AliDataLoader.cxx:513
 AliDataLoader.cxx:514
 AliDataLoader.cxx:515
 AliDataLoader.cxx:516
 AliDataLoader.cxx:517
 AliDataLoader.cxx:518
 AliDataLoader.cxx:519
 AliDataLoader.cxx:520
 AliDataLoader.cxx:521
 AliDataLoader.cxx:522
 AliDataLoader.cxx:523
 AliDataLoader.cxx:524
 AliDataLoader.cxx:525
 AliDataLoader.cxx:526
 AliDataLoader.cxx:527
 AliDataLoader.cxx:528
 AliDataLoader.cxx:529
 AliDataLoader.cxx:530
 AliDataLoader.cxx:531
 AliDataLoader.cxx:532
 AliDataLoader.cxx:533
 AliDataLoader.cxx:534
 AliDataLoader.cxx:535
 AliDataLoader.cxx:536
 AliDataLoader.cxx:537
 AliDataLoader.cxx:538
 AliDataLoader.cxx:539
 AliDataLoader.cxx:540
 AliDataLoader.cxx:541
 AliDataLoader.cxx:542
 AliDataLoader.cxx:543
 AliDataLoader.cxx:544
 AliDataLoader.cxx:545
 AliDataLoader.cxx:546
 AliDataLoader.cxx:547
 AliDataLoader.cxx:548
 AliDataLoader.cxx:549
 AliDataLoader.cxx:550
 AliDataLoader.cxx:551
 AliDataLoader.cxx:552
 AliDataLoader.cxx:553
 AliDataLoader.cxx:554
 AliDataLoader.cxx:555
 AliDataLoader.cxx:556
 AliDataLoader.cxx:557
 AliDataLoader.cxx:558
 AliDataLoader.cxx:559
 AliDataLoader.cxx:560
 AliDataLoader.cxx:561
 AliDataLoader.cxx:562
 AliDataLoader.cxx:563
 AliDataLoader.cxx:564
 AliDataLoader.cxx:565
 AliDataLoader.cxx:566
 AliDataLoader.cxx:567
 AliDataLoader.cxx:568
 AliDataLoader.cxx:569
 AliDataLoader.cxx:570
 AliDataLoader.cxx:571
 AliDataLoader.cxx:572
 AliDataLoader.cxx:573
 AliDataLoader.cxx:574
 AliDataLoader.cxx:575
 AliDataLoader.cxx:576
 AliDataLoader.cxx:577
 AliDataLoader.cxx:578
 AliDataLoader.cxx:579
 AliDataLoader.cxx:580
 AliDataLoader.cxx:581
 AliDataLoader.cxx:582
 AliDataLoader.cxx:583
 AliDataLoader.cxx:584
 AliDataLoader.cxx:585
 AliDataLoader.cxx:586
 AliDataLoader.cxx:587
 AliDataLoader.cxx:588
 AliDataLoader.cxx:589
 AliDataLoader.cxx:590
 AliDataLoader.cxx:591
 AliDataLoader.cxx:592
 AliDataLoader.cxx:593
 AliDataLoader.cxx:594
 AliDataLoader.cxx:595
 AliDataLoader.cxx:596
 AliDataLoader.cxx:597
 AliDataLoader.cxx:598
 AliDataLoader.cxx:599
 AliDataLoader.cxx:600
 AliDataLoader.cxx:601
 AliDataLoader.cxx:602
 AliDataLoader.cxx:603
 AliDataLoader.cxx:604
 AliDataLoader.cxx:605
 AliDataLoader.cxx:606
 AliDataLoader.cxx:607
 AliDataLoader.cxx:608
 AliDataLoader.cxx:609
 AliDataLoader.cxx:610
 AliDataLoader.cxx:611
 AliDataLoader.cxx:612
 AliDataLoader.cxx:613
 AliDataLoader.cxx:614
 AliDataLoader.cxx:615
 AliDataLoader.cxx:616
 AliDataLoader.cxx:617
 AliDataLoader.cxx:618
 AliDataLoader.cxx:619
 AliDataLoader.cxx:620
 AliDataLoader.cxx:621
 AliDataLoader.cxx:622
 AliDataLoader.cxx:623
 AliDataLoader.cxx:624
 AliDataLoader.cxx:625
 AliDataLoader.cxx:626
 AliDataLoader.cxx:627
 AliDataLoader.cxx:628
 AliDataLoader.cxx:629
 AliDataLoader.cxx:630
 AliDataLoader.cxx:631
 AliDataLoader.cxx:632
 AliDataLoader.cxx:633
 AliDataLoader.cxx:634
 AliDataLoader.cxx:635
 AliDataLoader.cxx:636
 AliDataLoader.cxx:637
 AliDataLoader.cxx:638
 AliDataLoader.cxx:639
 AliDataLoader.cxx:640
 AliDataLoader.cxx:641
 AliDataLoader.cxx:642
 AliDataLoader.cxx:643
 AliDataLoader.cxx:644
 AliDataLoader.cxx:645
 AliDataLoader.cxx:646
 AliDataLoader.cxx:647
 AliDataLoader.cxx:648
 AliDataLoader.cxx:649
 AliDataLoader.cxx:650
 AliDataLoader.cxx:651
 AliDataLoader.cxx:652
 AliDataLoader.cxx:653
 AliDataLoader.cxx:654
 AliDataLoader.cxx:655
 AliDataLoader.cxx:656
 AliDataLoader.cxx:657
 AliDataLoader.cxx:658
 AliDataLoader.cxx:659
 AliDataLoader.cxx:660
 AliDataLoader.cxx:661
 AliDataLoader.cxx:662
 AliDataLoader.cxx:663
 AliDataLoader.cxx:664
 AliDataLoader.cxx:665
 AliDataLoader.cxx:666
 AliDataLoader.cxx:667
 AliDataLoader.cxx:668
 AliDataLoader.cxx:669
 AliDataLoader.cxx:670
 AliDataLoader.cxx:671
 AliDataLoader.cxx:672
 AliDataLoader.cxx:673
 AliDataLoader.cxx:674
 AliDataLoader.cxx:675
 AliDataLoader.cxx:676
 AliDataLoader.cxx:677
 AliDataLoader.cxx:678
 AliDataLoader.cxx:679
 AliDataLoader.cxx:680
 AliDataLoader.cxx:681
 AliDataLoader.cxx:682
 AliDataLoader.cxx:683
 AliDataLoader.cxx:684
 AliDataLoader.cxx:685
 AliDataLoader.cxx:686
 AliDataLoader.cxx:687