1 #ifndef ALIANALYSISMANAGER_H
2 #define ALIANALYSISMANAGER_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 // AliAnalysysManager - Manager analysis class. Allows creation of several
11 // analysis tasks and data containers storing their input/output. Allows
12 // connecting/chaining tasks via shared data containers. Serializes the current
13 // event for all tasks depending only on initial input data.
14 //==============================================================================
16 #ifndef ROOT_TSelector
17 #include "TSelector.h"
21 class AliAnalysisDataContainer;
22 class AliAnalysisTask;
24 class AliAnalysisManager : public TSelector {
28 enum EAliAnalysisContType {
34 virtual ~AliAnalysisManager();
36 // Selector-specific methods
37 virtual void Init(TTree *tree);
38 virtual void Begin(TTree *tree);
39 virtual void SlaveBegin(TTree *tree);
40 virtual Bool_t Process(Long64_t entry);
41 virtual void SlaveTerminate();
42 virtual void Terminate();
45 TObjArray *GetContainers() const {return fContainers;}
46 TObjArray *GetInputs() const {return fInputs;}
47 TObjArray *GetOutputs() const {return fOutputs;}
48 TObjArray *GetTasks() const {return fTasks;}
49 TObjArray *GetTopTasks() const {return fTopTasks;}
50 TObjArray *GetZombieTasks() const {return fZombies;}
51 // AliAnalysisInfo *GetStatus() const {return fStatus;}
54 AliAnalysisDataContainer *CreateContainer(const char *name, TClass *datatype,
55 EAliAnalysisContType type=kNormalContainer);
57 // Including tasks and getting them
58 void AddTask(AliAnalysisTask *task);
59 AliAnalysisTask *GetTask(const char *name) const;
61 // Connecting data containers to task inputs/outputs
62 Bool_t ConnectInput(AliAnalysisTask *task, Int_t islot,
63 AliAnalysisDataContainer *cont);
64 Bool_t ConnectOutput(AliAnalysisTask *task, Int_t islot,
65 AliAnalysisDataContainer *cont);
67 void CleanContainers();
69 // Analysis initialization and execution, status
70 Bool_t InitAnalysis();
71 Bool_t IsInitialized() const {return fInitOK;}
73 void ExecAnalysis(Option_t *option="");
74 void FinishAnalysis();
75 void PrintStatus(Option_t *option="all") const;
78 Bool_t fInitOK; // Initialisation done
79 TObjArray *fContainers; //-> List of all containers
80 TObjArray *fInputs; //-> List of containers with input data
81 TObjArray *fOutputs; //-> List of containers with results
82 TObjArray *fTasks; //-> List of analysis tasks
83 TObjArray *fTopTasks; //-> List of top tasks
84 TObjArray *fZombies; //-> List of zombie tasks
85 // AliAnalysisInfo *fStatus; // Analysis info object
88 AliAnalysisManager(const AliAnalysisManager& other);
89 AliAnalysisManager& operator=(const AliAnalysisManager& other);
92 ClassDef(AliAnalysisManager,1) // Analysis manager class