]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/macros/AddTaskPWG4HighPtTrackQA.C
updates to QA task, varibale pt binning, catch the case cent == 0 in spectrum task...
[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);
6 AliPWG4HighPtTrackQA *taskTrackQA01cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
7 AliPWG4HighPtTrackQA *taskTrackQA02cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
8 AliPWG4HighPtTrackQA *taskTrackQA10cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
9 AliPWG4HighPtTrackQA *taskTrackQA11cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
10 AliPWG4HighPtTrackQA *taskTrackQA20cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
11 AliPWG4HighPtTrackQA *taskTrackQA21cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
aa3ba8d2 12 AliPWG4HighPtTrackQA *taskTrackQA20cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0);
13 AliPWG4HighPtTrackQA *taskTrackQA20cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1);
5c77d274 14
15 if(isPbPb) {
16 for(cent=0; cent<4; cent++) {
17 AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
18 AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
19 AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
20 AliPWG4HighPtTrackQA *taskTrackQA10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
21 AliPWG4HighPtTrackQA *taskTrackQA11 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
22 AliPWG4HighPtTrackQA *taskTrackQA20 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
23 AliPWG4HighPtTrackQA *taskTrackQA21 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
aa3ba8d2 24 AliPWG4HighPtTrackQA *taskTrackQA40 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0);
25 AliPWG4HighPtTrackQA *taskTrackQA41 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1);
5c77d274 26 }
27 }
28
29}
30
31AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0)
32{
33 /*
34 trackType: 0 = global
35 1 = TPC stand alone
36 2 = TPC stand alone constrained to SPD vertex
aa3ba8d2 37 3 = global w/o SPD layer requirements
38 4 = TPC stand alone constrained to SPD vertex with QA track selection on global tracks
5c77d274 39 cuts: 0 (global) = standard ITSTPC2010
40 1 (global) = ITSrefit, no SPD requirements
41 2 (global) = SPD || SDD
42 0 (TPC) = standard TPC + NClusters>70
43 1 (TPC) = standard TPC + NClusters>0 --> to study new TPC QA recommendations
44 */
45
46 // Creates HighPtTrackQA analysis task and adds it to the analysis manager.
47
48 // A. Get the pointer to the existing analysis manager via the static access method.
49 //==============================================================================
50 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
51 if (!mgr) {
52 Error("AddTaskPWG4HighPtQMC", "No analysis manager to connect to.");
53 return NULL;
54 }
55
56 // B. Check the analysis type using the event handlers connected to the analysis
57 // manager. The availability of MC handler can also be checked here.
58 //==============================================================================
59 if (!mgr->GetInputEventHandler()) {
60 ::Error("AddPWG4TaskHighPtTrackQA", "This task requires an input event handler");
61 return NULL;
62 }
63
64 // C. Create the task, add it to manager.
65 //===========================================================================
66
67 //CREATE THE CUTS -----------------------------------------------
68 //Use AliESDtrackCuts
69 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
70 //Standard Cuts
71 //Set track cuts for global tracks
72 if(trackType==0 && cuts==0) {
73 trackCuts = trackCuts->GetStandardITSTPCTrackCuts2010(kTRUE);//Primary Track Selection
74 trackCuts->SetRequireITSRefit(kTRUE);
75 }
76 if(trackType==0 && cuts==1) {
77 //Cuts global tracks with ITSrefit requirement
78 // TPC
79 trackCuts->SetMinNClustersTPC(70);
80 trackCuts->SetMaxChi2PerClusterTPC(4);
81 trackCuts->SetAcceptKinkDaughters(kFALSE);
82 trackCuts->SetRequireTPCRefit(kTRUE);
83 // ITS
84 trackCuts->SetRequireITSRefit(kTRUE);
85
86 trackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
87 trackCuts->SetMaxDCAToVertexZ(2);
88 trackCuts->SetDCAToVertex2D(kFALSE);
89 trackCuts->SetRequireSigmaToVertex(kFALSE);
90 }
91 if(trackType==0 && cuts==2) {
92 trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts with SPD or SDD");
93 //Cuts SPD || SDD
94 // TPC
95 trackCuts->SetMinNClustersTPC(70);
96 trackCuts->SetMaxChi2PerClusterTPC(4);
97 trackCuts->SetAcceptKinkDaughters(kFALSE);
98 trackCuts->SetRequireTPCRefit(kTRUE);
99 // ITS
100 trackCuts->SetRequireITSRefit(kTRUE);
101 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
102 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSDD, AliESDtrackCuts::kFirst);
103
104 trackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
105 trackCuts->SetMaxDCAToVertexZ(2);
106 trackCuts->SetDCAToVertex2D(kFALSE);
107 trackCuts->SetRequireSigmaToVertex(kFALSE);
108
109 trackCuts->SetRequireITSRefit(kTRUE);
110 }
111 if(trackType==1 && cuts==0) {
112 //Set track cuts for TPConly tracks
113 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
114 trackCuts->SetMinNClustersTPC(70);
115 }
116 if(trackType==1 && cuts==1) {
117 //Set track cuts for TPConly tracks
118 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
119 trackCuts->SetMinNClustersTPC(0);
120 }
121
122 if(trackType==2 && cuts==0) {
123 // Set track cuts for TPConly constrained tracks
124 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
125 trackCuts->SetMinNClustersTPC(70);
126 }
127 if(trackType==2 && cuts==1) {
128 //Set track cuts for TPConly constrained tracks
129 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
130 trackCuts->SetMinNClustersTPC(0);
131 }
aa3ba8d2 132
133 if(trackType==4 && cuts==0) {
134 // Set track cuts for TPConly constrained tracks
135 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
136 trackCuts->SetMinNClustersTPC(70);
137 }
138 if(trackType==4 && cuts==1) {
139 // Set track cuts for TPConly constrained tracks
140 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
141 trackCuts->SetMinNClustersTPC(0);
142 }
143
5c77d274 144 trackCuts->SetEtaRange(-0.9,0.9);
145 trackCuts->SetPtRange(0.15, 1e10);
146
147
148
149 //Create the task
150 AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d",centClass,trackType,cuts));
151 taskPWG4TrackQA->SetCuts(trackCuts);
152 taskPWG4TrackQA->SetTrackType(trackType);
153
154 taskPWG4TrackQA->SetPtMax(100.);
155
156 if(iAODanalysis)
157 taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kAOD);
158 else
159 taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kESD);
160
161 if(isPbPb) {
162 taskPWG4TrackQA->SetIsPbPb(kTRUE);
163 taskPWG4TrackQA->SetCentralityClass(centClass);
164 }
aa3ba8d2 165 // taskPWG4TrackQA->SetSigmaConstrainedMax(5.);
5c77d274 166
167 taskPWG4TrackQA->SelectCollisionCandidates();
168
169
170 // E. Create ONLY the output containers for the data produced by the task.
171 // Get and connect other common input/output containers via the manager as below
172 //==============================================================================
173
174 TString outputfile = AliAnalysisManager::GetCommonFileName();
175 outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
176
177 AliAnalysisDataContainer *cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
178
179 mgr->AddTask(taskPWG4TrackQA);
180 mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer());
181 mgr->ConnectOutput(taskPWG4TrackQA,1,cout_histQAtrack);
182
183 // Return task pointer at the end
184 return taskPWG4TrackQA;
185}