]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/macros/AddTaskFlow.C
changed inheritance to TaskSE
[u/mrichter/AliRoot.git] / PWG2 / FLOW / macros / AddTaskFlow.C
CommitLineData
93329510 1/////////////////////////////////////////////////////////////////////////////////////////////
2//
3// AddTask* macro for flow analysis
4// Creates a Flow Event task and adds it to the analysis manager.
5// Sets the cuts using the correction framework (CORRFW) classes.
6// Also creates Flow Analysis tasks and connects them to the output of the flow event task.
7//
8/////////////////////////////////////////////////////////////////////////////////////////////
9
7a01f4a7 10// Define the range for eta subevents (for SP method)
11Double_t minA = -0.9;
12Double_t maxA = -0.01;
13Double_t minB = 0.01;
14Double_t maxB = 0.9;
93329510 15
f6cf97c1 16// use physics selection class
ea456d37 17Bool_t UsePhysicsSelection = kFALSE;
f6cf97c1 18
93329510 19// SETTING THE CUTS
20
c0ed6325 21//----------Event selection----------
22Bool_t UseMultCutforESD = kTRUE;
23//Bool_t UseMultCutforESD = kFALSE;
24const Int_t multminESD = 1; //used for CORRFW cuts
3828db44 25const Int_t multmaxESD = 1000000; //used for CORRFW cuts
f01e9bfe 26
40ca990b 27Bool_t requireVtxCuts = kTRUE;
28Double_t vertexXmin = -1.0;
29Double_t vertexXmax = 1.0;
30Double_t vertexYmin = -1.0;
31Double_t vertexYmax = 1.0;
32Double_t vertexZmin = -15.0; //-1.e99;
33Double_t vertexZmax = 15.0; //1.e99;
34
ea456d37 35//Bool_t UseMultCut = kFALSE;
f6cf97c1 36Bool_t UseMultCut = kTRUE;
c0ed6325 37const Int_t multmin = 10; //used for AliFlowEventSimple (to set the centrality)
29195b69 38const Int_t multmax = 10000; //used for AliFlowEventSimple (to set the centrality)
c0ed6325 39//const Int_t multmin = 10; //used for AliFlowEventSimple (to set the centrality)
40//const Int_t multmax = 1000000; //used for AliFlowEventSimple (to set the centrality)
47d5b28f 41
94cd9888 42
c0ed6325 43//----------For RP selection----------
44//KINEMATICS (on generated and reconstructed tracks)
45Bool_t UseKineforRP = kTRUE;
46const Double_t ptminRP = 0.0;
47const Double_t ptmaxRP = 10.0;
48const Double_t etaminRP = -0.9;
49const Double_t etamaxRP = 0.9;
50const Int_t chargeRP = 1; //not used
51
52//PID (on generated and reconstructed tracks)
93329510 53Bool_t UsePIDforRP = kFALSE;
c0ed6325 54const Int_t PdgRP = 211;
55
56//TRACK QUALITY (on reconstructed tracks only)
57//see /CORRFW/AliCFTrackQualityCuts class
58Bool_t UseTrackQualityforRP = kTRUE;
59const Int_t minClustersTpcRP = 80; //default = -1;
60const Double_t maxChi2PerClusterTpcRP = 3.5; //default = 1.e+09;
61const UShort_t minDedxClusterTpcRP = 0;
62const Int_t minClustersItsRP = 2; //panos
63const Double_t maxChi2PerClusterItsRP = 1.e+09;
64const Int_t minClustersTrdRP = -1;
65const Int_t minTrackletTrdRP = -1;
66const Int_t minTrackletTrdPidRP = -1;
67const Double_t maxChi2PerClusterTrdRP = 1.e+09;
68const ULong_t statusRP = AliESDtrack::kTPCrefit; //AliESDtrack::kTPCrefit & AliESDtrack::kITSrefit
69
70//PRIMARY (on reconstructed tracks only)
71//see /CORRFW/AliCFTrackIsPrimaryCuts class
72Bool_t UsePrimariesforRP = kTRUE;
73const Bool_t spdVertexRP = kFALSE;
74const Bool_t tpcVertexRP = kFALSE;
75const Float_t minDcaToVertexXyRP = 0.;
76const Float_t minDcaToVertexZRP = 0.;
77const Float_t maxDcaToVertexXyRP = 2.4; //default = 1.e+10; //2.4;
78const Float_t maxDcaToVertexZRP = 3.2; //default = 1.e+10; //3.2;
79const Bool_t dcaToVertex2dRP = kFALSE; //default = kFALSE;
80const Bool_t absDcaToVertexRP = kTRUE; //default = kTRUE;
81const Double_t minNSigmaToVertexRP = 0.;
82const Double_t maxNSigmaToVertexRP = 1.e+10; //3.; //1.e+10
83const Double_t maxSigmaDcaXySP = 1.e+10;
84const Double_t maxSigmaDcaZSP = 1.e+10;
85const Bool_t requireSigmaToVertexSP = kFALSE;
86const Bool_t acceptKinkDaughtersSP = kFALSE; //default = kTRUE;
87
88//ACCEPTANCE (on generated tracks only : AliMCParticle)
89//see /CORRFW/AliCFAcceptanceCuts class
90Bool_t UseAcceptanceforRP = kFALSE;
91const Int_t minTrackrefsItsRP = 0;//3;
92const Int_t minTrackrefsTpcRP = 0;//2;
93const Int_t minTrackrefsTrdRP = 0;
94const Int_t minTrackrefsTofRP = 0;
95const Int_t minTrackrefsMuonRP = 0;
96//default for all is 0
97
98//----------For POI selection----------
99//KINEMATICS (on generated and reconstructed tracks)
100Bool_t UseKineforPOI = kTRUE;
101const Double_t ptminPOI = 0.0;
102const Double_t ptmaxPOI = 10.0;
103const Double_t etaminPOI = -0.9;
104const Double_t etamaxPOI = 0.9;
105const Int_t chargePOI = 1; //not used
106
107//PID (on generated and reconstructed tracks)
93329510 108Bool_t UsePIDforPOI = kFALSE;
c0ed6325 109const Int_t PdgPOI = 321;
93329510 110
c0ed6325 111//TRACK QUALITY (on reconstructed tracks only)
112//see /CORRFW/AliCFTrackQualityCuts class
113Bool_t UseTrackQualityforPOI = kTRUE;
114const Int_t minClustersTpcPOI = 80;
115const Double_t maxChi2PerClusterTpcPOI = 3.5;
116const UShort_t minDedxClusterTpcPOI = 0;
117const Int_t minClustersItsPOI = 2;
118const Double_t maxChi2PerClusterItsPOI = 1.e+09;
119const Int_t minClustersTrdPOI = -1;
120const Int_t minTrackletTrdPOI = -1;
121const Int_t minTrackletTrdPidPOI = -1;
122const Double_t maxChi2PerClusterTrdPOI = 1.e+09;
123const ULong_t statusPOI = AliESDtrack::kTPCrefit;
124
125//PRIMARY (on reconstructed tracks only)
126//see /CORRFW/AliCFTrackIsPrimaryCuts class
127Bool_t UsePrimariesforPOI = kTRUE;
128const Bool_t spdVertexPOI = kFALSE;
129const Bool_t tpcVertexPOI = kFALSE;
130const Float_t minDcaToVertexXyPOI = 0.;
131const Float_t minDcaToVertexZPOI = 0.;
132const Float_t maxDcaToVertexXyPOI = 2.4;
133const Float_t maxDcaToVertexZPOI = 3.2;
134const Bool_t dcaToVertex2dPOI = kFALSE;
135const Bool_t absDcaToVertexPOI = kTRUE;
136const Double_t minNSigmaToVertexPOI = 0.;
137const Double_t maxNSigmaToVertexPOI = 1.e+10;
138const Double_t maxSigmaDcaXyPOI = 1.e+10;
139const Double_t maxSigmaDcaZPOI = 1.e+10;
140const Bool_t requireSigmaToVertexPOI = kFALSE;
141const Bool_t acceptKinkDaughtersPOI = kFALSE;
142
143//ACCEPTANCE (on generated tracks only : AliMCParticle)
144//see /CORRFW/AliCFAcceptanceCuts class
145Bool_t UseAcceptanceforPOI = kFALSE;
146const Int_t minTrackrefsItsPOI = 3;
147const Int_t minTrackrefsTpcPOI = 2;
148const Int_t minTrackrefsTrdPOI = 0;
149const Int_t minTrackrefsTofPOI = 0;
150const Int_t minTrackrefsMuonPOI = 0;
151
152
153//----------For Adding Flow to the Event----------
47d5b28f 154const Bool_t AddToEvent = kFALSE;
c0ed6325 155Double_t ellipticFlow = 0.05;
47d5b28f 156
93329510 157
158AliAnalysisTaskFlowEvent* AddTaskFlow(TString type, Bool_t* METHODS, Bool_t QA, Bool_t* WEIGHTS)
159{
160 //boleans for the methods
c741f5d0 161 Bool_t SP = METHODS[0];
162 Bool_t LYZ1SUM = METHODS[1];
163 Bool_t LYZ1PROD = METHODS[2];
164 Bool_t LYZ2SUM = METHODS[3];
165 Bool_t LYZ2PROD = METHODS[4];
166 Bool_t LYZEP = METHODS[5];
167 Bool_t GFC = METHODS[6];
168 Bool_t QC = METHODS[7];
169 Bool_t FQD = METHODS[8];
170 Bool_t MCEP = METHODS[9];
93329510 171
172 //for using weights
173 Bool_t useWeights = WEIGHTS[0] || WEIGHTS[1] || WEIGHTS[2];
174 if (useWeights) cout<<"Weights are used"<<endl;
175 else cout<<"Weights are not used"<<endl;
176
177
178 // Get the pointer to the existing analysis manager via the static access method.
179 //==============================================================================
180 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
181 if (!mgr) {
182 Error("AddTaskFlowEvent", "No analysis manager to connect to.");
183 return NULL;
184 }
185
186 // Check the analysis type using the event handlers connected to the analysis
187 // manager. The availability of MC handler cann also be checked here.
188 //==============================================================================
189 if (!mgr->GetInputEventHandler()) {
190 ::Error("AddTaskFlowEvent", "This task requires an input event handler");
191 return NULL;
192 }
193
194 // Open external input files
195 //===========================================================================
196 //weights:
197 TFile *weightsFile = NULL;
198 TList *weightsList = NULL;
199
200 if(useWeights) {
201 //open the file with the weights:
202 weightsFile = TFile::Open("weights.root","READ");
203 if(weightsFile) {
204 //access the list which holds the histos with weigths:
205 weightsList = (TList*)weightsFile->Get("weights");
206 }
207 else {
208 cout<<" WARNING: the file <weights.root> with weights from the previous run was not available."<<endl;
209 break;
210 }
211 }
212
40ca990b 213 //LYZ2
214 if (LYZ2SUM || LYZ2PROD) {
215 //read the outputfile of the first run
216 TString outputFileName = "AnalysisResults1.root";
217 TString pwd(gSystem->pwd());
218 pwd+="/";
219 pwd+=outputFileName.Data();
220 TFile *outputFile = NULL;
221 if(gSystem->AccessPathName(pwd.Data(),kFileExists)) {
222 cout<<"WARNING: You do not have an output file:"<<endl;
223 cout<<" "<<pwd.Data()<<endl;
224 exit(0);
225 } else {
226 outputFile = TFile::Open(pwd.Data(),"READ");
c741f5d0 227 }
40ca990b 228
229 if (LYZ2SUM){
230 // read the output directory from LYZ1SUM
231 TString inputFileNameLYZ2SUM = "outputLYZ1SUManalysis" ;
232 inputFileNameLYZ2SUM += type;
233 cout<<"The input directory is "<<inputFileNameLYZ2SUM.Data()<<endl;
234 TFile* fInputFileLYZ2SUM = (TFile*)outputFile->FindObjectAny(inputFileNameLYZ2SUM.Data());
235 if(!fInputFileLYZ2SUM || fInputFileLYZ2SUM->IsZombie()) {
236 cerr << " ERROR: To run LYZ2SUM you need the output file from LYZ1SUM. This file is not there! Please run LYZ1SUM first." << endl ;
237 break;
238 }
239 else {
240 TList* fInputListLYZ2SUM = (TList*)fInputFileLYZ2SUM->Get("cobjLYZ1SUM");
241 if (!fInputListLYZ2SUM) {cout<<"list is NULL pointer!"<<endl;}
242 }
243 cout<<"LYZ2SUM input file/list read..."<<endl;
c0ed6325 244 }
40ca990b 245
246 if (LYZ2PROD){
247 // read the output directory from LYZ1PROD
248 TString inputFileNameLYZ2PROD = "outputLYZ1PRODanalysis" ;
249 inputFileNameLYZ2PROD += type;
250 cout<<"The input directory is "<<inputFileNameLYZ2PROD.Data()<<endl;
251 TFile* fInputFileLYZ2PROD = (TFile*)outputFile->FindObjectAny(inputFileNameLYZ2PROD.Data());
252 if(!fInputFileLYZ2PROD || fInputFileLYZ2PROD->IsZombie()) {
253 cerr << " ERROR: To run LYZ2PROD you need the output file from LYZ1PROD. This file is not there! Please run LYZ1PROD first." << endl ;
254 break;
255 }
256 else {
257 TList* fInputListLYZ2PROD = (TList*)fInputFileLYZ2PROD->Get("cobjLYZ1PROD");
258 if (!fInputListLYZ2PROD) {cout<<"list is NULL pointer!"<<endl;}
259 }
260 cout<<"LYZ2PROD input file/list read..."<<endl;
c0ed6325 261 }
93329510 262 }
40ca990b 263
264
93329510 265 if (LYZEP) {
40ca990b 266 //read the outputfile of the second run
267 TString outputFileName = "AnalysisResults2.root";
268 TString pwd(gSystem->pwd());
269 pwd+="/";
270 pwd+=outputFileName.Data();
271 TFile *outputFile = NULL;
272 if(gSystem->AccessPathName(pwd.Data(),kFileExists)) {
273 cout<<"WARNING: You do not have an output file:"<<endl;
274 cout<<" "<<pwd.Data()<<endl;
275 exit(0);
276 } else {
277 outputFile = TFile::Open(pwd.Data(),"READ");
278 }
279
c741f5d0 280 // read the output file from LYZ2SUM
281 TString inputFileNameLYZEP = "outputLYZ2SUManalysis" ;
93329510 282 inputFileNameLYZEP += type;
93329510 283 cout<<"The input file is "<<inputFileNameLYZEP.Data()<<endl;
40ca990b 284 TFile* fInputFileLYZEP = (TFile*)outputFile->FindObjectAny(inputFileNameLYZEP.Data());
93329510 285 if(!fInputFileLYZEP || fInputFileLYZEP->IsZombie()) {
5b40431d 286 cerr << " ERROR: To run LYZEP you need the output file from LYZ2SUM. This file is not there! Please run LYZ2SUM first." << endl ;
93329510 287 break;
288 }
289 else {
c741f5d0 290 TList* fInputListLYZEP = (TList*)fInputFileLYZEP->Get("cobjLYZ2SUM");
93329510 291 if (!fInputListLYZEP) {cout<<"list is NULL pointer!"<<endl;}
292 }
293 cout<<"LYZEP input file/list read..."<<endl;
294 }
40ca990b 295
93329510 296
297
298 // Create the task, add it to the manager.
299 //===========================================================================
300 AliAnalysisTaskFlowEvent *taskFE = NULL;
301 if (QA) {
47d5b28f 302 if(AddToEvent) {
303 taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",kTRUE,1);
c0ed6325 304 taskFE->SetEllipticFlowValue(ellipticFlow); } //TEST
47d5b28f 305 else {taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",kTRUE); }
93329510 306 taskFE->SetAnalysisType(type);
c0ed6325 307 if (UseMultCut) {
308 taskFE->SetMinMult(multmin);
f6cf97c1 309 taskFE->SetMaxMult(multmax);
310 }
7a01f4a7 311 taskFE->SetSubeventEtaRange(minA, maxA, minB, maxB);
f6cf97c1 312 if (UsePhysicsSelection) {
313 taskFE->SelectCollisionCandidates();
314 cout<<"Using Physics Selection"<<endl;
315 }
93329510 316 mgr->AddTask(taskFE);
317 }
318 else {
f6cf97c1 319 if(AddToEvent) {
320 taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",kFALSE,1);
321 taskFE->SetEllipticFlowValue(ellipticFlow); } //TEST
322 else {taskFE = new AliAnalysisTaskFlowEvent("TaskFlowEvent",kFALSE); }
93329510 323 taskFE->SetAnalysisType(type);
c0ed6325 324 if (UseMultCut) {
325 taskFE->SetMinMult(multmin);
f6cf97c1 326 taskFE->SetMaxMult(multmax);
327 }
328 taskFE->SetSubeventEtaRange(minA, maxA, minB, maxB);
329 if (UsePhysicsSelection) {
330 taskFE->SelectCollisionCandidates();
331 cout<<"Using Physics Selection"<<endl;
332 }
93329510 333 mgr->AddTask(taskFE);
334 }
335
336 // Create cuts using the correction framework (CORRFW)
337 //===========================================================================
338 if (QA){
339 //Set TList for the QA histograms
340 TList* qaRP = new TList();
341 TList* qaPOI = new TList();
342 }
343
c0ed6325 344 //----------Event cuts----------
94cd9888 345 AliCFEventGenCuts* mcEventCuts = new AliCFEventGenCuts("mcEventCuts","MC-level event cuts");
f01e9bfe 346 mcEventCuts->SetNTracksCut(multminESD,multmaxESD);
40ca990b 347 mcEventCuts->SetRequireVtxCuts(requireVtxCuts);
348 mcEventCuts->SetVertexXCut(vertexXmin, vertexXmax);
349 mcEventCuts->SetVertexYCut(vertexYmin, vertexYmax);
350 mcEventCuts->SetVertexZCut(vertexZmin, vertexZmax);
94cd9888 351 if (QA) {
352 mcEventCuts->SetQAOn(qaRP);
353 }
354 AliCFEventRecCuts* recEventCuts = new AliCFEventRecCuts("recEventCuts","rec-level event cuts");
f01e9bfe 355 recEventCuts->SetNTracksCut(multminESD,multmaxESD);
40ca990b 356 recEventCuts->SetRequireVtxCuts(requireVtxCuts);
357 recEventCuts->SetVertexXCut(vertexXmin, vertexXmax);
358 recEventCuts->SetVertexYCut(vertexYmin, vertexYmax);
359 recEventCuts->SetVertexZCut(vertexZmin, vertexZmax);
94cd9888 360 if (QA) {
361 recEventCuts->SetQAOn(qaRP);
362 }
c0ed6325 363
364 //----------Cuts for RP----------
365 //KINEMATICS (MC and reconstructed)
366 AliCFTrackKineCuts* mcKineCutsRP = new AliCFTrackKineCuts("mcKineCutsRP","MC-level kinematic cuts");
367 mcKineCutsRP->SetPtRange(ptminRP,ptmaxRP);
368 mcKineCutsRP->SetEtaRange(etaminRP,etamaxRP);
369 //mcKineCutsRP->SetChargeMC(chargeRP);
93329510 370 if (QA) {
c0ed6325 371 mcKineCutsRP->SetQAOn(qaRP);
93329510 372 }
373
c0ed6325 374 AliCFTrackKineCuts *recKineCutsRP = new AliCFTrackKineCuts("recKineCutsRP","rec-level kine cuts");
375 recKineCutsRP->SetPtRange(ptminRP,ptmaxRP);
376 recKineCutsRP->SetEtaRange(etaminRP,etamaxRP);
377 //recKineCutsRP->SetChargeRec(chargeRP);
93329510 378 if (QA) {
c0ed6325 379 recKineCutsRP->SetQAOn(qaRP);
93329510 380 }
c0ed6325 381
382 //PID (MC and reconstructed)
383 AliCFParticleGenCuts* mcGenCutsRP = new AliCFParticleGenCuts("mcGenCutsRP","MC particle generation cuts for RP");
384 mcGenCutsRP->SetRequireIsPrimary();
385 if (UsePIDforRP) {mcGenCutsRP->SetRequirePdgCode(PdgRP);}
93329510 386 if (QA) {
c0ed6325 387 mcGenCutsRP->SetQAOn(qaRP);
93329510 388 }
389
c0ed6325 390 int n_species = AliPID::kSPECIES ;
391 Double_t* prior = new Double_t[n_species];
392
393 prior[0] = 0.0244519 ;
394 prior[1] = 0.0143988 ;
395 prior[2] = 0.805747 ;
396 prior[3] = 0.0928785 ;
397 prior[4] = 0.0625243 ;
398
399 AliCFTrackCutPid* cutPidRP = NULL;
400 if(UsePIDforRP) {
401 cutPidRP = new AliCFTrackCutPid("cutPidRP","ESD_PID for RP") ;
402 cutPidRP->SetPriors(prior);
403 cutPidRP->SetProbabilityCut(0.0);
404 cutPidRP->SetDetectors("TPC TOF");
405 switch(TMath::Abs(PDG1)) {
406 case 11 : cutPidRP->SetParticleType(AliPID::kElectron, kTRUE); break;
407 case 13 : cutPidRP->SetParticleType(AliPID::kMuon , kTRUE); break;
408 case 211 : cutPidRP->SetParticleType(AliPID::kPion , kTRUE); break;
409 case 321 : cutPidRP->SetParticleType(AliPID::kKaon , kTRUE); break;
410 case 2212 : cutPidRP->SetParticleType(AliPID::kProton , kTRUE); break;
411 default : printf("UNDEFINED PID\n"); break;
412 }
413 if (QA) {
414 cutPidRP->SetQAOn(qaRP);
415 }
93329510 416 }
417
c0ed6325 418 //TRACK QUALITY
419 AliCFTrackQualityCuts *recQualityCutsRP = new AliCFTrackQualityCuts("recQualityCutsRP","rec-level quality cuts");
420 recQualityCutsRP->SetMinNClusterTPC(minClustersTpcRP);
421 //recQualityCutsRP->SetMinFoundClusterTPC(minFoundClustersTpcRP); //only for internal TPC QA
422 recQualityCutsRP->SetMaxChi2PerClusterTPC(maxChi2PerClusterTpcRP);
423 recQualityCutsRP->SetMinNdEdxClusterTPC(minDedxClusterTpcRP); //to reject secondaries
424
425 recQualityCutsRP->SetMinNClusterITS(minClustersItsRP);
426 recQualityCutsRP->SetMaxChi2PerClusterITS(maxChi2PerClusterItsRP);
427
428 recQualityCutsRP->SetMinNClusterTRD(minClustersTrdRP);
429 recQualityCutsRP->SetMinNTrackletTRD(minTrackletTrdRP);
430 recQualityCutsRP->SetMinNTrackletTRDpid(minTrackletTrdPidRP);
431 recQualityCutsRP->SetMaxChi2PerTrackletTRD(maxChi2PerClusterTrdRP);
432 recQualityCutsRP->SetStatus(statusRP);
93329510 433 if (QA) {
c0ed6325 434 recQualityCutsRP->SetQAOn(qaRP);
93329510 435 }
c0ed6325 436
437 /*
438 //How to set this?
439 void SetMaxCovDiagonalElements(Float_t c1=1.e+09, Float_t c2=1.e+09, Float_t c3=1.e+09, Float_t c4=1.e+09, Float_t c5=1.e+09)
440 {fCovariance11Max=c1;fCovariance22Max=c2;fCovariance33Max=c3;fCovariance44Max=c4;fCovariance55Max=c5;}
441 */
442
443 //PRIMARIES
444 AliCFTrackIsPrimaryCuts *recIsPrimaryCutsRP = new AliCFTrackIsPrimaryCuts("recIsPrimaryCutsRP","rec-level isPrimary cuts");
445 recIsPrimaryCutsRP->UseSPDvertex(spdVertexRP);
446 recIsPrimaryCutsRP->UseTPCvertex(tpcVertexRP);
447 recIsPrimaryCutsRP->SetMinDCAToVertexXY(minDcaToVertexXyRP);
448 recIsPrimaryCutsRP->SetMinDCAToVertexZ(minDcaToVertexZRP);
449 recIsPrimaryCutsRP->SetMaxDCAToVertexXY(maxDcaToVertexXyRP);
450 recIsPrimaryCutsRP->SetMaxDCAToVertexZ(maxDcaToVertexZRP);
451 recIsPrimaryCutsRP->SetDCAToVertex2D(dcaToVertex2dRP);
452 recIsPrimaryCutsRP->SetAbsDCAToVertex(absDcaToVertexRP);
453 recIsPrimaryCutsRP->SetMinNSigmaToVertex(minNSigmaToVertexRP);
454 recIsPrimaryCutsRP->SetMaxNSigmaToVertex(maxNSigmaToVertexRP);
455 recIsPrimaryCutsRP->SetMaxSigmaDCAxy(maxSigmaDcaXySP);
456 recIsPrimaryCutsRP->SetMaxSigmaDCAz(maxSigmaDcaZSP);
457 recIsPrimaryCutsRP->SetRequireSigmaToVertex(requireSigmaToVertexSP);
458 recIsPrimaryCutsRP->SetAcceptKinkDaughters(acceptKinkDaughtersSP);
93329510 459 if (QA) {
c0ed6325 460 recIsPrimaryCutsRP->SetQAOn(qaRP);
93329510 461 }
462
c0ed6325 463 //ACCEPTANCE
464 AliCFAcceptanceCuts *mcAccCutsRP = new AliCFAcceptanceCuts("mcAccCutsRP","MC acceptance cuts");
465 mcAccCutsRP->SetMinNHitITS(minTrackrefsItsRP);
466 mcAccCutsRP->SetMinNHitTPC(minTrackrefsTpcRP);
467 mcAccCutsRP->SetMinNHitTRD(minTrackrefsTrdRP);
468 mcAccCutsRP->SetMinNHitTOF(minTrackrefsTofRP);
469 mcAccCutsRP->SetMinNHitMUON(minTrackrefsMuonRP);
93329510 470 if (QA) {
c0ed6325 471 mcAccCutsRP->SetQAOn(qaRP);
93329510 472 }
c0ed6325 473
93329510 474
c0ed6325 475 //----------Cuts for POI----------
476 //KINEMATICS (MC and reconstructed)
477 AliCFTrackKineCuts* mcKineCutsPOI = new AliCFTrackKineCuts("mcKineCutsPOI","MC-level kinematic cuts");
478 mcKineCutsPOI->SetPtRange(ptminPOI,ptmaxPOI);
479 mcKineCutsPOI->SetEtaRange(etaminPOI,etamaxPOI);
480 //mcKineCutsPOI->SetChargeMC(chargePOI);
93329510 481 if (QA) {
c0ed6325 482 mcKineCutsPOI->SetQAOn(qaPOI);
93329510 483 }
484
c0ed6325 485 AliCFTrackKineCuts *recKineCutsPOI = new AliCFTrackKineCuts("recKineCutsPOI","rec-level kine cuts");
486 recKineCutsPOI->SetPtRange(ptminPOI,ptmaxPOI);
487 recKineCutsPOI->SetEtaRange(etaminPOI,etamaxPOI);
488 //recKineCutsPOI->SetChargeRec(chargePOI);
93329510 489 if (QA) {
c0ed6325 490 recKineCutsPOI->SetQAOn(qaPOI);
93329510 491 }
492
c0ed6325 493 //PID (MC and reconstructed)
494 AliCFParticleGenCuts* mcGenCutsPOI = new AliCFParticleGenCuts("mcGenCutsPOI","MC particle generation cuts for POI");
495 mcGenCutsPOI->SetRequireIsPrimary();
496 if (UsePIDforPOI) {mcGenCutsPOI->SetRequirePdgCode(PdgPOI);}
93329510 497 if (QA) {
c0ed6325 498 mcGenCutsPOI->SetQAOn(qaPOI);
93329510 499 }
c0ed6325 500
501 AliCFTrackCutPid* cutPidPOI = NULL;
93329510 502 if (UsePIDforPOI) {
c0ed6325 503 cutPidPOI = new AliCFTrackCutPid("cutPidPOI","ESD_PID for POI") ;
504 cutPidPOI->SetPriors(prior);
505 cutPidPOI->SetProbabilityCut(0.0);
506 cutPidPOI->SetDetectors("TPC TOF");
93329510 507 switch(TMath::Abs(PDG2)) {
c0ed6325 508 case 11 : cutPidPOI->SetParticleType(AliPID::kElectron, kTRUE); break;
509 case 13 : cutPidPOI->SetParticleType(AliPID::kMuon , kTRUE); break;
510 case 211 : cutPidPOI->SetParticleType(AliPID::kPion , kTRUE); break;
511 case 321 : cutPidPOI->SetParticleType(AliPID::kKaon , kTRUE); break;
512 case 2212 : cutPidPOI->SetParticleType(AliPID::kProton , kTRUE); break;
93329510 513 default : printf("UNDEFINED PID\n"); break;
514 }
515 if (QA) {
c0ed6325 516 cutPidPOI->SetQAOn(qaPOI);
93329510 517 }
518 }
c0ed6325 519
520 //TRACK QUALITY
521 AliCFTrackQualityCuts *recQualityCutsPOI = new AliCFTrackQualityCuts("recQualityCutsPOI","rec-level quality cuts");
522 recQualityCutsPOI->SetMinNClusterTPC(minClustersTpcPOI);
523 //recQualityCutsPOI->SetMinFoundClusterTPC(minFoundClustersTpcPOI); //only for internal TPC QA
524 recQualityCutsPOI->SetMaxChi2PerClusterTPC(maxChi2PerClusterTpcPOI);
525 recQualityCutsPOI->SetMinNdEdxClusterTPC(minDedxClusterTpcPOI); //to reject secondaries
526
527 recQualityCutsPOI->SetMinNClusterITS(minClustersItsPOI);
528 recQualityCutsPOI->SetMaxChi2PerClusterITS(maxChi2PerClusterItsPOI);
529
530 recQualityCutsPOI->SetMinNClusterTRD(minClustersTrdPOI);
531 recQualityCutsPOI->SetMinNTrackletTRD(minTrackletTrdPOI);
532 recQualityCutsPOI->SetMinNTrackletTRDpid(minTrackletTrdPidPOI);
533 recQualityCutsPOI->SetMaxChi2PerTrackletTRD(maxChi2PerClusterTrdPOI);
534 recQualityCutsPOI->SetStatus(statusPOI);
535 if (QA) {
536 recQualityCutsPOI->SetQAOn(qaPOI);
537 }
538
539 //PRIMARIES
540 AliCFTrackIsPrimaryCuts *recIsPrimaryCutsPOI = new AliCFTrackIsPrimaryCuts("recIsPrimaryCutsPOI","rec-level isPrimary cuts");
541 recIsPrimaryCutsPOI->UseSPDvertex(spdVertexPOI);
542 recIsPrimaryCutsPOI->UseTPCvertex(tpcVertexPOI);
543 recIsPrimaryCutsPOI->SetMinDCAToVertexXY(minDcaToVertexXyPOI);
544 recIsPrimaryCutsPOI->SetMinDCAToVertexZ(minDcaToVertexZPOI);
545 recIsPrimaryCutsPOI->SetMaxDCAToVertexXY(maxDcaToVertexXyPOI);
546 recIsPrimaryCutsPOI->SetMaxDCAToVertexZ(maxDcaToVertexZPOI);
547 recIsPrimaryCutsPOI->SetDCAToVertex2D(dcaToVertex2dPOI);
548 recIsPrimaryCutsPOI->SetAbsDCAToVertex(absDcaToVertexPOI);
549 recIsPrimaryCutsPOI->SetMinNSigmaToVertex(minNSigmaToVertexPOI);
550 recIsPrimaryCutsPOI->SetMaxNSigmaToVertex(maxNSigmaToVertexPOI);
551 recIsPrimaryCutsPOI->SetMaxSigmaDCAxy(maxSigmaDcaXyPOI);
552 recIsPrimaryCutsPOI->SetMaxSigmaDCAz(maxSigmaDcaZPOI);
553 recIsPrimaryCutsPOI->SetRequireSigmaToVertex(requireSigmaToVertexPOI);
554 recIsPrimaryCutsPOI->SetAcceptKinkDaughters(acceptKinkDaughtersPOI);
555 if (QA) {
556 recIsPrimaryCutsPOI->SetQAOn(qaPOI);
557 }
558
559 //ACCEPTANCE
560 AliCFAcceptanceCuts *mcAccCutsPOI = new AliCFAcceptanceCuts("mcAccCutsPOI","MC acceptance cuts");
561 mcAccCutsPOI->SetMinNHitITS(minTrackrefsItsPOI);
562 mcAccCutsPOI->SetMinNHitTPC(minTrackrefsTpcPOI);
563 mcAccCutsPOI->SetMinNHitTRD(minTrackrefsTrdPOI);
564 mcAccCutsPOI->SetMinNHitTOF(minTrackrefsTofPOI);
565 mcAccCutsPOI->SetMinNHitMUON(minTrackrefsMuonPOI);
566 if (QA) {
567 mcAccCutsPOI->SetQAOn(qaPOI);
568 }
569
570
93329510 571
c0ed6325 572 //----------Create Cut Lists----------
94cd9888 573 printf("CREATE EVENT CUTS\n");
c0ed6325 574 TObjArray* mcEventList = new TObjArray(0);
40ca990b 575 if (UseMultCutforESD) mcEventList->AddLast(mcEventCuts);//cut on mult and vertex
94cd9888 576
577 TObjArray* recEventList = new TObjArray(0);
40ca990b 578 if (UseMultCutforESD) recEventList->AddLast(recEventCuts);//cut on mult and vertex
94cd9888 579
93329510 580 printf("CREATE MC KINE CUTS\n");
c0ed6325 581 TObjArray* mcListRP = new TObjArray(0);
582 if (UseKineforRP) mcListRP->AddLast(mcKineCutsRP); //cut on pt/eta/phi
583 mcListRP->AddLast(mcGenCutsRP); //cut on primary and if (UsePIDforRP) MC PID
93329510 584
c0ed6325 585 TObjArray* mcListPOI = new TObjArray(0);
586 if (UseKineforPOI) mcListPOI->AddLast(mcKineCutsPOI); //cut on pt/eta/phi
587 mcListPOI->AddLast(mcGenCutsPOI); //cut on primary and if (UsePIDforPOI) MC PID
93329510 588
c0ed6325 589 printf("CREATE MC ACCEPTANCE CUTS\n");
590 TObjArray* accListRP = new TObjArray(0) ;
591 if (UseAcceptanceforRP) accListRP->AddLast(mcAccCutsRP); //cut on number of track references
93329510 592
c0ed6325 593 TObjArray* accListPOI = new TObjArray(0) ;
594 if (UseAcceptanceforPOI) accListPOI->AddLast(mcAccCutsPOI); //cut on number of track references
93329510 595
c0ed6325 596 printf("CREATE ESD RECONSTRUCTION CUTS\n");
597 TObjArray* recListRP = new TObjArray(0) ;
598 if (UseKineforRP) recListRP->AddLast(recKineCutsRP); //cut on pt/eta/phi
599 if (UseTrackQualityforRP) recListRP->AddLast(recQualityCutsRP);
600 if (UsePrimariesforRP) recListRP->AddLast(recIsPrimaryCutsRP); //cut if it is a primary
93329510 601
c0ed6325 602 TObjArray* recListPOI = new TObjArray(0) ;
603 if (UseKineforPOI) recListPOI->AddLast(recKineCutsPOI); //cut on pt/eta/phi
604 if (UseTrackQualityforPOI) recListPOI->AddLast(recQualityCutsPOI);
605 if (UsePrimariesforPOI) recListPOI->AddLast(recIsPrimaryCutsPOI); //cut if it is a primary
93329510 606
c0ed6325 607 printf("CREATE ESD PID CUTS\n");
608 TObjArray* fPIDCutListRP = new TObjArray(0) ;
609 if(UsePIDforRP) {fPIDCutListRP->AddLast(cutPidRP);} //cut on ESD PID
93329510 610
c0ed6325 611 TObjArray* fPIDCutListPOI = new TObjArray(0) ;
612 if (UsePIDforPOI) {fPIDCutListPOI->AddLast(cutPidPOI);} //cut on ESD PID
93329510 613
c0ed6325 614
615 //----------Add Cut Lists to the CF Manager----------
93329510 616 printf("CREATE INTERFACE AND CUTS\n");
c0ed6325 617 AliCFManager* cfmgrRP = new AliCFManager();
618 cfmgrRP->SetNStepEvent(3);
619 cfmgrRP->SetEventCutsList(AliCFManager::kEvtGenCuts,mcEventList);
620 cfmgrRP->SetEventCutsList(AliCFManager::kEvtRecCuts,recEventList);
621 cfmgrRP->SetNStepParticle(4);
622 cfmgrRP->SetParticleCutsList(AliCFManager::kPartGenCuts,mcListRP);
623 cfmgrRP->SetParticleCutsList(AliCFManager::kPartAccCuts,accListRP);
624 cfmgrRP->SetParticleCutsList(AliCFManager::kPartRecCuts,recListRP);
625 cfmgrRP->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutListRP);
93329510 626
c0ed6325 627 AliCFManager* cfmgrPOI = new AliCFManager();
628 cfmgrPOI->SetNStepEvent(3);
629 cfmgrPOI->SetEventCutsList(AliCFManager::kEvtGenCuts,mcEventList);
630 cfmgrPOI->SetEventCutsList(AliCFManager::kEvtRecCuts,recEventList);
631 cfmgrPOI->SetNStepParticle(4);
632 cfmgrPOI->SetParticleCutsList(AliCFManager::kPartGenCuts,mcListPOI);
633 cfmgrPOI->SetParticleCutsList(AliCFManager::kPartAccCuts,accListPOI);
634 cfmgrPOI->SetParticleCutsList(AliCFManager::kPartRecCuts,recListPOI);
635 cfmgrPOI->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutListPOI);
93329510 636
637 if (QA) {
638 taskFE->SetQAList1(qaRP);
639 taskFE->SetQAList2(qaPOI);
640 }
c0ed6325 641 taskFE->SetCFManager1(cfmgrRP);
642 taskFE->SetCFManager2(cfmgrPOI);
93329510 643
644
645
646 // Create the analysis tasks, add them to the manager.
647 //===========================================================================
648 if (SP){
29195b69 649 AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct",WEIGHTS[0]);
93329510 650 mgr->AddTask(taskSP);
651 }
c741f5d0 652 if (LYZ1SUM){
653 AliAnalysisTaskLeeYangZeros *taskLYZ1SUM = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZerosSUM",kTRUE);
654 taskLYZ1SUM->SetFirstRunLYZ(kTRUE);
655 taskLYZ1SUM->SetUseSumLYZ(kTRUE);
656 mgr->AddTask(taskLYZ1SUM);
657 }
658 if (LYZ1PROD){
659 AliAnalysisTaskLeeYangZeros *taskLYZ1PROD = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZerosPROD",kTRUE);
660 taskLYZ1PROD->SetFirstRunLYZ(kTRUE);
661 taskLYZ1PROD->SetUseSumLYZ(kFALSE);
662 mgr->AddTask(taskLYZ1PROD);
663 }
664 if (LYZ2SUM){
665 AliAnalysisTaskLeeYangZeros *taskLYZ2SUM = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZerosSUM",kFALSE);
666 taskLYZ2SUM->SetFirstRunLYZ(kFALSE);
667 taskLYZ2SUM->SetUseSumLYZ(kTRUE);
668 mgr->AddTask(taskLYZ2SUM);
669 }
670 if (LYZ2PROD){
671 AliAnalysisTaskLeeYangZeros *taskLYZ2PROD = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZerosPROD",kFALSE);
672 taskLYZ2PROD->SetFirstRunLYZ(kFALSE);
673 taskLYZ2PROD->SetUseSumLYZ(kFALSE);
674 mgr->AddTask(taskLYZ2PROD);
93329510 675 }
676 if (LYZEP){
677 AliAnalysisTaskLYZEventPlane *taskLYZEP = new AliAnalysisTaskLYZEventPlane("TaskLYZEventPlane");
678 mgr->AddTask(taskLYZEP);
679 }
680 if (GFC){
681 AliAnalysisTaskCumulants *taskGFC = new AliAnalysisTaskCumulants("TaskCumulants",useWeights);
682 taskGFC->SetUsePhiWeights(WEIGHTS[0]);
683 taskGFC->SetUsePtWeights(WEIGHTS[1]);
684 taskGFC->SetUseEtaWeights(WEIGHTS[2]);
685 mgr->AddTask(taskGFC);
686 }
687 if (QC){
688 AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",useWeights);
689 taskQC->SetUsePhiWeights(WEIGHTS[0]);
690 taskQC->SetUsePtWeights(WEIGHTS[1]);
691 taskQC->SetUseEtaWeights(WEIGHTS[2]);
692 mgr->AddTask(taskQC);
693 }
694 if (FQD){
695 AliAnalysisTaskFittingQDistribution *taskFQD = new AliAnalysisTaskFittingQDistribution("TaskFittingQDistribution",kFALSE);
696 taskFQD->SetUsePhiWeights(WEIGHTS[0]);
697 mgr->AddTask(taskFQD);
698 }
699 if (MCEP){
700 AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane");
701 mgr->AddTask(taskMCEP);
702 }
703
704 // Create the output container for the data produced by the task
705 // Connect to the input and output containers
706 //===========================================================================
707 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
708 AliAnalysisDataContainer *coutputFE = mgr->CreateContainer("cobjFlowEventSimple", AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);
709 mgr->ConnectInput(taskFE,0,cinput1);
f6cf97c1 710 mgr->ConnectOutput(taskFE,1,coutputFE);
93329510 711
712 if (QA) {
47d5b28f 713 TString qaNameRPFE = AliAnalysisManager::GetCommonFileName();
714 qaNameRPFE += ":QAforRP_FE_";
93329510 715 qaNameRPFE += type;
47d5b28f 716
717 AliAnalysisDataContainer *coutputQA1FE =
718 mgr->CreateContainer("QARPFE", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameRPFE);
93329510 719
47d5b28f 720 TString qaNamePOIFE = AliAnalysisManager::GetCommonFileName();
721 qaNamePOIFE += ":QAforPOI_FE_";
93329510 722 qaNamePOIFE += type;
47d5b28f 723
724 AliAnalysisDataContainer *coutputQA2FE =
725 mgr->CreateContainer("QAPOIFE", TList::Class(),AliAnalysisManager::kOutputContainer,qaNamePOIFE);
726
f6cf97c1 727 mgr->ConnectOutput(taskFE,2,coutputQA1FE);
728 mgr->ConnectOutput(taskFE,3,coutputQA2FE);
93329510 729 }
730
731 // Create the output containers for the data produced by the analysis tasks
732 // Connect to the input and output containers
733 //===========================================================================
734 if (useWeights) {
735 AliAnalysisDataContainer *cinputWeights = mgr->CreateContainer("cobjWeights",TList::Class(),AliAnalysisManager::kInputContainer);
736 }
737
738 if(SP) {
47d5b28f 739 TString outputSP = AliAnalysisManager::GetCommonFileName();
740 outputSP += ":outputSPanalysis";
93329510 741 outputSP+= type;
47d5b28f 742
743 AliAnalysisDataContainer *coutputSP = mgr->CreateContainer("cobjSP", TList::Class(),AliAnalysisManager::kOutputContainer,outputSP);
93329510 744 mgr->ConnectInput(taskSP,0,coutputFE);
ea456d37 745 mgr->ConnectOutput(taskSP,1,coutputSP);
29195b69 746 if (WEIGHTS[0]) {
747 mgr->ConnectInput(taskSP,1,cinputWeights);
748 cinputWeights->SetData(weightsList);
749 }
93329510 750 }
c741f5d0 751 if(LYZ1SUM) {
47d5b28f 752 TString outputLYZ1SUM = AliAnalysisManager::GetCommonFileName();
753 outputLYZ1SUM += ":outputLYZ1SUManalysis";
c741f5d0 754 outputLYZ1SUM+= type;
47d5b28f 755
756 AliAnalysisDataContainer *coutputLYZ1SUM = mgr->CreateContainer("cobjLYZ1SUM", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1SUM);
c741f5d0 757 mgr->ConnectInput(taskLYZ1SUM,0,coutputFE);
47d5b28f 758 mgr->ConnectOutput(taskLYZ1SUM,0,coutputLYZ1SUM);
c741f5d0 759 }
760 if(LYZ1PROD) {
47d5b28f 761 TString outputLYZ1PROD = AliAnalysisManager::GetCommonFileName();
762 outputLYZ1PROD += ":outputLYZ1PRODanalysis";
c741f5d0 763 outputLYZ1PROD+= type;
47d5b28f 764
765 AliAnalysisDataContainer *coutputLYZ1PROD = mgr->CreateContainer("cobjLYZ1PROD", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1PROD);
c741f5d0 766 mgr->ConnectInput(taskLYZ1PROD,0,coutputFE);
767 mgr->ConnectOutput(taskLYZ1PROD,0,coutputLYZ1PROD);
768 }
769 if(LYZ2SUM) {
770 AliAnalysisDataContainer *cinputLYZ2SUM = mgr->CreateContainer("cobjLYZ2SUMin",TList::Class(),AliAnalysisManager::kInputContainer);
47d5b28f 771 TString outputLYZ2SUM = AliAnalysisManager::GetCommonFileName();
772 outputLYZ2SUM += ":outputLYZ2SUManalysis";
c741f5d0 773 outputLYZ2SUM+= type;
47d5b28f 774
775 AliAnalysisDataContainer *coutputLYZ2SUM = mgr->CreateContainer("cobjLYZ2SUM", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2SUM);
c741f5d0 776 mgr->ConnectInput(taskLYZ2SUM,0,coutputFE);
777 mgr->ConnectInput(taskLYZ2SUM,1,cinputLYZ2SUM);
47d5b28f 778 mgr->ConnectOutput(taskLYZ2SUM,0,coutputLYZ2SUM);
c741f5d0 779 cinputLYZ2SUM->SetData(fInputListLYZ2SUM);
780 }
781 if(LYZ2PROD) {
782 AliAnalysisDataContainer *cinputLYZ2PROD = mgr->CreateContainer("cobjLYZ2PRODin",TList::Class(),AliAnalysisManager::kInputContainer);
47d5b28f 783 TString outputLYZ2PROD = AliAnalysisManager::GetCommonFileName();
784 outputLYZ2PROD += ":outputLYZ2PRODanalysis";
c741f5d0 785 outputLYZ2PROD+= type;
47d5b28f 786
787 AliAnalysisDataContainer *coutputLYZ2PROD = mgr->CreateContainer("cobjLYZ2PROD", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2PROD);
c741f5d0 788 mgr->ConnectInput(taskLYZ2PROD,0,coutputFE);
789 mgr->ConnectInput(taskLYZ2PROD,1,cinputLYZ2PROD);
47d5b28f 790 mgr->ConnectOutput(taskLYZ2PROD,0,coutputLYZ2PROD);
c741f5d0 791 cinputLYZ2PROD->SetData(fInputListLYZ2PROD);
93329510 792 }
793 if(LYZEP) {
794 AliAnalysisDataContainer *cinputLYZEP = mgr->CreateContainer("cobjLYZEPin",TList::Class(),AliAnalysisManager::kInputContainer);
47d5b28f 795 TString outputLYZEP = AliAnalysisManager::GetCommonFileName();
796 outputLYZEP += ":outputLYZEPanalysis";
93329510 797 outputLYZEP+= type;
47d5b28f 798
799 AliAnalysisDataContainer *coutputLYZEP = mgr->CreateContainer("cobjLYZEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZEP);
93329510 800 mgr->ConnectInput(taskLYZEP,0,coutputFE);
801 mgr->ConnectInput(taskLYZEP,1,cinputLYZEP);
47d5b28f 802 mgr->ConnectOutput(taskLYZEP,0,coutputLYZEP);
93329510 803 cinputLYZEP->SetData(fInputListLYZEP);
804 }
805 if(GFC) {
47d5b28f 806 TString outputGFC = AliAnalysisManager::GetCommonFileName();
807 outputGFC += ":outputGFCanalysis";
93329510 808 outputGFC+= type;
47d5b28f 809
810 AliAnalysisDataContainer *coutputGFC = mgr->CreateContainer("cobjGFC", TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC);
93329510 811 mgr->ConnectInput(taskGFC,0,coutputFE);
812 mgr->ConnectOutput(taskGFC,0,coutputGFC);
813 if (useWeights) {
814 mgr->ConnectInput(taskGFC,1,cinputWeights);
815 cinputWeights->SetData(weightsList);
816 }
817 }
818 if(QC) {
47d5b28f 819 TString outputQC = AliAnalysisManager::GetCommonFileName();
820 outputQC += ":outputQCanalysis";
93329510 821 outputQC+= type;
47d5b28f 822
823 AliAnalysisDataContainer *coutputQC = mgr->CreateContainer("cobjQC", TList::Class(),AliAnalysisManager::kOutputContainer,outputQC);
93329510 824 mgr->ConnectInput(taskQC,0,coutputFE);
825 mgr->ConnectOutput(taskQC,0,coutputQC);
826 if (useWeights) {
827 mgr->ConnectInput(taskQC,1,cinputWeights);
828 cinputWeights->SetData(weightsList);
829 }
830 }
831 if(FQD) {
47d5b28f 832 TString outputFQD = AliAnalysisManager::GetCommonFileName();
833 outputFQD += ":outputFQDanalysis";
93329510 834 outputFQD+= type;
47d5b28f 835
836 AliAnalysisDataContainer *coutputFQD = mgr->CreateContainer("cobjFQD", TList::Class(),AliAnalysisManager::kOutputContainer,outputFQD);
93329510 837 mgr->ConnectInput(taskFQD,0,coutputFE);
838 mgr->ConnectOutput(taskFQD,0,coutputFQD);
839 if(useWeights) {
840 mgr->ConnectInput(taskFQD,1,cinputWeights);
841 cinputWeights->SetData(weightsList);
842 }
843 }
844 if(MCEP) {
47d5b28f 845 TString outputMCEP = AliAnalysisManager::GetCommonFileName();
846 outputMCEP += ":outputMCEPanalysis";
93329510 847 outputMCEP+= type;
47d5b28f 848
849 AliAnalysisDataContainer *coutputMCEP = mgr->CreateContainer("cobjMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputMCEP);
93329510 850 mgr->ConnectInput(taskMCEP,0,coutputFE);
47d5b28f 851 mgr->ConnectOutput(taskMCEP,0,coutputMCEP);
93329510 852 }
853
854
855 // Return analysis task
856 //===========================================================================
857 return taskFE;
858
859
860
861}
862
863
864
865
866