ROOT logo
AliAnalysisTask *AddTaskFlowTPCEMCalEP(Double_t openingAngle = 0.1,
                                       Double_t invMass = 0.01,
                                       TString nonHFEalgorithm = "KF")
{
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskFlowTPCEMCalEP", "No analysis manager found.");
    return NULL;
  }

  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskFlowTPCEMCalEP", "This task requires an input event handler");
    return NULL;
  }
  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  if (type=="AOD"){
    ::Error("AddTaskFlowTPCEMCalEP", "The tasks exits because AODs are in input");
    return NULL;
  }
  Bool_t MCthere=kFALSE;
  AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>(mgr->GetMCtruthEventHandler());
  if(!mcH){
    MCthere=kFALSE;
  }else{
    MCthere=kTRUE;
  }
  
  
  //Event plane task
  AliEPSelectionTask *eventplaneTask = new AliEPSelectionTask("EventplaneSelection");
  eventplaneTask->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kSemiCentral | AliVEvent::kCentral | AliVEvent::kEMCEGA | AliVEvent::kEMCEJE);

  eventplaneTask->SetTrackType("TPC");
  eventplaneTask->SetUsePtWeight();
  eventplaneTask->SetUsePhiWeight();
  eventplaneTask->SetSaveTrackContribution();

  mgr->AddTask(eventplaneTask);

  TString containerName3 = mgr->GetCommonFileName();
  containerName3 += ":PWGHF_hfeCalEventPlane";
  
  AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("EPStat",TList::Class(), AliAnalysisManager::kOutputContainer,containerName3.Data());
  mgr->ConnectInput(eventplaneTask, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(eventplaneTask,1,coutput1);

  //analysis task 
//   gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/AliAnalysisTaskFlowTPCEMCalEP.cxx++g");
  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/PbPb/ConfigHFE_FLOW_TPCEMCal_EP.C");

  AliAnalysisTaskFlowTPCEMCalEP *taskMB = ConfigHFE_FLOW_TPCEMCal_EP(MCthere,openingAngle,invMass,nonHFEalgorithm);
  AliAnalysisTaskFlowTPCEMCalEP *taskcorrMB = ConfigHFE_FLOW_TPCEMCal_EP(MCthere,openingAngle,invMass,nonHFEalgorithm);
  AliAnalysisTaskFlowTPCEMCalEP *taskTR = ConfigHFE_FLOW_TPCEMCal_EP(MCthere,openingAngle,invMass,nonHFEalgorithm);
 
  mgr->AddTask(taskcorrMB);
  mgr->AddTask(taskMB);
  mgr->AddTask(taskTR);
  
  // Flattened semi central trigger

  taskcorrMB->SelectCollisionCandidates(AliVEvent::kAny);

  TString containerName = mgr->GetCommonFileName();
  containerName += ":PWGHF_hfeCalcorrSemiCentralV2";
  
  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("histcorrMB", TList::Class(),AliAnalysisManager::kOutputContainer, containerName.Data());
  mgr->ConnectInput(taskcorrMB, 0, cinput);
  mgr->ConnectOutput(taskcorrMB, 1, coutput1);

  // Central trigger
  taskMB->SelectCollisionCandidates(AliVEvent::kSemiCentral | AliVEvent::kCentral);

  TString containerName = mgr->GetCommonFileName();
  containerName += ":PWGHF_hfeCalCentralV2";
  
  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("histMB", TList::Class(),AliAnalysisManager::kOutputContainer, containerName.Data());
  mgr->ConnectInput(taskMB, 0, cinput);
  mgr->ConnectOutput(taskMB, 1, coutput1);
  
  //L1 gamma and jet trigger
  taskTR->SelectCollisionCandidates(AliVEvent::kEMCEGA | AliVEvent::kEMCEJE);

  TString containerName2 = mgr->GetCommonFileName();
  containerName2 += ":PWGHF_hfeCalL1GammaV2";
  
  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("histTR", TList::Class(),AliAnalysisManager::kOutputContainer, containerName2.Data());
  mgr->ConnectInput(taskTR, 0, cinput);
  mgr->ConnectOutput(taskTR, 1, coutput1);
  
  if(MCthere){
    
    AliAnalysisTaskFlowTPCEMCalEP *taskMC = ConfigHFE_FLOW_TPCEMCal_EP(MCthere,openingAngle,invMass,nonHFEalgorithm);
    mgr->AddTask(taskMC);
    
    taskMC->SelectCollisionCandidates(AliVEvent::kMB);
    
    TString containerName3 = mgr->GetCommonFileName();
    containerName3 += ":PWGHF_hfeCalMCV2";
    
    AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
    AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("histMC", TList::Class(),AliAnalysisManager::kOutputContainer, containerName3.Data());
    mgr->ConnectInput(taskMC, 0, cinput);
    mgr->ConnectOutput(taskMC, 1, coutput1);
  }
  
  
  return NULL;
}

 AddTaskFlowTPCEMCalEP.C:1
 AddTaskFlowTPCEMCalEP.C:2
 AddTaskFlowTPCEMCalEP.C:3
 AddTaskFlowTPCEMCalEP.C:4
 AddTaskFlowTPCEMCalEP.C:5
 AddTaskFlowTPCEMCalEP.C:6
 AddTaskFlowTPCEMCalEP.C:7
 AddTaskFlowTPCEMCalEP.C:8
 AddTaskFlowTPCEMCalEP.C:9
 AddTaskFlowTPCEMCalEP.C:10
 AddTaskFlowTPCEMCalEP.C:11
 AddTaskFlowTPCEMCalEP.C:12
 AddTaskFlowTPCEMCalEP.C:13
 AddTaskFlowTPCEMCalEP.C:14
 AddTaskFlowTPCEMCalEP.C:15
 AddTaskFlowTPCEMCalEP.C:16
 AddTaskFlowTPCEMCalEP.C:17
 AddTaskFlowTPCEMCalEP.C:18
 AddTaskFlowTPCEMCalEP.C:19
 AddTaskFlowTPCEMCalEP.C:20
 AddTaskFlowTPCEMCalEP.C:21
 AddTaskFlowTPCEMCalEP.C:22
 AddTaskFlowTPCEMCalEP.C:23
 AddTaskFlowTPCEMCalEP.C:24
 AddTaskFlowTPCEMCalEP.C:25
 AddTaskFlowTPCEMCalEP.C:26
 AddTaskFlowTPCEMCalEP.C:27
 AddTaskFlowTPCEMCalEP.C:28
 AddTaskFlowTPCEMCalEP.C:29
 AddTaskFlowTPCEMCalEP.C:30
 AddTaskFlowTPCEMCalEP.C:31
 AddTaskFlowTPCEMCalEP.C:32
 AddTaskFlowTPCEMCalEP.C:33
 AddTaskFlowTPCEMCalEP.C:34
 AddTaskFlowTPCEMCalEP.C:35
 AddTaskFlowTPCEMCalEP.C:36
 AddTaskFlowTPCEMCalEP.C:37
 AddTaskFlowTPCEMCalEP.C:38
 AddTaskFlowTPCEMCalEP.C:39
 AddTaskFlowTPCEMCalEP.C:40
 AddTaskFlowTPCEMCalEP.C:41
 AddTaskFlowTPCEMCalEP.C:42
 AddTaskFlowTPCEMCalEP.C:43
 AddTaskFlowTPCEMCalEP.C:44
 AddTaskFlowTPCEMCalEP.C:45
 AddTaskFlowTPCEMCalEP.C:46
 AddTaskFlowTPCEMCalEP.C:47
 AddTaskFlowTPCEMCalEP.C:48
 AddTaskFlowTPCEMCalEP.C:49
 AddTaskFlowTPCEMCalEP.C:50
 AddTaskFlowTPCEMCalEP.C:51
 AddTaskFlowTPCEMCalEP.C:52
 AddTaskFlowTPCEMCalEP.C:53
 AddTaskFlowTPCEMCalEP.C:54
 AddTaskFlowTPCEMCalEP.C:55
 AddTaskFlowTPCEMCalEP.C:56
 AddTaskFlowTPCEMCalEP.C:57
 AddTaskFlowTPCEMCalEP.C:58
 AddTaskFlowTPCEMCalEP.C:59
 AddTaskFlowTPCEMCalEP.C:60
 AddTaskFlowTPCEMCalEP.C:61
 AddTaskFlowTPCEMCalEP.C:62
 AddTaskFlowTPCEMCalEP.C:63
 AddTaskFlowTPCEMCalEP.C:64
 AddTaskFlowTPCEMCalEP.C:65
 AddTaskFlowTPCEMCalEP.C:66
 AddTaskFlowTPCEMCalEP.C:67
 AddTaskFlowTPCEMCalEP.C:68
 AddTaskFlowTPCEMCalEP.C:69
 AddTaskFlowTPCEMCalEP.C:70
 AddTaskFlowTPCEMCalEP.C:71
 AddTaskFlowTPCEMCalEP.C:72
 AddTaskFlowTPCEMCalEP.C:73
 AddTaskFlowTPCEMCalEP.C:74
 AddTaskFlowTPCEMCalEP.C:75
 AddTaskFlowTPCEMCalEP.C:76
 AddTaskFlowTPCEMCalEP.C:77
 AddTaskFlowTPCEMCalEP.C:78
 AddTaskFlowTPCEMCalEP.C:79
 AddTaskFlowTPCEMCalEP.C:80
 AddTaskFlowTPCEMCalEP.C:81
 AddTaskFlowTPCEMCalEP.C:82
 AddTaskFlowTPCEMCalEP.C:83
 AddTaskFlowTPCEMCalEP.C:84
 AddTaskFlowTPCEMCalEP.C:85
 AddTaskFlowTPCEMCalEP.C:86
 AddTaskFlowTPCEMCalEP.C:87
 AddTaskFlowTPCEMCalEP.C:88
 AddTaskFlowTPCEMCalEP.C:89
 AddTaskFlowTPCEMCalEP.C:90
 AddTaskFlowTPCEMCalEP.C:91
 AddTaskFlowTPCEMCalEP.C:92
 AddTaskFlowTPCEMCalEP.C:93
 AddTaskFlowTPCEMCalEP.C:94
 AddTaskFlowTPCEMCalEP.C:95
 AddTaskFlowTPCEMCalEP.C:96
 AddTaskFlowTPCEMCalEP.C:97
 AddTaskFlowTPCEMCalEP.C:98
 AddTaskFlowTPCEMCalEP.C:99
 AddTaskFlowTPCEMCalEP.C:100
 AddTaskFlowTPCEMCalEP.C:101
 AddTaskFlowTPCEMCalEP.C:102
 AddTaskFlowTPCEMCalEP.C:103
 AddTaskFlowTPCEMCalEP.C:104
 AddTaskFlowTPCEMCalEP.C:105
 AddTaskFlowTPCEMCalEP.C:106
 AddTaskFlowTPCEMCalEP.C:107
 AddTaskFlowTPCEMCalEP.C:108
 AddTaskFlowTPCEMCalEP.C:109
 AddTaskFlowTPCEMCalEP.C:110
 AddTaskFlowTPCEMCalEP.C:111
 AddTaskFlowTPCEMCalEP.C:112
 AddTaskFlowTPCEMCalEP.C:113
 AddTaskFlowTPCEMCalEP.C:114