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