Fix for raw ctp decoding (Marek)
[u/mrichter/AliRoot.git] / STEER / STEER / AliDataLoader.h
1 #ifndef ALIDATALOADER_H
2 #define ALIDATALOADER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //__________________________________________
9 ////////////////////////////////////////////
10 //                                        //
11 //  class AliDataLoader                   //
12 //                                        //
13 //  Loader responsible for one data type  //
14 //  i.e. Hits, Kine, etc.                 //
15 //  many objects type can be assciated    //
16 //  with one data type: storing object    //
17 //  (usually tree)                        //
18 //                                        //
19 ////////////////////////////////////////////
20
21 class TTree;
22 class TFile;
23 class TFolder;
24
25 class AliBaseLoader;
26 class AliObjectLoader;
27 class AliRunLoader;
28
29 #include <TDirectory.h>
30 #include <TNamed.h>
31 #include <TString.h>
32
33 class AliDataLoader: public TNamed
34  {
35   public:
36    AliDataLoader();
37    AliDataLoader(const char* filename, const char* contname, const char* name, Option_t* opt = "t");
38    virtual ~AliDataLoader();
39
40    virtual Int_t      SetEvent();
41    virtual Int_t      GetEvent();
42
43    //shrtcuts method to basic data base loader 0  
44    virtual Int_t      Load(Option_t* opt="");
45    virtual void       Unload();
46    virtual Int_t      Reload(); 
47    virtual Int_t      WriteData(Option_t* opt="");
48    virtual TTree*     Tree() const;
49    virtual void       Clean();
50    virtual void       MakeTree();
51    virtual Int_t      OpenFile(Option_t* opt);
52
53    virtual void       CloseFile();
54    void               UnloadAll();
55    void               CleanAll();
56    const TString&     GetFileName() const {return fFileName;}
57    TFile*             GetFile() const {return fFile;}
58    TDirectory*        GetDirectory() const {return fDirectory;}
59    const TString&     GetFileOption() const {return fFileOption;}
60    const Int_t&       GetCompressionLevel() const {return fCompressionLevel;}
61    
62    Bool_t             Cd(){return (fDirectory)?fDirectory->cd():kFALSE;}
63    
64    virtual void       SetFileName(const TString& filename){fFileName = filename;}
65    virtual void       SetFileOption(const Option_t* fileopt);
66    virtual void       SetCompressionLevel(Int_t cl);
67
68    Int_t              SetEventFolder(TFolder* eventfolder);//sets the event folder
69    Int_t              SetFolder(TFolder* folder);//sets the data folder ??????
70    TFolder*           GetEventFolder();
71    TFolder*           GetFolder() const {return fFolder;}
72    
73 //   TObject*           GetFromDirectory(const char *name){return (fDirectory)?fDirectory->Get(name):0x0;}
74    void               SetFileNameSuffix(const TString& suffix);//adds the suffix before ".root", 
75                                                                //e.g. TPC.Digits.root -> TPC.DigitsMerged.root
76                                                                //made on Jiri Chudoba demand
77    void               SetNumberOfEventsPerFile(Int_t nevpf) 
78      {fNEventsPerFile = nevpf;}
79    const TString      SetFileOffset(const TString& fname);//adds the proper number before .root extension suffix
80    void               SetDirName(TString& dirname);
81
82    void               AddBaseLoader(AliBaseLoader* bl);
83    enum EStdBasicLoaders {kData = 0};//standard basic loaders identifiers
84
85    AliBaseLoader*     GetBaseLoader(const TString& name) const;
86    AliBaseLoader*     GetBaseLoader(Int_t n) const;
87    AliObjectLoader*   GetBaseDataLoader();
88    
89    void               SetBaseDataLoader(AliBaseLoader* bl);
90    
91    Bool_t             CheckReload();//checks if we have to reload given file
92    Bool_t             IsFileWritable() const;
93    Bool_t             IsFileOpen() const;
94    Bool_t             IsOptionContrary(const TString& option) const;
95    
96    void Synchronize();
97
98   protected:
99    AliRunLoader*      GetRunLoader();//gets the run-loader from event folder
100
101   private:
102    AliDataLoader(const AliDataLoader&); //Not implemented
103    AliDataLoader& operator=(const AliDataLoader&); //Not implemented
104       
105    TString      fFileName; //name of the file 
106    TFile*       fFile; //! pointer to file 
107    TDirectory*  fDirectory; //!pointer to TDirectory
108    TString      fFileOption; //!file option while opened 
109    Int_t        fCompressionLevel; //Compression Level of File
110    Int_t        fNEventsPerFile;  //defines number of events stored per one file
111    
112    TObjArray*   fBaseLoaders;//base loaders
113
114    TFolder*     fEventFolder;//!event folder
115    TFolder*     fFolder;//! folder with data
116    
117    ClassDef(AliDataLoader,3)
118  };
119
120 #endif
121
122