ROOT logo
AliAnalysisTask *AddTaskJPSI(Bool_t hasMC_aod = kFALSE){
  //get the current analysis manager
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTasJPSI", "No analysis manager found.");
    return NULL;
  }
  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskJPSI", "This task requires an input event handler");
    return NULL;
  }

  //Do we have an MC handler?
  Bool_t hasMC=(mgr->GetMCtruthEventHandler()!=0x0);
  
  TString configFile("$ALICE_ROOT/PWGDQ/dielectron/macros/ConfigJpsi2eeData.C");
  if (hasMC) configFile="$ALICE_ROOT/PWGDQ/dielectron/macros/ConfigJpsi2eeEff.C";
  Bool_t isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();

  //create task and add it to the manager
  AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDie");
  mgr->AddTask(task);
  
  //load dielectron configuration file
  gROOT->LoadMacro(configFile.Data());
  
  //add dielectron analysis with different cuts to the task
  for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file
    AliDielectron *jpsi=ConfigJpsi2ee(i,isAOD);
    if (isAOD) jpsi->SetHasMC(hasMC_aod);
    if (jpsi) task->AddDielectron(jpsi);
  }

  //Add event filter
  AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
  eventCuts->SetRequireVertex();
  eventCuts->SetMinVtxContributors(1);
  eventCuts->SetVertexZ(-10.,10.);
  if (isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);

  // add event filter
  task->SetEventFilter(eventCuts);

  // pileup rejection
  task->SetRejectPileup();
  
  //----------------------
  //create data containers
  //----------------------
  
  TString containerName = mgr->GetCommonFileName();
  containerName += ":PWGDQ_dielectron";
    
  //create output container
  
  AliAnalysisDataContainer *cOutputHist1 =
    mgr->CreateContainer("jpsi_QA", TList::Class(), AliAnalysisManager::kOutputContainer,
                         containerName.Data());
  
  AliAnalysisDataContainer *cOutputHist2 =
    mgr->CreateContainer("jpsi_CF", TList::Class(), AliAnalysisManager::kOutputContainer,
                         containerName.Data());

  AliAnalysisDataContainer *cOutputHist3 =
    mgr->CreateContainer("jpsi_EventStat", TH1D::Class(), AliAnalysisManager::kOutputContainer,
                         containerName.Data());
  
  mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(task, 1, cOutputHist1);
  mgr->ConnectOutput(task, 2, cOutputHist2);
  mgr->ConnectOutput(task, 3, cOutputHist3);
  
  return task;
}
 AddTaskJPSI.C:1
 AddTaskJPSI.C:2
 AddTaskJPSI.C:3
 AddTaskJPSI.C:4
 AddTaskJPSI.C:5
 AddTaskJPSI.C:6
 AddTaskJPSI.C:7
 AddTaskJPSI.C:8
 AddTaskJPSI.C:9
 AddTaskJPSI.C:10
 AddTaskJPSI.C:11
 AddTaskJPSI.C:12
 AddTaskJPSI.C:13
 AddTaskJPSI.C:14
 AddTaskJPSI.C:15
 AddTaskJPSI.C:16
 AddTaskJPSI.C:17
 AddTaskJPSI.C:18
 AddTaskJPSI.C:19
 AddTaskJPSI.C:20
 AddTaskJPSI.C:21
 AddTaskJPSI.C:22
 AddTaskJPSI.C:23
 AddTaskJPSI.C:24
 AddTaskJPSI.C:25
 AddTaskJPSI.C:26
 AddTaskJPSI.C:27
 AddTaskJPSI.C:28
 AddTaskJPSI.C:29
 AddTaskJPSI.C:30
 AddTaskJPSI.C:31
 AddTaskJPSI.C:32
 AddTaskJPSI.C:33
 AddTaskJPSI.C:34
 AddTaskJPSI.C:35
 AddTaskJPSI.C:36
 AddTaskJPSI.C:37
 AddTaskJPSI.C:38
 AddTaskJPSI.C:39
 AddTaskJPSI.C:40
 AddTaskJPSI.C:41
 AddTaskJPSI.C:42
 AddTaskJPSI.C:43
 AddTaskJPSI.C:44
 AddTaskJPSI.C:45
 AddTaskJPSI.C:46
 AddTaskJPSI.C:47
 AddTaskJPSI.C:48
 AddTaskJPSI.C:49
 AddTaskJPSI.C:50
 AddTaskJPSI.C:51
 AddTaskJPSI.C:52
 AddTaskJPSI.C:53
 AddTaskJPSI.C:54
 AddTaskJPSI.C:55
 AddTaskJPSI.C:56
 AddTaskJPSI.C:57
 AddTaskJPSI.C:58
 AddTaskJPSI.C:59
 AddTaskJPSI.C:60
 AddTaskJPSI.C:61
 AddTaskJPSI.C:62
 AddTaskJPSI.C:63
 AddTaskJPSI.C:64
 AddTaskJPSI.C:65
 AddTaskJPSI.C:66
 AddTaskJPSI.C:67
 AddTaskJPSI.C:68
 AddTaskJPSI.C:69
 AddTaskJPSI.C:70
 AddTaskJPSI.C:71
 AddTaskJPSI.C:72
 AddTaskJPSI.C:73
 AddTaskJPSI.C:74
 AddTaskJPSI.C:75