]>
Commit | Line | Data |
---|---|---|
5c77d274 | 1 | void AddTaskPWG4HighPtTrackQAAll(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) |
2 | { | |
c3ff0a6e | 3 | |
5c77d274 | 4 | int cent = 10; |
5 | ||
6 | AliPWG4HighPtTrackQA *taskTrackQA00cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0); | |
5a0bd31f | 7 | AliPWG4HighPtTrackQA *taskTrackQA01cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1); |
8 | AliPWG4HighPtTrackQA *taskTrackQA02cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2); | |
dbf52bac | 9 | AliPWG4HighPtTrackQA *taskTrackQA03cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,3); |
5c77d274 | 10 | AliPWG4HighPtTrackQA *taskTrackQA10cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0); |
11 | AliPWG4HighPtTrackQA *taskTrackQA11cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1); | |
5a0bd31f | 12 | // AliPWG4HighPtTrackQA *taskTrackQA20cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0); |
13 | // AliPWG4HighPtTrackQA *taskTrackQA21cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1); | |
dbf52bac | 14 | AliPWG4HighPtTrackQA *taskTrackQA40cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0); |
15 | AliPWG4HighPtTrackQA *taskTrackQA41cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1); | |
16 | AliPWG4HighPtTrackQA *taskTrackQA50cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,5,0); | |
17 | AliPWG4HighPtTrackQA *taskTrackQA60cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,6,0); | |
18 | ||
5c77d274 | 19 | if(isPbPb) { |
20 | for(cent=0; cent<4; cent++) { | |
21 | AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0); | |
5a0bd31f | 22 | AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1); |
23 | AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2); | |
dbf52bac | 24 | AliPWG4HighPtTrackQA *taskTrackQA03 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,3); |
5c77d274 | 25 | AliPWG4HighPtTrackQA *taskTrackQA10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0); |
26 | AliPWG4HighPtTrackQA *taskTrackQA11 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1); | |
5a0bd31f | 27 | // AliPWG4HighPtTrackQA *taskTrackQA20 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0); |
28 | // AliPWG4HighPtTrackQA *taskTrackQA21 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1); | |
aa3ba8d2 | 29 | AliPWG4HighPtTrackQA *taskTrackQA40 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0); |
30 | AliPWG4HighPtTrackQA *taskTrackQA41 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1); | |
dbf52bac | 31 | AliPWG4HighPtTrackQA *taskTrackQA50 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,5,0); |
32 | AliPWG4HighPtTrackQA *taskTrackQA60 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,6,0); | |
5c77d274 | 33 | } |
34 | } | |
35 | ||
36 | } | |
37 | ||
eb1739b7 | 38 | void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) |
b1041e3b | 39 | { |
40 | ||
41 | int cent = 10; | |
42 | ||
43 | if(isPbPb) { | |
44 | for(cent=0; cent<4; cent++) { | |
45 | AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0); | |
46 | AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1); | |
47 | AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2); | |
48 | } | |
49 | } | |
50 | ||
51 | } | |
52 | ||
53 | void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) | |
eb1739b7 | 54 | { |
55 | ||
56 | int cent = 10; | |
57 | ||
58 | if(isPbPb) { | |
59 | for(cent=0; cent<4; cent++) { | |
60 | AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0); | |
61 | AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1); | |
62 | AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2); | |
63 | } | |
64 | } | |
65 | ||
66 | } | |
67 | ||
c3ff0a6e | 68 | void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit) |
69 | { | |
70 | AliPWG4HighPtTrackQA *taskTrackQA = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,0,0,0); | |
71 | taskTrackQA->SetFilterMask(filterBit); | |
72 | } | |
73 | ||
5c77d274 | 74 | AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0) |
75 | { | |
76 | /* | |
77 | trackType: 0 = global | |
78 | 1 = TPC stand alone | |
79 | 2 = TPC stand alone constrained to SPD vertex | |
aa3ba8d2 | 80 | 4 = TPC stand alone constrained to SPD vertex with QA track selection on global tracks |
dbf52bac | 81 | 5 = Hybrid tracks: constrained TPConly for which no tight ITS is available |
82 | 6 = Hybrid tracks: constrained loose global for which no tight ITS is available | |
5a0bd31f | 83 | cuts: 0 (global) = standard ITSTPC2010 a la RAA analysis |
84 | 1 (global) = ITSrefit, no SPD requirements -> standard for jet analysis | |
85 | 2 (global) = ITSrefit + no hits in SPD | |
86 | 3 (global) = standard ITS tight cuts with nCrossed rows cut for hybrid tracks | |
5c77d274 | 87 | 0 (TPC) = standard TPC + NClusters>70 |
88 | 1 (TPC) = standard TPC + NClusters>0 --> to study new TPC QA recommendations | |
dbf52bac | 89 | 0 (hybrid 5) = constrained TPConly for which no tight ITS is available |
90 | 0 (hybrid 6) = constrained loose global for which no tight ITS is available | |
5c77d274 | 91 | */ |
92 | ||
93 | // Creates HighPtTrackQA analysis task and adds it to the analysis manager. | |
94 | ||
95 | // A. Get the pointer to the existing analysis manager via the static access method. | |
96 | //============================================================================== | |
97 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
98 | if (!mgr) { | |
99 | Error("AddTaskPWG4HighPtQMC", "No analysis manager to connect to."); | |
100 | return NULL; | |
101 | } | |
102 | ||
103 | // B. Check the analysis type using the event handlers connected to the analysis | |
104 | // manager. The availability of MC handler can also be checked here. | |
105 | //============================================================================== | |
106 | if (!mgr->GetInputEventHandler()) { | |
107 | ::Error("AddPWG4TaskHighPtTrackQA", "This task requires an input event handler"); | |
108 | return NULL; | |
109 | } | |
110 | ||
111 | // C. Create the task, add it to manager. | |
112 | //=========================================================================== | |
113 | ||
114 | //CREATE THE CUTS ----------------------------------------------- | |
115 | //Use AliESDtrackCuts | |
116 | AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts"); | |
dbf52bac | 117 | AliESDtrackCuts *trackCutsITSLoose = 0x0; |
118 | AliESDtrackCuts *trackCutsTPConly = new AliESDtrackCuts("AliESDtrackCutsTPConly","TPC only Cuts"); | |
119 | ||
5c77d274 | 120 | //Standard Cuts |
121 | //Set track cuts for global tracks | |
122 | if(trackType==0 && cuts==0) { | |
5a0bd31f | 123 | // tight global tracks |
124 | trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1); | |
125 | trackCuts->SetMinNCrossedRowsTPC(120); | |
126 | trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially swittches it off | |
127 | trackCuts->SetMaxChi2PerClusterITS(36); | |
4e16bffb | 128 | trackCuts->SetMaxFractionSharedTPCClusters(0.4); |
5c77d274 | 129 | } |
130 | if(trackType==0 && cuts==1) { | |
5a0bd31f | 131 | //Cuts global tracks with ITSrefit requirement for jet analysis |
5c77d274 | 132 | // TPC |
5a0bd31f | 133 | trackCuts->SetMinNClustersTPC(80); |
5c77d274 | 134 | trackCuts->SetMaxChi2PerClusterTPC(4); |
135 | trackCuts->SetAcceptKinkDaughters(kFALSE); | |
136 | trackCuts->SetRequireTPCRefit(kTRUE); | |
4e16bffb | 137 | trackCuts->SetMaxFractionSharedTPCClusters(0.4); |
5c77d274 | 138 | // ITS |
139 | trackCuts->SetRequireITSRefit(kTRUE); | |
5a0bd31f | 140 | //accept secondaries |
141 | trackCuts->SetMaxDCAToVertexXY(2.4); | |
142 | trackCuts->SetMaxDCAToVertexZ(3.2); | |
143 | trackCuts->SetDCAToVertex2D(kTRUE); | |
144 | //reject fakes | |
145 | trackCuts->SetMaxChi2PerClusterITS(36); | |
146 | ||
5c77d274 | 147 | trackCuts->SetRequireSigmaToVertex(kFALSE); |
5a0bd31f | 148 | |
5c77d274 | 149 | } |
150 | if(trackType==0 && cuts==2) { | |
5a0bd31f | 151 | //Cuts global tracks with ITSrefit requirement but without SPD |
5c77d274 | 152 | // TPC |
5a0bd31f | 153 | trackCuts->SetMinNClustersTPC(80); |
5c77d274 | 154 | trackCuts->SetMaxChi2PerClusterTPC(4); |
155 | trackCuts->SetAcceptKinkDaughters(kFALSE); | |
156 | trackCuts->SetRequireTPCRefit(kTRUE); | |
4e16bffb | 157 | trackCuts->SetMaxFractionSharedTPCClusters(0.4); |
5c77d274 | 158 | // ITS |
159 | trackCuts->SetRequireITSRefit(kTRUE); | |
5a0bd31f | 160 | //accept secondaries |
161 | trackCuts->SetMaxDCAToVertexXY(2.4); | |
162 | trackCuts->SetMaxDCAToVertexZ(3.2); | |
163 | trackCuts->SetDCAToVertex2D(kTRUE); | |
164 | //reject fakes | |
165 | trackCuts->SetMaxChi2PerClusterITS(36); | |
5c77d274 | 166 | trackCuts->SetRequireSigmaToVertex(kFALSE); |
5a0bd31f | 167 | //no SPD points |
168 | trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone); | |
5c77d274 | 169 | } |
dbf52bac | 170 | if(trackType==0 && cuts==3) { |
171 | // tight global tracks | |
172 | trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1); | |
173 | trackCuts->SetMinNCrossedRowsTPC(120); | |
5a0bd31f | 174 | trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off |
dbf52bac | 175 | trackCuts->SetMaxDCAToVertexXY(2.4); |
176 | trackCuts->SetMaxDCAToVertexZ(3.2); | |
177 | trackCuts->SetDCAToVertex2D(kTRUE); | |
5a0bd31f | 178 | trackCuts->SetMaxChi2PerClusterITS(36); |
4e16bffb | 179 | trackCuts->SetMaxFractionSharedTPCClusters(0.4); |
dbf52bac | 180 | } |
181 | ||
5c77d274 | 182 | if(trackType==1 && cuts==0) { |
183 | //Set track cuts for TPConly tracks | |
184 | trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts(); | |
185 | trackCuts->SetMinNClustersTPC(70); | |
186 | } | |
187 | if(trackType==1 && cuts==1) { | |
188 | //Set track cuts for TPConly tracks | |
189 | trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts(); | |
190 | trackCuts->SetMinNClustersTPC(0); | |
191 | } | |
192 | ||
193 | if(trackType==2 && cuts==0) { | |
194 | // Set track cuts for TPConly constrained tracks | |
195 | trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts(); | |
196 | trackCuts->SetMinNClustersTPC(70); | |
197 | } | |
198 | if(trackType==2 && cuts==1) { | |
199 | //Set track cuts for TPConly constrained tracks | |
200 | trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts(); | |
201 | trackCuts->SetMinNClustersTPC(0); | |
202 | } | |
aa3ba8d2 | 203 | |
204 | if(trackType==4 && cuts==0) { | |
205 | // Set track cuts for TPConly constrained tracks | |
206 | trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts(); | |
207 | trackCuts->SetMinNClustersTPC(70); | |
208 | } | |
209 | if(trackType==4 && cuts==1) { | |
210 | // Set track cuts for TPConly constrained tracks | |
211 | trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts(); | |
212 | trackCuts->SetMinNClustersTPC(0); | |
213 | } | |
dbf52bac | 214 | if(trackType==5 || trackType==6) { |
215 | // tight global tracks | |
216 | trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1); | |
217 | trackCuts->SetMinNCrossedRowsTPC(120); | |
218 | trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially swittches it off | |
219 | trackCuts->SetMaxDCAToVertexXY(2.4); | |
220 | trackCuts->SetMaxDCAToVertexZ(3.2); | |
221 | trackCuts->SetDCAToVertex2D(kTRUE); | |
5a0bd31f | 222 | trackCuts->SetMaxChi2PerClusterITS(36); |
dbf52bac | 223 | |
224 | trackCutsITSLoose = new AliESDtrackCuts(*trackCuts); | |
225 | trackCutsITSLoose->SetName("loose ITS fake cuts"); | |
226 | trackCutsITSLoose->SetMaxChi2PerClusterITS(1E10); | |
227 | ||
228 | trackCutsTPConly = trackCutsTPConly->GetStandardTPCOnlyTrackCuts(); | |
c3ff0a6e | 229 | trackCutsTPConly->SetMinNClustersTPC(0); |
dbf52bac | 230 | trackCutsTPConly->SetMinNCrossedRowsTPC(120); |
231 | trackCutsTPConly->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off | |
232 | } | |
aa3ba8d2 | 233 | |
5c77d274 | 234 | trackCuts->SetEtaRange(-0.9,0.9); |
235 | trackCuts->SetPtRange(0.15, 1e10); | |
236 | ||
237 | ||
238 | ||
239 | //Create the task | |
240 | AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d",centClass,trackType,cuts)); | |
5c77d274 | 241 | taskPWG4TrackQA->SetTrackType(trackType); |
dbf52bac | 242 | taskPWG4TrackQA->SetCuts(trackCuts); |
243 | taskPWG4TrackQA->SetCutsITSLoose(trackCutsITSLoose); | |
244 | taskPWG4TrackQA->SetCutsTPConly(trackCutsTPConly); | |
5c77d274 | 245 | |
246 | taskPWG4TrackQA->SetPtMax(100.); | |
247 | ||
248 | if(iAODanalysis) | |
249 | taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kAOD); | |
250 | else | |
251 | taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kESD); | |
252 | ||
253 | if(isPbPb) { | |
254 | taskPWG4TrackQA->SetIsPbPb(kTRUE); | |
255 | taskPWG4TrackQA->SetCentralityClass(centClass); | |
256 | } | |
aa3ba8d2 | 257 | // taskPWG4TrackQA->SetSigmaConstrainedMax(5.); |
5c77d274 | 258 | |
259 | taskPWG4TrackQA->SelectCollisionCandidates(); | |
260 | ||
261 | ||
262 | // E. Create ONLY the output containers for the data produced by the task. | |
263 | // Get and connect other common input/output containers via the manager as below | |
264 | //============================================================================== | |
265 | ||
266 | TString outputfile = AliAnalysisManager::GetCommonFileName(); | |
267 | outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts); | |
268 | ||
269 | AliAnalysisDataContainer *cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile); | |
270 | ||
271 | mgr->AddTask(taskPWG4TrackQA); | |
272 | mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer()); | |
273 | mgr->ConnectOutput(taskPWG4TrackQA,1,cout_histQAtrack); | |
274 | ||
275 | // Return task pointer at the end | |
276 | return taskPWG4TrackQA; | |
277 | } |