]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/LambdaK0PbPb/MainStreamAnalysis/AddTaskLambdaK0PbPb.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0PbPb / MainStreamAnalysis / AddTaskLambdaK0PbPb.C
1 AliAnalysisTaskPerformanceStrange ** AddTaskLambdaK0PbPb(const char * outfilename, AliAnalysisCentralitySelector * centr, Int_t &nbin, Int_t binMin, Int_t binMax, Int_t iMCAnalysis = 0) {
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   // Int_t nbMinTPCclusters = 80;
25   // Int_t lCollidingSystems = 1; 
26   // TString fAnalysisType = "ESD";
27     //    TString lAnalysisPidMode  = "withPID";
28     // TString lAnalysisCut      = "no";    
29     //Int_t iMCAnalysis = 0;
30      
31     AliESDtrackCuts * myTracksCuts = new AliESDtrackCuts();
32      myTracksCuts->SetRequireTPCRefit(kTRUE);
33      //          myTracksCuts->SetRequireITSRefit(kTRUE);
34           myTracksCuts->SetRequireITSRefit(kFALSE);
35      // myTracksCuts->SetMinNClustersTPC(nbMinTPCclusters);
36      myTracksCuts->SetMinNCrossedRowsTPC(70);
37      myTracksCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
38  
39      nbin = binMax - binMin + 1;
40
41   AliAnalysisTaskPerformanceStrange ** task = new AliAnalysisTaskPerformanceStrange*[nbin];
42   Int_t itask = -1;
43   for(Int_t ibin = binMin; ibin <= binMax; ibin++){  
44     itask++;
45
46     task[itask] = new AliAnalysisTaskPerformanceStrange("TaskLambdaK0");
47     cout << "Booking " << ibin << "  "<< itask << " " << task[itask] <<endl;
48  
49     //task[itask]->SetCollidingSystems(lCollidingSystems);
50     //task[itask]->SetAnalysisType(fAnalysisType);
51     //task[itask]->SetAnalysisMC(iMCAnalysis);
52     //task[itask]->SetAnalysisCut(lAnalysisCut);
53     //  task[itask]->SetUsePID(lAnalysisPidMode);
54     task[itask]->SetTrackCuts(myTracksCuts);
55    
56     mgr->AddTask(task[itask]);
57   
58     // // Set Cuts
59     // if (!esdTrackCuts)
60     //   {
61     //     printf("ERROR: esdTrackCuts could not be created\n");
62     //     return;
63     //   }  
64     // task->SetTrackCuts(esdTrackCuts);
65     
66     // set centrality
67     AliAnalysisCentralitySelector * centrBin = (AliAnalysisCentralitySelector*) centr->Clone();
68     //centrBin->SetCentralityBin(ibin);
69     if(ibin == 0){
70     centrBin->SetCentralityBin(0,5);
71     task[itask]->SetCentralitySelector(centrBin);
72     }
73     if(ibin == 1){
74     centrBin->SetCentralityBin(5,10);
75     task[itask]->SetCentralitySelector(centrBin);
76     }
77     if(ibin == 2){
78     centrBin->SetCentralityBin(10,20);
79     task[itask]->SetCentralitySelector(centrBin);
80     }
81     if(ibin == 3){
82     centrBin->SetCentralityBin(20,30);
83     task[itask]->SetCentralitySelector(centrBin);
84     }
85     if(ibin == 4){
86     centrBin->SetCentralityBin(30,40);
87     task[itask]->SetCentralitySelector(centrBin);
88     }
89     if(ibin == 5){
90     centrBin->SetCentralityBin(40,50);
91     task[itask]->SetCentralitySelector(centrBin);
92     }
93     if(ibin == 6){
94     centrBin->SetCentralityBin(50,60);
95     task[itask]->SetCentralitySelector(centrBin);
96     }
97     if(ibin == 7){
98     centrBin->SetCentralityBin(60,70);
99     task[itask]->SetCentralitySelector(centrBin);
100     }
101     if(ibin == 8){
102     centrBin->SetCentralityBin(70,80);
103     task[itask]->SetCentralitySelector(centrBin);
104     }
105     if(ibin == 9){
106     centrBin->SetCentralityBin(80,90);
107     task[itask]->SetCentralitySelector(centrBin);
108     }
109     if(ibin == 10){
110     centrBin->SetCentralityBin(0,90);
111     task[itask]->SetCentralitySelector(centrBin);
112     }
113     TString outfilenameCentr = outfilename;
114     outfilenameCentr.ReplaceAll(".root",Form("_%2.2d.root",ibin));
115
116     AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
117     AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(Form("clambdak0Histo_%2.2d",ibin), TList::Class(),AliAnalysisManager::kOutputContainer, outfilenameCentr.Data());
118     AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("clambdak0Centr_%2.2d",ibin), AliAnalysisCentralitySelector::Class(),AliAnalysisManager::kOutputContainer, outfilenameCentr.Data());
119     AliAnalysisDataContainer *output_cuts = mgr->CreateContainer(Form("cuts_%2.2d",ibin), AliESDtrackCuts::Class(), AliAnalysisManager::kOutputContainer, outfilenameCentr.Data()); 
120     mgr->ConnectInput (task[itask], 0, mgr->GetCommonInputContainer());
121     mgr->ConnectOutput(task[itask],1,coutput1);
122     mgr->ConnectOutput(task[itask],2,coutput2);
123     mgr->ConnectOutput(task[itask],3,output_cuts);
124     
125
126   }
127   // TODO:
128   // IO into folders in a file?
129
130   // Set I/O
131
132   return task;
133 }   
134
135