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