]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/macros/AddTaskPWG4HighPtTrackQA.C
Reader: Add possibility to recalculate TOF of clusters after recalibration; CaloUtils...
[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);
b43ea0be 8 // AliPWG4HighPtTrackQA *taskTrackQA02cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
380cff49 9 // AliPWG4HighPtTrackQA *taskTrackQA10cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
10 // AliPWG4HighPtTrackQA *taskTrackQA11cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
5a0bd31f 11 // AliPWG4HighPtTrackQA *taskTrackQA20cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
12 // AliPWG4HighPtTrackQA *taskTrackQA21cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
d889ce29 13 // AliPWG4HighPtTrackQA *taskTrackQA40cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0);
327d12da 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);
380cff49 17 AliPWG4HighPtTrackQA *taskTrackQA70cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
18 AliPWG4HighPtTrackQA *taskTrackQA71cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
b43ea0be 19 AliPWG4HighPtTrackQA *taskTrackQA72cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
dbf52bac 20
5c77d274 21 if(isPbPb) {
22 for(cent=0; cent<4; cent++) {
23 AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
5a0bd31f 24 AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
b43ea0be 25 // AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
380cff49 26 // AliPWG4HighPtTrackQA *taskTrackQA10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
27 // AliPWG4HighPtTrackQA *taskTrackQA11 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
5a0bd31f 28 // AliPWG4HighPtTrackQA *taskTrackQA20 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
29 // AliPWG4HighPtTrackQA *taskTrackQA21 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
d889ce29 30 // AliPWG4HighPtTrackQA *taskTrackQA40 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0);
327d12da 31 // AliPWG4HighPtTrackQA *taskTrackQA41 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1);
32 // AliPWG4HighPtTrackQA *taskTrackQA50 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,5,0);
33 // AliPWG4HighPtTrackQA *taskTrackQA60 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,6,0);
380cff49 34 AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
35 AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
b43ea0be 36 AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
5c77d274 37 }
38 }
39
40}
41
eb1739b7 42void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0)
b1041e3b 43{
44
45 int cent = 10;
46
47 if(isPbPb) {
48 for(cent=0; cent<4; cent++) {
49 AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
50 AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
51 AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
380cff49 52 AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
53 AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
b43ea0be 54 AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
b1041e3b 55 }
56 }
57
58}
59
c3ff0a6e 60void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit)
61{
62 AliPWG4HighPtTrackQA *taskTrackQA = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,0,0,0);
63 taskTrackQA->SetFilterMask(filterBit);
64}
65
5c77d274 66AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0)
67{
68 /*
69 trackType: 0 = global
70 1 = TPC stand alone
71 2 = TPC stand alone constrained to SPD vertex
aa3ba8d2 72 4 = TPC stand alone constrained to SPD vertex with QA track selection on global tracks
dbf52bac 73 5 = Hybrid tracks: constrained TPConly for which no tight ITS is available
74 6 = Hybrid tracks: constrained loose global for which no tight ITS is available
5a0bd31f 75 cuts: 0 (global) = standard ITSTPC2010 a la RAA analysis
76 1 (global) = ITSrefit, no SPD requirements -> standard for jet analysis
77 2 (global) = ITSrefit + no hits in SPD
78 3 (global) = standard ITS tight cuts with nCrossed rows cut for hybrid tracks
5c77d274 79 0 (TPC) = standard TPC + NClusters>70
80 1 (TPC) = standard TPC + NClusters>0 --> to study new TPC QA recommendations
dbf52bac 81 0 (hybrid 5) = constrained TPConly for which no tight ITS is available
82 0 (hybrid 6) = constrained loose global for which no tight ITS is available
5c77d274 83 */
84
380cff49 85 //Load common track cut class
86 gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/CreateTrackCutsPWG4.C");
87
5c77d274 88 // Creates HighPtTrackQA analysis task and adds it to the analysis manager.
89
90 // A. Get the pointer to the existing analysis manager via the static access method.
91 //==============================================================================
92 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
93 if (!mgr) {
94 Error("AddTaskPWG4HighPtQMC", "No analysis manager to connect to.");
95 return NULL;
96 }
97
98 // B. Check the analysis type using the event handlers connected to the analysis
99 // manager. The availability of MC handler can also be checked here.
100 //==============================================================================
101 if (!mgr->GetInputEventHandler()) {
102 ::Error("AddPWG4TaskHighPtTrackQA", "This task requires an input event handler");
103 return NULL;
104 }
105
106 // C. Create the task, add it to manager.
107 //===========================================================================
108
109 //CREATE THE CUTS -----------------------------------------------
110 //Use AliESDtrackCuts
111 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
b43ea0be 112 AliESDtrackCuts *trackCutsReject = 0x0;
dbf52bac 113 AliESDtrackCuts *trackCutsTPConly = new AliESDtrackCuts("AliESDtrackCutsTPConly","TPC only Cuts");
114
5c77d274 115 //Standard Cuts
116 //Set track cuts for global tracks
117 if(trackType==0 && cuts==0) {
380cff49 118 // tight global tracks - RAA analysis
119 trackCuts = CreateTrackCutsPWG4(1000);
5c77d274 120 }
121 if(trackType==0 && cuts==1) {
380cff49 122 //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis
b43ea0be 123 trackCuts = CreateTrackCutsPWG4(10001005);
5c77d274 124 }
125 if(trackType==0 && cuts==2) {
5a0bd31f 126 //Cuts global tracks with ITSrefit requirement but without SPD
b43ea0be 127 trackCuts = CreateTrackCutsPWG4(10011005);
380cff49 128 }
129 if(trackType==7 && cuts==0) {
130 // tight global tracks
b43ea0be 131 trackCuts = CreateTrackCutsPWG4(10041005);
132 trackCutsReject = CreateTrackCutsPWG4(1005);
133 trackCutsReject->SetEtaRange(-0.9,0.9);
134 trackCutsReject->SetPtRange(0.15, 1e10);
5c77d274 135 }
380cff49 136 if(trackType==7 && cuts==1) {
dbf52bac 137 // tight global tracks
b43ea0be 138 trackCuts = CreateTrackCutsPWG4(10011005);
139 }
140 if(trackType==7 && cuts==2) {
141 // no requirements on SPD and ITSrefit failed
142 trackCuts = CreateTrackCutsPWG4(10041005); //no ITSrefit requirement filter 256
143 trackCutsReject = CreateTrackCutsPWG4(10001005); //ITSrefit requirement filter 16
144 trackCutsReject->SetEtaRange(-0.9,0.9);
145 trackCutsReject->SetPtRange(0.15, 1e10);
dbf52bac 146 }
147
5c77d274 148 if(trackType==1 && cuts==0) {
149 //Set track cuts for TPConly tracks
380cff49 150 trackCuts = CreateTrackCutsPWG4(2001);
5c77d274 151 }
152 if(trackType==1 && cuts==1) {
153 //Set track cuts for TPConly tracks
380cff49 154 trackCuts = CreateTrackCutsPWG4(10032001);
5c77d274 155 }
156
157 if(trackType==2 && cuts==0) {
158 // Set track cuts for TPConly constrained tracks
380cff49 159 trackCuts = CreateTrackCutsPWG4(2001);
5c77d274 160 }
161 if(trackType==2 && cuts==1) {
162 //Set track cuts for TPConly constrained tracks
380cff49 163 trackCuts = CreateTrackCutsPWG4(10032001);
5c77d274 164 }
aa3ba8d2 165
166 if(trackType==4 && cuts==0) {
167 // Set track cuts for TPConly constrained tracks
380cff49 168 trackCuts = CreateTrackCutsPWG4(2001);
aa3ba8d2 169 }
170 if(trackType==4 && cuts==1) {
171 // Set track cuts for TPConly constrained tracks
380cff49 172 trackCuts = CreateTrackCutsPWG4(10032001);
aa3ba8d2 173 }
dbf52bac 174 if(trackType==5 || trackType==6) {
175 // tight global tracks
380cff49 176 trackCuts = CreateTrackCutsPWG4(1003);
177
b43ea0be 178 trackCutsReject = CreateTrackCutsPWG4(10021003);
380cff49 179
180 trackCutsTPConly = CreateTrackCutsPWG4(2002);
181
b43ea0be 182 trackCutsReject->SetEtaRange(-0.9,0.9);
183 trackCutsReject->SetPtRange(0.15, 1e10);
380cff49 184
185 trackCutsTPConly->SetEtaRange(-0.9,0.9);
186 trackCutsTPConly->SetPtRange(0.15, 1e10);
187
dbf52bac 188 }
aa3ba8d2 189
5c77d274 190 trackCuts->SetEtaRange(-0.9,0.9);
191 trackCuts->SetPtRange(0.15, 1e10);
192
193
194
195 //Create the task
196 AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d",centClass,trackType,cuts));
5c77d274 197 taskPWG4TrackQA->SetTrackType(trackType);
dbf52bac 198 taskPWG4TrackQA->SetCuts(trackCuts);
05a4d396 199 taskPWG4TrackQA->SetCutsITSLoose(trackCutsReject);
dbf52bac 200 taskPWG4TrackQA->SetCutsTPConly(trackCutsTPConly);
5c77d274 201
202 taskPWG4TrackQA->SetPtMax(100.);
203
204 if(iAODanalysis)
205 taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kAOD);
206 else
207 taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kESD);
208
209 if(isPbPb) {
210 taskPWG4TrackQA->SetIsPbPb(kTRUE);
211 taskPWG4TrackQA->SetCentralityClass(centClass);
212 }
aa3ba8d2 213 // taskPWG4TrackQA->SetSigmaConstrainedMax(5.);
5c77d274 214
215 taskPWG4TrackQA->SelectCollisionCandidates();
216
217
218 // E. Create ONLY the output containers for the data produced by the task.
219 // Get and connect other common input/output containers via the manager as below
220 //==============================================================================
221
222 TString outputfile = AliAnalysisManager::GetCommonFileName();
223 outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
224
225 AliAnalysisDataContainer *cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
226
227 mgr->AddTask(taskPWG4TrackQA);
228 mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer());
229 mgr->ConnectOutput(taskPWG4TrackQA,1,cout_histQAtrack);
230
231 // Return task pointer at the end
232 return taskPWG4TrackQA;
233}