]>
Commit | Line | Data |
---|---|---|
e1dc3f11 | 1 | /////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // AddTaskJetFlow // | |
4 | // Author: Redmer A. Bertens, Utrecht University, 2013 // | |
5 | // // | |
6 | /////////////////////////////////////////////////////////////////// | |
7 | class AliAnalysisDataContainer; | |
8 | class AliFlowTrackCuts; | |
9 | ||
a4a06f0e | 10 | void AddTaskJetFlow( TString name = "name", |
11 | TString jets = "jets", | |
12 | Float_t ptbump = 0, | |
13 | TArrayI* cent = 0x0, | |
14 | Float_t MinPOIPt = 0.15, | |
15 | Float_t MaxPOIPt = 150, | |
16 | Float_t CCBinsInPt = 100, | |
17 | Bool_t VParticle = kFALSE, | |
5a4d96c7 | 18 | Int_t year = -1, |
19 | Bool_t testFlow = kFALSE, | |
a4a06f0e | 20 | Bool_t debug = kFALSE ) |
e1dc3f11 | 21 | { |
22 | // first check the environment (common to all tasks) | |
23 | if(debug) printf("\n\n >> AddTaskJetFlow <<\n"); | |
24 | TString fileName = AliAnalysisManager::GetCommonFileName(); | |
25 | fileName += ":JetFlow"; | |
26 | if(debug) printf(" - filename: %s \n",fileName.Data()); | |
27 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
28 | if (!mgr) { | |
29 | if(debug) cout << " Fatal error: no analysis manager found! " << endl; | |
30 | return 0x0; | |
31 | } | |
32 | if (!mgr->GetInputEventHandler()) { | |
33 | if(debug) cout << " Fatal error: no imput event handler found!" << endl; | |
34 | return 0x0; | |
35 | } | |
98bd4878 | 36 | // check the centrality setup |
37 | if(!cent) { | |
2db2a6d0 | 38 | Int_t c[] = {0, 10, 30, 50, 70, 90}; |
98bd4878 | 39 | cent = new TArrayI(sizeof(c)/sizeof(c[0]), c); |
40 | printf(" > Setup default centrality binning with %i bins \n ", cent->GetSize()); | |
e1dc3f11 | 41 | } |
98bd4878 | 42 | // create the cut objects |
6f5e34fa | 43 | AliFlowTrackCuts* CutsRP_VZERO = new AliFlowTrackCuts("CutsRP_VZERO"); |
44 | CutsRP_VZERO = CutsRP_VZERO->GetStandardVZEROOnlyTrackCuts(); | |
45 | AliFlowTrackCuts* CutsRP_TPC = new AliFlowTrackCuts("CutsRP_TPC"); | |
46 | CutsRP_TPC = CutsRP_TPC->GetStandardTPCStandaloneTrackCuts(); | |
47 | CutsRP_TPC->SetAODfilterBit(1); | |
98bd4878 | 48 | AliFlowTrackCuts* CutsNull = new AliFlowTrackCuts("CutsNull"); |
49 | CutsNull->SetParamType(AliFlowTrackCuts::kGlobal); | |
50 | CutsNull->SetEtaRange(+1, -1); | |
51 | CutsNull->SetPtRange(+1, -1); | |
52 | // add the tasks in a loop, one task for each centrality bin | |
53 | for(Int_t i(0); i < cent->GetSize()-1; i++) { | |
54 | TString tempName(Form("%s_%i_%i", name.Data(), cent->At(i), cent->At(i+1))); | |
55 | // create the task | |
56 | AliAnalysisTaskJetFlow* task = new AliAnalysisTaskJetFlow(tempName.Data()); | |
a4a06f0e | 57 | task->SetCCMaxPt(MaxPOIPt); |
58 | task->SetCCBinsInPt(CCBinsInPt); | |
59 | task->SetDoVParticleAnalysis(VParticle); | |
5a4d96c7 | 60 | task->SetDoTestFlowAnalysis(testFlow); |
61 | task->SetExplicitOutlierCut(year); | |
a4a06f0e | 62 | task->SetMinMaxPOIPt(MinPOIPt, MaxPOIPt); |
63 | (debug) ? task->SetDebugMode(1) : task->SetDebugMode(-1); | |
98bd4878 | 64 | if(!task) { |
65 | if(debug) cout << " --> Unexpected error occurred: NO TASK WAS CREATED! (could be a library problem!) " << endl; | |
66 | return 0x0; | |
67 | } | |
68 | else printf(" > added task with name %s and jet collection %s < \n", tempName.Data(), jets.Data()); | |
69 | task->SetJetCollectionName(jets.Data()); | |
70 | // pass specific objects and settigns to the task | |
6f5e34fa | 71 | task->SetCutsRP(CutsRP_TPC, CutsRP_VZERO); |
98bd4878 | 72 | task->SetCutsNull(CutsNull); |
73 | task->SetMinMaxCentrality(cent->At(i), cent->At(1+i)); | |
74 | task->SetPtBump(ptbump); | |
75 | mgr->AddTask(task); | |
76 | mgr->ConnectInput(task,0,mgr->GetCommonInputContainer()); | |
77 | mgr->ConnectOutput(task,1,mgr->CreateContainer(Form("%s_histograms", tempName.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, fileName.Data())); | |
6f5e34fa | 78 | // connect flow anaysis task |
79 | AliAnalysisDataContainer *flowEvent_VZERO = mgr->CreateContainer(Form("flowEvent_VZERO_%s", tempName.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer); | |
80 | mgr->ConnectOutput(task, 2, flowEvent_VZERO); | |
81 | AliAnalysisDataContainer *flowEvent_TPC = mgr->CreateContainer(Form("flowEvent_TPC_%s", tempName.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer); | |
82 | mgr->ConnectOutput(task, 3, flowEvent_TPC); | |
83 | TaskJetFlow::AddSPmethod(Form("SPVZERO_A_%s", tempName.Data()), "Qa", 2, flowEvent_VZERO); | |
84 | TaskJetFlow::AddSPmethod(Form("SPVZERO_B_%s", tempName.Data()), "Qb", 2, flowEvent_VZERO); | |
85 | TaskJetFlow::AddQCmethod(Form("QC_%s", tempName.Data()), 2, flowEvent_TPC); | |
98bd4878 | 86 | } |
e1dc3f11 | 87 | } |
88 | //_____________________________________________________________________________ | |
89 | namespace TaskJetFlow{ // use unique namespace to avoid problems in TRAIN analysis | |
6f5e34fa | 90 | void AddSPmethod(char *name, char *Qvector, int harmonic, AliAnalysisDataContainer *flowEvent) |
91 | { | |
92 | TString fileName = AliAnalysisManager::GetCommonFileName(); | |
93 | fileName+=":SP"; | |
94 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
95 | AliAnalysisDataContainer *outSP = mgr->CreateContainer(name, TList::Class(), AliAnalysisManager::kOutputContainer, fileName); | |
96 | AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct(Form("TaskScalarProduct_%s", name), kFALSE); | |
97 | tskSP->SetApplyCorrectionForNUA(kTRUE); | |
98 | tskSP->SetHarmonic(harmonic); | |
99 | if(!strcmp("Qa", Qvector)) tskSP->SetTotalQvector("Qa"); | |
100 | if(!strcmp("Qb", Qvector)) tskSP->SetTotalQvector("Qb"); | |
101 | tskSP->SetBookOnlyBasicCCH(kFALSE); | |
102 | mgr->AddTask(tskSP); | |
103 | mgr->ConnectInput(tskSP, 0, flowEvent); | |
104 | mgr->ConnectOutput(tskSP, 1, outSP); | |
105 | } | |
106 | //_____________________________________________________________________________ | |
107 | void AddQCmethod(char *name, int harmonic, AliAnalysisDataContainer *flowEvent) | |
e1dc3f11 | 108 | { |
e1dc3f11 | 109 | TString fileName = AliAnalysisManager::GetCommonFileName(); |
6f5e34fa | 110 | fileName+=":QC"; |
e1dc3f11 | 111 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); |
6f5e34fa | 112 | AliAnalysisDataContainer *outQC = mgr->CreateContainer(name, TList::Class(), AliAnalysisManager::kOutputContainer, fileName); |
113 | AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants(Form("TaskQCumulants_%s", name), kFALSE); | |
114 | tskQC->SetApplyCorrectionForNUA(kTRUE); | |
115 | tskQC->SetHarmonic(harmonic); | |
116 | tskQC->SetBookOnlyBasicCCH(kFALSE); | |
117 | mgr->AddTask(tskQC); | |
118 | mgr->ConnectInput(tskQC, 0, flowEvent); | |
119 | mgr->ConnectOutput(tskQC, 1, outQC); | |
e1dc3f11 | 120 | } |
6f5e34fa | 121 | //_____________________________________________________________________________ |
e1dc3f11 | 122 | }// end of namespace TaskJetFlow |