]>
Commit | Line | Data |
---|---|---|
1dfe075f | 1 | |
2 | /************************************************************************** | |
3 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * * | |
5 | * Author: The ALICE Off-line Project. * | |
6 | * Contributors are mentioned in the code where appropriate. * | |
7 | * * | |
8 | * Permission to use, copy, modify and distribute this software and its * | |
9 | * documentation strictly for non-commercial purposes is hereby granted * | |
10 | * without fee, provided that the above copyright notice appears in all * | |
11 | * copies and that both the copyright notice and this permission notice * | |
12 | * appear in the supporting documentation. The authors make no claims * | |
13 | * about the suitability of this software for any purpose. It is * | |
14 | * provided "as is" without express or implied warranty. * | |
15 | **************************************************************************/ | |
0b28fd57 | 16 | |
17 | /* $Id$ */ | |
18 | ||
1dfe075f | 19 | //_________________________________________________________________________ |
20 | // An analysis task to check the PMD data in simulated data | |
21 | // | |
22 | //*-- Yves Schutz | |
23 | ////////////////////////////////////////////////////////////////////////////// | |
24 | ||
0b28fd57 | 25 | #include <TCanvas.h> |
1dfe075f | 26 | #include <TChain.h> |
0b28fd57 | 27 | #include <TFile.h> |
1dfe075f | 28 | #include <TH1F.h> |
29 | #include <TH2F.h> | |
1dfe075f | 30 | #include <TLine.h> |
0b28fd57 | 31 | #include <TROOT.h> |
1dfe075f | 32 | #include <TStyle.h> |
1f588058 | 33 | #include <TString.h> |
1dfe075f | 34 | |
35 | #include "AliPMDQATask.h" | |
36 | #include "AliPMDUtility.h" | |
37 | #include "AliESD.h" | |
38 | #include "AliLog.h" | |
39 | ||
40 | //______________________________________________________________________________ | |
41 | AliPMDQATask::AliPMDQATask(const char *name) : | |
42 | AliAnalysisTask(name,""), | |
43 | fChain(0), | |
44 | fESD(0), | |
45 | fhPMDP1(0), | |
46 | fhPMDC2(0), | |
47 | fhPMDP2(0), | |
48 | fhPMDC3(0), | |
49 | fhPMDP3(0), | |
50 | fhPMDP4(0), | |
51 | fhPMDC5(0), | |
52 | fhPMDP5(0), | |
53 | fhPMDCP0(0), | |
54 | fhPMDCP1(0), | |
55 | fhPMDCP2(0), | |
56 | fhPMDCP3(0), | |
57 | fhPMDCP4(0), | |
58 | fhPMDSM1(0), | |
59 | fhPMDSM2(0), | |
60 | fhPMDSM3(0), | |
61 | fhPMDSM4(0), | |
62 | fhPMDSM5(0), | |
63 | fhPMDSM6(0), | |
64 | fhPMDSM7(0), | |
65 | fhPMDSM8(0), | |
66 | fhPMDSM9(0), | |
67 | fhPMDSM10(0), | |
68 | fhPMDSM11(0), | |
69 | fhPMDSM12(0), | |
70 | fhPMDSM13(0), | |
71 | fhPMDSM14(0), | |
72 | fhPMDSM15(0), | |
73 | fhPMDSM16(0), | |
74 | fhPMDSM17(0), | |
75 | fhPMDSM18(0), | |
76 | fhPMDSM19(0), | |
77 | fhPMDSM20(0), | |
78 | fhPMDSM21(0), | |
79 | fhPMDSM22(0), | |
80 | fhPMDSM23(0), | |
81 | fhPMDSM24(0), | |
82 | fhPMDSM (0) | |
83 | { | |
84 | // Constructor. | |
85 | // Input slot #0 works with an Ntuple | |
86 | DefineInput(0, TChain::Class()); | |
87 | // Output slot #0 writes into a TH1 container | |
88 | DefineOutput(0, TObjArray::Class()) ; | |
89 | } | |
90 | ||
91 | //______________________________________________________________________________ | |
92 | AliPMDQATask::~AliPMDQATask() | |
93 | { | |
94 | // dtor | |
95 | fOutputContainer->Clear() ; | |
96 | delete fOutputContainer ; | |
97 | ||
98 | delete fhPMDP1 ; | |
99 | delete fhPMDC2 ; | |
100 | delete fhPMDP2 ; | |
101 | delete fhPMDC3 ; | |
102 | delete fhPMDP3 ; | |
103 | delete fhPMDP4 ; | |
104 | delete fhPMDC5 ; | |
105 | delete fhPMDP5 ; | |
106 | delete fhPMDCP0 ; | |
107 | delete fhPMDCP1 ; | |
108 | delete fhPMDCP2 ; | |
109 | delete fhPMDCP3 ; | |
110 | delete fhPMDCP4 ; | |
111 | delete fhPMDSM1 ; | |
112 | delete fhPMDSM2 ; | |
113 | delete fhPMDSM3 ; | |
114 | delete fhPMDSM4 ; | |
115 | delete fhPMDSM5 ; | |
116 | delete fhPMDSM6 ; | |
117 | delete fhPMDSM7 ; | |
118 | delete fhPMDSM8 ; | |
119 | delete fhPMDSM9 ; | |
120 | delete fhPMDSM10 ; | |
121 | delete fhPMDSM11 ; | |
122 | delete fhPMDSM12 ; | |
123 | delete fhPMDSM13 ; | |
124 | delete fhPMDSM14 ; | |
125 | delete fhPMDSM15 ; | |
126 | delete fhPMDSM16 ; | |
127 | delete fhPMDSM17 ; | |
128 | delete fhPMDSM18 ; | |
129 | delete fhPMDSM19 ; | |
130 | delete fhPMDSM20 ; | |
131 | delete fhPMDSM21 ; | |
132 | delete fhPMDSM22 ; | |
133 | delete fhPMDSM23 ; | |
134 | delete fhPMDSM24 ; | |
135 | delete fhPMDSM ; | |
136 | ||
137 | } | |
138 | ||
139 | //______________________________________________________________________________ | |
c52c2132 | 140 | void AliPMDQATask::ConnectInputData(const Option_t*) |
1dfe075f | 141 | { |
142 | // Initialisation of branch container and histograms | |
143 | ||
144 | AliInfo(Form("*** Initialization of %s", GetName())) ; | |
145 | ||
146 | // Get input data | |
147 | fChain = dynamic_cast<TChain *>(GetInputData(0)) ; | |
148 | if (!fChain) { | |
149 | AliError(Form("Input 0 for %s not found\n", GetName())); | |
150 | return ; | |
151 | } | |
152 | ||
c52c2132 | 153 | // One should first check if the branch address was taken by some other task |
154 | char ** address = (char **)GetBranchAddress(0, "ESD"); | |
155 | if (address) { | |
156 | fESD = (AliESD*)(*address); | |
157 | } else { | |
158 | fESD = new AliESD(); | |
159 | SetBranchAddress(0, "ESD", &fESD); | |
1dfe075f | 160 | } |
c52c2132 | 161 | } |
162 | ||
163 | //________________________________________________________________________ | |
164 | void AliPMDQATask::CreateOutputObjects() | |
165 | { | |
1dfe075f | 166 | // create histograms |
167 | ||
1e20f195 | 168 | OpenFile(0) ; |
169 | ||
1dfe075f | 170 | fhPMDP1 = new TH2F("fhPMDP1","XY of Clusters",100,-100.,100.,100,-100.,100.); |
171 | fhPMDC2 = new TH1F("fhPMDC2","CPV PHI",200,-1,9); | |
172 | fhPMDP2 = new TH1F("fhPMDP2","PRE PHI",200,-1,9); | |
173 | fhPMDC3 = new TH1F("fhPMDC3","CPV Clus",30,0.,500.); | |
174 | fhPMDP3 = new TH1F("fhPMDP3","PRE N-gammalike",20,0.,500.); | |
175 | fhPMDP4 = new TH1F("fhPMDP4","PRE EDEP",30,0.,1000.); | |
176 | fhPMDC5 = new TH1F("fhPMDC5","CPV n-cell",20,0.,100.); | |
177 | fhPMDP5 = new TH1F("fhPMDP5","PMD n-cell",20,0.,100.); | |
178 | fhPMDCP0 = new TH2F("fhPMDCP0","PRE CLUS Quad.1 vs 2",150,0.,300.,150,0.,300.); | |
179 | fhPMDCP1 = new TH2F("fhPMDCP1","PRE CLUS Quad.3 vs 4",150,0.,300.,150,0.,300.); | |
180 | fhPMDCP2 = new TH2F("fhPMDCP2","PRE EDEP Quad.3 vs 4",50,0.,300.,50,0.,300.); | |
181 | fhPMDCP3 = new TH2F("fhPMDCP3","PRE EDEP vs Tot Clus ",10,0.,1000.,10,0.,300.); | |
182 | fhPMDCP4 = new TH2F("fhPMDCP4","PRE Clus vs CPV Clus ",150,0.,200.,150,0.,200.); | |
183 | ||
184 | fhPMDSM1 = new TH2F("fhPMDSM1","PRE Cluster XY",200,-100,100,200,-100,100); | |
185 | fhPMDSM2 = new TH2F("fhPMDSM2","",999,-100.0,100.0,999,-100.0,100.0); | |
186 | fhPMDSM3 = new TH2F("fhPMDSM3","",999,-100.0,100.0,999,-100.0,100.0); | |
187 | fhPMDSM4 = new TH2F("fhPMDSM4","",999,-100.0,100.0,999,-100.0,100.0); | |
188 | fhPMDSM5 = new TH2F("fhPMDSM5","",999,-100.0,100.0,999,-100.0,100.0); | |
189 | fhPMDSM6 = new TH2F("fhPMDSM6","",999,-100.0,100.0,999,-100.0,100.0); | |
190 | fhPMDSM7 = new TH2F("fhPMDSM7","",999,-100.0,100.0,999,-100.0,100.0); | |
191 | fhPMDSM8 = new TH2F("fhPMDSM8","",999,-100.0,100.0,999,-100.0,100.0); | |
192 | fhPMDSM9 = new TH2F("fhPMDSM9","",999,-100.0,100.0,999,-100.0,100.0); | |
193 | fhPMDSM10 = new TH2F("fhPMDSM10","",999,-100.0,100.0,999,-100.0,100.0); | |
194 | fhPMDSM11 = new TH2F("fhPMDSM11","",999,-100.0,100.0,999,-100.0,100.0); | |
195 | fhPMDSM12 = new TH2F("fhPMDSM12","",999,-100.0,100.0,999,-100.0,100.0); | |
196 | fhPMDSM13 = new TH2F("fhPMDSM13","",999,-100.0,100.0,999,-100.0,100.0); | |
197 | fhPMDSM14 = new TH2F("fhPMDSM14","",999,-100.0,100.0,999,-100.0,100.0); | |
198 | fhPMDSM15 = new TH2F("fhPMDSM15","",999,-100.0,100.0,999,-100.0,100.0); | |
199 | fhPMDSM16 = new TH2F("fhPMDSM16","",999,-100.0,100.0,999,-100.0,100.0); | |
200 | fhPMDSM17 = new TH2F("fhPMDSM17","",999,-100.0,100.0,999,-100.0,100.0); | |
201 | fhPMDSM18 = new TH2F("fhPMDSM18","",999,-100.0,100.0,999,-100.0,100.0); | |
202 | fhPMDSM19 = new TH2F("fhPMDSM19","",999,-100.0,100.0,999,-100.0,100.0); | |
203 | fhPMDSM20 = new TH2F("fhPMDSM20","",999,-100.0,100.0,999,-100.0,100.0); | |
204 | fhPMDSM21 = new TH2F("fhPMDSM21","",999,-100.0,100.0,999,-100.0,100.0); | |
205 | fhPMDSM22 = new TH2F("fhPMDSM22","",999,-100.0,100.0,999,-100.0,100.0); | |
206 | fhPMDSM23 = new TH2F("fhPMDSM23","",999,-100.0,100.0,999,-100.0,100.0); | |
207 | fhPMDSM24 = new TH2F("fhPMDSM24","",999,-100.0,100.0,999,-100.0,100.0); | |
208 | fhPMDSM = new TH1F("fhPMDSM","Plot of all 24 Super Modules",24,0,24); | |
209 | ||
210 | // create output container | |
211 | ||
212 | fOutputContainer = new TObjArray(38) ; | |
213 | fOutputContainer->SetName("PMD") ; | |
214 | ||
215 | fOutputContainer->AddAt(fhPMDP1, 0 ); | |
216 | fOutputContainer->AddAt(fhPMDC2, 1 ); | |
217 | fOutputContainer->AddAt(fhPMDP2, 2 ); | |
218 | fOutputContainer->AddAt(fhPMDC3, 3 ); | |
219 | fOutputContainer->AddAt(fhPMDP3, 4 ); | |
220 | fOutputContainer->AddAt(fhPMDP4, 5 ); | |
221 | fOutputContainer->AddAt(fhPMDC5, 6 ); | |
222 | fOutputContainer->AddAt(fhPMDP5, 7 ); | |
223 | fOutputContainer->AddAt(fhPMDCP0, 8 ); | |
224 | fOutputContainer->AddAt(fhPMDCP1, 9); | |
225 | fOutputContainer->AddAt(fhPMDCP2, 10 ); | |
226 | fOutputContainer->AddAt(fhPMDCP3, 11 ); | |
227 | fOutputContainer->AddAt(fhPMDCP4, 12 ); | |
228 | ||
229 | fOutputContainer->AddAt(fhPMDSM1, 13 ); | |
230 | fOutputContainer->AddAt(fhPMDSM2, 14 ); | |
231 | fOutputContainer->AddAt(fhPMDSM3, 15 ); | |
232 | fOutputContainer->AddAt(fhPMDSM4, 16 ); | |
233 | fOutputContainer->AddAt(fhPMDSM5, 17 ); | |
234 | fOutputContainer->AddAt(fhPMDSM6, 18 ); | |
235 | fOutputContainer->AddAt(fhPMDSM7, 19 ); | |
236 | fOutputContainer->AddAt(fhPMDSM8, 20 ); | |
237 | fOutputContainer->AddAt(fhPMDSM9, 21 ); | |
238 | fOutputContainer->AddAt(fhPMDSM10, 22 ); | |
239 | fOutputContainer->AddAt(fhPMDSM11, 23 ); | |
240 | fOutputContainer->AddAt(fhPMDSM12, 24 ); | |
241 | fOutputContainer->AddAt(fhPMDSM13, 25 ); | |
242 | fOutputContainer->AddAt(fhPMDSM14, 26 ); | |
243 | fOutputContainer->AddAt(fhPMDSM15, 27 ); | |
244 | fOutputContainer->AddAt(fhPMDSM16, 28 ); | |
245 | fOutputContainer->AddAt(fhPMDSM17, 29 ); | |
246 | fOutputContainer->AddAt(fhPMDSM18, 30 ); | |
247 | fOutputContainer->AddAt(fhPMDSM19, 31 ); | |
248 | fOutputContainer->AddAt(fhPMDSM20, 32 ); | |
249 | fOutputContainer->AddAt(fhPMDSM21, 33 ); | |
250 | fOutputContainer->AddAt(fhPMDSM22, 34 ); | |
251 | fOutputContainer->AddAt(fhPMDSM23, 35 ); | |
252 | fOutputContainer->AddAt(fhPMDSM24, 36 ); | |
253 | fOutputContainer->AddAt(fhPMDSM, 37 ); | |
254 | } | |
255 | ||
256 | //______________________________________________________________________________ | |
257 | void AliPMDQATask::Exec(Option_t *) | |
258 | { | |
259 | // Processing of one event | |
260 | ||
261 | Long64_t entry = fChain->GetReadEntry() ; | |
262 | ||
263 | if (!fESD) { | |
264 | AliError("fESD is not connected to the input!") ; | |
265 | return ; | |
266 | } | |
267 | ||
268 | if ( !((entry-1)%100) ) | |
269 | AliInfo(Form("%s ----> Processing event # %lld", (dynamic_cast<TChain *>(fChain))->GetFile()->GetName(), entry)) ; | |
270 | ||
271 | // ************************ PMD | |
272 | ||
273 | AliPMDUtility *cc = new AliPMDUtility(); | |
274 | ||
275 | Int_t smn; | |
276 | Int_t n=0; | |
277 | Float_t totCPVClus ; | |
278 | Float_t totPREClus ; | |
279 | Float_t totPREEdep ; | |
280 | Float_t totCPVCell ; | |
281 | Float_t totPRECell ; | |
282 | Float_t preCluQUAD[4] ; | |
283 | Float_t cpvCluQUAD[4] ; | |
284 | Float_t preADCQUAD[4] ; | |
285 | Float_t cpvADCQUAD[4] ; | |
286 | Float_t preCelQUAD[4] ; | |
287 | Float_t cpvCelQUAD[4] ; | |
288 | ||
289 | Int_t npmdCl = fESD->GetNumberOfPmdTracks(); | |
290 | ||
291 | // ****** The loop over PMD clusters | |
292 | ||
293 | for (Int_t kk = 0; kk < 4 ; kk++) { | |
294 | cpvCluQUAD[kk] = 0.0 ; | |
295 | preCluQUAD[kk] = 0.0 ; | |
296 | cpvCelQUAD[kk] = 0.0 ; | |
297 | preCelQUAD[kk] = 0.0 ; | |
298 | preADCQUAD[kk] = 0.0 ; | |
299 | } | |
300 | ||
301 | while (npmdCl--) { | |
302 | ||
303 | AliESDPmdTrack * pmdtr = fESD->GetPmdTrack(npmdCl); | |
304 | Int_t det = pmdtr->GetDetector(); | |
305 | Float_t clsX = pmdtr->GetClusterX(); | |
306 | Float_t clsY = pmdtr->GetClusterY(); | |
307 | Float_t clsZ = pmdtr->GetClusterZ(); | |
308 | Float_t ncell = pmdtr->GetClusterCells(); | |
309 | Float_t adc = pmdtr->GetClusterADC(); | |
310 | ||
311 | cc->SetXYZ(clsX,clsY,clsZ); | |
312 | cc->CalculateEta(); | |
313 | cc->CalculatePhi(); | |
314 | Float_t eta = cc->GetEta(); | |
315 | Float_t phi = cc->GetPhi(); | |
316 | ||
317 | // Calculating S.Module Number from Cluster . | |
318 | ||
319 | CalculateSMN(clsX, clsY, smn); | |
320 | if( det == 1) | |
321 | { | |
322 | if(smn >= 0 && smn <= 5) { | |
323 | ++cpvCluQUAD[0] ; | |
324 | cpvADCQUAD[0] =+ adc ; | |
325 | cpvCelQUAD[0] =+ ncell ; | |
326 | } | |
327 | if(smn >= 6 && smn <=11) { | |
328 | ++cpvCluQUAD[1] ; | |
329 | cpvADCQUAD[1] =+ adc ; | |
330 | cpvCelQUAD[1] =+ ncell ; | |
331 | } | |
332 | if(smn >=12 && smn <=17) { | |
333 | ++cpvCluQUAD[2] ; | |
334 | cpvADCQUAD[2] =+ adc ; | |
335 | cpvCelQUAD[2] =+ ncell ; | |
336 | } | |
337 | if(smn >=18 && smn <=23) { | |
338 | ++cpvCluQUAD[3] ; | |
339 | cpvADCQUAD[3] =+ adc ; | |
340 | cpvCelQUAD[3] =+ ncell ; | |
341 | } | |
342 | ||
343 | if(eta >= 2.3 && eta <= 3.5) | |
344 | { | |
345 | fhPMDC2->Fill(phi); | |
346 | } | |
347 | } | |
348 | if( det == 0) | |
349 | { | |
350 | if(smn >= 0 && smn <= 5) { | |
351 | ++preCluQUAD[0] ; | |
352 | preADCQUAD[0] =+ adc ; | |
353 | preCelQUAD[0] =+ ncell ; | |
354 | } | |
355 | if(smn >= 6 && smn <=11) { | |
356 | ++preCluQUAD[1] ; | |
357 | preADCQUAD[1] =+ adc ; | |
358 | preCelQUAD[1] =+ ncell ; | |
359 | } | |
360 | if(smn >=12 && smn <=17) { | |
361 | ++preCluQUAD[2] ; | |
362 | preADCQUAD[2] =+ adc ; | |
363 | preCelQUAD[2] =+ ncell ; | |
364 | } | |
365 | if(smn >=18 && smn <=23) { | |
366 | ++preCluQUAD[3] ; | |
367 | preADCQUAD[3] =+ adc ; | |
368 | preCelQUAD[3] =+ ncell ; | |
369 | } | |
370 | if ( n <= 100 ) { | |
371 | fhPMDSM->Fill(smn); | |
372 | if(smn == 0) fhPMDSM1->Fill(-clsX,clsY); | |
373 | if(smn == 0) fhPMDSM1->Fill(-clsX,clsY); | |
374 | if(smn == 1) fhPMDSM2->Fill(-clsX,clsY); | |
375 | if(smn == 2) fhPMDSM3->Fill(-clsX,clsY); | |
376 | if(smn == 3) fhPMDSM4->Fill(-clsX,clsY); | |
377 | if(smn == 4) fhPMDSM5->Fill(-clsX,clsY); | |
378 | if(smn == 5) fhPMDSM6->Fill(-clsX,clsY); | |
379 | if(smn == 6) fhPMDSM7->Fill(-clsX,clsY); | |
380 | if(smn == 7) fhPMDSM8->Fill(-clsX,clsY); | |
381 | if(smn == 8) fhPMDSM9->Fill(-clsX,clsY); | |
382 | if(smn == 9) fhPMDSM10->Fill(-clsX,clsY); | |
383 | if(smn ==10) fhPMDSM11->Fill(-clsX,clsY); | |
384 | if(smn ==11) fhPMDSM12->Fill(-clsX,clsY); | |
385 | if(smn ==12) fhPMDSM13->Fill(-clsX,clsY); | |
386 | if(smn ==13) fhPMDSM14->Fill(-clsX,clsY); | |
387 | if(smn ==14) fhPMDSM15->Fill(-clsX,clsY); | |
388 | if(smn ==15) fhPMDSM16->Fill(-clsX,clsY); | |
389 | if(smn ==16) fhPMDSM17->Fill(-clsX,clsY); | |
390 | if(smn ==17) fhPMDSM18->Fill(-clsX,clsY); | |
391 | if(smn ==18) fhPMDSM19->Fill(-clsX,clsY); | |
392 | if(smn ==19) fhPMDSM20->Fill(-clsX,clsY); | |
393 | if(smn ==20) fhPMDSM21->Fill(-clsX,clsY); | |
394 | if(smn ==21) fhPMDSM22->Fill(-clsX,clsY); | |
395 | if(smn ==22) fhPMDSM23->Fill(-clsX,clsY); | |
396 | if(smn ==23) fhPMDSM24->Fill(-clsX,clsY); | |
397 | } | |
398 | if(eta >= 2.3 && eta <= 3.5) | |
399 | { | |
400 | fhPMDP2->Fill(phi); | |
401 | } | |
402 | fhPMDP1->Fill(clsX,clsY); | |
403 | } | |
404 | } | |
405 | for (Int_t k = 0 ; k < 4 ; k++) { | |
406 | totCPVClus =+ cpvCluQUAD [k] ; | |
407 | totPREClus =+ preCluQUAD [k] ; | |
408 | totCPVCell =+ cpvCelQUAD [k] ; | |
409 | totPRECell =+ preCelQUAD [k] ; | |
410 | totPREEdep =+ preADCQUAD [k] ; | |
411 | } | |
412 | Float_t totCPVpreClus = totPREClus + totCPVClus ; | |
413 | ||
414 | // if(eta >= 2.3 && eta <= 3.5) { | |
415 | fhPMDC3->Fill(totCPVClus); | |
416 | fhPMDP3->Fill(totPREClus); | |
417 | fhPMDP4->Fill(totPREEdep); | |
418 | fhPMDP5->Fill(totPRECell); | |
419 | fhPMDCP0->Fill(preCluQUAD[0],preCluQUAD[1]); | |
420 | fhPMDCP1->Fill(preCluQUAD[2],preCluQUAD[3]); | |
421 | fhPMDCP2->Fill(preADCQUAD[2],preADCQUAD[3]); | |
422 | fhPMDCP3->Fill(totPREEdep,totCPVpreClus); | |
423 | fhPMDCP4->Fill(totPREClus,totCPVClus); | |
424 | // } | |
425 | totCPVClus = 0.0; | |
426 | totPREClus = 0.0; | |
427 | totCPVCell = 0.0; | |
428 | totPRECell = 0.0; | |
429 | totPREEdep = 0.0; | |
430 | ||
431 | PostData(0, fOutputContainer); | |
432 | } | |
433 | ||
434 | //______________________________________________________________________________ | |
435 | void AliPMDQATask::Terminate(Option_t *) | |
436 | { | |
437 | // Processing when the event loop is ended | |
c52c2132 | 438 | fOutputContainer = (TObjArray*)GetOutputData(0); |
1dfe075f | 439 | |
c52c2132 | 440 | fhPMDP1 = (TH2F*)fOutputContainer->At(0); |
441 | fhPMDC2 = (TH1F*)fOutputContainer->At(1); | |
442 | fhPMDP2 = (TH1F*)fOutputContainer->At(2); | |
443 | fhPMDC3 = (TH1F*)fOutputContainer->At(3); | |
444 | fhPMDP3 = (TH1F*)fOutputContainer->At(4); | |
445 | fhPMDP4 = (TH1F*)fOutputContainer->At(5); | |
446 | fhPMDC5 = (TH1F*)fOutputContainer->At(6); | |
447 | fhPMDP5 = (TH1F*)fOutputContainer->At(7); | |
448 | fhPMDCP0 = (TH2F*)fOutputContainer->At(8); | |
449 | fhPMDCP1 = (TH2F*)fOutputContainer->At(9); | |
450 | fhPMDCP2 = (TH2F*)fOutputContainer->At(10); | |
451 | fhPMDCP3 = (TH2F*)fOutputContainer->At(11); | |
452 | fhPMDCP4 = (TH2F*)fOutputContainer->At(12); | |
453 | ||
454 | fhPMDSM1 = (TH2F*)fOutputContainer->At(13); | |
455 | fhPMDSM2 = (TH2F*)fOutputContainer->At(14); | |
456 | fhPMDSM3 = (TH2F*)fOutputContainer->At(15); | |
457 | fhPMDSM4 = (TH2F*)fOutputContainer->At(16); | |
458 | fhPMDSM5 = (TH2F*)fOutputContainer->At(17); | |
459 | fhPMDSM6 = (TH2F*)fOutputContainer->At(18); | |
460 | fhPMDSM7 = (TH2F*)fOutputContainer->At(19); | |
461 | fhPMDSM8 = (TH2F*)fOutputContainer->At(20); | |
462 | fhPMDSM9 = (TH2F*)fOutputContainer->At(21); | |
463 | fhPMDSM10 = (TH2F*)fOutputContainer->At(22); | |
464 | fhPMDSM11 = (TH2F*)fOutputContainer->At(23); | |
465 | fhPMDSM12 = (TH2F*)fOutputContainer->At(24); | |
466 | fhPMDSM13 = (TH2F*)fOutputContainer->At(25); | |
467 | fhPMDSM14 = (TH2F*)fOutputContainer->At(26); | |
468 | fhPMDSM15 = (TH2F*)fOutputContainer->At(27); | |
469 | fhPMDSM16 = (TH2F*)fOutputContainer->At(28); | |
470 | fhPMDSM17 = (TH2F*)fOutputContainer->At(29); | |
471 | fhPMDSM18 = (TH2F*)fOutputContainer->At(30); | |
472 | fhPMDSM19 = (TH2F*)fOutputContainer->At(31); | |
473 | fhPMDSM20 = (TH2F*)fOutputContainer->At(32); | |
474 | fhPMDSM21 = (TH2F*)fOutputContainer->At(33); | |
475 | fhPMDSM22 = (TH2F*)fOutputContainer->At(34); | |
476 | fhPMDSM23 = (TH2F*)fOutputContainer->At(35); | |
477 | fhPMDSM24 = (TH2F*)fOutputContainer->At(36); | |
478 | fhPMDSM = (TH1F*)fOutputContainer->At(37); | |
479 | ||
2704006a | 480 | Bool_t problem = kFALSE ; |
84eb42a1 | 481 | AliInfo(Form(" *** %s Report:", GetName())) ; |
482 | ||
1dfe075f | 483 | gStyle->SetOptStat(110000); |
484 | gStyle->SetOptFit(1); | |
485 | ||
486 | TCanvas *cPMD0 = new TCanvas("cPMD0","PMD ESD Test #1", 10,10, 600, 600); | |
487 | cPMD0->Range(-100, -100,100 ,100 ); | |
488 | fhPMDSM1->SetMarkerColor(2); | |
489 | fhPMDSM1->Draw(); | |
490 | fhPMDSM1->GetXaxis()->SetTitle("Cluster X"); | |
491 | fhPMDSM1->GetYaxis()->SetTitle("Cluster Y"); | |
492 | fhPMDSM2->SetMarkerColor(2); | |
493 | fhPMDSM2->Draw("same"); | |
494 | fhPMDSM3->SetMarkerColor(2); | |
495 | fhPMDSM3->Draw("same"); | |
496 | fhPMDSM4->SetMarkerColor(2); | |
497 | fhPMDSM4->Draw("same"); | |
498 | fhPMDSM5->SetMarkerColor(2); | |
499 | fhPMDSM5->Draw("same"); | |
500 | fhPMDSM6->SetMarkerColor(2); | |
501 | fhPMDSM6->Draw("same"); | |
502 | fhPMDSM7->SetMarkerColor(4); | |
503 | fhPMDSM7->Draw("same"); | |
504 | fhPMDSM8->SetMarkerColor(4); | |
505 | fhPMDSM8->Draw("same"); | |
506 | fhPMDSM9->SetMarkerColor(4); | |
507 | fhPMDSM9->Draw("same"); | |
508 | fhPMDSM10->SetMarkerColor(4); | |
509 | fhPMDSM10->Draw("same"); | |
510 | fhPMDSM11->SetMarkerColor(4); | |
511 | fhPMDSM11->Draw("same"); | |
512 | fhPMDSM12->SetMarkerColor(4); | |
513 | fhPMDSM12->Draw("same"); | |
514 | fhPMDSM13->SetMarkerColor(6); | |
515 | fhPMDSM13->Draw("same"); | |
516 | fhPMDSM14->SetMarkerColor(6); | |
517 | fhPMDSM14->Draw("same"); | |
518 | fhPMDSM15->SetMarkerColor(6); | |
519 | fhPMDSM15->Draw("same"); | |
520 | fhPMDSM16->SetMarkerColor(6); | |
521 | fhPMDSM16->Draw("same"); | |
522 | fhPMDSM17->SetMarkerColor(6); | |
523 | fhPMDSM17->Draw("same"); | |
524 | fhPMDSM18->SetMarkerColor(6); | |
525 | fhPMDSM18->Draw("same"); | |
526 | fhPMDSM19->SetMarkerColor(8); | |
527 | fhPMDSM19->Draw("same"); | |
528 | fhPMDSM20->SetMarkerColor(8); | |
529 | fhPMDSM20->Draw("same"); | |
530 | fhPMDSM21->SetMarkerColor(8); | |
531 | fhPMDSM21->Draw("same"); | |
532 | fhPMDSM22->SetMarkerColor(8); | |
533 | fhPMDSM22->Draw("same"); | |
534 | fhPMDSM23->SetMarkerColor(8); | |
535 | fhPMDSM23->Draw("same"); | |
536 | fhPMDSM24->SetMarkerColor(8); | |
537 | fhPMDSM24->Draw("same"); | |
538 | ||
539 | DrawPMDBoundary(); | |
540 | DrawPMDBoundarySM1(); | |
541 | DrawPMDBoundarySM2(); | |
542 | DrawPMDBoundarySM3(); | |
543 | DrawPMDBoundarySM4(); | |
544 | cPMD0->Print("ClusterXY.eps"); | |
545 | ||
546 | TCanvas *cPMD1 = new TCanvas("cPMD1"," PMD ESD Test #2",10, 10, 600,600); | |
547 | cPMD1->Divide(1,2); | |
548 | cPMD1->cd(1); | |
549 | cPMD1->SetFillColor(0); | |
550 | fhPMDC2->SetLineColor(4); | |
551 | fhPMDC2->Draw(); | |
552 | cPMD1->cd(2); | |
553 | fhPMDP2->SetLineColor(2); | |
554 | fhPMDP2->Draw(); | |
555 | cPMD1->Print("CPVPREphi.eps"); | |
556 | ||
557 | TCanvas *cPMD2 = new TCanvas("cPMD2","PMD ESD test #3",10, 10, 600, 600); | |
558 | cPMD2->cd(); | |
559 | fhPMDSM->SetFillColor(2); | |
560 | fhPMDSM->Draw(); | |
561 | cPMD2->Print("AllSMN.eps"); | |
562 | ||
563 | TCanvas *cPMD3 = new TCanvas("cPMD3", "PMD ESD test #4",10, 10, 600, 600); | |
564 | cPMD3->Divide(2,2); | |
565 | cPMD3->cd(1); | |
566 | fhPMDCP0->SetMarkerColor(9); | |
567 | fhPMDCP0->Draw(); | |
568 | cPMD3->cd(2); | |
569 | fhPMDCP1->SetMarkerColor(6); | |
570 | fhPMDCP1->Draw(); | |
571 | cPMD3->cd(3); | |
572 | fhPMDP3->SetLineColor(2); | |
573 | fhPMDP3->Draw(); | |
574 | cPMD3->cd(4); | |
575 | fhPMDCP4->SetMarkerColor(3); | |
576 | fhPMDCP4->Draw(); | |
577 | cPMD3->Print("CPVPREClus.eps"); | |
578 | ||
579 | TCanvas *cPMD4 = new TCanvas("cPMD4","PMD ESD test #5", 10, 10, 600, 600); | |
580 | cPMD4->Divide(1,2); | |
581 | cPMD4->cd(1); | |
582 | fhPMDC3->SetLineColor(4); | |
583 | fhPMDC3->Draw(); | |
584 | cPMD4->cd(2); | |
585 | fhPMDP4->SetLineColor(2); | |
586 | fhPMDP4->Draw(); | |
587 | cPMD4->Print("CPVPREAdc.eps"); | |
588 | ||
589 | char line[1024] ; | |
84eb42a1 | 590 | sprintf(line, ".!tar -zcf %s.tar.gz *.eps", GetName()) ; |
1dfe075f | 591 | gROOT->ProcessLine(line); |
592 | ||
2704006a | 593 | AliInfo(Form("!!! All the eps files are in %s.tar.gz !!!", GetName())) ; |
1dfe075f | 594 | |
1f588058 | 595 | TString report ; |
2704006a | 596 | if(problem) |
597 | report="Problems found, please check!!!"; | |
598 | else | |
599 | report="OK"; | |
600 | ||
1f588058 | 601 | AliInfo(Form("*** %s Summary Report: %s \n",GetName(), report.Data())) ; |
1dfe075f | 602 | } |
603 | ||
604 | //______________________________________________________________________________ | |
605 | void AliPMDQATask::CalculateSMN( Float_t clsX, Float_t clsY, Int_t & smn) | |
606 | { | |
607 | Double_t xcon[96] = {75.133, 54.204, 53.254, 32.326, 31.376,10.447, | |
608 | 75.133, 54.204, 53.254, 32.326, 31.376,10.447, | |
609 | 75.133, 54.204, 53.254, 32.326, 31.376,10.447, | |
610 | 75.133, 54.204, 53.254, 32.326, 31.376,10.447, | |
611 | -75.133, -54.204, -53.254, -32.326, -31.376,-10.447, | |
612 | -75.133, -54.204, -53.254, -32.326, -31.376,-10.447, | |
613 | -75.133, -54.204, -53.254, -32.326, -31.376,-10.447, | |
614 | -75.133, -54.204, -53.254, -32.326, -31.376,-10.447, | |
615 | 9.167, -32.543, -33.493, -75.133, | |
616 | 9.167, -32.543, -33.493, -75.133, | |
617 | 9.167, -32.543, -33.493, -75.133, | |
618 | 9.167, -32.543, -33.493, -75.133, | |
619 | 9.167, -32.543, -33.493, -75.133, | |
620 | 9.167, -32.543, -33.493, -75.133, | |
621 | -9.167, 32.543, 33.493, 75.133, | |
622 | -9.167, 32.543, 33.493, 75.133, | |
623 | -9.167, 32.543, 33.493, 75.133, | |
624 | -9.167, 32.543, 33.493, 75.133, | |
625 | -9.167, 32.543, 33.493, 75.133, | |
626 | -9.167, 32.543, 33.493, 75.133}; | |
627 | ||
628 | Double_t ycon[96] = {86.475, 86.475, 86.475, 86.475, 86.475, 86.475, | |
629 | 38.225, 38.225, 38.225, 38.225, 38.225, 38.225, | |
630 | 37.325, 37.325, 37.325, 37.325, 37.325, 37.325, | |
631 | -10.925, -10.925, -10.925, -10.925, -10.925, -10.925, | |
632 | -86.475, -86.475, -86.475, -86.475, -86.475, -86.475, | |
633 | -38.225, -38.225, -38.225, -38.225, -38.225, -38.225, | |
634 | -37.325, -37.325, -37.325, -37.325, -37.325, -37.325, | |
635 | 10.925, 10.925, 10.925, 10.925, 10.925, 10.925, | |
636 | 86.475, 86.475, 86.475, 86.475, | |
637 | 62.225, 62.225, 62.225, 62.225, | |
638 | 61.325, 61.325, 61.325, 61.325, | |
639 | 37.075, 37.075, 37.075, 37.075, | |
640 | 36.175, 36.175, 36.175, 36.175, | |
641 | 11.925, 11.925, 11.925 , 11.925, | |
642 | -86.475, -86.475, -86.475, -86.475, | |
643 | -62.225, -62.225, -62.225, -62.225, | |
644 | -61.325, -61.325, -61.325, -61.325, | |
645 | -37.075, -37.075, -37.075, -37.075, | |
646 | -36.175, -36.175, -36.175, -36.175, | |
647 | -11.925, -11.925, -11.925 , -11.925 }; | |
648 | ||
649 | if((clsX <= xcon[0]) && (clsX >= xcon[1]) && | |
650 | (clsY <= ycon[0]) && (clsY >= ycon[6])) smn = 0 ; | |
651 | ||
652 | else if((clsX <=xcon[2]) && (clsX >= xcon[3]) && | |
653 | (clsY <= ycon[1]) && (clsY >= ycon[7]))smn = 1 ; | |
654 | ||
655 | else if((clsX <=xcon[4]) && (clsX >= xcon[5]) && | |
656 | (clsY <= ycon[3]) && (clsY >= ycon[8]))smn = 2 ; | |
657 | ||
658 | else if((clsX <= xcon[0]) && (clsX >= xcon[1]) && | |
659 | (clsY <= ycon[12]) && (clsY >= ycon[18])) smn = 3 ; | |
660 | ||
661 | else if((clsX <=xcon[2]) && (clsX >= xcon[3]) && | |
662 | (clsY <= ycon[12]) && (clsY >= ycon[18]))smn = 4 ; | |
663 | ||
664 | else if((clsX <=xcon[4]) && (clsX >= xcon[5]) && | |
665 | (clsY <= ycon[12]) && (clsY >= ycon[18]))smn = 5 ; | |
666 | //------------------------------------------------------------------ | |
667 | else if((clsX >= xcon[24]) && (clsX <= xcon[25]) && | |
668 | (clsY >= ycon[24]) && (clsY <= ycon[30])) smn = 6 ; | |
669 | ||
670 | else if((clsX >=xcon[26]) && (clsX <= xcon[27]) && | |
671 | (clsY >= ycon[25]) && (clsY <= ycon[31]))smn = 7 ; | |
672 | ||
673 | else if((clsX >=xcon[28]) && (clsX <= xcon[29]) && | |
674 | (clsY >= ycon[26]) && (clsY <= ycon[32]))smn = 8 ; | |
675 | ||
676 | else if((clsX >= xcon[24]) && (clsX <= xcon[25]) && | |
677 | (clsY >= ycon[36]) && (clsY <= ycon[42])) smn = 9 ; | |
678 | ||
679 | else if((clsX >=xcon[26]) && (clsX <= xcon[27]) && | |
680 | (clsY >= ycon[36]) && (clsY <= ycon[42]))smn = 10; | |
681 | ||
682 | else if((clsX >=xcon[28]) && (clsX <= xcon[29]) && | |
683 | (clsY >= ycon[36]) && (clsY <= ycon[42]))smn = 11; | |
684 | //------------------------------------------------------------------ | |
685 | else if((clsX <= xcon[48]) && (clsX >= xcon[49]) && | |
686 | (clsY <= ycon[48]) && (clsY >= ycon[52])) smn = 12 ; | |
687 | ||
688 | else if((clsX <=xcon[50]) && (clsX >= xcon[51]) && | |
689 | (clsY <= ycon[48]) && (clsY >= ycon[52]))smn = 13 ; | |
690 | ||
691 | else if((clsX <=xcon[48]) && (clsX >= xcon[49]) && | |
692 | (clsY <= ycon[56]) && (clsY >= ycon[60]))smn = 14 ; | |
693 | ||
694 | else if((clsX <=xcon[50]) && (clsX >= xcon[51]) && | |
695 | (clsY <= ycon[56]) && (clsY >= ycon[60]))smn = 15 ; | |
696 | ||
697 | else if((clsX <=xcon[48]) && (clsX >= xcon[49]) && | |
698 | (clsY <= ycon[64]) && (clsY >= ycon[68]))smn = 16 ; | |
699 | ||
700 | else if((clsX <=xcon[50]) && (clsX >= xcon[51]) && | |
701 | (clsY <= ycon[64]) && (clsY >= ycon[68]))smn = 17 ; | |
702 | //-------------------------------------------------------------- | |
703 | else if((clsX >= xcon[72]) && (clsX <= xcon[73]) && | |
704 | (clsY >= ycon[72]) && (clsY <= ycon[76])) smn = 18 ; | |
705 | ||
706 | else if((clsX >=xcon[74]) && (clsX <= xcon[75]) && | |
707 | (clsY >= ycon[72]) && (clsY <= ycon[76]))smn = 19 ; | |
708 | ||
709 | else if((clsX >=xcon[72]) && (clsX <= xcon[73]) && | |
710 | (clsY >= ycon[80]) && (clsY <= ycon[84]))smn = 20 ; | |
711 | ||
712 | else if((clsX >=xcon[74]) && (clsX <= xcon[75]) && | |
713 | (clsY >= ycon[80]) && (clsY <= ycon[84]))smn = 21; | |
714 | ||
715 | else if((clsX >= xcon[72]) && (clsX <= xcon[73]) && | |
716 | (clsY >= ycon[88]) && (clsY <= ycon[92])) smn = 22 ; | |
717 | ||
718 | else if((clsX >=xcon[74]) && (clsX <= xcon[75]) && | |
719 | (clsY >= ycon[88]) && (clsY <= ycon[92]))smn = 23 ; | |
720 | else smn = 111; | |
721 | } | |
722 | ||
723 | //______________________________________________________________________________ | |
724 | void AliPMDQATask::DrawPMDBoundary() | |
725 | { | |
726 | // Draw PMD boundaries | |
727 | ||
728 | gStyle->SetLineWidth(2); | |
729 | gStyle->SetLineColor(2); | |
730 | TLine * l; | |
731 | l = new TLine(75.1333, 86.475, -75.1333, 86.475); l->Draw("same"); | |
732 | l = new TLine(-75.1333, 86.470,-75.1333, -86.475); l->Draw("same"); | |
733 | l = new TLine(-75.1333, -86.475,75.1333, -86.475); l->Draw("same"); | |
734 | l = new TLine(75.1333, -86.475,75.1333, 86.475); l->Draw("same"); | |
735 | } | |
736 | ||
737 | //______________________________________________________________________________ | |
738 | void AliPMDQATask::DrawPMDBoundarySM1() | |
739 | { | |
740 | // Draw boundaries of Super Module 1 | |
741 | ||
742 | gStyle->SetLineWidth(1); | |
743 | gStyle->SetLineColor(4); | |
744 | TLine * l; | |
745 | l = new TLine(-75.1333, 86.475, -10.447, 86.475); l->Draw("same"); | |
746 | l = new TLine(-10.447, 86.475, -10.446, -10.925); l->Draw("same"); | |
747 | l = new TLine(-10.446, -10.925, -75.1333,-10.925); l->Draw("same"); | |
748 | l = new TLine(-75.1333,-10.925, -75.1333, 86.475); l->Draw("same"); | |
749 | } | |
750 | ||
751 | //______________________________________________________________________________ | |
752 | void AliPMDQATask::DrawPMDBoundarySM2() | |
753 | { | |
754 | // Draw boundaries of Super Module 2 | |
755 | ||
756 | gStyle->SetLineWidth(1); | |
757 | gStyle->SetLineColor(4); | |
758 | TLine * l; | |
759 | l = new TLine(75.1333, -86.475, 10.446, -86.475); l->Draw("same"); | |
760 | l = new TLine(10.446, -86.475, 10.446, 10.925); l->Draw("same"); | |
761 | l = new TLine(10.446, 10.925, 75.1333, 10.925); l->Draw("same"); | |
762 | l = new TLine(75.1333, 10.925, 75.1333, -86.475); l->Draw("same"); | |
763 | } | |
764 | ||
765 | ||
766 | //______________________________________________________________________________ | |
767 | void AliPMDQATask::DrawPMDBoundarySM3() | |
768 | { | |
769 | // Draw boundaries of Super Module 3 | |
770 | ||
771 | gStyle->SetLineWidth(1); | |
772 | gStyle->SetLineColor(1); | |
773 | TLine * l; | |
774 | l = new TLine( -9.167, 86.475, 75.1333, 86.475); l->Draw("same"); | |
775 | l = new TLine(75.1333,86.475, 75.1333, 11.925); l->Draw("same"); | |
776 | l = new TLine(75.1333,11.925, -9.167, 11.925); l->Draw("same"); | |
777 | l = new TLine( -9.167, 11.925, -9.167, 86.475); l->Draw("same"); | |
778 | } | |
779 | ||
780 | //______________________________________________________________________________ | |
781 | void AliPMDQATask::DrawPMDBoundarySM4() | |
782 | { | |
783 | // Draw boundaries of Super Module 4 | |
784 | ||
785 | gStyle->SetLineWidth(1); | |
786 | gStyle->SetLineColor(1); | |
787 | TLine * l; | |
788 | l = new TLine(9.167, -86.475, -75.1333,-86.475); l->Draw("same"); | |
789 | l = new TLine(-75.1333,-86.475, -75.1333,-11.925); l->Draw("same"); | |
790 | l = new TLine(-75.1333,-11.925, 9.167, -11.925); l->Draw("same"); | |
791 | l = new TLine(9.167, -11.925, 9.167, -86.475); l->Draw("same"); | |
792 | } |