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