#endif
class TClass;
+class TFile;
class TObjArray;
class TCollection;
class AliAnalysisTask;
class AliAnalysisDataWrapper;
-class AliESD;
class AliAnalysisDataContainer : public TNamed {
kFileChange
};
enum EAnalysisContainerFlags {
- kContEvtByEvt
+ kPostEventLoop = BIT(14),
+ kSpecialOutput = BIT(15)
};
AliAnalysisDataContainer();
AliAnalysisDataContainer(const AliAnalysisDataContainer &cont);
// Getters
TObject *GetData() const {return fData;}
const char *GetFileName() const {return fFileName.Data();}
+ TFile *GetFile() const {return fFile;}
TClass *GetType() const;
AliAnalysisTask *GetProducer() const {return fProducer;}
TObjArray *GetConsumers() const {return fConsumers;}
void ResetDataReady() {fDataReady = kFALSE;}
virtual Bool_t SetData(TObject *data, Option_t *option="");
void SetDataOwned(Bool_t flag) {fOwnedData = flag;}
- void SetEventByEvent(Bool_t flag=kTRUE) {TObject::SetBit(kContEvtByEvt,flag);}
+ void SetPostEventLoop(Bool_t flag=kTRUE) {TObject::SetBit(kPostEventLoop,flag);}
+ void SetSpecialOutput(Bool_t flag=kTRUE) {TObject::SetBit(kSpecialOutput,flag);}
void SetFileName(const char *filename) {fFileName = filename;}
+ void SetFile(TFile *f) {fFile = f;}
void SetProducer(AliAnalysisTask *prod, Int_t islot);
void AddConsumer(AliAnalysisTask *cons, Int_t islot);
void DeleteData();
void ImportData(AliAnalysisDataWrapper *pack);
// Container status checking
Bool_t IsDataReady() const {return fDataReady;}
- Bool_t IsEventByEvent() const {return TObject::TestBit(kContEvtByEvt);}
+ Bool_t IsPostEventLoop() const {return TObject::TestBit(kPostEventLoop);}
+ Bool_t IsSpecialOutput() const {return TObject::TestBit(kSpecialOutput);}
Bool_t IsOwnedData() const {return fOwnedData;}
Bool_t ClientsExecuted() const;
Bool_t HasConsumers() const {return (fConsumers != 0);}
Bool_t fDataReady; // Flag that data is ready
Bool_t fOwnedData; // Flag data ownership
TString fFileName; // File storing the data
+ TFile *fFile; //! Opened file
TObject *fData; // Contained data
TClass *fType; //! Type of contained data
AliAnalysisTask *fProducer; // Analysis task to which the slot belongs
class AliAnalysisDataWrapper : public TNamed {
public:
+
+enum EAnalysisWrapperFlags {
+ kDeleteData = BIT(14)
+};
AliAnalysisDataWrapper() : TNamed(), fData(NULL) {}
- AliAnalysisDataWrapper(TObject *data) : TNamed(), fData(data) {}
+ AliAnalysisDataWrapper(TObject *data);
AliAnalysisDataWrapper(const AliAnalysisDataWrapper &other)
: TNamed(other), fData(other.fData) {}
- virtual ~AliAnalysisDataWrapper() {}
+ virtual ~AliAnalysisDataWrapper();
// Assignment
AliAnalysisDataWrapper &operator=(const AliAnalysisDataWrapper &other);
TObject *Data() const {return fData;}
// Merging
virtual Long64_t Merge(TCollection *list);
+ void SetDeleteData(Bool_t flag=kTRUE) {TObject::SetBit(kDeleteData,flag);}
protected:
TObject *fData; // Wrapped data