]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/macros/AddTaskPWG4HighPtTrackQA.C
reduced number of bins in histgrams (M. Verweij)
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskPWG4HighPtTrackQA.C
CommitLineData
5c77d274 1void 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 38void 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
53void 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 68void 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 74AliPWG4HighPtTrackQA* 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}