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