char * to TString
[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 **************************************************************************/
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//______________________________________________________________________________
41AliPMDQATask::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//______________________________________________________________________________
92AliPMDQATask::~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 140void 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//________________________________________________________________________
164void 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//______________________________________________________________________________
257void 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//______________________________________________________________________________
435void 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//______________________________________________________________________________
605void 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//______________________________________________________________________________
724void 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//______________________________________________________________________________
738void 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//______________________________________________________________________________
752void 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//______________________________________________________________________________
767void 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//______________________________________________________________________________
781void 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}