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