]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/macros/AddTaskPWG4HighPtTrackQA.C
added protections, modified addtask macro for Track QA (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{
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
37AliPWG4HighPtTrackQA* 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}