]>
Commit | Line | Data |
---|---|---|
e1dc3f11 | 1 | /////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // AddTaskJetFlow // | |
4 | // Author: Redmer A. Bertens, Utrecht University, 2013 // | |
5 | // // | |
6 | /////////////////////////////////////////////////////////////////// | |
7 | class AliAnalysisDataContainer; | |
7f232b07 | 8 | class 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 | ||
14 | AliAnalysisTaskRhoVnModulation* 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 | //_____________________________________________________________________________ | |
98 | namespace 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 |