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