ROOT logo
#ifndef ALIDATALOADER_H
#define ALIDATALOADER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//__________________________________________
////////////////////////////////////////////
//                                        //
//  class AliDataLoader                   //
//                                        //
//  Loader responsible for one data type  //
//  i.e. Hits, Kine, etc.                 //
//  many objects type can be assciated    //
//  with one data type: storing object    //
//  (usually tree)                        //
//                                        //
////////////////////////////////////////////

class TTree;
class TFile;
class TFolder;

class AliBaseLoader;
class AliObjectLoader;
class AliRunLoader;

#include <TDirectory.h>
#include <TNamed.h>
#include <TString.h>

class AliDataLoader: public TNamed
 {
  public:
   AliDataLoader();
   AliDataLoader(const char* filename, const char* contname, const char* name, Option_t* opt = "t");
   virtual ~AliDataLoader();

   virtual Int_t      SetEvent();
   virtual Int_t      GetEvent();

   //shrtcuts method to basic data base loader 0  
   virtual Int_t      Load(Option_t* opt="");
   virtual void       Unload();
   virtual Int_t      Reload(); 
   virtual Int_t      WriteData(Option_t* opt="");
   virtual TTree*     Tree() const;
   virtual void       Clean();
   virtual void       MakeTree();
   virtual Int_t      OpenFile(Option_t* opt);

   virtual void       CloseFile();
   void               UnloadAll();
   void               CleanAll();
   const TString&     GetFileName() const {return fFileName;}
   TFile*             GetFile() const {return fFile;}
   TDirectory*        GetDirectory() const {return fDirectory;}
   const TString&     GetFileOption() const {return fFileOption;}
   const Int_t&       GetCompressionLevel() const {return fCompressionLevel;}
   
   Bool_t             Cd(){return (fDirectory)?fDirectory->cd():kFALSE;}
   
   virtual void       SetFileName(const TString& filename){fFileName = filename;}
   virtual void       SetFileOption(const Option_t* fileopt);
   virtual void       SetCompressionLevel(Int_t cl);

   Int_t              SetEventFolder(TFolder* eventfolder);//sets the event folder
   Int_t              SetFolder(TFolder* folder);//sets the data folder ??????
   TFolder*           GetEventFolder();
   TFolder*           GetFolder() const {return fFolder;}
   
//   TObject*           GetFromDirectory(const char *name){return (fDirectory)?fDirectory->Get(name):0x0;}
   void               SetFileNameSuffix(const TString& suffix);//adds the suffix before ".root", 
                                                               //e.g. TPC.Digits.root -> TPC.DigitsMerged.root
                                                               //made on Jiri Chudoba demand
   void               SetNumberOfEventsPerFile(Int_t nevpf) 
     {fNEventsPerFile = nevpf;}
   const TString      SetFileOffset(const TString& fname);//adds the proper number before .root extension suffix
   void               SetDirName(TString& dirname);

   void               AddBaseLoader(AliBaseLoader* bl);
   enum EStdBasicLoaders {kData = 0};//standard basic loaders identifiers

   AliBaseLoader*     GetBaseLoader(const TString& name) const;
   AliBaseLoader*     GetBaseLoader(Int_t n) const;
   AliObjectLoader*   GetBaseDataLoader();
   
   void               SetBaseDataLoader(AliBaseLoader* bl);
   
   Bool_t             CheckReload();//checks if we have to reload given file
   Bool_t             IsFileWritable() const;
   Bool_t             IsFileOpen() const;
   Bool_t             IsOptionContrary(const TString& option) const;
   
   void Synchronize();

  protected:
   AliRunLoader*      GetRunLoader();//gets the run-loader from event folder

  private:
   AliDataLoader(const AliDataLoader&); //Not implemented
   AliDataLoader& operator=(const AliDataLoader&); //Not implemented
      
   TString      fFileName; //name of the file 
   TFile*       fFile; //! pointer to file 
   TDirectory*  fDirectory; //!pointer to TDirectory
   TString      fFileOption; //!file option while opened 
   Int_t        fCompressionLevel; //Compression Level of File
   Int_t        fNEventsPerFile;  //defines number of events stored per one file
   
   TObjArray*   fBaseLoaders;//base loaders

   TFolder*     fEventFolder;//!event folder
   TFolder*     fFolder;//! folder with data
   
   ClassDef(AliDataLoader,3)
 };

#endif


 AliDataLoader.h:1
 AliDataLoader.h:2
 AliDataLoader.h:3
 AliDataLoader.h:4
 AliDataLoader.h:5
 AliDataLoader.h:6
 AliDataLoader.h:7
 AliDataLoader.h:8
 AliDataLoader.h:9
 AliDataLoader.h:10
 AliDataLoader.h:11
 AliDataLoader.h:12
 AliDataLoader.h:13
 AliDataLoader.h:14
 AliDataLoader.h:15
 AliDataLoader.h:16
 AliDataLoader.h:17
 AliDataLoader.h:18
 AliDataLoader.h:19
 AliDataLoader.h:20
 AliDataLoader.h:21
 AliDataLoader.h:22
 AliDataLoader.h:23
 AliDataLoader.h:24
 AliDataLoader.h:25
 AliDataLoader.h:26
 AliDataLoader.h:27
 AliDataLoader.h:28
 AliDataLoader.h:29
 AliDataLoader.h:30
 AliDataLoader.h:31
 AliDataLoader.h:32
 AliDataLoader.h:33
 AliDataLoader.h:34
 AliDataLoader.h:35
 AliDataLoader.h:36
 AliDataLoader.h:37
 AliDataLoader.h:38
 AliDataLoader.h:39
 AliDataLoader.h:40
 AliDataLoader.h:41
 AliDataLoader.h:42
 AliDataLoader.h:43
 AliDataLoader.h:44
 AliDataLoader.h:45
 AliDataLoader.h:46
 AliDataLoader.h:47
 AliDataLoader.h:48
 AliDataLoader.h:49
 AliDataLoader.h:50
 AliDataLoader.h:51
 AliDataLoader.h:52
 AliDataLoader.h:53
 AliDataLoader.h:54
 AliDataLoader.h:55
 AliDataLoader.h:56
 AliDataLoader.h:57
 AliDataLoader.h:58
 AliDataLoader.h:59
 AliDataLoader.h:60
 AliDataLoader.h:61
 AliDataLoader.h:62
 AliDataLoader.h:63
 AliDataLoader.h:64
 AliDataLoader.h:65
 AliDataLoader.h:66
 AliDataLoader.h:67
 AliDataLoader.h:68
 AliDataLoader.h:69
 AliDataLoader.h:70
 AliDataLoader.h:71
 AliDataLoader.h:72
 AliDataLoader.h:73
 AliDataLoader.h:74
 AliDataLoader.h:75
 AliDataLoader.h:76
 AliDataLoader.h:77
 AliDataLoader.h:78
 AliDataLoader.h:79
 AliDataLoader.h:80
 AliDataLoader.h:81
 AliDataLoader.h:82
 AliDataLoader.h:83
 AliDataLoader.h:84
 AliDataLoader.h:85
 AliDataLoader.h:86
 AliDataLoader.h:87
 AliDataLoader.h:88
 AliDataLoader.h:89
 AliDataLoader.h:90
 AliDataLoader.h:91
 AliDataLoader.h:92
 AliDataLoader.h:93
 AliDataLoader.h:94
 AliDataLoader.h:95
 AliDataLoader.h:96
 AliDataLoader.h:97
 AliDataLoader.h:98
 AliDataLoader.h:99
 AliDataLoader.h:100
 AliDataLoader.h:101
 AliDataLoader.h:102
 AliDataLoader.h:103
 AliDataLoader.h:104
 AliDataLoader.h:105
 AliDataLoader.h:106
 AliDataLoader.h:107
 AliDataLoader.h:108
 AliDataLoader.h:109
 AliDataLoader.h:110
 AliDataLoader.h:111
 AliDataLoader.h:112
 AliDataLoader.h:113
 AliDataLoader.h:114
 AliDataLoader.h:115
 AliDataLoader.h:116
 AliDataLoader.h:117
 AliDataLoader.h:118
 AliDataLoader.h:119
 AliDataLoader.h:120
 AliDataLoader.h:121
 AliDataLoader.h:122