ROOT logo
AliAnalysisTaskPerformanceStrange ** AddTaskLambdaK0PbPb(const char * outfilename, AliAnalysisCentralitySelector * centr, Int_t &nbin, Int_t binMin, Int_t binMax, Int_t iMCAnalysis = 0) {


  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
  //===========================================================================
  // Int_t nbMinTPCclusters = 80;
  // Int_t lCollidingSystems = 1; 
  // TString fAnalysisType = "ESD";
    //    TString lAnalysisPidMode  = "withPID";
    // TString lAnalysisCut      = "no";    
    //Int_t iMCAnalysis = 0;
     
    AliESDtrackCuts * myTracksCuts = new AliESDtrackCuts();
     myTracksCuts->SetRequireTPCRefit(kTRUE);
     //          myTracksCuts->SetRequireITSRefit(kTRUE);
          myTracksCuts->SetRequireITSRefit(kFALSE);
     // myTracksCuts->SetMinNClustersTPC(nbMinTPCclusters);
     myTracksCuts->SetMinNCrossedRowsTPC(70);
     myTracksCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
 
     nbin = binMax - binMin + 1;

  AliAnalysisTaskPerformanceStrange ** task = new AliAnalysisTaskPerformanceStrange*[nbin];
  Int_t itask = -1;
  for(Int_t ibin = binMin; ibin <= binMax; ibin++){  
    itask++;

    task[itask] = new AliAnalysisTaskPerformanceStrange("TaskLambdaK0");
    cout << "Booking " << ibin << "  "<< itask << " " << task[itask] <<endl;
 
    //task[itask]->SetCollidingSystems(lCollidingSystems);
    //task[itask]->SetAnalysisType(fAnalysisType);
    //task[itask]->SetAnalysisMC(iMCAnalysis);
    //task[itask]->SetAnalysisCut(lAnalysisCut);
    //  task[itask]->SetUsePID(lAnalysisPidMode);
    task[itask]->SetTrackCuts(myTracksCuts);
   
    mgr->AddTask(task[itask]);
  
    // // Set Cuts
    // if (!esdTrackCuts)
    //   {
    //     printf("ERROR: esdTrackCuts could not be created\n");
    //     return;
    //   }  
    // task->SetTrackCuts(esdTrackCuts);
    
    // set centrality
    AliAnalysisCentralitySelector * centrBin = (AliAnalysisCentralitySelector*) centr->Clone();
    //centrBin->SetCentralityBin(ibin);
    if(ibin == 0){
    centrBin->SetCentralityBin(0,5);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 1){
    centrBin->SetCentralityBin(5,10);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 2){
    centrBin->SetCentralityBin(10,20);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 3){
    centrBin->SetCentralityBin(20,30);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 4){
    centrBin->SetCentralityBin(30,40);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 5){
    centrBin->SetCentralityBin(40,50);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 6){
    centrBin->SetCentralityBin(50,60);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 7){
    centrBin->SetCentralityBin(60,70);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 8){
    centrBin->SetCentralityBin(70,80);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 9){
    centrBin->SetCentralityBin(80,90);
    task[itask]->SetCentralitySelector(centrBin);
    }
    if(ibin == 10){
    centrBin->SetCentralityBin(0,90);
    task[itask]->SetCentralitySelector(centrBin);
    }
    TString outfilenameCentr = outfilename;
    outfilenameCentr.ReplaceAll(".root",Form("_%2.2d.root",ibin));

    AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
    AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(Form("clambdak0Histo_%2.2d",ibin), TList::Class(),AliAnalysisManager::kOutputContainer, outfilenameCentr.Data());
    AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("clambdak0Centr_%2.2d",ibin), AliAnalysisCentralitySelector::Class(),AliAnalysisManager::kOutputContainer, outfilenameCentr.Data());
    AliAnalysisDataContainer *output_cuts = mgr->CreateContainer(Form("cuts_%2.2d",ibin), AliESDtrackCuts::Class(), AliAnalysisManager::kOutputContainer, outfilenameCentr.Data()); 
    mgr->ConnectInput (task[itask], 0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput(task[itask],1,coutput1);
    mgr->ConnectOutput(task[itask],2,coutput2);
    mgr->ConnectOutput(task[itask],3,output_cuts);
    

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

  // Set I/O

  return task;
}   


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