]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/LambdaK0PbPb/AddTaskLambdaK0PbPb.C
e66e729c585cec61f26237a1d09f91687ddd96ea
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / LambdaK0PbPb / AddTaskLambdaK0PbPb.C
1 AliAnalysisTaskPerformanceStrange ** AddTaskLambdaK0PbPb(const char * outfilename, AliAnalysisCentralitySelector * centr, Int_t &nbin) {
2
3
4   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
5   if (!mgr) {
6     ::Error("AddTaskPhysicsSelection", "No analysis manager to connect to.");
7     return NULL;
8   }  
9   
10   // Check the analysis type using the event handlers connected to the analysis manager.
11   //==============================================================================
12   if (!mgr->GetInputEventHandler()) {
13     ::Error("AddTaskPhysicsSelection", "This task requires an input event handler");
14     return NULL;
15   }
16   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
17   
18   if (inputDataType != "ESD") {
19     Printf("ERROR! This task can only run on ESDs!");
20   }
21
22   // Configure analysis
23   //===========================================================================
24     
25   Int_t binMin = 0; // FIXME: settable? different percentiles?
26   Int_t binMax = 10;
27   nbin = binMax - binMin + 1;
28
29   AliAnalysisTaskPerformanceStrange ** task = new AliAnalysisTaskPerformanceStrange*[nbin];
30   Int_t itask = -1;
31   for(Int_t ibin = binMin; ibin <= binMax; ibin++){  
32     itask++;
33
34     task[itask] = new AliAnalysisTaskPerformanceStrange("TaskLambdaK0");
35     cout << "Booking " << ibin << "  "<< itask << " " << task[itask] <<endl;
36     
37     mgr->AddTask(task[itask]);
38   
39     // // Set Cuts
40     // if (!esdTrackCuts)
41     //   {
42     //     printf("ERROR: esdTrackCuts could not be created\n");
43     //     return;
44     //   }  
45     // task->SetTrackCuts(esdTrackCuts);
46     
47     // set centrality
48     AliAnalysisCentralitySelector * centrBin = (AliAnalysisCentralitySelector*) centr->Clone();
49     centrBin->SetCentralityBin(ibin);
50     task[itask]->SetCentralitySelector(centrBin);
51
52     TString outfilenameCentr = outfilename;
53     outfilenameCentr.ReplaceAll(".root",Form("_%2.2d.root",ibin));
54
55     AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
56     AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(Form("clambdak0Histo_%2.2d",ibin), TList::Class(),AliAnalysisManager::kOutputContainer, outfilenameCentr.Data());
57     AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("clambdak0Centr_%2.2d",ibin), AliAnalysisCentralitySelector::Class(),AliAnalysisManager::kOutputContainer, outfilenameCentr.Data());
58
59     mgr->ConnectInput (task[itask], 0, mgr->GetCommonInputContainer());
60     mgr->ConnectOutput(task[itask],1,coutput1);
61     mgr->ConnectOutput(task[itask],2,coutput2);
62
63   }
64   // TODO:
65   // IO into folders in a file?
66
67   // Set I/O
68
69   return task;
70 }   
71
72