1 void AddTaskPWG4HighPtTrackQAAll(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0)
6 AliPWG4HighPtTrackQA *taskTrackQA00cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
7 // AliPWG4HighPtTrackQA *taskTrackQA01cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
8 // AliPWG4HighPtTrackQA *taskTrackQA02cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
9 AliPWG4HighPtTrackQA *taskTrackQA03cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,3);
10 AliPWG4HighPtTrackQA *taskTrackQA10cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
11 AliPWG4HighPtTrackQA *taskTrackQA11cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
12 AliPWG4HighPtTrackQA *taskTrackQA20cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
13 AliPWG4HighPtTrackQA *taskTrackQA21cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
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);
20 for(cent=0; cent<4; cent++) {
21 AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
22 // AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
23 // AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
24 AliPWG4HighPtTrackQA *taskTrackQA03 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,3);
25 AliPWG4HighPtTrackQA *taskTrackQA10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
26 AliPWG4HighPtTrackQA *taskTrackQA11 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
27 AliPWG4HighPtTrackQA *taskTrackQA20 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
28 AliPWG4HighPtTrackQA *taskTrackQA21 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
29 AliPWG4HighPtTrackQA *taskTrackQA40 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0);
30 AliPWG4HighPtTrackQA *taskTrackQA41 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1);
31 AliPWG4HighPtTrackQA *taskTrackQA50 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,5,0);
32 AliPWG4HighPtTrackQA *taskTrackQA60 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,6,0);
38 void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit)
40 AliPWG4HighPtTrackQA *taskTrackQA = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,0,0,0);
41 taskTrackQA->SetFilterMask(filterBit);
44 AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0)
49 2 = TPC stand alone constrained to SPD vertex
50 3 = global w/o SPD layer requirements
51 4 = TPC stand alone constrained to SPD vertex with QA track selection on global tracks
52 5 = Hybrid tracks: constrained TPConly for which no tight ITS is available
53 6 = Hybrid tracks: constrained loose global for which no tight ITS is available
54 cuts: 0 (global) = standard ITSTPC2010
55 1 (global) = ITSrefit, no SPD requirements
56 2 (global) = SPD || SDD
57 3 (global) = standard ITS tight cuts with nCrossed rows cut
58 0 (TPC) = standard TPC + NClusters>70
59 1 (TPC) = standard TPC + NClusters>0 --> to study new TPC QA recommendations
60 0 (hybrid 5) = constrained TPConly for which no tight ITS is available
61 0 (hybrid 6) = constrained loose global for which no tight ITS is available
64 // Creates HighPtTrackQA analysis task and adds it to the analysis manager.
66 // A. Get the pointer to the existing analysis manager via the static access method.
67 //==============================================================================
68 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
70 Error("AddTaskPWG4HighPtQMC", "No analysis manager to connect to.");
74 // B. Check the analysis type using the event handlers connected to the analysis
75 // manager. The availability of MC handler can also be checked here.
76 //==============================================================================
77 if (!mgr->GetInputEventHandler()) {
78 ::Error("AddPWG4TaskHighPtTrackQA", "This task requires an input event handler");
82 // C. Create the task, add it to manager.
83 //===========================================================================
85 //CREATE THE CUTS -----------------------------------------------
87 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
88 AliESDtrackCuts *trackCutsITSLoose = 0x0;
89 AliESDtrackCuts *trackCutsTPConly = new AliESDtrackCuts("AliESDtrackCutsTPConly","TPC only Cuts");
92 //Set track cuts for global tracks
93 if(trackType==0 && cuts==0) {
94 trackCuts = trackCuts->GetStandardITSTPCTrackCuts2010(kTRUE);//Primary Track Selection
95 trackCuts->SetRequireITSRefit(kTRUE);
97 if(trackType==0 && cuts==1) {
98 //Cuts global tracks with ITSrefit requirement
100 trackCuts->SetMinNClustersTPC(70);
101 trackCuts->SetMaxChi2PerClusterTPC(4);
102 trackCuts->SetAcceptKinkDaughters(kFALSE);
103 trackCuts->SetRequireTPCRefit(kTRUE);
105 trackCuts->SetRequireITSRefit(kTRUE);
107 trackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
108 trackCuts->SetMaxDCAToVertexZ(2);
109 trackCuts->SetDCAToVertex2D(kFALSE);
110 trackCuts->SetRequireSigmaToVertex(kFALSE);
112 if(trackType==0 && cuts==2) {
113 trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts with SPD or SDD");
116 trackCuts->SetMinNClustersTPC(70);
117 trackCuts->SetMaxChi2PerClusterTPC(4);
118 trackCuts->SetAcceptKinkDaughters(kFALSE);
119 trackCuts->SetRequireTPCRefit(kTRUE);
121 trackCuts->SetRequireITSRefit(kTRUE);
122 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
123 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
125 trackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
126 trackCuts->SetMaxDCAToVertexZ(2);
127 trackCuts->SetDCAToVertex2D(kFALSE);
128 trackCuts->SetRequireSigmaToVertex(kFALSE);
130 trackCuts->SetRequireITSRefit(kTRUE);
132 if(trackType==0 && cuts==3) {
133 // tight global tracks
134 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1);
135 trackCuts->SetMinNCrossedRowsTPC(120);
136 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially swittches it off
137 trackCuts->SetMaxDCAToVertexXY(2.4);
138 trackCuts->SetMaxDCAToVertexZ(3.2);
139 trackCuts->SetDCAToVertex2D(kTRUE);
140 trackCuts->SetMaxChi2PerClusterITS(32);
143 if(trackType==1 && cuts==0) {
144 //Set track cuts for TPConly tracks
145 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
146 trackCuts->SetMinNClustersTPC(70);
148 if(trackType==1 && cuts==1) {
149 //Set track cuts for TPConly tracks
150 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
151 trackCuts->SetMinNClustersTPC(0);
154 if(trackType==2 && cuts==0) {
155 // Set track cuts for TPConly constrained tracks
156 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
157 trackCuts->SetMinNClustersTPC(70);
159 if(trackType==2 && cuts==1) {
160 //Set track cuts for TPConly constrained tracks
161 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
162 trackCuts->SetMinNClustersTPC(0);
165 if(trackType==4 && cuts==0) {
166 // Set track cuts for TPConly constrained tracks
167 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
168 trackCuts->SetMinNClustersTPC(70);
170 if(trackType==4 && cuts==1) {
171 // Set track cuts for TPConly constrained tracks
172 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
173 trackCuts->SetMinNClustersTPC(0);
175 if(trackType==5 || trackType==6) {
176 // tight global tracks
177 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1);
178 trackCuts->SetMinNCrossedRowsTPC(120);
179 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially swittches it off
180 trackCuts->SetMaxDCAToVertexXY(2.4);
181 trackCuts->SetMaxDCAToVertexZ(3.2);
182 trackCuts->SetDCAToVertex2D(kTRUE);
183 trackCuts->SetMaxChi2PerClusterITS(32);
185 trackCutsITSLoose = new AliESDtrackCuts(*trackCuts);
186 trackCutsITSLoose->SetName("loose ITS fake cuts");
187 trackCutsITSLoose->SetMaxChi2PerClusterITS(1E10);
189 trackCutsTPConly = trackCutsTPConly->GetStandardTPCOnlyTrackCuts();
190 trackCutsTPConly->SetMinNClustersTPC(0);
191 trackCutsTPConly->SetMinNCrossedRowsTPC(120);
192 trackCutsTPConly->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off
195 trackCuts->SetEtaRange(-0.9,0.9);
196 trackCuts->SetPtRange(0.15, 1e10);
201 AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d",centClass,trackType,cuts));
202 taskPWG4TrackQA->SetTrackType(trackType);
203 taskPWG4TrackQA->SetCuts(trackCuts);
204 taskPWG4TrackQA->SetCutsITSLoose(trackCutsITSLoose);
205 taskPWG4TrackQA->SetCutsTPConly(trackCutsTPConly);
207 taskPWG4TrackQA->SetPtMax(100.);
210 taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kAOD);
212 taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kESD);
215 taskPWG4TrackQA->SetIsPbPb(kTRUE);
216 taskPWG4TrackQA->SetCentralityClass(centClass);
218 // taskPWG4TrackQA->SetSigmaConstrainedMax(5.);
220 taskPWG4TrackQA->SelectCollisionCandidates();
223 // E. Create ONLY the output containers for the data produced by the task.
224 // Get and connect other common input/output containers via the manager as below
225 //==============================================================================
227 TString outputfile = AliAnalysisManager::GetCommonFileName();
228 outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
230 AliAnalysisDataContainer *cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
232 mgr->AddTask(taskPWG4TrackQA);
233 mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer());
234 mgr->ConnectOutput(taskPWG4TrackQA,1,cout_histQAtrack);
236 // Return task pointer at the end
237 return taskPWG4TrackQA;