]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FLOW/macros/AddTaskJetFlow.C
from Redmer Bertens:
[u/mrichter/AliRoot.git] / PWGCF / FLOW / macros / AddTaskJetFlow.C
CommitLineData
e1dc3f11 1///////////////////////////////////////////////////////////////////
2// //
3// AddTaskJetFlow //
4// Author: Redmer A. Bertens, Utrecht University, 2013 //
5// //
6///////////////////////////////////////////////////////////////////
7class AliAnalysisDataContainer;
7f232b07 8class AliAnalysisTaskRhoVnModulation;
e1dc3f11 9
7f232b07 10// AddTask macro for the jet flow analysis task
11// this task uses an instance AliAnalysisTaskRhoVnModulation
12// as a 'master' object for analysis flags and track and event cuts
13
14AliAnalysisTaskRhoVnModulation* AddTaskJetFlow(
15 TString name = "name",
16 AliAnalysisTaskRhoVnModulation* t = 0x0,
17 Float_t CCMinPt = 1,
18 Float_t CCMaxPt = 150,
19 Float_t CCBinsInPt = 100,
20 Bool_t VParticle = kFALSE,
21 TArrayD* ptArray = 0x0,
22 Bool_t VZEROEP = kTRUE,
ba9aeb09 23 Bool_t GQC2 = kTRUE,
7f232b07 24 Bool_t QC2 = kTRUE,
25 Bool_t QC4 = kFALSE,
26 Bool_t FlowPackageSP = kFALSE,
27 Bool_t FlowPackageQC = kTRUE,
ba9aeb09 28 TString LocalRhoName = "",
7f232b07 29 Bool_t debug = kFALSE )
e1dc3f11 30{
31 // first check the environment (common to all tasks)
32 if(debug) printf("\n\n >> AddTaskJetFlow <<\n");
33 TString fileName = AliAnalysisManager::GetCommonFileName();
2a62aeb2 34 fileName += ":";
35 fileName += t->GetName();
36 fileName += "_PWGCF";
e1dc3f11 37 if(debug) printf(" - filename: %s \n",fileName.Data());
38 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
39 if (!mgr) {
40 if(debug) cout << " Fatal error: no analysis manager found! " << endl;
41 return 0x0;
42 }
43 if (!mgr->GetInputEventHandler()) {
44 if(debug) cout << " Fatal error: no imput event handler found!" << endl;
45 return 0x0;
46 }
7f232b07 47 AliAnalysisTaskRhoVnModulation* rhoTask = t;
98bd4878 48 // check the centrality setup
7f232b07 49 TArrayI* cent(rhoTask->GetCentralityClasses());
98bd4878 50 // add the tasks in a loop, one task for each centrality bin
51 for(Int_t i(0); i < cent->GetSize()-1; i++) {
52 TString tempName(Form("%s_%i_%i", name.Data(), cent->At(i), cent->At(i+1)));
53 // create the task
06e0f8e5 54 AliAnalysisTaskJetFlow* task = new AliAnalysisTaskJetFlow(
55 tempName.Data(),
7f232b07 56 rhoTask,
57 VParticle,
58 VZEROEP,
ba9aeb09 59 GQC2,
7f232b07 60 QC2,
61 QC4,
62 FlowPackageSP,
63 FlowPackageQC);
64 task->SetCCMinPt(CCMinPt);
65 task->SetCCMaxPt(CCMaxPt);
a4a06f0e 66 task->SetCCBinsInPt(CCBinsInPt);
7f232b07 67 task->SetPtBins(ptArray); // if passed as NULL default a sane default is provided
ba9aeb09 68 task->SetLocalRhoName(LocalRhoName);
a4b3e9e4 69 task->SetJetRadius(rhoTask->GetJetRadius());
a4a06f0e 70 (debug) ? task->SetDebugMode(1) : task->SetDebugMode(-1);
98bd4878 71 if(!task) {
2a62aeb2 72 if(debug) printf(" --> Unexpected error occurred: NO TASK WAS CREATED! (could be a library problem!)\n ");
98bd4878 73 return 0x0;
74 }
98bd4878 75 // pass specific objects and settigns to the task
98bd4878 76 task->SetMinMaxCentrality(cent->At(i), cent->At(1+i));
98bd4878 77 mgr->AddTask(task);
78 mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
79 mgr->ConnectOutput(task,1,mgr->CreateContainer(Form("%s_histograms", tempName.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, fileName.Data()));
6f5e34fa 80 // connect flow anaysis task
f0438bd7 81 Bool_t slotTwoFilled(kFALSE);
7f232b07 82 if(FlowPackageSP) {
f0438bd7 83 AliAnalysisDataContainer *flowEvent_VZERO = mgr->CreateContainer(Form("flowEvent_VZERO_%s", tempName.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);
84 mgr->ConnectOutput(task, 2, flowEvent_VZERO);
85 slotTwoFilled = kTRUE;
86 }
7f232b07 87 if(FlowPackageQC) {
f0438bd7 88 AliAnalysisDataContainer *flowEvent_TPC = mgr->CreateContainer(Form("flowEvent_TPC_%s", tempName.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);
89 (slotTwoFilled) ? mgr->ConnectOutput(task, 3, flowEvent_TPC) : mgr->ConnectOutput(task, 2, flowEvent_TPC);
90 }
2a62aeb2 91 if(FlowPackageSP) TaskJetFlow::AddSPmethod(Form("SPVZERO_A_%s", tempName.Data()), "Qa", 2, flowEvent_VZERO, t);
92 if(FlowPackageSP) TaskJetFlow::AddSPmethod(Form("SPVZERO_B_%s", tempName.Data()), "Qb", 2, flowEvent_VZERO, t);
93 if(FlowPackageQC) TaskJetFlow::AddQCmethod(Form("QC_%s", tempName.Data()), 2, flowEvent_TPC, t);
98bd4878 94 }
7f232b07 95 return rhoTask;
e1dc3f11 96}
97//_____________________________________________________________________________
98namespace TaskJetFlow{ // use unique namespace to avoid problems in TRAIN analysis
2a62aeb2 99 void AddSPmethod(char *name, char *Qvector, int harmonic, AliAnalysisDataContainer *flowEvent, AliAnalysisTaskRhoVnModulation* t)
6f5e34fa 100 {
101 TString fileName = AliAnalysisManager::GetCommonFileName();
2a62aeb2 102 fileName+=":";
103 fileName+=t->GetName();
104 fileName+="_PWGCF";
6f5e34fa 105 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
106 AliAnalysisDataContainer *outSP = mgr->CreateContainer(name, TList::Class(), AliAnalysisManager::kOutputContainer, fileName);
107 AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct(Form("TaskScalarProduct_%s", name), kFALSE);
108 tskSP->SetApplyCorrectionForNUA(kTRUE);
109 tskSP->SetHarmonic(harmonic);
110 if(!strcmp("Qa", Qvector)) tskSP->SetTotalQvector("Qa");
111 if(!strcmp("Qb", Qvector)) tskSP->SetTotalQvector("Qb");
112 tskSP->SetBookOnlyBasicCCH(kFALSE);
113 mgr->AddTask(tskSP);
114 mgr->ConnectInput(tskSP, 0, flowEvent);
115 mgr->ConnectOutput(tskSP, 1, outSP);
116 }
117//_____________________________________________________________________________
2a62aeb2 118 void AddQCmethod(char *name, int harmonic, AliAnalysisDataContainer *flowEvent, AliAnalysisTaskRhoVnModulation* t)
e1dc3f11 119 {
e1dc3f11 120 TString fileName = AliAnalysisManager::GetCommonFileName();
2a62aeb2 121 fileName+=":";
122 fileName+=t->GetName();
123 fileName+="_PWGCF";
e1dc3f11 124 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
6f5e34fa 125 AliAnalysisDataContainer *outQC = mgr->CreateContainer(name, TList::Class(), AliAnalysisManager::kOutputContainer, fileName);
126 AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants(Form("TaskQCumulants_%s", name), kFALSE);
127 tskQC->SetApplyCorrectionForNUA(kTRUE);
128 tskQC->SetHarmonic(harmonic);
129 tskQC->SetBookOnlyBasicCCH(kFALSE);
130 mgr->AddTask(tskQC);
131 mgr->ConnectInput(tskQC, 0, flowEvent);
132 mgr->ConnectOutput(tskQC, 1, outQC);
e1dc3f11 133 }
6f5e34fa 134//_____________________________________________________________________________
e1dc3f11 135}// end of namespace TaskJetFlow