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