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 */
7 // Author: Andrei Gheata, 31/05/2006
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 //==============================================================================
21 class AliAnalysisDataContainer;
22 class AliAnalysisTask;
24 class AliAnalysisDataSlot : public TNamed {
27 AliAnalysisDataSlot() : TNamed(), fType(NULL), fParent(NULL), fContainer(NULL) {}
28 AliAnalysisDataSlot(TClass *type, AliAnalysisTask *task);
29 AliAnalysisDataSlot(const AliAnalysisDataSlot &slot);
30 virtual ~AliAnalysisDataSlot() {}
33 AliAnalysisDataSlot &operator=(const AliAnalysisDataSlot &slot);
34 // Connect some container to the slot
35 Bool_t ConnectContainer(AliAnalysisDataContainer *cont);
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;
48 void SetType(TClass *type) {fType = type;}
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
55 ClassDef(AliAnalysisDataSlot,1) // Class describing an analysis data slot