The method LocalInit() may be implemented to call locally (on the client)
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 May 2007 12:13:59 +0000 (12:13 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 May 2007 12:13:59 +0000 (12:13 +0000)
all initialization methods of the class. It is not mandatory and was created
in order to minimize the complexity and readability of the analysis macro.
DO NOT create in this method the histigrams or task output objects that will
go in the task output containers. Use CreateOutputObjects() method for that.

ANALYSIS/AliAnalysisManager.cxx
ANALYSIS/AliAnalysisTask.cxx
ANALYSIS/AliAnalysisTask.h

index 7e29eb7..f235c35 100644 (file)
@@ -582,6 +582,12 @@ void AliAnalysisManager::StartAnalysis(const char *type, TTree *tree)
    // Disable by default all branches
    if (tree) tree->SetBranchStatus("*",0);
    TChain *chain = dynamic_cast<TChain*>(tree);
+
+   // Initialize locally all tasks
+   TIter next(fTasks);
+   AliAnalysisTask *task;
+   while ((task=(AliAnalysisTask*)next())) task->LocalInit();
+
    switch (fMode) {
       case kLocalAnalysis:
          if (!tree) {
index b35021c..2f8db1b 100644 (file)
 //    }
 // }
 // 
-// The method CreateOutputObjects() has to be overloaded an will contain the
+// The method LocalInit() may be implemented to call locally (on the client)
+// all initialization methods of the class. It is not mandatory and was created
+// in order to minimize the complexity and readability of the analysis macro.
+// DO NOT create in this method the histigrams or task output objects that will
+// go in the task output containers. Use CreateOutputObjects for that.
+//
+// The method CreateOutputObjects() has to be implemented an will contain the
 // objects that should be created only once per session (e.g. output
 // histograms)
 //
@@ -378,6 +384,16 @@ void AliAnalysisTask::ConnectInputData(Option_t *)
 }
 
 //______________________________________________________________________________
+void AliAnalysisTask::LocalInit()
+{
+// The method LocalInit() may be implemented to call locally (on the client)
+// all initialization methods of the class. It is not mandatory and was created
+// in order to minimize the complexity and readability of the analysis macro.
+// DO NOT create in this method the histigrams or task output objects that will
+// go in the task output containers. Use CreateOutputObjects for that.
+}
+
+//______________________________________________________________________________
 void AliAnalysisTask::CreateOutputObjects()
 {
 // Called once per task either in PROOF or local mode. Overload to put some 
index 2303583..34c4c2c 100644 (file)
@@ -79,6 +79,8 @@ public:
   //=====================================================================
   // === OVERLOAD THIS AND CREATE YOUR OUTPUT OBJECTS (HISTOGRAMS,DATA) HERE
   virtual void              CreateOutputObjects();
+  // === OVERLOAD THIS IF YOU NEED TO INITIALIZE YOUR CLASS ON THE CLIENT
+  virtual void              LocalInit();
   // === OVERLOAD THIS IF YOU NEED TO TREAT INPUT FILE CHANGE
   virtual Bool_t            Notify();
   // Conect inputs/outputs to data containers (by AliAnalysisModule)