AliRoot Core  3dc7879 (3dc7879)
AliAnalysisDataContainer Class Reference

AliAnalysysDataContainer AliAnalysysDataContainer - Container of data of arbitrary type deriving from TObject used for analysis. A container must be connected to the output data slot of a single analysis task (producer) , but also as input slot for possibly several other tasks (consumers). The connected slots must enforce the same data type as the container (or a derived type). A container becomes the owner of the contained data once this was produced. More...

#include <AliAnalysisDataContainer.h>

Inheritance diagram for AliAnalysisDataContainer:

Public Types

enum  ENotifyMessage { kDeleteData, kSaveData, kFileChange }
 
enum  EAnalysisContainerFlags {
  kPostEventLoop = BIT(14), kSpecialOutput = BIT(15), kRegisterDataset = BIT(16), kExchangeData = BIT(17),
  kTouchedFlag = BIT(18)
}
 

Public Member Functions

 AliAnalysisDataContainer ()
 
 AliAnalysisDataContainer (const AliAnalysisDataContainer &cont)
 
 AliAnalysisDataContainer (const char *name, TClass *type)
 
virtual ~AliAnalysisDataContainer ()
 
AliAnalysisDataContaineroperator= (const AliAnalysisDataContainer &cont)
 Assignment. More...
 
TObject * GetData () const
 Getters. More...
 
const char * GetFileName () const
 
const char * GetFolderName () const
 
TFile * GetFile () const
 
TClass * GetType () const
 
AliAnalysisTaskGetProducer () const
 
TObjArrayGetConsumers () const
 
virtual void GetEntry (Long64_t ientry)
 
void Reset ()
 Setters. More...
 
void ResetDataReady ()
 
virtual Bool_t SetData (TObject *data, Option_t *option="")
 
void SetDataOwned (Bool_t flag)
 
void SetExchange (Bool_t flag)
 
void SetPostEventLoop (Bool_t flag=kTRUE)
 
void SetSpecialOutput (Bool_t flag=kTRUE)
 
void SetRegisterDataset (Bool_t flag=kTRUE)
 
void SetFileName (const char *filename)
 
void SetFile (TFile *f)
 
void SetProducer (AliAnalysisTask *prod, Int_t islot)
 
void SetTouched (Bool_t flag=kTRUE)
 
void AddConsumer (AliAnalysisTask *cons, Int_t islot)
 
void DeleteData ()
 
AliAnalysisDataWrapperExportData () const
 Wrapping. More...
 
void ImportData (AliAnalysisDataWrapper *pack)
 
Bool_t IsDataReady () const
 Container status checking. More...
 
Bool_t IsExchange () const
 
Bool_t IsPostEventLoop () const
 
Bool_t IsSpecialOutput () const
 
Bool_t IsRegisterDataset () const
 
Bool_t IsTouched () const
 
Bool_t IsOwnedData () const
 
Bool_t ClientsExecuted () const
 
Bool_t HasConsumers () const
 
Bool_t HasProducer () const
 
virtual Long64_t Merge (TCollection *list)
 Container merging. More...
 
virtual void NotifyChange (ENotifyMessage)
 Send a notify signal to the container. More...
 
void PrintContainer (Option_t *option="all", Int_t indent=0) const
 Print connected tasks/status. More...
 

Protected Attributes

Bool_t fDataReady
 Flag that data is ready. More...
 
Bool_t fOwnedData
 Flag data ownership. More...
 
TString fFileName
 File storing the data. More...
 
TString fFolderName
 Folder name in the output file. More...
 
TFile * fFile
 ! Opened file More...
 
TObject * fData
 Contained data. More...
 
TClass * fType
 ! Type of contained data More...
 
AliAnalysisTaskfProducer
 Analysis task to which the slot belongs. More...
 
TObjArrayfConsumers
 List of consumers of the data. More...
 

Private Member Functions

void SetType (TClass *type)
 

Detailed Description

AliAnalysysDataContainer AliAnalysysDataContainer - Container of data of arbitrary type deriving from TObject used for analysis. A container must be connected to the output data slot of a single analysis task (producer) , but also as input slot for possibly several other tasks (consumers). The connected slots must enforce the same data type as the container (or a derived type). A container becomes the owner of the contained data once this was produced.

Author
Andrei Gheata
Date
31/05/2006

Definition at line 39 of file AliAnalysisDataContainer.h.

Member Enumeration Documentation

Enumerator
kPostEventLoop 
kSpecialOutput 
kRegisterDataset 
kExchangeData 
kTouchedFlag 

Definition at line 47 of file AliAnalysisDataContainer.h.

Enumerator
kDeleteData 
kSaveData 
kFileChange 

Definition at line 42 of file AliAnalysisDataContainer.h.

Constructor & Destructor Documentation

AliAnalysisDataContainer::AliAnalysisDataContainer ( )

Definition at line 68 of file AliAnalysisDataContainer.cxx.

AliAnalysisDataContainer::AliAnalysisDataContainer ( const AliAnalysisDataContainer cont)

Copy ctor.

Definition at line 101 of file AliAnalysisDataContainer.cxx.

AliAnalysisDataContainer::AliAnalysisDataContainer ( const char *  name,
TClass *  type 
)

Default constructor.

Definition at line 83 of file AliAnalysisDataContainer.cxx.

AliAnalysisDataContainer::~AliAnalysisDataContainer ( )
virtual

Destructor. Deletes data ! (What happens if data is a container ???)

Definition at line 124 of file AliAnalysisDataContainer.cxx.

Member Function Documentation

void AliAnalysisDataContainer::AddConsumer ( AliAnalysisTask cons,
Int_t  islot 
)

Add a consumer for contained data;

Definition at line 170 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisTask::ConnectInput(), and SetTouched().

Bool_t AliAnalysisDataContainer::ClientsExecuted ( ) const

Check if all client tasks have executed.

Definition at line 194 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisManager::CleanContainers(), DeleteData(), and IsOwnedData().

void AliAnalysisDataContainer::DeleteData ( )

Delete data if not needed anymore.

Definition at line 207 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisManager::CleanContainers(), and SetTouched().

AliAnalysisDataWrapper * AliAnalysisDataContainer::ExportData ( ) const

Wrapping.

Wraps data for sending it through the net.

Definition at line 433 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisManager::PackOutput(), and SetTouched().

TObjArray* AliAnalysisDataContainer::GetConsumers ( ) const
inline
void AliAnalysisDataContainer::GetEntry ( Long64_t  ientry)
virtual

If data is ready and derives from TTree or from TBranch, this will get the requested entry in memory if not already loaded.

Definition at line 238 of file AliAnalysisDataContainer.cxx.

Referenced by GetConsumers().

TFile* AliAnalysisDataContainer::GetFile ( ) const
inline
const char* AliAnalysisDataContainer::GetFolderName ( ) const
inline
AliAnalysisTask* AliAnalysisDataContainer::GetProducer ( ) const
inline
Bool_t AliAnalysisDataContainer::HasConsumers ( ) const
inline
Bool_t AliAnalysisDataContainer::HasProducer ( ) const
inline

Definition at line 98 of file AliAnalysisDataContainer.h.

void AliAnalysisDataContainer::ImportData ( AliAnalysisDataWrapper pack)

Unwraps data from a data wrapper.

Definition at line 450 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisManager::ImportWrappers(), and SetTouched().

Bool_t AliAnalysisDataContainer::IsDataReady ( ) const
inline
Bool_t AliAnalysisDataContainer::IsExchange ( ) const
inline
Bool_t AliAnalysisDataContainer::IsOwnedData ( ) const
inline

Definition at line 95 of file AliAnalysisDataContainer.h.

Referenced by AliAnalysisManager::CleanContainers().

Bool_t AliAnalysisDataContainer::IsPostEventLoop ( ) const
inline
Bool_t AliAnalysisDataContainer::IsRegisterDataset ( ) const
inline
Bool_t AliAnalysisDataContainer::IsTouched ( ) const
inline

Definition at line 94 of file AliAnalysisDataContainer.h.

Referenced by AliAnalysisTask::ProducersTouched().

Long64_t AliAnalysisDataContainer::Merge ( TCollection *  list)
virtual

Container merging.

Merge a list of containers with this one. Containers in the list must have data of the same type.

Definition at line 259 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisDataWrapper::Data(), and HasProducer().

virtual void AliAnalysisDataContainer::NotifyChange ( ENotifyMessage  )
inlinevirtual

Send a notify signal to the container.

Definition at line 102 of file AliAnalysisDataContainer.h.

AliAnalysisDataContainer & AliAnalysisDataContainer::operator= ( const AliAnalysisDataContainer cont)

Assignment.

Assignment.

Definition at line 133 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisDataWrapper::AliAnalysisDataWrapper().

void AliAnalysisDataContainer::PrintContainer ( Option_t *  option = "all",
Int_t  indent = 0 
) const

Print connected tasks/status.

Print info about this container.

Definition at line 300 of file AliAnalysisDataContainer.cxx.

Referenced by NotifyChange(), AliAnalysisTask::PrintContainers(), and AliAnalysisManager::PrintStatus().

void AliAnalysisDataContainer::Reset ( void  )
inline

Setters.

Definition at line 71 of file AliAnalysisDataContainer.h.

Referenced by AliAnalysisTask::Reset().

void AliAnalysisDataContainer::ResetDataReady ( )
inline

Definition at line 72 of file AliAnalysisDataContainer.h.

Bool_t AliAnalysisDataContainer::SetData ( TObject *  data,
Option_t *  option = "" 
)
virtual

Set the data as READY only if it was published by the producer. If there is no producer declared, this is a top level container.

Definition at line 334 of file AliAnalysisDataContainer.cxx.

Referenced by AliPriorsTask(), AliAnalysisManager::ExecAnalysis(), AliAnalysisManager::Init(), AliAnalysisTask::PostData(), ResetDataReady(), and AliReconstruction::SlaveBegin().

void AliAnalysisDataContainer::SetDataOwned ( Bool_t  flag)
inline
void AliAnalysisDataContainer::SetExchange ( Bool_t  flag)
inline

Definition at line 75 of file AliAnalysisDataContainer.h.

Referenced by AliAnalysisManager::CreateContainer().

void AliAnalysisDataContainer::SetFile ( TFile *  f)
inline
void AliAnalysisDataContainer::SetFileName ( const char *  filename)

The filename field can be actually composed by the actual file name followed by :dirname (optional): filename = file_name[:dirname] No slashes (/) allowed

Definition at line 376 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisManager::CreateContainer(), and SetRegisterDataset().

void AliAnalysisDataContainer::SetPostEventLoop ( Bool_t  flag = kTRUE)
inline
void AliAnalysisDataContainer::SetProducer ( AliAnalysisTask prod,
Int_t  islot 
)

Set the producer of data. The slot number is required for data type checking.

Definition at line 398 of file AliAnalysisDataContainer.cxx.

Referenced by AliAnalysisTask::ConnectOutput(), and SetFile().

void AliAnalysisDataContainer::SetRegisterDataset ( Bool_t  flag = kTRUE)
inline

Definition at line 78 of file AliAnalysisDataContainer.h.

void AliAnalysisDataContainer::SetSpecialOutput ( Bool_t  flag = kTRUE)
inline
void AliAnalysisDataContainer::SetTouched ( Bool_t  flag = kTRUE)
inline

Definition at line 82 of file AliAnalysisDataContainer.h.

Referenced by AliAnalysisManager::PrintStatus(), and Reset().

void AliAnalysisDataContainer::SetType ( TClass *  type)
inlineprivate

Definition at line 107 of file AliAnalysisDataContainer.h.

Referenced by GetType().

Member Data Documentation

TObjArray* AliAnalysisDataContainer::fConsumers
protected
Bool_t AliAnalysisDataContainer::fDataReady
protected

Flag that data is ready.

Definition at line 110 of file AliAnalysisDataContainer.h.

Referenced by DeleteData(), GetEntry(), ImportData(), IsDataReady(), operator=(), Reset(), ResetDataReady(), SetData(), and SetProducer().

TFile* AliAnalysisDataContainer::fFile
protected

! Opened file

Definition at line 114 of file AliAnalysisDataContainer.h.

Referenced by GetFile(), operator=(), and SetFile().

TString AliAnalysisDataContainer::fFileName
protected

File storing the data.

Definition at line 112 of file AliAnalysisDataContainer.h.

Referenced by GetFileName(), operator=(), PrintContainer(), and SetFileName().

TString AliAnalysisDataContainer::fFolderName
protected

Folder name in the output file.

Definition at line 113 of file AliAnalysisDataContainer.h.

Referenced by GetFolderName(), operator=(), PrintContainer(), and SetFileName().

Bool_t AliAnalysisDataContainer::fOwnedData
protected

Flag data ownership.

Definition at line 111 of file AliAnalysisDataContainer.h.

Referenced by DeleteData(), IsOwnedData(), operator=(), SetDataOwned(), and ~AliAnalysisDataContainer().

AliAnalysisTask* AliAnalysisDataContainer::fProducer
protected

Analysis task to which the slot belongs.

Definition at line 117 of file AliAnalysisDataContainer.h.

Referenced by AddConsumer(), GetProducer(), HasProducer(), operator=(), PrintContainer(), SetData(), and SetProducer().

TClass* AliAnalysisDataContainer::fType
protected

! Type of contained data

Definition at line 116 of file AliAnalysisDataContainer.h.

Referenced by AliAnalysisDataContainer(), GetEntry(), GetType(), and SetType().


The documentation for this class was generated from the following files: