#ifndef ALIANALYSISDATACONTAINER_H
#define ALIANALYSISDATACONTAINER_H
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TString
#include "TString.h"
#endif
#ifndef ROOT_TStopwatch
#include "TStopwatch.h"
#endif
class TClass;
class TFile;
class TObjArray;
class TCollection;
class AliAnalysisTask;
class AliAnalysisDataWrapper;
using std::ostream;
class AliAnalysisDataContainer : public TNamed {
public:
enum ENotifyMessage {
kDeleteData,
kSaveData,
kFileChange
};
enum EAnalysisContainerFlags {
kPostEventLoop = BIT(14),
kSpecialOutput = BIT(15),
kRegisterDataset = BIT(16),
kExchangeData = BIT(17),
kTouchedFlag = BIT(18)
};
AliAnalysisDataContainer();
AliAnalysisDataContainer(const AliAnalysisDataContainer &cont);
AliAnalysisDataContainer(const char *name, TClass *type);
virtual ~AliAnalysisDataContainer();
AliAnalysisDataContainer &operator=(const AliAnalysisDataContainer &cont);
TObject *GetData() const {return fData;}
const char *GetFileName() const {return fFileName.Data();}
const char *GetFolderName() const {return fFolderName.Data();}
TFile *GetFile() const {return fFile;}
TClass *GetType() const;
AliAnalysisTask *GetProducer() const {return fProducer;}
TObjArray *GetConsumers() const {return fConsumers;}
virtual void GetEntry(Long64_t ientry);
void Reset() {fData = 0; fDataReady = kFALSE; SetTouched(kFALSE);}
void ResetDataReady() {fDataReady = kFALSE;}
virtual Bool_t SetData(TObject *data, Option_t *option="");
void SetDataOwned(Bool_t flag) {fOwnedData = flag;}
void SetExchange(Bool_t flag) {TObject::SetBit(kExchangeData,flag);}
void SetPostEventLoop(Bool_t flag=kTRUE) {TObject::SetBit(kPostEventLoop,flag);}
void SetSpecialOutput(Bool_t flag=kTRUE) {TObject::SetBit(kSpecialOutput,flag);}
void SetRegisterDataset(Bool_t flag=kTRUE) {TObject::SetBit(kRegisterDataset,flag);}
void SetFileName(const char *filename);
void SetFile(TFile *f) {fFile = f;}
void SetProducer(AliAnalysisTask *prod, Int_t islot);
void SetTouched(Bool_t flag=kTRUE) {TObject::SetBit(kTouchedFlag,flag);}
void AddConsumer(AliAnalysisTask *cons, Int_t islot);
void DeleteData();
AliAnalysisDataWrapper *ExportData() const;
void ImportData(AliAnalysisDataWrapper *pack);
Bool_t IsDataReady() const {return fDataReady;}
Bool_t IsExchange() const {return TObject::TestBit(kExchangeData);}
Bool_t IsPostEventLoop() const {return TObject::TestBit(kPostEventLoop);}
Bool_t IsSpecialOutput() const {return TObject::TestBit(kSpecialOutput);}
Bool_t IsRegisterDataset() const {return TObject::TestBit(kRegisterDataset);}
Bool_t IsTouched() const {return TObject::TestBit(kTouchedFlag);}
Bool_t IsOwnedData() const {return fOwnedData;}
Bool_t ClientsExecuted() const;
Bool_t HasConsumers() const {return (fConsumers != 0);}
Bool_t HasProducer() const {return (fProducer != 0);}
virtual Long64_t Merge(TCollection *list);
virtual void NotifyChange(ENotifyMessage ) {;}
void PrintContainer(Option_t *option="all", Int_t indent=0) const;
private:
void SetType(TClass *type) {fType = type;}
protected:
Bool_t fDataReady;
Bool_t fOwnedData;
TString fFileName;
TString fFolderName;
TFile *fFile;
TObject *fData;
TClass *fType;
AliAnalysisTask *fProducer;
TObjArray *fConsumers;
ClassDef(AliAnalysisDataContainer,2)
};
class AliAnalysisDataWrapper : public TNamed {
public:
enum EAnalysisWrapperFlags {
kDeleteData = BIT(14)
};
AliAnalysisDataWrapper() : TNamed(), fData(NULL) {}
AliAnalysisDataWrapper(TObject *data);
AliAnalysisDataWrapper(const AliAnalysisDataWrapper &other)
: TNamed(other), fData(other.fData) {}
virtual ~AliAnalysisDataWrapper();
AliAnalysisDataWrapper &operator=(const AliAnalysisDataWrapper &other);
TObject *Data() const {return fData;}
virtual Long64_t Merge(TCollection *list);
void SetDeleteData(Bool_t flag=kTRUE) {TObject::SetBit(kDeleteData,flag);}
protected:
TObject *fData;
ClassDef(AliAnalysisDataWrapper, 1)
};
class AliAnalysisFileDescriptor : public TObject {
public:
AliAnalysisFileDescriptor();
AliAnalysisFileDescriptor(const TFile *file);
AliAnalysisFileDescriptor(const AliAnalysisFileDescriptor &other);
virtual ~AliAnalysisFileDescriptor();
AliAnalysisFileDescriptor &operator=(const AliAnalysisFileDescriptor &other);
void Done();
const char *GetGUID() const {return fGUID;}
Int_t GetImage() const {return fImage;}
const char *GetLfn() const {return fLfn;}
Int_t GetNreplicas() const {return fNreplicas;}
Long64_t GetOpenAt() const {return fOpenedAt;}
Double_t GetOpenTime() const {return fOpenTime;}
const char *GetPfn() const {return fPfn;}
Long64_t GetReadBytes() const {return fReadBytes;}
Long64_t GetSize() const {return fSize;}
const char *GetSE() const {return fSE;}
Double_t GetThroughput() const {return fThroughput;}
Double_t GetProcessingTime() const {return fProcessingTime;}
const char *GetUrl() const {return fUrl;}
Bool_t IsArchive() const {return fIsArchive;}
virtual void Print(Option_t *option="") const;
virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
void SetOpenTime(Double_t time) {fOpenTime = time;}
protected:
TString fLfn;
TString fGUID;
TString fUrl;
TString fPfn;
TString fSE;
Bool_t fIsArchive;
Int_t fImage;
Int_t fNreplicas;
Long64_t fStartBytes;
Long64_t fReadBytes;
Long64_t fSize;
Long64_t fOpenedAt;
Double_t fOpenTime;
Double_t fProcessingTime;
Double_t fThroughput;
TStopwatch fTimer;
ClassDef(AliAnalysisFileDescriptor,1)
};
#endif
AliAnalysisDataContainer.h:1 AliAnalysisDataContainer.h:2 AliAnalysisDataContainer.h:3 AliAnalysisDataContainer.h:4 AliAnalysisDataContainer.h:5 AliAnalysisDataContainer.h:6 AliAnalysisDataContainer.h:7 AliAnalysisDataContainer.h:8 AliAnalysisDataContainer.h:9 AliAnalysisDataContainer.h:10 AliAnalysisDataContainer.h:11 AliAnalysisDataContainer.h:12 AliAnalysisDataContainer.h:13 AliAnalysisDataContainer.h:14 AliAnalysisDataContainer.h:15 AliAnalysisDataContainer.h:16 AliAnalysisDataContainer.h:17 AliAnalysisDataContainer.h:18 AliAnalysisDataContainer.h:19 AliAnalysisDataContainer.h:20 AliAnalysisDataContainer.h:21 AliAnalysisDataContainer.h:22 AliAnalysisDataContainer.h:23 AliAnalysisDataContainer.h:24 AliAnalysisDataContainer.h:25 AliAnalysisDataContainer.h:26 AliAnalysisDataContainer.h:27 AliAnalysisDataContainer.h:28 AliAnalysisDataContainer.h:29 AliAnalysisDataContainer.h:30 AliAnalysisDataContainer.h:31 AliAnalysisDataContainer.h:32 AliAnalysisDataContainer.h:33 AliAnalysisDataContainer.h:34 AliAnalysisDataContainer.h:35 AliAnalysisDataContainer.h:36 AliAnalysisDataContainer.h:37 AliAnalysisDataContainer.h:38 AliAnalysisDataContainer.h:39 AliAnalysisDataContainer.h:40 AliAnalysisDataContainer.h:41 AliAnalysisDataContainer.h:42 AliAnalysisDataContainer.h:43 AliAnalysisDataContainer.h:44 AliAnalysisDataContainer.h:45 AliAnalysisDataContainer.h:46 AliAnalysisDataContainer.h:47 AliAnalysisDataContainer.h:48 AliAnalysisDataContainer.h:49 AliAnalysisDataContainer.h:50 AliAnalysisDataContainer.h:51 AliAnalysisDataContainer.h:52 AliAnalysisDataContainer.h:53 AliAnalysisDataContainer.h:54 AliAnalysisDataContainer.h:55 AliAnalysisDataContainer.h:56 AliAnalysisDataContainer.h:57 AliAnalysisDataContainer.h:58 AliAnalysisDataContainer.h:59 AliAnalysisDataContainer.h:60 AliAnalysisDataContainer.h:61 AliAnalysisDataContainer.h:62 AliAnalysisDataContainer.h:63 AliAnalysisDataContainer.h:64 AliAnalysisDataContainer.h:65 AliAnalysisDataContainer.h:66 AliAnalysisDataContainer.h:67 AliAnalysisDataContainer.h:68 AliAnalysisDataContainer.h:69 AliAnalysisDataContainer.h:70 AliAnalysisDataContainer.h:71 AliAnalysisDataContainer.h:72 AliAnalysisDataContainer.h:73 AliAnalysisDataContainer.h:74 AliAnalysisDataContainer.h:75 AliAnalysisDataContainer.h:76 AliAnalysisDataContainer.h:77 AliAnalysisDataContainer.h:78 AliAnalysisDataContainer.h:79 AliAnalysisDataContainer.h:80 AliAnalysisDataContainer.h:81 AliAnalysisDataContainer.h:82 AliAnalysisDataContainer.h:83 AliAnalysisDataContainer.h:84 AliAnalysisDataContainer.h:85 AliAnalysisDataContainer.h:86 AliAnalysisDataContainer.h:87 AliAnalysisDataContainer.h:88 AliAnalysisDataContainer.h:89 AliAnalysisDataContainer.h:90 AliAnalysisDataContainer.h:91 AliAnalysisDataContainer.h:92 AliAnalysisDataContainer.h:93 AliAnalysisDataContainer.h:94 AliAnalysisDataContainer.h:95 AliAnalysisDataContainer.h:96 AliAnalysisDataContainer.h:97 AliAnalysisDataContainer.h:98 AliAnalysisDataContainer.h:99 AliAnalysisDataContainer.h:100 AliAnalysisDataContainer.h:101 AliAnalysisDataContainer.h:102 AliAnalysisDataContainer.h:103 AliAnalysisDataContainer.h:104 AliAnalysisDataContainer.h:105 AliAnalysisDataContainer.h:106 AliAnalysisDataContainer.h:107 AliAnalysisDataContainer.h:108 AliAnalysisDataContainer.h:109 AliAnalysisDataContainer.h:110 AliAnalysisDataContainer.h:111 AliAnalysisDataContainer.h:112 AliAnalysisDataContainer.h:113 AliAnalysisDataContainer.h:114 AliAnalysisDataContainer.h:115 AliAnalysisDataContainer.h:116 AliAnalysisDataContainer.h:117 AliAnalysisDataContainer.h:118 AliAnalysisDataContainer.h:119 AliAnalysisDataContainer.h:120 AliAnalysisDataContainer.h:121 AliAnalysisDataContainer.h:122 AliAnalysisDataContainer.h:123 AliAnalysisDataContainer.h:124 AliAnalysisDataContainer.h:125 AliAnalysisDataContainer.h:126 AliAnalysisDataContainer.h:127 AliAnalysisDataContainer.h:128 AliAnalysisDataContainer.h:129 AliAnalysisDataContainer.h:130 AliAnalysisDataContainer.h:131 AliAnalysisDataContainer.h:132 AliAnalysisDataContainer.h:133 AliAnalysisDataContainer.h:134 AliAnalysisDataContainer.h:135 AliAnalysisDataContainer.h:136 AliAnalysisDataContainer.h:137 AliAnalysisDataContainer.h:138 AliAnalysisDataContainer.h:139 AliAnalysisDataContainer.h:140 AliAnalysisDataContainer.h:141 AliAnalysisDataContainer.h:142 AliAnalysisDataContainer.h:143 AliAnalysisDataContainer.h:144 AliAnalysisDataContainer.h:145 AliAnalysisDataContainer.h:146 AliAnalysisDataContainer.h:147 AliAnalysisDataContainer.h:148 AliAnalysisDataContainer.h:149 AliAnalysisDataContainer.h:150 AliAnalysisDataContainer.h:151 AliAnalysisDataContainer.h:152 AliAnalysisDataContainer.h:153 AliAnalysisDataContainer.h:154 AliAnalysisDataContainer.h:155 AliAnalysisDataContainer.h:156 AliAnalysisDataContainer.h:157 AliAnalysisDataContainer.h:158 AliAnalysisDataContainer.h:159 AliAnalysisDataContainer.h:160 AliAnalysisDataContainer.h:161 AliAnalysisDataContainer.h:162 AliAnalysisDataContainer.h:163 AliAnalysisDataContainer.h:164 AliAnalysisDataContainer.h:165 AliAnalysisDataContainer.h:166 AliAnalysisDataContainer.h:167 AliAnalysisDataContainer.h:168 AliAnalysisDataContainer.h:169 AliAnalysisDataContainer.h:170 AliAnalysisDataContainer.h:171 AliAnalysisDataContainer.h:172 AliAnalysisDataContainer.h:173 AliAnalysisDataContainer.h:174 AliAnalysisDataContainer.h:175 AliAnalysisDataContainer.h:176 AliAnalysisDataContainer.h:177 AliAnalysisDataContainer.h:178 AliAnalysisDataContainer.h:179 AliAnalysisDataContainer.h:180 AliAnalysisDataContainer.h:181 AliAnalysisDataContainer.h:182 AliAnalysisDataContainer.h:183 AliAnalysisDataContainer.h:184 AliAnalysisDataContainer.h:185 AliAnalysisDataContainer.h:186 AliAnalysisDataContainer.h:187 AliAnalysisDataContainer.h:188 AliAnalysisDataContainer.h:189 AliAnalysisDataContainer.h:190 AliAnalysisDataContainer.h:191 AliAnalysisDataContainer.h:192 AliAnalysisDataContainer.h:193 AliAnalysisDataContainer.h:194 AliAnalysisDataContainer.h:195 AliAnalysisDataContainer.h:196 AliAnalysisDataContainer.h:197 AliAnalysisDataContainer.h:198 AliAnalysisDataContainer.h:199 AliAnalysisDataContainer.h:200 AliAnalysisDataContainer.h:201 AliAnalysisDataContainer.h:202 AliAnalysisDataContainer.h:203 AliAnalysisDataContainer.h:204 AliAnalysisDataContainer.h:205 AliAnalysisDataContainer.h:206 AliAnalysisDataContainer.h:207 AliAnalysisDataContainer.h:208 AliAnalysisDataContainer.h:209 AliAnalysisDataContainer.h:210 AliAnalysisDataContainer.h:211 AliAnalysisDataContainer.h:212 AliAnalysisDataContainer.h:213