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

/* $Id$ */

//__________________________________________
////////////////////////////////////////////
//                                        //
//  class AliBaseLoader                   //
//                                        //
//  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), task producing it,    //
//  Quality Assurance(QA), QA Task, and   //
//  others.                               //
//                                        //
//                                        //
////////////////////////////////////////////

class TObject;
class TFolder;
class AliDataLoader;

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

class AliBaseLoader: public TNamed
{
  public:
    AliBaseLoader();
    AliBaseLoader(const TString& name, AliDataLoader* dl, Bool_t storeontop = kFALSE);
    
    virtual ~AliBaseLoader(){};
     
    virtual Int_t      Load(Option_t* opt="");
    virtual void       Unload();
    virtual Int_t      Reload();
    virtual Int_t      WriteData(Option_t* opt="");
    virtual void       Clean();
    virtual Int_t      Post();//Takes from file and sends to proper TFolder (Data Folder)
    virtual Int_t      Post(TObject* data);//Sends to proper TFolder (Data Folder)
    virtual TObject*   Get() const = 0; 
    Bool_t             IsLoaded()const{return fIsLoaded;}
    void               SetDataLoader(AliDataLoader* dl){fDataLoader = dl;}
    void               SetEventFolder(TFolder* /*ef*/){;}
    void               SetDoNotReload(Bool_t flag){fDoNotReload = flag;}
    Bool_t             DoNotReload() const {return fDoNotReload;}
    TDirectory*        GetDirectory() const;//returns pointer to directory where data are stored. 
    TObject*           GetFromDirectory(const char *name) const
      {return (GetDirectory())?GetDirectory()->Get(name):0x0;}    
   protected:
    
    virtual Int_t      AddToBoard(TObject* obj) = 0;//add to white board - board can be TTask or TFolder
    virtual void       RemoveFromBoard(TObject* obj) = 0;
    
    AliDataLoader*     GetDataLoader() const;

    Bool_t             fIsLoaded;    //!  flag indicating if data are loaded
    Bool_t             fStoreInTopOfFile;// if true, data are stored in top of file ->Indicates fDoNotReload == kTRUE

   private:

    AliBaseLoader(const AliBaseLoader&);   //Not implemented
    AliBaseLoader& operator=(const AliBaseLoader&); //Not implemented

    Bool_t             fDoNotReload; // if this flag is on object is not reloaded while GetEvent is called.
                                     //Specially important for tasks. Task loops over events while producing data, 
	                 //and has a base loader which writes it to file every processed event.
	                 //If this flag is not on, while taking next event, loader deletes task
	                 // and tries to get new one from file
    AliDataLoader*     fDataLoader;  //! pointer to Data Loader this Base Loader belongs to

 ClassDef(AliBaseLoader,1)    
};


#endif


 AliBaseLoader.h:1
 AliBaseLoader.h:2
 AliBaseLoader.h:3
 AliBaseLoader.h:4
 AliBaseLoader.h:5
 AliBaseLoader.h:6
 AliBaseLoader.h:7
 AliBaseLoader.h:8
 AliBaseLoader.h:9
 AliBaseLoader.h:10
 AliBaseLoader.h:11
 AliBaseLoader.h:12
 AliBaseLoader.h:13
 AliBaseLoader.h:14
 AliBaseLoader.h:15
 AliBaseLoader.h:16
 AliBaseLoader.h:17
 AliBaseLoader.h:18
 AliBaseLoader.h:19
 AliBaseLoader.h:20
 AliBaseLoader.h:21
 AliBaseLoader.h:22
 AliBaseLoader.h:23
 AliBaseLoader.h:24
 AliBaseLoader.h:25
 AliBaseLoader.h:26
 AliBaseLoader.h:27
 AliBaseLoader.h:28
 AliBaseLoader.h:29
 AliBaseLoader.h:30
 AliBaseLoader.h:31
 AliBaseLoader.h:32
 AliBaseLoader.h:33
 AliBaseLoader.h:34
 AliBaseLoader.h:35
 AliBaseLoader.h:36
 AliBaseLoader.h:37
 AliBaseLoader.h:38
 AliBaseLoader.h:39
 AliBaseLoader.h:40
 AliBaseLoader.h:41
 AliBaseLoader.h:42
 AliBaseLoader.h:43
 AliBaseLoader.h:44
 AliBaseLoader.h:45
 AliBaseLoader.h:46
 AliBaseLoader.h:47
 AliBaseLoader.h:48
 AliBaseLoader.h:49
 AliBaseLoader.h:50
 AliBaseLoader.h:51
 AliBaseLoader.h:52
 AliBaseLoader.h:53
 AliBaseLoader.h:54
 AliBaseLoader.h:55
 AliBaseLoader.h:56
 AliBaseLoader.h:57
 AliBaseLoader.h:58
 AliBaseLoader.h:59
 AliBaseLoader.h:60
 AliBaseLoader.h:61
 AliBaseLoader.h:62
 AliBaseLoader.h:63
 AliBaseLoader.h:64
 AliBaseLoader.h:65
 AliBaseLoader.h:66
 AliBaseLoader.h:67
 AliBaseLoader.h:68
 AliBaseLoader.h:69
 AliBaseLoader.h:70
 AliBaseLoader.h:71
 AliBaseLoader.h:72
 AliBaseLoader.h:73
 AliBaseLoader.h:74
 AliBaseLoader.h:75
 AliBaseLoader.h:76
 AliBaseLoader.h:77
 AliBaseLoader.h:78
 AliBaseLoader.h:79
 AliBaseLoader.h:80
 AliBaseLoader.h:81
 AliBaseLoader.h:82
 AliBaseLoader.h:83
 AliBaseLoader.h:84