]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliAnalysisDataSlot.h
Bug #92237 fixed as Barth suggested
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisDataSlot.h
1 #ifndef ALIANALYSISDATASLOT_H
2 #define ALIANALYSISDATASLOT_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 // Author: Andrei Gheata, 31/05/2006
8
9 //==============================================================================
10 //   AliAnalysysDataSlot - Class representing a data slot of an analysis task.
11 //      An analysis slot enforces a certain data type required by the Exec()
12 //      method of the analysis task. The slot must be connected to a data 
13 //      container with data of the same type.
14 //==============================================================================
15
16 #ifndef ROOT_TNamed
17 #include "TNamed.h"
18 #endif
19
20 class TClass;
21 class TTree;
22 class AliAnalysisDataContainer;
23 class AliAnalysisTask;
24
25 class AliAnalysisDataSlot : public TNamed {
26
27 public:
28    AliAnalysisDataSlot() : TNamed(), fType(NULL), fParent(NULL), fContainer(NULL) {}
29    AliAnalysisDataSlot(TClass *type, AliAnalysisTask *task);
30    AliAnalysisDataSlot(const AliAnalysisDataSlot &slot);
31    virtual ~AliAnalysisDataSlot() {}
32
33    // Assignment
34    AliAnalysisDataSlot &operator=(const AliAnalysisDataSlot &slot);
35    // Connect some container to the slot
36    Bool_t                    ConnectContainer(AliAnalysisDataContainer *cont);
37    static Int_t              EnableBranch(const char *bname, TTree *tree);
38    // Getters
39    void                     *GetBranchAddress(const char *branch) const;
40    Bool_t                    SetBranchAddress(const char *branch, void *address);
41    TClass                   *GetType() const;
42    AliAnalysisTask          *GetParent() const    {return fParent;}
43    AliAnalysisDataContainer *GetContainer() const {return fContainer;}
44    TObject                  *GetData() const;
45    // Slot status checking
46    Bool_t                    IsConnected() const  {return ((fContainer)?kTRUE:kFALSE);}
47    Bool_t                    IsDataReady() const;
48
49 private:
50    void                      SetType(TClass *type) {fType = type;}
51    
52 protected:
53    TClass                   *fType;       //! Type of the slot
54    AliAnalysisTask          *fParent;     // Analysis task to which the slot belongs
55    AliAnalysisDataContainer *fContainer;  // Container connected to the slot
56    
57    ClassDef(AliAnalysisDataSlot,1)  // Class describing an analysis data slot
58 };
59 #endif