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