]>
Commit | Line | Data |
---|---|---|
cb68eb1d | 1 | /* ********************************************************************************* |
2 | * File : AddTaskNetParticle.C | |
3 | * Author : Jochen Thaeder <jochen@thaeder.de> | |
4 | * ********************************************************************************* | |
5 | * Configuring NetParticle Task: | |
6 | * - ARGUMENTS : | |
7 | * name -> Name of the task, containing partcile type : | |
8 | * Currently : Proton, Pion, Kaon | |
9 | * isModeDist -> Fill Distributions | |
10 | * isModeEff -> Fill Efficiency/Contamination ThnSparse | |
11 | * isModeDCA -> Fill DCA ThnSparse | |
12 | * useQAThnSparse -> Fill QA ThnSparse | |
13 | * isCreateCSC -> Prepare for CrossSectionCorrection | |
14 | * - requires isModeEff to be set | |
15 | * - Proton only | |
16 | * | |
17 | * - OUTPUT CONTAINER : #N = 5 | |
18 | * (1) - Standard Output, Distributions | |
19 | * (2) - Efficiency ThnSparse | |
20 | * (3) - Contamination ThnSparse | |
21 | * (4) - DCA ThnSparse | |
22 | * (5) - QA ThnSparse | |
23 | * | |
24 | ********************************************************************************* */ | |
25 | ||
26 | AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton", | |
27 | Bool_t isModeDist, Bool_t isModeEff, Bool_t isModeDCA, Bool_t useQAThnSparse = kFALSE, | |
28 | Bool_t isCreateCSC = kFALSE) { | |
29 | ||
30 | TString sName(name); | |
31 | ||
32 | if (isCreateCSC && !isModeEff) { | |
33 | Error("AddTaskNetParticle", "Creating CrossSectionCorrection needs 'isModeEff' to be set."); | |
34 | return NULL; | |
35 | } | |
36 | ||
37 | // ---------------------------------------------- | |
38 | // -- Get the current analysis manager | |
39 | // ---------------------------------------------- | |
40 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
41 | if (!mgr) { | |
42 | Error("AddTaskNetParticle", "No analysis manager found."); | |
43 | return NULL; | |
44 | } | |
45 | ||
46 | // ---------------------------------------------- | |
47 | // -- Check for MC | |
48 | // ---------------------------------------------- | |
49 | Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL); | |
50 | if (isMC) | |
51 | Info("AddTaskNetParticle", "This task has MC."); | |
52 | ||
53 | // ---------------------------------------------- | |
54 | // -- Create task configure it | |
55 | // ---------------------------------------------- | |
56 | AliAnalysisTaskNetParticle *task = new AliAnalysisTaskNetParticle("AliAnalysisTaskNetParticle"); | |
57 | if (!task) { | |
58 | Error("AddTaskNetParticle", "Task could not be created."); | |
59 | return NULL; | |
60 | } | |
61 | ||
62 | if (isMC) | |
63 | task->SetIsMC(); | |
64 | ||
65 | // -- Set particle type | |
66 | // ---------------------------------------------- | |
67 | Float_t minPt, maxPt, minPtEff, maxPtEff, minPtForTOF; | |
68 | ||
69 | if (sName.Contains("Proton")) { | |
70 | task->SetParticleSpecies(AliPID::kProton); | |
71 | task->SetControlParticleSpecies(3122, kTRUE, "Lambda"); | |
72 | minPt = 0.4; maxPt = 2.2; | |
73 | minPtEff = 0.2; maxPtEff = 2.6; | |
74 | minPtForTOF = 0.8; | |
75 | if (isCreateCSC) { | |
76 | minPtForTOF = maxPtEff; | |
77 | } | |
78 | } | |
79 | else if (sName.Contains("Pion")) { | |
80 | task->SetParticleSpecies(AliPID::kPion); | |
81 | task->SetControlParticleSpecies(3122, kTRUE, "Lambda"); /// maybe something else ... | |
82 | minPt = 0.3; maxPt = 0.9; | |
83 | minPtEff = 0.2; maxPtEff = 1.2; | |
84 | minPtForTOF = 0.8; | |
85 | } | |
86 | else if (sName.Contains("Kaon")) { | |
87 | task->SetParticleSpecies(AliPID::kKaon); | |
88 | task->SetControlParticleSpecies(3122, kTRUE, "Lambda"); /// maybe something else ... | |
89 | minPt = 0.2; maxPt = 0.4; | |
90 | minPtEff = 0.1; maxPtEff = 0.8; | |
91 | minPtForTOF = 0.8; | |
92 | } | |
93 | else { | |
94 | Error("AddTaskNetParticle", "Unknown Particle type."); | |
95 | return NULL; | |
96 | } | |
97 | ||
98 | // -- Configure flags | |
99 | // ---------------------------------------------- | |
100 | if (isModeEff) | |
101 | task->SetModeEffCreation(1); // => 1 = on | 0 = off (default) | |
102 | if (isModeDCA) | |
103 | task->SetModeDCACreation(1); // => 1 = on | 0 = off (default) | |
104 | if (isModeDist) | |
105 | task->SetModeDistCreation(1); // => 1 = on | 0 = off (default) | |
106 | ||
107 | // -- Enable QA plots | |
108 | if (useQAThnSparse) | |
109 | task->SetUseQATHnSparse(kTRUE); | |
110 | ||
111 | // -- Configure cuts | |
112 | // ---------------------------------------------- | |
113 | ||
114 | // -- Set cut flags ... | |
115 | task->SetESDTrackCutMode(0); // => 0 = clean | 1 = dirty | |
116 | ||
117 | // -- Set standard event cuts | |
118 | task->SetVertexZMax(10.); | |
119 | task->SetCentralityBinMax(7); | |
120 | ||
121 | // -- Set track event cuts | |
122 | task->SetRapidityMax(0.5); | |
123 | task->SetMinTrackLengthMC(70.); | |
124 | task->SetNSigmaMaxCdd(3.); | |
125 | task->SetNSigmaMaxCzz(3.); | |
126 | ||
127 | task->SetNSigmaMaxTPC(2.5); | |
128 | task->SetNSigmaMaxTOF(2.5); | |
129 | task->SetMinPtForTOFRequired(minPtForTOF); | |
130 | ||
131 | // -- Set analysis ranges | |
132 | task->SetEtaMax(0.9); | |
133 | task->SetPtRange(minPt, maxPt); // pt cut range for the analysis | |
134 | task->SetPtRangeEff(minPtEff, maxPtEff); // pt cut range for the correction / efficiency / contamination creation | |
135 | ||
136 | // ---------------------------------------------- | |
137 | // -- Initialize and add task to the ANALYSIS manager | |
138 | // ---------------------------------------------- | |
139 | if (!task->Initialize()) | |
140 | mgr->AddTask(task); | |
141 | else { | |
142 | Error("Initialize failed, not adding AliAnalysistaskNetParticle !!!"); | |
143 | delete task; | |
144 | return NULL; | |
145 | } | |
146 | ||
147 | // ---------------------------------------------- | |
148 | // -- data containers - input | |
149 | // ---------------------------------------------- | |
150 | AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer(); | |
151 | ||
152 | // ---------------------------------------------- | |
153 | // -- data containers - output | |
154 | // ---------------------------------------------- | |
155 | AliAnalysisDataContainer *coutput = mgr->CreateContainer(name, TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name)); | |
156 | AliAnalysisDataContainer *coutputEff = mgr->CreateContainer(Form("%s_eff", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name)); | |
157 | AliAnalysisDataContainer *coutputCont = mgr->CreateContainer(Form("%s_cont", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name)); | |
158 | AliAnalysisDataContainer *coutputDca = mgr->CreateContainer(Form("%s_dca", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s.root", name)); | |
159 | ||
160 | AliAnalysisDataContainer *coutputQA = mgr->CreateContainer(Form("%sQA", name), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%sQA.root", name)); | |
161 | ||
162 | mgr->ConnectInput (task, 0, cinput ); | |
163 | mgr->ConnectOutput (task, 1, coutput); | |
164 | mgr->ConnectOutput (task, 2, coutputEff); | |
165 | mgr->ConnectOutput (task, 3, coutputCont); | |
166 | mgr->ConnectOutput (task, 4, coutputDca); | |
167 | mgr->ConnectOutput (task, 5, coutputQA); | |
168 | ||
169 | return task; | |
170 | } |