]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/macros/AddTaskPWG4HighPtTrackQA.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / macros / AddTaskPWG4HighPtTrackQA.C
1 void AddTaskPWG4HighPtTrackQA(TString prodType = "LHC10h", Int_t iAODanalysis = 0, Bool_t bReduced = kTRUE, Int_t filterBit = 272)
2 {
3
4   Bool_t isPbPb = kFALSE;
5   if(prodType.Contains("LHC10h") || prodType.EqualTo("LHC11h")) isPbPb = kTRUE;
6
7   if(iAODanalysis==0) { //run on ESDs
8     if(prodType.EqualTo("LHC10h") || prodType.EqualTo("LHC11a")) {
9       if(bReduced)
10         AddTaskPWG4HighPtTrackQAAllReduced(prodType.Data(),isPbPb,iAODanalysis);
11       else
12         AddTaskPWG4HighPtTrackQAAll(prodType.Data(),isPbPb,iAODanalysis);
13     }
14     else if(prodType.Contains("LHC12") || prodType.Contains("LHC13")) {
15       AddTaskPWG4HighPtTrackQApPb();
16     } else {
17       if(bReduced)
18         AddTaskPWG4HighPtTrackQAAllReduced2011(prodType.Data(),isPbPb,iAODanalysis);
19       else
20         AddTaskPWG4HighPtTrackQAAll2011(prodType.Data(),isPbPb,iAODanalysis);
21     }
22   }
23   else if(iAODanalysis==1) { //run on AODs
24     AddTaskPWG4HighPtTrackQAAOD(prodType.Data(),isPbPb,iAODanalysis,filterBit); 
25   }
26 }
27
28 void AddTaskPWG4HighPtTrackQApPb(char *prodType = "LHC13b") {
29
30   AliPWG4HighPtTrackQA *taskTrackQA05cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,kFALSE,0,10,0,5,AliVEvent::kINT7);
31   AliPWG4HighPtTrackQA *taskTrackQA75cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,kFALSE,0,10,7,5,AliVEvent::kINT7);
32   
33   if(!strcmp(prodType,"LHC13d") || !strcmp(prodType,"LHC13e") || !strcmp(prodType,"LHC13f")) {
34     AliPWG4HighPtTrackQA *taskTrackQA05cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,kFALSE,0,10,0,5,AliVEvent::kEMCEJE);
35     AliPWG4HighPtTrackQA *taskTrackQA75cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,kFALSE,0,10,7,5,AliVEvent::kEMCEJE);
36   }
37 }
38
39
40 void AddTaskPWG4HighPtTrackQAAll(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
41 {    
42
43   Int_t cent = 10;
44   
45   AliPWG4HighPtTrackQA *taskTrackQA00cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0); //RAA track cuts
46   AliPWG4HighPtTrackQA *taskTrackQA01cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1); //global hybrid unconstrained
47   AliPWG4HighPtTrackQA *taskTrackQA70cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0); //global hybrid constrained category 1
48   AliPWG4HighPtTrackQA *taskTrackQA71cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1); //global hybrid constrained category 2
49   AliPWG4HighPtTrackQA *taskTrackQA72cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2); //global hybrid constrained all
50
51   if(isPbPb) {
52     for(cent=0; cent<4; cent++) {
53       AliPWG4HighPtTrackQA *taskTrackQA00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
54       AliPWG4HighPtTrackQA *taskTrackQA01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
55       AliPWG4HighPtTrackQA *taskTrackQA70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
56       AliPWG4HighPtTrackQA *taskTrackQA71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
57       AliPWG4HighPtTrackQA *taskTrackQA72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
58     }
59   }
60 }
61
62 void AddTaskPWG4HighPtTrackQAAll2011(char *prodType = "LHC11h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
63 {    
64
65   Int_t cent = 10;
66   UInt_t iPhysicsSelectionFlag = AliVEvent::kMB;
67   UInt_t iPhysicsSelectionFlagCentral = AliVEvent::kCentral;
68   UInt_t iPhysicsSelectionFlagSemiCentral = AliVEvent::kSemiCentral;
69
70   
71   AliPWG4HighPtTrackQA *taskTrackQA00cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
72   AliPWG4HighPtTrackQA *taskTrackQA01cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
73   AliPWG4HighPtTrackQA *taskTrackQA70cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
74   AliPWG4HighPtTrackQA *taskTrackQA71cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
75   AliPWG4HighPtTrackQA *taskTrackQA72cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
76   
77   AliPWG4HighPtTrackQA *taskTrackQA05cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlag);
78   AliPWG4HighPtTrackQA *taskTrackQA74cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlag);
79   AliPWG4HighPtTrackQA *taskTrackQA75cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlag);
80
81   if(isPbPb) {
82     for(cent=0; cent<4; cent++) {
83       AliPWG4HighPtTrackQA *taskTrackQA00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
84       AliPWG4HighPtTrackQA *taskTrackQA01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
85       AliPWG4HighPtTrackQA *taskTrackQA70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
86       AliPWG4HighPtTrackQA *taskTrackQA71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
87       AliPWG4HighPtTrackQA *taskTrackQA72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
88       AliPWG4HighPtTrackQA *taskTrackQA05 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlag);
89       AliPWG4HighPtTrackQA *taskTrackQA74 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlag);
90       AliPWG4HighPtTrackQA *taskTrackQA75 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlag);
91
92       if(cent==0) {
93         AliPWG4HighPtTrackQA *taskTrackQA00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagCentral);
94         AliPWG4HighPtTrackQA *taskTrackQA01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagCentral);
95         AliPWG4HighPtTrackQA *taskTrackQA70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagCentral);
96         AliPWG4HighPtTrackQA *taskTrackQA71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagCentral);
97         AliPWG4HighPtTrackQA *taskTrackQA72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagCentral);
98         AliPWG4HighPtTrackQA *taskTrackQA05 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagCentral);
99         AliPWG4HighPtTrackQA *taskTrackQA74 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagCentral);
100         AliPWG4HighPtTrackQA *taskTrackQA75 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagCentral);
101       }
102       else {
103         AliPWG4HighPtTrackQA *taskTrackQA00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagSemiCentral);
104         AliPWG4HighPtTrackQA *taskTrackQA01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagSemiCentral);
105         AliPWG4HighPtTrackQA *taskTrackQA70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagSemiCentral);
106         AliPWG4HighPtTrackQA *taskTrackQA71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagSemiCentral);
107         AliPWG4HighPtTrackQA *taskTrackQA72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagSemiCentral);
108         AliPWG4HighPtTrackQA *taskTrackQA05 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagSemiCentral);
109         AliPWG4HighPtTrackQA *taskTrackQA74 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagSemiCentral);
110         AliPWG4HighPtTrackQA *taskTrackQA75 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagSemiCentral);
111       }
112     }
113   }
114 }
115
116 void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC11h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
117 {    
118
119   int cent = 10;
120   
121   if(isPbPb) {
122     for(cent=0; cent<4; cent++) {
123       AliPWG4HighPtTrackQA *taskTrackQA00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
124       AliPWG4HighPtTrackQA *taskTrackQA01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
125       AliPWG4HighPtTrackQA *taskTrackQA70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
126       AliPWG4HighPtTrackQA *taskTrackQA71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
127       AliPWG4HighPtTrackQA *taskTrackQA72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
128     }
129   }
130 }
131
132
133 void AddTaskPWG4HighPtTrackQALHC11hLTS(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
134 {    
135
136   Int_t cent = 10;
137   UInt_t iPhysicsSelectionFlag = AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral;
138   UInt_t iPhysicsSelectionFlagEMCEJE = AliVEvent::kEMCEJE;
139   
140   AliPWG4HighPtTrackQA *taskTrackQA00cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
141   AliPWG4HighPtTrackQA *taskTrackQA01cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
142   AliPWG4HighPtTrackQA *taskTrackQA70cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
143   AliPWG4HighPtTrackQA *taskTrackQA71cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
144   AliPWG4HighPtTrackQA *taskTrackQA72cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
145   AliPWG4HighPtTrackQA *taskTrackQA05cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlag);
146   AliPWG4HighPtTrackQA *taskTrackQA74cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlag);
147   AliPWG4HighPtTrackQA *taskTrackQA75cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlag);
148
149   AliPWG4HighPtTrackQA *taskTrackQAEMCJE00cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagEMCEJE);
150   AliPWG4HighPtTrackQA *taskTrackQAEMCJE01cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagEMCEJE);
151   AliPWG4HighPtTrackQA *taskTrackQAEMCJE70cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagEMCEJE);
152   AliPWG4HighPtTrackQA *taskTrackQAEMCJE71cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagEMCEJE);
153   AliPWG4HighPtTrackQA *taskTrackQAEMCJE72cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagEMCEJE);
154   AliPWG4HighPtTrackQA *taskTrackQAEMCJE05cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagEMCEJE);
155   AliPWG4HighPtTrackQA *taskTrackQAEMCJE74cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagEMCEJE);
156   AliPWG4HighPtTrackQA *taskTrackQAEMCJE75cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagEMCEJE);
157
158   if(isPbPb) {
159     for(cent=0; cent<4; cent++) {
160       AliPWG4HighPtTrackQA *taskTrackQA00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
161       AliPWG4HighPtTrackQA *taskTrackQA01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
162       AliPWG4HighPtTrackQA *taskTrackQA70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
163       AliPWG4HighPtTrackQA *taskTrackQA71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
164       AliPWG4HighPtTrackQA *taskTrackQA72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
165       AliPWG4HighPtTrackQA *taskTrackQA05 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlag);
166       AliPWG4HighPtTrackQA *taskTrackQA74 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlag);
167       AliPWG4HighPtTrackQA *taskTrackQA75 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlag);
168
169       AliPWG4HighPtTrackQA *taskTrackQAEMCJE00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagEMCEJE);
170       AliPWG4HighPtTrackQA *taskTrackQAEMCJE01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagEMCEJE);
171       AliPWG4HighPtTrackQA *taskTrackQAEMCJE70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagEMCEJE);
172       AliPWG4HighPtTrackQA *taskTrackQAEMCJE71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagEMCEJE);
173       AliPWG4HighPtTrackQA *taskTrackQAEMCJE72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagEMCEJE);
174       AliPWG4HighPtTrackQA *taskTrackQAEMCJE05 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagEMCEJE);
175       AliPWG4HighPtTrackQA *taskTrackQAEMCJE74 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagEMCEJE);
176       AliPWG4HighPtTrackQA *taskTrackQAEMCJE75 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagEMCEJE);
177     }
178   }
179 }
180
181 void AddTaskPWG4HighPtTrackQAAllReduced2011(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
182 {    
183
184   int cent = 10;
185
186   UInt_t iPhysicsSelectionFlagCentral = AliVEvent::kCentral;
187   UInt_t iPhysicsSelectionFlagSemiCentral = AliVEvent::kSemiCentral;
188
189   AliPWG4HighPtTrackQA *taskTrackQA00C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagCentral);
190   AliPWG4HighPtTrackQA *taskTrackQA01C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagCentral);
191   AliPWG4HighPtTrackQA *taskTrackQA70C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagCentral);
192   AliPWG4HighPtTrackQA *taskTrackQA71C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagCentral);
193   AliPWG4HighPtTrackQA *taskTrackQA72C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagCentral);
194   AliPWG4HighPtTrackQA *taskTrackQA05C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagCentral); 
195   AliPWG4HighPtTrackQA *taskTrackQA74C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagCentral);
196   AliPWG4HighPtTrackQA *taskTrackQA75C = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagCentral);
197
198   AliPWG4HighPtTrackQA *taskTrackQA00SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagSemiCentral);
199   AliPWG4HighPtTrackQA *taskTrackQA01SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagSemiCentral);
200   AliPWG4HighPtTrackQA *taskTrackQA70SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagSemiCentral);
201   AliPWG4HighPtTrackQA *taskTrackQA71SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagSemiCentral);
202   AliPWG4HighPtTrackQA *taskTrackQA72SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagSemiCentral);
203   AliPWG4HighPtTrackQA *taskTrackQA05SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagSemiCentral);
204   AliPWG4HighPtTrackQA *taskTrackQA74SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagSemiCentral);
205   AliPWG4HighPtTrackQA *taskTrackQA75SC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagSemiCentral);
206 }
207
208 void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC11h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit = 768) 
209 {  
210   UInt_t iPhysicsSelectionFlagMB          = AliVEvent::kMB; 
211   UInt_t iPhysicsSelectionFlagCentral     = AliVEvent::kCentral;
212   UInt_t iPhysicsSelectionFlagSemiCentral = AliVEvent::kSemiCentral;
213   UInt_t iPhysicsSelectionFlagINT7        = AliVEvent::kINT7; 
214   UInt_t iPhysicsSelectionFlagEMCEJE      = AliVEvent::kEMCEJE; 
215
216   Int_t cent = 10;
217
218   Int_t filterBit1 = 256; //standard global tracks
219   Int_t filterBit2 = 512; //complementary tracks
220
221   Bool_t bIncludeNoITS = kFALSE;
222
223   TString strRunPeriod = TString(prodType);
224   strRunPeriod.ToLower();
225
226   if (strRunPeriod == "lhc10h" || strRunPeriod == "lhc11h" || 
227       strRunPeriod == "lhc12a" || strRunPeriod == "lhc12b" || strRunPeriod == "lhc12c" || strRunPeriod == "lhc12d" || 
228       strRunPeriod == "lhc12e" || strRunPeriod == "lhc12f" || strRunPeriod == "lhc12g" || strRunPeriod == "lhc12g" || 
229       strRunPeriod == "lhc12h" || strRunPeriod == "lhc12i" ||
230       strRunPeriod == "lhc13b" || strRunPeriod == "lhc13c" || strRunPeriod == "lhc13d" || strRunPeriod == "lhc13e" || 
231       strRunPeriod == "lhc13f" || strRunPeriod == "lhc13g" || 
232       strRunPeriod == "lhc12a15e" || strRunPeriod == "lhc13b4" || strRunPeriod == "lhc13b4_fix" || 
233       strRunPeriod == "lhc13b4_plus" || strRunPeriod == "lhc12a15f" || strRunPeriod.Contains("lhc12a17") || strRunPeriod.Contains("lhc14a1")) {
234     filterBit  = 768;
235     filterBit1 = 256;
236     filterBit2 = 512;
237     bIncludeNoITS = kFALSE;
238     if(strRunPeriod == "lhc10h") bIncludeNoITS = kTRUE;
239   }
240   else if (strRunPeriod == "lhc11a" || strRunPeriod == "lhc10hold" || strRunPeriod == "lhc12a15a" || strRunPeriod.Contains("lhc11a2")) {
241     filterBit  = 272;
242     filterBit1 = 16;
243     filterBit2 = 256;
244     bIncludeNoITS = kTRUE;
245   }
246
247   if(isPbPb) {
248     for(cent=0; cent<4; cent++) {
249       AliPWG4HighPtTrackQA *taskTrackQAMB = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagMB);
250       taskTrackQAMB->SetFilterMask(filterBit);
251       taskTrackQAMB->SetIncludeNoITS(bIncludeNoITS);
252
253       AliPWG4HighPtTrackQA *taskTrackQAMB1 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagMB);
254       taskTrackQAMB1->SetFilterMask(filterBit1);
255       taskTrackQAMB1->SetIncludeNoITS(bIncludeNoITS);
256       
257       AliPWG4HighPtTrackQA *taskTrackQAMB2 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagMB);
258       taskTrackQAMB2->SetFilterMask(filterBit2);
259       taskTrackQAMB2->SetIncludeNoITS(bIncludeNoITS);
260     }
261
262     cent = 10;
263
264     if(strRunPeriod.Contains("lhc11h")) {
265       AliPWG4HighPtTrackQA *taskTrackQAC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagCentral);
266       taskTrackQAC->SetFilterMask(filterBit);
267       taskTrackQAC->SetIncludeNoITS(bIncludeNoITS);
268
269       AliPWG4HighPtTrackQA *taskTrackQAC1 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagCentral);
270       taskTrackQAC1->SetFilterMask(filterBit1);
271       taskTrackQAC1->SetIncludeNoITS(bIncludeNoITS);
272
273       AliPWG4HighPtTrackQA *taskTrackQAC2 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagCentral);
274       taskTrackQAC2->SetFilterMask(filterBit2);
275       taskTrackQAC2->SetIncludeNoITS(bIncludeNoITS);
276
277       AliPWG4HighPtTrackQA *taskTrackQASC = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagSemiCentral);
278       taskTrackQASC->SetFilterMask(filterBit);
279       taskTrackQASC->SetIncludeNoITS(bIncludeNoITS);
280
281       AliPWG4HighPtTrackQA *taskTrackQASC1 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagSemiCentral);
282       taskTrackQASC1->SetFilterMask(filterBit1);
283       taskTrackQASC1->SetIncludeNoITS(bIncludeNoITS);
284
285       AliPWG4HighPtTrackQA *taskTrackQASC2 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagSemiCentral);
286       taskTrackQASC2->SetFilterMask(filterBit2);
287       taskTrackQASC2->SetIncludeNoITS(bIncludeNoITS);
288     }
289   }
290   else {
291     cent = 10;
292
293     if(strRunPeriod.Contains("lhc13") || strRunPeriod.Contains("lhc12")) {
294       AliPWG4HighPtTrackQA *taskTrackQAMB = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagINT7);
295       taskTrackQAMB->SetFilterMask(filterBit);
296       taskTrackQAMB->SetIncludeNoITS(bIncludeNoITS);
297
298       AliPWG4HighPtTrackQA *taskTrackQAMB1 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagINT7);
299       taskTrackQAMB1->SetFilterMask(filterBit1);
300       taskTrackQAMB1->SetIncludeNoITS(bIncludeNoITS);
301
302       AliPWG4HighPtTrackQA *taskTrackQAMB2 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagINT7);
303       taskTrackQAMB2->SetFilterMask(filterBit2);
304       taskTrackQAMB2->SetIncludeNoITS(bIncludeNoITS);
305
306       if(strRunPeriod.EqualTo("lhc13d") || strRunPeriod.EqualTo("lhc13e") || strRunPeriod.EqualTo("lhc13f") || strRunPeriod.EqualTo("lhc13g") 
307          || strRunPeriod.Contains("lhc12")) {
308         AliPWG4HighPtTrackQA *taskTrackQAEMCEJE = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagEMCEJE);
309         taskTrackQAEMCEJE->SetFilterMask(filterBit);
310         taskTrackQAEMCEJE->SetIncludeNoITS(bIncludeNoITS);
311
312         AliPWG4HighPtTrackQA *taskTrackQAEMCEJE1 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagEMCEJE);
313         taskTrackQAEMCEJE1->SetFilterMask(filterBit1);
314         taskTrackQAEMCEJE1->SetIncludeNoITS(bIncludeNoITS);
315
316         AliPWG4HighPtTrackQA *taskTrackQAEMCEJE2 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagEMCEJE);
317         taskTrackQAEMCEJE2->SetFilterMask(filterBit2);
318         taskTrackQAEMCEJE2->SetIncludeNoITS(bIncludeNoITS);
319       }
320     }
321     else {
322       AliPWG4HighPtTrackQA *taskTrackQAMB = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagMB);
323       taskTrackQAMB->SetFilterMask(filterBit);
324       taskTrackQAMB->SetIncludeNoITS(bIncludeNoITS);
325
326       AliPWG4HighPtTrackQA *taskTrackQAMB1 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagMB);
327       taskTrackQAMB1->SetFilterMask(filterBit1);
328       taskTrackQAMB1->SetIncludeNoITS(bIncludeNoITS);
329       
330
331       AliPWG4HighPtTrackQA *taskTrackQAMB2 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagMB);
332       taskTrackQAMB2->SetFilterMask(filterBit2);
333       taskTrackQAMB2->SetIncludeNoITS(bIncludeNoITS);
334     }
335   }
336 }
337
338 AliPWG4HighPtTrackQA* ConfigureTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0, UInt_t iPhysicsSelectionFlag = AliVEvent::kMB)
339 {
340   /*
341     trackType: 0 = global
342                1 = TPC stand alone
343                2 = TPC stand alone constrained to SPD vertex
344                4 = TPC stand alone constrained to SPD vertex with QA track selection on global tracks
345                5 = Hybrid tracks: constrained TPConly for which no tight ITS is available
346                6 = Hybrid tracks: constrained loose global for which no tight ITS is available
347     cuts:      0 (global) = standard ITSTPC2010 a la RAA analysis
348                1 (global) = ITSrefit, no SPD requirements -> standard for jet analysis
349                2 (global) = ITSrefit + no hits in SPD
350                3 (global) = standard ITS tight cuts with nCrossed rows cut for hybrid tracks
351                0 (TPC)    = standard TPC + NClusters>70
352                1 (TPC)    = standard TPC + NClusters>0 --> to study new TPC QA recommendations
353                0 (hybrid 5) = constrained TPConly for which no tight ITS is available
354                0 (hybrid 6) = constrained loose global for which no tight ITS is available
355    */
356
357   //Load common track cut class
358   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
359
360   // Creates HighPtTrackQA analysis task and adds it to the analysis manager.
361   
362   // A. Get the pointer to the existing analysis manager via the static access method.
363   //==============================================================================
364   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
365   if (!mgr) {
366     Error("AddTaskPWG4HighPtQMC", "No analysis manager to connect to.");
367     return NULL;
368   }  
369
370   // B. Check the analysis type using the event handlers connected to the analysis
371   //    manager. The availability of MC handler can also be checked here.
372   //==============================================================================
373   if (!mgr->GetInputEventHandler()) {
374     ::Error("AddPWG4TaskHighPtTrackQA", "This task requires an input event handler");
375     return NULL;
376   }  
377
378   // C. Create the task, add it to manager.
379   //===========================================================================
380  
381   //CREATE THE  CUTS -----------------------------------------------
382   //Use AliESDtrackCuts
383   AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
384   AliESDtrackCuts *trackCutsReject = 0x0;
385   AliESDtrackCuts *trackCutsTPConly = new AliESDtrackCuts("AliESDtrackCutsTPConly","TPC only Cuts");
386
387   //Standard Cuts
388   //Set track cuts for global tracks
389   if(trackType==0 && cuts==0) {
390     // tight global tracks - RAA analysis
391     trackCuts = CreateTrackCutsPWGJE(1000);
392   }
393   if(trackType==0 && cuts==1) {
394     //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis
395     trackCuts = CreateTrackCutsPWGJE(10001006);
396   }
397   if(trackType==0 && cuts==5) {
398     //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis + NCrossedRowsCut>70 recommended in 2011
399     trackCuts = CreateTrackCutsPWGJE(10001008);
400   }
401   if(trackType==0 && cuts==6) {
402     //Cuts global tracks with ITSrefit requirement and no SPDrequirement for jet analysis + NCrossedRowsCut>70 recommended in 2011
403     trackCuts = CreateTrackCutsPWGJE(10051008);
404   }
405   
406   if(trackType==0 && cuts==2) {
407     //Cuts global tracks with ITSrefit requirement but without SPD
408     trackCuts = CreateTrackCutsPWGJE(10011006);
409   }
410   if(trackType==7 && cuts==0) {
411     // tight global tracks
412     trackCuts = CreateTrackCutsPWGJE(10041006);
413     trackCutsReject = CreateTrackCutsPWGJE(1006);
414     trackCutsReject->SetEtaRange(-0.9,0.9);
415     trackCutsReject->SetPtRange(0.15, 1e10);
416   }
417   if(trackType==7 && cuts==4) {
418     // tight global tracks +  NCrossedRowsCut>120 recommended in 2011
419     trackCuts = CreateTrackCutsPWGJE(10041008);
420     trackCutsReject = CreateTrackCutsPWGJE(1008);
421     trackCutsReject->SetEtaRange(-0.9,0.9);
422     trackCutsReject->SetPtRange(0.15, 1e10);
423   }
424   if(trackType==7 && cuts==1) {
425     // tight global tracks
426     trackCuts = CreateTrackCutsPWGJE(10011006);
427   }
428   if(trackType==7 && cuts==5) {
429     // tight global tracks  + NCrossedRowsCut>70 recommended in 2011
430     trackCuts = CreateTrackCutsPWGJE(10011008);
431   }
432   if(trackType==7 && cuts==2) {
433     // no requirements on SPD and ITSrefit failed
434     trackCuts = CreateTrackCutsPWGJE(10041006);       //no ITSrefit requirement filter 256
435     trackCutsReject = CreateTrackCutsPWGJE(10001006); //ITSrefit requirement filter 16
436     trackCutsReject->SetEtaRange(-0.9,0.9);
437     trackCutsReject->SetPtRange(0.15, 1e10);
438   }
439   if(trackType==7 && cuts==6) {
440     // no requirements on SPD and ITSrefit failed
441     trackCuts = CreateTrackCutsPWGJE(10041008);       //no ITSrefit requirement filter 256
442     trackCutsReject = CreateTrackCutsPWGJE(10001008); //ITSrefit requirement filter 16
443     trackCutsReject->SetEtaRange(-0.9,0.9);
444     trackCutsReject->SetPtRange(0.15, 1e10);
445   }
446
447   if(trackType==1 && cuts==0) {
448     //Set track cuts for TPConly tracks
449     trackCuts = CreateTrackCutsPWGJE(2001);
450   }
451   if(trackType==1 && cuts==1) {
452     //Set track cuts for TPConly tracks
453     trackCuts = CreateTrackCutsPWGJE(10032001);
454   }
455
456   if(trackType==2 && cuts==0) {
457     //Set track cuts for TPConly constrained tracks
458     trackCuts = CreateTrackCutsPWGJE(2001);
459   }
460   if(trackType==2 && cuts==1) {
461     //Set track cuts for TPConly constrained tracks w/o cut on NClusters or NCrossedRows
462     trackCuts = CreateTrackCutsPWGJE(10032001);
463   }
464
465   if(trackType==4 && cuts==0) {
466      //       Set track cuts for TPConly constrained tracks
467     trackCuts = CreateTrackCutsPWGJE(2001);
468   }
469   if(trackType==4 && cuts==1) {
470      //       Set track cuts for TPConly constrained tracks
471     trackCuts = CreateTrackCutsPWGJE(10032001);
472   }
473   if(trackType==5 || trackType==6) {
474     // tight global tracks
475     trackCuts = CreateTrackCutsPWGJE(1003);
476     trackCutsReject = CreateTrackCutsPWGJE(10021003); 
477     trackCutsTPConly = CreateTrackCutsPWGJE(2002);
478
479     trackCutsReject->SetEtaRange(-0.9,0.9);
480     trackCutsReject->SetPtRange(0.15, 1e10);
481     
482     trackCutsTPConly->SetEtaRange(-0.9,0.9);
483     trackCutsTPConly->SetPtRange(0.15, 1e10);
484   }
485
486   trackCuts->SetEtaRange(-0.9,0.9);
487   trackCuts->SetPtRange(0.15, 1e10);
488   
489   TString trigName = "";
490   if (iPhysicsSelectionFlag == AliVEvent::kAnyINT)
491     trigName += "kAnyINT";
492   else if (iPhysicsSelectionFlag == AliVEvent::kAny)
493     trigName += "kAny";
494   else if(iPhysicsSelectionFlag == AliVEvent::kINT7)
495     trigName += "kINT7";
496   else if(iPhysicsSelectionFlag == AliVEvent::kINT8)
497     trigName += "kINT8";
498   else if(iPhysicsSelectionFlag == AliVEvent::kMB)
499     trigName += "kMB";
500   else if(iPhysicsSelectionFlag == AliVEvent::kCentral)
501     trigName += "kCentral";
502   else if(iPhysicsSelectionFlag == AliVEvent::kSemiCentral)
503     trigName += "kSemiCentral";
504   else if(iPhysicsSelectionFlag == AliVEvent::kEMC7)
505     trigName += "kEMC7";
506   else if(iPhysicsSelectionFlag == AliVEvent::kEMCEJE)
507     trigName += "kEMCEJE";
508   else if(iPhysicsSelectionFlag == AliVEvent::kEMCEGA)
509     trigName += "kEMCEGA";
510
511
512   //Create the task
513   AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d%s",centClass,trackType,cuts,trigName.Data()));
514   taskPWG4TrackQA->SetTrackType(trackType);
515   taskPWG4TrackQA->SetCuts(trackCuts);
516   taskPWG4TrackQA->SetCutsITSLoose(trackCutsReject);
517   taskPWG4TrackQA->SetCutsTPConly(trackCutsTPConly);
518   taskPWG4TrackQA->SetPtMax(100.);
519  
520   if(iAODanalysis)
521     taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kAOD);
522   else
523     taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kESD);
524
525   if(isPbPb) {
526     taskPWG4TrackQA->SetIsPbPb(kTRUE);
527     taskPWG4TrackQA->SetCentralityClass(centClass);
528   }
529   taskPWG4TrackQA->SelectCollisionCandidates(iPhysicsSelectionFlag);
530
531   // E. Create ONLY the output containers for the data produced by the task.
532   // Get and connect other common input/output containers via the manager as below
533   //==============================================================================
534   TString outputfile = AliAnalysisManager::GetCommonFileName();
535   outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d%s",centClass,trackType,cuts,trigName.Data());
536
537   AliAnalysisDataContainer *cout_histQAtrack = 0x0;
538   TString contName = Form("qa_histsQAtrackCent%dType%dcuts%d%s",centClass,trackType,cuts,trigName.Data());
539   cout_histQAtrack = mgr->CreateContainer(contName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
540
541   mgr->AddTask(taskPWG4TrackQA);
542   mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer());
543   mgr->ConnectOutput(taskPWG4TrackQA,1,cout_histQAtrack);
544
545   // Return task pointer at the end
546   return taskPWG4TrackQA;
547 }