]>
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", |
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 |