]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/FlavourJetTasks/macros/AddTaskDFilterAndCorrelations.C
Rhoname can be set and histograms have negative pt
[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",
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