ROOT logo
AliAnalysisTaskMultPbTracks ** AddTaskMultPbPbTracksAllCentrality(TString outfilename, AliESDtrackCuts * esdTrackCuts = 0, AliAnalysisMultPbCentralitySelector * centr, Int_t ncentr, Float_t * minCentr, Float_t *maxCentr)
{
  // TODO: add some parameters to set the centrality for this task, and maybe the name of the task
  // TODO: shall I use the same file and different dirs for the different centralities?

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskPhysicsSelection", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Check the analysis type using the event handlers connected to the analysis manager.
  //==============================================================================
  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskPhysicsSelection", "This task requires an input event handler");
    return NULL;
  }
  TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  
  if (inputDataType != "ESD") {
    Printf("ERROR! This task can only run on ESDs!");
  }

  // Configure analysis
  //===========================================================================
    
    
  cout << "Booking " << ncentr << " Tasks" << endl;
  AliAnalysisTaskMultPbTracks ** tasks = new AliAnalysisTaskMultPbTracks*[ncentr];
  
  for(Int_t icentr = 0; icentr < ncentr; icentr++){  

    tasks[icentr] = new AliAnalysisTaskMultPbTracks(Form("TaskMultPbTracks_%d",icentr));
    mgr->AddTask(tasks[icentr]);
  
    // Set Cuts
    if (!esdTrackCuts)
      {
	printf("ERROR: esdTrackCuts could not be created\n");
	return;
      }  
    tasks[icentr]->SetTrackCuts(esdTrackCuts);

    // set centrality
    AliAnalysisMultPbCentralitySelector * centrBin = (AliAnalysisMultPbCentralitySelector*) centr->Clone();
    centrBin->SetMultRange(minCentr[icentr],maxCentr[icentr]);
    tasks[icentr]->SetCentralitySelector(centrBin);

    // TODO:
    // IO into folders in a file?

    // Set I/O
    TString outfilenameCentr = outfilename;
    outfilenameCentr.ReplaceAll(".root",Form("_%2.2d.root",icentr));
    AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
    AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(Form("cmultPbTracksOutHM_%d",icentr),
							      AliAnalysisMultPbTrackHistoManager::Class(),
							      AliAnalysisManager::kOutputContainer,
							      outfilenameCentr.Data());
    AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("cmultPbTracksOutCT_%d",icentr),
							      AliESDtrackCuts::Class(),
							      AliAnalysisManager::kOutputContainer,
							      outfilenameCentr.Data());
    AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("cmultPbTracksOutCM_%d",icentr),
							      AliAnalysisMultPbCentralitySelector::Class(),
							      AliAnalysisManager::kOutputContainer,
							      outfilenameCentr.Data());

    mgr->ConnectInput(tasks[icentr], 0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput(tasks[icentr],1,coutput1);
    mgr->ConnectOutput(tasks[icentr],2,coutput2);
    mgr->ConnectOutput(tasks[icentr],3,coutput3);

  }
  return tasks;
}   
 AddTaskMultPbPbTracksAllCentrality.C:1
 AddTaskMultPbPbTracksAllCentrality.C:2
 AddTaskMultPbPbTracksAllCentrality.C:3
 AddTaskMultPbPbTracksAllCentrality.C:4
 AddTaskMultPbPbTracksAllCentrality.C:5
 AddTaskMultPbPbTracksAllCentrality.C:6
 AddTaskMultPbPbTracksAllCentrality.C:7
 AddTaskMultPbPbTracksAllCentrality.C:8
 AddTaskMultPbPbTracksAllCentrality.C:9
 AddTaskMultPbPbTracksAllCentrality.C:10
 AddTaskMultPbPbTracksAllCentrality.C:11
 AddTaskMultPbPbTracksAllCentrality.C:12
 AddTaskMultPbPbTracksAllCentrality.C:13
 AddTaskMultPbPbTracksAllCentrality.C:14
 AddTaskMultPbPbTracksAllCentrality.C:15
 AddTaskMultPbPbTracksAllCentrality.C:16
 AddTaskMultPbPbTracksAllCentrality.C:17
 AddTaskMultPbPbTracksAllCentrality.C:18
 AddTaskMultPbPbTracksAllCentrality.C:19
 AddTaskMultPbPbTracksAllCentrality.C:20
 AddTaskMultPbPbTracksAllCentrality.C:21
 AddTaskMultPbPbTracksAllCentrality.C:22
 AddTaskMultPbPbTracksAllCentrality.C:23
 AddTaskMultPbPbTracksAllCentrality.C:24
 AddTaskMultPbPbTracksAllCentrality.C:25
 AddTaskMultPbPbTracksAllCentrality.C:26
 AddTaskMultPbPbTracksAllCentrality.C:27
 AddTaskMultPbPbTracksAllCentrality.C:28
 AddTaskMultPbPbTracksAllCentrality.C:29
 AddTaskMultPbPbTracksAllCentrality.C:30
 AddTaskMultPbPbTracksAllCentrality.C:31
 AddTaskMultPbPbTracksAllCentrality.C:32
 AddTaskMultPbPbTracksAllCentrality.C:33
 AddTaskMultPbPbTracksAllCentrality.C:34
 AddTaskMultPbPbTracksAllCentrality.C:35
 AddTaskMultPbPbTracksAllCentrality.C:36
 AddTaskMultPbPbTracksAllCentrality.C:37
 AddTaskMultPbPbTracksAllCentrality.C:38
 AddTaskMultPbPbTracksAllCentrality.C:39
 AddTaskMultPbPbTracksAllCentrality.C:40
 AddTaskMultPbPbTracksAllCentrality.C:41
 AddTaskMultPbPbTracksAllCentrality.C:42
 AddTaskMultPbPbTracksAllCentrality.C:43
 AddTaskMultPbPbTracksAllCentrality.C:44
 AddTaskMultPbPbTracksAllCentrality.C:45
 AddTaskMultPbPbTracksAllCentrality.C:46
 AddTaskMultPbPbTracksAllCentrality.C:47
 AddTaskMultPbPbTracksAllCentrality.C:48
 AddTaskMultPbPbTracksAllCentrality.C:49
 AddTaskMultPbPbTracksAllCentrality.C:50
 AddTaskMultPbPbTracksAllCentrality.C:51
 AddTaskMultPbPbTracksAllCentrality.C:52
 AddTaskMultPbPbTracksAllCentrality.C:53
 AddTaskMultPbPbTracksAllCentrality.C:54
 AddTaskMultPbPbTracksAllCentrality.C:55
 AddTaskMultPbPbTracksAllCentrality.C:56
 AddTaskMultPbPbTracksAllCentrality.C:57
 AddTaskMultPbPbTracksAllCentrality.C:58
 AddTaskMultPbPbTracksAllCentrality.C:59
 AddTaskMultPbPbTracksAllCentrality.C:60
 AddTaskMultPbPbTracksAllCentrality.C:61
 AddTaskMultPbPbTracksAllCentrality.C:62
 AddTaskMultPbPbTracksAllCentrality.C:63
 AddTaskMultPbPbTracksAllCentrality.C:64
 AddTaskMultPbPbTracksAllCentrality.C:65
 AddTaskMultPbPbTracksAllCentrality.C:66
 AddTaskMultPbPbTracksAllCentrality.C:67
 AddTaskMultPbPbTracksAllCentrality.C:68
 AddTaskMultPbPbTracksAllCentrality.C:69
 AddTaskMultPbPbTracksAllCentrality.C:70
 AddTaskMultPbPbTracksAllCentrality.C:71
 AddTaskMultPbPbTracksAllCentrality.C:72
 AddTaskMultPbPbTracksAllCentrality.C:73
 AddTaskMultPbPbTracksAllCentrality.C:74
 AddTaskMultPbPbTracksAllCentrality.C:75
 AddTaskMultPbPbTracksAllCentrality.C:76
 AddTaskMultPbPbTracksAllCentrality.C:77