]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/FlavourJetTasks/macros/AddTaskDFilterAndCorrelations.C
fix minor issue in assignment
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / macros / AddTaskDFilterAndCorrelations.C
CommitLineData
bbb94467 1void *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