]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliAnalysisDataSlot.h
- Dipole rotated wr to ALICE coordinate system
[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 AliAnalysisDataContainer;
22 class AliAnalysisTask;
23
24 class AliAnalysisDataSlot : public TNamed {
25
26 public:
27    AliAnalysisDataSlot() : TNamed(), fType(NULL), fParent(NULL), fContainer(NULL) {}
28    AliAnalysisDataSlot(TClass *type, AliAnalysisTask *task);
29    AliAnalysisDataSlot(const AliAnalysisDataSlot &slot);
30    virtual ~AliAnalysisDataSlot() {}
31
32    // Assignment
33    AliAnalysisDataSlot &operator=(const AliAnalysisDataSlot &slot);
34    // Connect some container to the slot
35    Bool_t                    ConnectContainer(AliAnalysisDataContainer *cont);
36    // Getters
37    void                     *GetBranchAddress(const char *branch) const;
38    Bool_t                    SetBranchAddress(const char *branch, void *address);
39    TClass                   *GetType() const;
40    AliAnalysisTask          *GetParent() const    {return fParent;}
41    AliAnalysisDataContainer *GetContainer() const {return fContainer;}
42    TObject                  *GetData() const;
43    // Slot status checking
44    Bool_t                    IsConnected() const  {return ((fContainer)?kTRUE:kFALSE);}
45    Bool_t                    IsDataReady() const;
46
47 private:
48    void                      SetType(TClass *type) {fType = type;}
49    
50 protected:
51    TClass                   *fType;       //! Type of the slot
52    AliAnalysisTask          *fParent;     // Analysis task to which the slot belongs
53    AliAnalysisDataContainer *fContainer;  // Container connected to the slot
54    
55    ClassDef(AliAnalysisDataSlot,1)  // Class describing an analysis data slot
56 };
57 #endif