ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "TString.h"
#include "TObjArray.h"

#include "AliLog.h"
#include "AliVEventHandler.h"

#include "AliAnalysisManager.h"
#include "AliAnalysisDataContainer.h"

#include "AliCounterCollection.h"
#include "AliAnalysisTaskPileup.h"
#endif

AliAnalysisTaskPileup* AddTaskPileup(TString ocdbPath="alien://folder=/alice/data/2010/OCDB"){

   // Get the pointer to the existing analysis manager via the static access method.
   //==============================================================================
   
   AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
      ::Error("AddTaskPileup", "No analysis manager to connect to.");
      return NULL;
   }   

   // This task requires an ESD or AOD output handler.
   // Check this using the analysis manager.
   //===============================================================================
   TString type = mgr->GetInputEventHandler()->GetDataType();
   if ( ! type.Contains("ESD") && ! type.Contains("AOD") ) {
     ::Error("AddTaskPileup", "Pileup task needs the manager to have an ESD input handler.");
     return NULL;
   }

   TString baseOutName = "pileupAnalysis.root";
   TString outputfile = mgr->GetCommonFileName();
   if ( ! outputfile.IsNull() ) outputfile += ":PWG3_muon_Pileup";
   else outputfile = baseOutName;

   AliAnalysisDataContainer* coutput1 = mgr->CreateContainer("PileupCounter",AliCounterCollection::Class(),AliAnalysisManager::kOutputContainer,outputfile);
   AliAnalysisDataContainer* coutput2 = mgr->CreateContainer("PileupCorrections",TObjArray::Class(),AliAnalysisManager::kParamContainer,outputfile);


   // Create the task, add it to the manager and configure it.
   //===========================================================================   

   AliAnalysisTaskPileup* pileupTask = new AliAnalysisTaskPileup("PileupTask");
   pileupTask->SetDefaultStorage(ocdbPath);
   mgr->AddTask(pileupTask);
   
   // Create ONLY the output containers for the data produced by the task.
   // Get and connect other common input/output containers via the manager as below
   //==============================================================================
   
   mgr->ConnectInput  (pileupTask,  0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput (pileupTask,  1, coutput1);
   mgr->ConnectOutput (pileupTask,  2, coutput2);

   return pileupTask;
}   
 AddTaskPileup.C:1
 AddTaskPileup.C:2
 AddTaskPileup.C:3
 AddTaskPileup.C:4
 AddTaskPileup.C:5
 AddTaskPileup.C:6
 AddTaskPileup.C:7
 AddTaskPileup.C:8
 AddTaskPileup.C:9
 AddTaskPileup.C:10
 AddTaskPileup.C:11
 AddTaskPileup.C:12
 AddTaskPileup.C:13
 AddTaskPileup.C:14
 AddTaskPileup.C:15
 AddTaskPileup.C:16
 AddTaskPileup.C:17
 AddTaskPileup.C:18
 AddTaskPileup.C:19
 AddTaskPileup.C:20
 AddTaskPileup.C:21
 AddTaskPileup.C:22
 AddTaskPileup.C:23
 AddTaskPileup.C:24
 AddTaskPileup.C:25
 AddTaskPileup.C:26
 AddTaskPileup.C:27
 AddTaskPileup.C:28
 AddTaskPileup.C:29
 AddTaskPileup.C:30
 AddTaskPileup.C:31
 AddTaskPileup.C:32
 AddTaskPileup.C:33
 AddTaskPileup.C:34
 AddTaskPileup.C:35
 AddTaskPileup.C:36
 AddTaskPileup.C:37
 AddTaskPileup.C:38
 AddTaskPileup.C:39
 AddTaskPileup.C:40
 AddTaskPileup.C:41
 AddTaskPileup.C:42
 AddTaskPileup.C:43
 AddTaskPileup.C:44
 AddTaskPileup.C:45
 AddTaskPileup.C:46
 AddTaskPileup.C:47
 AddTaskPileup.C:48
 AddTaskPileup.C:49
 AddTaskPileup.C:50
 AddTaskPileup.C:51
 AddTaskPileup.C:52
 AddTaskPileup.C:53
 AddTaskPileup.C:54
 AddTaskPileup.C:55
 AddTaskPileup.C:56
 AddTaskPileup.C:57
 AddTaskPileup.C:58
 AddTaskPileup.C:59
 AddTaskPileup.C:60
 AddTaskPileup.C:61