]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/FlavourJetTasks/macros/AddTaskDFilterAndCorrelations.C
return AliAnalysisTaskFlavourJetCorrelations task
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / macros / AddTaskDFilterAndCorrelations.C
CommitLineData
41bd4a7b 1AliAnalysisTaskSE *AddTaskDFilterAndCorrelations(
bbb94467 2 AliAnalysisTaskSEDmesonsFilterCJ::ECandidateType cand = AliAnalysisTaskSEDmesonsFilterCJ::kDstartoKpipi,
3 TString filename = "DStartoKpipiCuts.root",
4 Bool_t theMCon = kFALSE,
5 Bool_t reco = kTRUE /*must be true if theMCon is false*/,
6 TString suffix = "",
7 TString jetArrname = "",
cc5dbb3b 8 TString trackArrname = "PicoTracks",
bbb94467 9 Bool_t triggerOnLeadingJet = kFALSE,
10 Int_t leadingHadType = 0 /*0 = charged, 1 = neutral, 2 = both*/,
11 Float_t R = 0.4,
12 Float_t jptcut = 10.,
13 const char *cutType = "TPC",
ad6abcae 14 Int_t thnsparse=1, /*-1 = no thnsparse, 0 = heavy, 1 = light*/
1eb2586e 15 Double_t percjetareacut = -1.,
b2705b43 16 AliAnalysisTaskEmcal::TriggerType trType=AliAnalysisTaskEmcal::kND,
6e016aa2 17 Int_t typeDjet=2,
18 TString subwagons=""
76bf81f2 19)
bbb94467 20{
21 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
22 if (!mgr) {
23 ::Error("AddTaskSEDmesonsFilterCJ", "No analysis manager to connect to.");
24 return NULL;
25 }
26
27 Bool_t useStdC = kFALSE;
28 TFile* filecuts=TFile::Open(filename);
29 if(!filecuts || (filecuts && !filecuts->IsOpen())) {
30 cout<<"Input file not found: use std cuts"<<endl;
31 useStdC = kTRUE;
32 }
33
34 AliRDHFCuts *analysiscuts=0x0;
35 switch (cand) {
36 case 0 :
37 if(useStdC) {
38 analysiscuts = new AliRDHFCutsD0toKpi();
39 analysiscuts->SetStandardCutsPP2010();
40 } else
41 analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get("D0toKpiCuts");
42 break;
43 case 1 :
44 if(useStdC) {
45 analysiscuts = new AliRDHFCutsDStartoKpipi();
46 analysiscuts->SetStandardCutsPP2010();
47 } else
48 analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get("DStartoKpipiCuts");
49 analysiscuts->SetName("DStartoKpipiCuts");
50 break;
51 }
52
53 if (!analysiscuts) { // mm let's see if everything is ok
54 AliFatal("Specific AliRDHFCuts not found");
55 return;
56 }
57
58 printf("CREATE TASK\n"); //CREATE THE TASK
59
ce11164d 60 TString candname="DStar";
61 if(cand==0) candname="D0";
e278882f 62 TString sR = Form("R%.0f",R*10);
5b64c502 63
ce11164d 64 TString taskFiltername="DmesonsFilterCJ";
65 taskFiltername+=candname;
66 taskFiltername+=suffix;
67 if(theMCon) taskFiltername+="MC";
68 if(!reco) taskFiltername+="gen";
69
70 AliAnalysisTaskSEDmesonsFilterCJ* taskFilter = mgr->GetTask(taskFiltername.Data());
5b64c502 71 Bool_t bTaskFilter=kTRUE;
ce11164d 72 if (!taskFilter){
5b64c502 73 bTaskFilter=kFALSE;
ce11164d 74 taskFilter = new AliAnalysisTaskSEDmesonsFilterCJ(taskFiltername.Data(),analysiscuts,cand);
75 if(!theMCon) reco=kTRUE;
76 taskFilter->SetMC(theMCon); //D meson settings
77 taskFilter->SetUseReco(reco);
78 mgr->AddTask(taskFilter);
5b64c502 79 } else Printf("Task %s already exist, continue",taskFiltername.Data());
ce11164d 80
bbb94467 81 // create the task
ce11164d 82 TString taskCorrName="TaskFlavourJetCorrelations";
83 taskCorrName+=candname;
84 taskCorrName+=suffix;
85 if(theMCon) taskCorrName+="MC";
86 if(!reco) taskCorrName+="gen";
87 taskCorrName+=cutType;
88 taskCorrName+=Form("PTj%.0f",jptcut);
5b64c502 89 taskCorrName+=sR;
3de98018 90 taskCorrName+=Form("Typ%d",typeDjet);
91
ce11164d 92 AliAnalysisTaskFlavourJetCorrelations *taskCorr = new AliAnalysisTaskFlavourJetCorrelations(taskCorrName.Data(),
bbb94467 93 analysiscuts, cand);
ce11164d 94
cc5dbb3b 95 taskCorr->SetJetArrayName(jetArrname);
96 taskCorr->SetTrackArrayName(trackArrname);
97 //taskCorr->SetRadius(R);
98 AliParticleContainer *trackCont = taskCorr->AddParticleContainer(trackArrname);
99 trackCont->SetClassName("AliVTrack");
100
101 AliJetContainer *jetCont = taskCorr->AddJetContainer(jetArrname,cutType,R);
102 if(jetCont) {
103 jetCont->ConnectParticleContainer(trackCont);
104 //jetCont->SetJetAcceptanceType(cutType);
105 jetCont->SetJetPtCut(jptcut);
106 jetCont->SetPercAreaCut(percjetareacut);
107 }
bbb94467 108 taskCorr->SetMC(theMCon);
109 taskCorr->SetUseReco(reco);
110 taskCorr->SetTriggerOnLeadingJet(triggerOnLeadingJet);
b2705b43 111 taskCorr->SetTypeDJetSelection(typeDjet);
76bf81f2 112 if(theMCon && trType!=AliAnalysisTaskEmcal::kND){
113 taskCorr->SetCaloTriggerPatchInfoName("EmcalTriggers");
114 taskCorr->SetTriggerTypeSel(trType);
115 }
ad6abcae 116 if(thnsparse==-1)taskCorr->TurnOffTHnSparse();
117 if(thnsparse==0) taskCorr->HeavyTHnSparse();
118 if(thnsparse==1) taskCorr->LightTHnSparse();
119
bbb94467 120 mgr->AddTask(taskCorr);
121
122 if(theMCon) {
123 suffix+="MC";
124 if(reco) suffix+="rec";
125 }
126
bbb94467 127
128 // Create and connect containers for input/output
129 TString outputfile = AliAnalysisManager::GetCommonFileName();
130 TString outputfileF = outputfile, outputfileC = outputfile;
131 outputfileF += ":PWG3_D2H_DmesonsForJetCorrelations";
132 outputfileC += ":PWG3_D2H_DEmcalJet";
133
134 outputfileF += suffix;
135 outputfileC += suffix;
136
137 TString nameContainerF0="histograms";
138 TString nameContainerF1="cuts";
139
140 TString nameContainerC0="hCor";
141 TString nameContainerC1="cutsJ";
142
143 TString nameContainerFC2="Dcandidates";
144 TString nameContainerFC3="DSBcandidates";
145
146 nameContainerF0 += candname;
147 nameContainerF1 += candname;
148 nameContainerC0 += candname;
149 nameContainerC1 += candname;
150 nameContainerFC2 += candname;
151 nameContainerFC3 += candname;
152
153 nameContainerF0 += suffix;
154 nameContainerF1 += suffix;
155 nameContainerC0 += suffix;
156 nameContainerC1 += suffix;
157 nameContainerFC2 += suffix;
158 nameContainerFC3 += suffix;
159
5b64c502 160 nameContainerC0+=sR;
161 nameContainerC1+=sR;
3de98018 162 if(typeDjet!=2) { //no particular name for default
163 nameContainerC0+=Form("Typ%d",typeDjet);
164 nameContainerC1+=Form("Typ%d",typeDjet);
165 }
c072ae92 166
167 nameContainerC0 += subwagons;
168 nameContainerC1 += subwagons;
169
bbb94467 170 // ------ input data ------
171 AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
8577f7bc 172 cinput0->SetName(Form("in%s%s",candname.Data(),suffix.Data()));
bbb94467 173
174 // ----- output data -----
5b64c502 175 AliAnalysisDataContainer *coutputF0;
176 AliAnalysisDataContainer *coutputF1;
177 AliAnalysisDataContainer *coutputFC2;
178 AliAnalysisDataContainer *coutputFC3;
179
180 if(!bTaskFilter){
181 coutputF0 = mgr->CreateContainer(nameContainerF0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileF.Data());
bbb94467 182
5b64c502 183 coutputF1 = mgr->CreateContainer(nameContainerF1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileF.Data());
bbb94467 184
5b64c502 185 coutputFC2 = mgr->CreateContainer(nameContainerFC2, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // exchange
186
187 coutputFC3 = mgr->CreateContainer(nameContainerFC3, TClonesArray::Class(),AliAnalysisManager::kExchangeContainer, outputfileF.Data()); // exchange
188
189 } else {
190 TObjArray * cnt = mgr->GetContainers();
191 coutputF0 = (AliAnalysisDataContainer*)cnt->FindObject(nameContainerF0);
192 coutputF1 = (AliAnalysisDataContainer*)cnt->FindObject(nameContainerF1);
193 coutputFC2= (AliAnalysisDataContainer*)cnt->FindObject(nameContainerFC2);
194 coutputFC3= (AliAnalysisDataContainer*)cnt->FindObject(nameContainerFC3);
195 }
bbb94467 196
197 AliAnalysisDataContainer *coutputC0 = mgr->CreateContainer(nameContainerC0, TList::Class(),AliAnalysisManager::kOutputContainer,outputfileC.Data());
198
199 AliAnalysisDataContainer *coutputC1 = mgr->CreateContainer(nameContainerC1, AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, outputfileC.Data());
200
5b64c502 201
8577f7bc 202 mgr->ConnectInput(taskFilter,0,cinput0);
203 mgr->ConnectInput(taskCorr,0,cinput0);
bbb94467 204
205 mgr->ConnectOutput(taskFilter,1,coutputF0);
206 mgr->ConnectOutput(taskFilter,2,coutputF1);
207 mgr->ConnectOutput(taskFilter,3,coutputFC2);
208 mgr->ConnectOutput(taskFilter,4,coutputFC3);
209
210
211 mgr->ConnectInput(taskCorr,1,coutputFC2);
212 mgr->ConnectInput(taskCorr,2,coutputFC3);
213 mgr->ConnectOutput(taskCorr,1,coutputC0);
214 mgr->ConnectOutput(taskCorr,2,coutputC1);
215 //if(cand==1) mgr->ConnectOutput(task,4,coutput4);
216
217 Printf("Input and Output connected to the manager");
41bd4a7b 218 return taskCorr;
bbb94467 219}
220