1 //********************************************************************
2 // Macro that checks PMD data Quality
3 // using the ESD classes
4 // Modified by P.V.K.S.BABA (J.U.)/Ajay(IOP) for doing Quality check.
5 //********************************************************************
7 #if !defined( __CINT__) || defined(__MAKECINT__)
14 #include "TStopwatch.h"
19 { 75.133, 54.204, 53.254, 32.326, 31.376,10.447,
20 75.133, 54.204, 53.254, 32.326, 31.376,10.447,
21 75.133, 54.204, 53.254, 32.326, 31.376,10.447,
22 75.133, 54.204, 53.254, 32.326, 31.376,10.447,
23 -75.133, -54.204, -53.254, -32.326, -31.376,-10.447,
24 -75.133, -54.204, -53.254, -32.326, -31.376,-10.447,
25 -75.133, -54.204, -53.254, -32.326, -31.376,-10.447,
26 -75.133, -54.204, -53.254, -32.326, -31.376,-10.447,
27 9.167, -32.543, -33.493, -75.133,
28 9.167, -32.543, -33.493, -75.133,
29 9.167, -32.543, -33.493, -75.133,
30 9.167, -32.543, -33.493, -75.133,
31 9.167, -32.543, -33.493, -75.133,
32 9.167, -32.543, -33.493, -75.133,
33 -9.167, 32.543, 33.493, 75.133,
34 -9.167, 32.543, 33.493, 75.133,
35 -9.167, 32.543, 33.493, 75.133,
36 -9.167, 32.543, 33.493, 75.133,
37 -9.167, 32.543, 33.493, 75.133,
38 -9.167, 32.543, 33.493, 75.133,};
41 {86.475, 86.475, 86.475, 86.475, 86.475, 86.475,
42 38.225, 38.225, 38.225, 38.225, 38.225, 38.225,
43 37.325, 37.325, 37.325, 37.325, 37.325, 37.325,
44 -10.925, -10.925, -10.925, -10.925, -10.925, -10.925,
45 -86.475, -86.475, -86.475, -86.475, -86.475, -86.475,
46 -38.225, -38.225, -38.225, -38.225, -38.225, -38.225,
47 -37.325, -37.325, -37.325, -37.325, -37.325, -37.325
48 10.925, 10.925, 10.925, 10.925, 10.925, 10.925,
50 86.475, 86.475, 86.475, 86.475,
51 62.225, 62.225, 62.225, 62.225,
52 61.325, 61.325, 61.325, 61.325,
53 37.075, 37.075, 37.075, 37.075
54 36.175, 36.175, 36.175, 36.175,
55 11.925, 11.925, 11.925 , 11.925,
56 -86.475, -86.475, -86.475, -86.475,
57 -62.225, -62.225, -62.225, -62.225,
58 -61.325, -61.325, -61.325, -61.325,
59 -37.075, -37.075, -37.075, -37.075
60 -36.175, -36.175, -36.175, -36.175,
61 -11.925, -11.925, -11.925 , -11.925 };
64 extern TStyle *gStyle;
66 // Default is that it will take 1000 Events sample. Want to process less give (Number) .
67 Int_t AliPMDQualitycheck(Int_t nevt=1000) {
68 AliCDBManager::Instance()->SetRun(0);
72 // printf("Whether You want plotof All SMN , Give y or n ? \n " ) ;
73 // scanf("%1s" , &PRINTSMN );
75 TH2F *hP1 = new TH2F("hP1","XY of Clusters",100,-100.,100.,100,-100.,100.);
76 TH1F *hC2 = new TH1F("hC2","CPV PHI",200,-1,9);
77 TH1F *hP2 = new TH1F("hP2","PRE PHI",200,-1,9);
78 TH1F *hC3 = new TH1F("hC3","CPV Clus",30,0.,500.);
79 TH1F *hP3 = new TH1F("hP3","PRE N-gammalike",20,0.,500.);
80 TH1F *hP4 = new TH1F("hP4","PRE EDEP",30,0.,1000.);
81 TH1F *hC5 = new TH1F("hC5","CPV n-cell",20,0.,100.);
82 TH1F *hP5 = new TH1F("hP5","PMD n-cell",20,0.,100.);
83 TH2F *hCP0 = new TH2F("hCP0","PRE CLUS Quad.1 vs 2",150,0.,300.,150,0.,300.);
84 TH2F *hCP1 = new TH2F("hCP1","PRE CLUS Quad.3 vs 4",150,0.,300.,150,0.,300.);
85 TH2F *hCP2 = new TH2F("hCP2","PRE EDEP Quad.3 vs 4",50,0.,300.,50,0.,300.);
86 TH2F *hCP3 = new TH2F("hCP3","PRE EDEP vs Tot Clus ",10,0.,1000.,10,0.,300.);
87 TH2F *hCP4 = new TH2F("hCP4","PRE Clus vs CPV Clus ",150,0.,200.,150,0.,200.);
89 TH2F *hSM1 = new TH2F("hSM1","PRE Cluster XY",200,-100,100,200,-100,100);
90 TH2F *hSM2 = new TH2F("hSM2","",999,-100.0,100.0,999,-100.0,100.0);
91 TH2F *hSM3 = new TH2F("hSM3","",999,-100.0,100.0,999,-100.0,100.0);
92 TH2F *hSM4 = new TH2F("hSM4","",999,-100.0,100.0,999,-100.0,100.0);
93 TH2F *hSM5 = new TH2F("hSM5","",999,-100.0,100.0,999,-100.0,100.0);
94 TH2F *hSM6 = new TH2F("hSM6","",999,-100.0,100.0,999,-100.0,100.0);
95 TH2F *hSM7 = new TH2F("hSM7","",999,-100.0,100.0,999,-100.0,100.0);
96 TH2F *hSM8 = new TH2F("hSM8","",999,-100.0,100.0,999,-100.0,100.0);
97 TH2F *hSM9 = new TH2F("hSM9","",999,-100.0,100.0,999,-100.0,100.0);
98 TH2F *hSM10 = new TH2F("hSM10","",999,-100.0,100.0,999,-100.0,100.0);
99 TH2F *hSM11 = new TH2F("hSM11","",999,-100.0,100.0,999,-100.0,100.0);
100 TH2F *hSM12 = new TH2F("hSM12","",999,-100.0,100.0,999,-100.0,100.0);
101 TH2F *hSM13 = new TH2F("hSM13","",999,-100.0,100.0,999,-100.0,100.0);
102 TH2F *hSM14 = new TH2F("hSM14","",999,-100.0,100.0,999,-100.0,100.0);
103 TH2F *hSM15 = new TH2F("hSM15","",999,-100.0,100.0,999,-100.0,100.0);
104 TH2F *hSM16 = new TH2F("hSM16","",999,-100.0,100.0,999,-100.0,100.0);
105 TH2F *hSM17 = new TH2F("hSM17","",999,-100.0,100.0,999,-100.0,100.0);
106 TH2F *hSM18 = new TH2F("hSM18","",999,-100.0,100.0,999,-100.0,100.0);
107 TH2F *hSM19 = new TH2F("hSM19","",999,-100.0,100.0,999,-100.0,100.0);
108 TH2F *hSM20 = new TH2F("hSM20","",999,-100.0,100.0,999,-100.0,100.0);
109 TH2F *hSM21 = new TH2F("hSM21","",999,-100.0,100.0,999,-100.0,100.0);
110 TH2F *hSM22 = new TH2F("hSM22","",999,-100.0,100.0,999,-100.0,100.0);
111 TH2F *hSM23 = new TH2F("hSM23","",999,-100.0,100.0,999,-100.0,100.0);
112 TH2F *hSM24 = new TH2F("hSM24","",999,-100.0,100.0,999,-100.0,100.0);
113 TH1F *hSM = new TH1F("hSM","Plot of all 24 Super Modules",24,0,24);
117 AliPMDUtility *cc = new AliPMDUtility();
119 TFile *ef=TFile::Open("AliESDtree.root");
120 if (!ef || !ef->IsOpen()) {cerr<<"Cant open AliESDtree.root !\n"; return 1;}
121 AliESD* event = new AliESD;
122 TTree* tree = (TTree*) ef->Get("esdTree");
123 if (!tree) {cerr<<"no ESD tree found\n"; return 1;};
124 tree->SetBranchAddress("ESD", &event);
132 Float_t PREcluQUAD[4] ;
133 Float_t CPVcluQUAD[4] ;
134 Float_t PREadcQUAD[4] ;
135 Float_t CPVADCQUAD[4] ;
136 Float_t PREcelQUAD[4] ;
137 Float_t CPVcelQUAD[4] ;
140 //******* The loop over events
141 while (tree->GetEvent(n)) {
142 cout<<endl<<"Processing event number : "<<n++<<endl;
147 Int_t npmdcl=event->GetNumberOfPmdTracks();
148 //cout<<"Number of PMD tracks : "<<npmdcl<<endl;
150 //****** The loop over PMD clusters
152 for (Int_t kk=0; kk<4;kk++) {
153 CPVcluQUAD[kk] = 0.0 ;
154 PREcluQUAD[kk] = 0.0 ;
155 CPVcelQUAD[kk] = 0.0 ;
156 PREcelQUAD[kk] = 0.0 ;
157 PREadcQUAD[kk] = 0.0 ;
160 AliESDPmdTrack *pmdtr = event->GetPmdTrack(npmdcl);
162 Int_t det = pmdtr->GetDetector();
163 Float_t clsX = pmdtr->GetClusterX();
164 Float_t clsY = pmdtr->GetClusterY();
165 Float_t clsZ = pmdtr->GetClusterZ();
166 Float_t ncell = pmdtr->GetClusterCells();
167 Float_t adc = pmdtr->GetClusterADC();
168 Float_t pid = pmdtr->GetClusterPID();
170 // cout << " " << det << " " << ncell << " " << adc << " " << pid << endl ;
171 cc->SetXYZ(clsX,clsY,clsZ);
172 //cc->SetPxPyPz(clsX,clsY,clsZ);
175 Float_t eta = cc->GetEta();
176 Float_t phi = cc->GetPhi();
178 // Calculating S.Module Number from Cluster .
179 CalculateSMN(clsX, clsY,SMN);
182 if(SMN >= 0 && SMN <= 5) {
184 CPVADCQUAD[0] =+ adc ;
185 CPVcelQUAD[0] =+ ncell ;
187 if(SMN >= 6 && SMN <=11) {
189 CPVADCQUAD[1] =+ adc ;
190 CPVcelQUAD[1] =+ ncell ;
192 if(SMN >=12 && SMN <=17) {
194 CPVADCQUAD[2] =+ adc ;
195 CPVcelQUAD[2] =+ ncell ;
197 if(SMN >=18 && SMN <=23) {
199 CPVADCQUAD[3] =+ adc ;
200 CPVcelQUAD[3] =+ ncell ;
203 if(eta >= 2.3 && eta <= 3.5)
210 if(SMN >= 0 && SMN <= 5) {
212 PREadcQUAD[0] =+ adc ;
213 PREcelQUAD[0] =+ ncell ;
215 if(SMN >= 6 && SMN <=11) {
217 PREadcQUAD[1] =+ adc ;
218 PREcelQUAD[1] =+ ncell ;
220 if(SMN >=12 && SMN <=17) {
222 PREadcQUAD[2] =+ adc ;
223 PREcelQUAD[2] =+ ncell ;
225 if(SMN >=18 && SMN <=23) {
227 PREadcQUAD[3] =+ adc ;
228 PREcelQUAD[3] =+ ncell ;
232 if(SMN == 0)hSM1->Fill(-clsX,clsY);
233 if(SMN == 0)hSM1->Fill(-clsX,clsY);
234 if(SMN == 1)hSM2->Fill(-clsX,clsY);
235 if(SMN == 2)hSM3->Fill(-clsX,clsY);
236 if(SMN == 3)hSM4->Fill(-clsX,clsY);
237 if(SMN == 4)hSM5->Fill(-clsX,clsY);
238 if(SMN == 5)hSM6->Fill(-clsX,clsY);
239 if(SMN == 6)hSM7->Fill(-clsX,clsY);
240 if(SMN == 7)hSM8->Fill(-clsX,clsY);
241 if(SMN == 8)hSM9->Fill(-clsX,clsY);
242 if(SMN == 9)hSM10->Fill(-clsX,clsY);
243 if(SMN ==10)hSM11->Fill(-clsX,clsY);
244 if(SMN ==11)hSM12->Fill(-clsX,clsY);
245 if(SMN ==12)hSM13->Fill(-clsX,clsY);
246 if(SMN ==13)hSM14->Fill(-clsX,clsY);
247 if(SMN ==14)hSM15->Fill(-clsX,clsY);
248 if(SMN ==15)hSM16->Fill(-clsX,clsY);
249 if(SMN ==16)hSM17->Fill(-clsX,clsY);
250 if(SMN ==17)hSM18->Fill(-clsX,clsY);
251 if(SMN ==18)hSM19->Fill(-clsX,clsY);
252 if(SMN ==19)hSM20->Fill(-clsX,clsY);
253 if(SMN ==20)hSM21->Fill(-clsX,clsY);
254 if(SMN ==21)hSM22->Fill(-clsX,clsY);
255 if(SMN ==22)hSM23->Fill(-clsX,clsY);
256 if(SMN ==23)hSM24->Fill(-clsX,clsY);
258 if(eta >= 2.3 && eta <= 3.5)
262 hP1->Fill(clsX,clsY);
265 for (Int_t k=0; k<4;k++) {
266 TotCPVClus =+ CPVcluQUAD [k] ;
267 TotPREClus =+ PREcluQUAD [k] ;
268 TotCPVCell =+ CPVcelQUAD [k] ;
269 TotPRECell =+ PREcelQUAD [k] ;
270 TotPREEdep =+ PREadcQUAD [k] ;
272 Float_t TotCPVPREClus = TotPREClus + TotCPVClus ;
273 Float_t TotCPVPRECell = TotPRECell + TotCPVCell ;
274 if(eta >= 2.3 && eta <= 3.5)
276 hC3->Fill(TotCPVClus);
277 hP3->Fill(TotPREClus);
278 hP4->Fill(TotPREEdep);
279 hP5->Fill(TotPRECell);
280 hCP0->Fill(PREcluQUAD[0],PREcluQUAD[1]);
281 hCP1->Fill(PREcluQUAD[2],PREcluQUAD[3]);
282 hCP2->Fill(PREadcQUAD[2],PREadcQUAD[3]);
283 hCP3->Fill(TotPREEdep,TotCPVPREClus);
284 hCP4->Fill(TotPREClus,TotCPVClus);
294 gStyle->SetOptStat(110000);
295 gStyle->SetOptFit(1);
297 // if ( PRINTSMN == 'y' ) {
298 TCanvas *cP1 = new TCanvas("cP1","Cluster XY", 10,10, 600, 600);
299 cP1->Range(-100, -100,100 ,100 );
300 hSM1->SetMarkerColor(2);
302 hSM1->GetXaxis()->SetTitle("Cluster X");
303 hSM1->GetYaxis()->SetTitle("Cluster Y");
304 hSM2->SetMarkerColor(2);
306 hSM3->SetMarkerColor(2);
308 hSM4->SetMarkerColor(2);
310 hSM5->SetMarkerColor(2);
312 hSM6->SetMarkerColor(2);
314 hSM7->SetMarkerColor(4);
316 hSM8->SetMarkerColor(4);
318 hSM9->SetMarkerColor(4);
320 hSM10->SetMarkerColor(4);
322 hSM11->SetMarkerColor(4);
324 hSM12->SetMarkerColor(4);
326 hSM13->SetMarkerColor(6);
328 hSM14->SetMarkerColor(6);
330 hSM15->SetMarkerColor(6);
332 hSM16->SetMarkerColor(6);
334 hSM17->SetMarkerColor(6);
336 hSM18->SetMarkerColor(6);
338 hSM19->SetMarkerColor(8);
340 hSM20->SetMarkerColor(8);
342 hSM21->SetMarkerColor(8);
344 hSM22->SetMarkerColor(8);
346 hSM23->SetMarkerColor(8);
348 hSM24->SetMarkerColor(8);
351 Int_t linsav = gStyle->GetLineWidth();
353 DrawPMDBoundarySM1();
354 DrawPMDBoundarySM2();
355 DrawPMDBoundarySM3();
356 DrawPMDBoundarySM4();
357 cP1->Print("ClusterXY.gif");
360 TCanvas *cP2 = new TCanvas("PHI CPV / PMD","",10,10, 600,600);
363 cP2->SetFillColor(0);
364 hC2->SetLineColor(4);
367 hP2->SetLineColor(2);
369 cP2->Print("CPVPREphi.gif");
373 TCanvas *cP2 = new TCanvas("cP2","",10,10,600,600);
375 hSM->SetFillColor(2);
377 cP2->Print("AllSMN.gif");
381 TCanvas *cP3 = new TCanvas("CPV Clus PRE Clus Correlations", " ",10,10, 600,600);
384 hCP0->SetMarkerColor(9);
387 hCP1->SetMarkerColor(6);
390 hP3->SetLineColor(2);
393 hCP4->SetMarkerColor(3);
395 cP3->Print("CPVPREClus.gif");
397 TCanvas *cP6 = new TCanvas("CPV Clus PRE Adc"," ",10,10, 600,600);
400 hC3->SetLineColor(4);
403 hP4->SetLineColor(2);
405 cP6->Print("CPVPREAdc.gif");
412 void CalculateSMN( Float_t clsX, Float_t clsY, Int_t & smn)
416 //---------------------------------------------------------------------
417 if((clsX <= Xcon[0]) && (clsX >= Xcon[1]) &&
418 (clsY <= Ycon[0]) && (clsY >= Ycon[6])) smn = 0 ;
420 else if((clsX <=Xcon[2]) && (clsX >= Xcon[3]) &&
421 (clsY <= Ycon[1]) && (clsY >= Ycon[7]))smn = 1 ;
423 else if((clsX <=Xcon[4]) && (clsX >= Xcon[5]) &&
424 (clsY <= Ycon[3]) && (clsY >= Ycon[8]))smn = 2 ;
426 else if((clsX <= Xcon[0]) && (clsX >= Xcon[1]) &&
427 (clsY <= Ycon[12]) && (clsY >= Ycon[18])) smn = 3 ;
429 else if((clsX <=Xcon[2]) && (clsX >= Xcon[3]) &&
430 (clsY <= Ycon[12]) && (clsY >= Ycon[18]))smn = 4 ;
432 else if((clsX <=Xcon[4]) && (clsX >= Xcon[5]) &&
433 (clsY <= Ycon[12]) && (clsY >= Ycon[18]))smn = 5 ;
434 //------------------------------------------------------------------
435 else if((clsX >= Xcon[24]) && (clsX <= Xcon[25]) &&
436 (clsY >= Ycon[24]) && (clsY <= Ycon[30])) smn = 6 ;
438 else if((clsX >=Xcon[26]) && (clsX <= Xcon[27]) &&
439 (clsY >= Ycon[25]) && (clsY <= Ycon[31]))smn = 7 ;
441 else if((clsX >=Xcon[28]) && (clsX <= Xcon[29]) &&
442 (clsY >= Ycon[26]) && (clsY <= Ycon[32]))smn = 8 ;
444 else if((clsX >= Xcon[24]) && (clsX <= Xcon[25]) &&
445 (clsY >= Ycon[36]) && (clsY <= Ycon[42])) smn = 9 ;
447 else if((clsX >=Xcon[26]) && (clsX <= Xcon[27]) &&
448 (clsY >= Ycon[36]) && (clsY <= Ycon[42]))smn = 10;
450 else if((clsX >=Xcon[28]) && (clsX <= Xcon[29]) &&
451 (clsY >= Ycon[36]) && (clsY <= Ycon[42]))smn = 11;
452 //------------------------------------------------------------------
453 else if((clsX <= Xcon[48]) && (clsX >= Xcon[49]) &&
454 (clsY <= Ycon[48]) && (clsY >= Ycon[52])) smn = 12 ;
456 else if((clsX <=Xcon[50]) && (clsX >= Xcon[51]) &&
457 (clsY <= Ycon[48]) && (clsY >= Ycon[52]))smn = 13 ;
459 else if((clsX <=Xcon[48]) && (clsX >= Xcon[49]) &&
460 (clsY <= Ycon[56]) && (clsY >= Ycon[60]))smn = 14 ;
462 else if((clsX <=Xcon[50]) && (clsX >= Xcon[51]) &&
463 (clsY <= Ycon[56]) && (clsY >= Ycon[60]))smn = 15 ;
465 else if((clsX <=Xcon[48]) && (clsX >= Xcon[49]) &&
466 (clsY <= Ycon[64]) && (clsY >= Ycon[68]))smn = 16 ;
468 else if((clsX <=Xcon[50]) && (clsX >= Xcon[51]) &&
469 (clsY <= Ycon[64]) && (clsY >= Ycon[68]))smn = 17 ;
470 //--------------------------------------------------------------
471 else if((clsX >= Xcon[72]) && (clsX <= Xcon[73]) &&
472 (clsY >= Ycon[72]) && (clsY <= Ycon[76])) smn = 18 ;
474 else if((clsX >=Xcon[74]) && (clsX <= Xcon[75]) &&
475 (clsY >= Ycon[72]) && (clsY <= Ycon[76]))smn = 19 ;
477 else if((clsX >=Xcon[72]) && (clsX <= Xcon[73]) &&
478 (clsY >= Ycon[80]) && (clsY <= Ycon[84]))smn = 20 ;
480 else if((clsX >=Xcon[74]) && (clsX <= Xcon[75]) &&
481 (clsY >= Ycon[80]) && (clsY <= Ycon[84]))smn = 21;
483 else if((clsX >= Xcon[72]) && (clsX <= Xcon[73]) &&
484 (clsY >= Ycon[88]) && (clsY <= Ycon[92])) smn = 22 ;
486 else if((clsX >=Xcon[74]) && (clsX <= Xcon[75]) &&
487 (clsY >= Ycon[88]) && (clsY <= Ycon[92]))smn = 23 ;
492 void DrawPMDBoundary()
494 TH2F *h = new TH2F("h","",200,-100,100,200,-100,100);
495 gStyle->SetLineWidth(2);
496 gStyle->SetLineColor(2);
498 l = new TLine(75.1333, 86.475, -75.1333, 86.475); l->Draw("same");
499 l = new TLine(-75.1333, 86.470,-75.1333, -86.475); l->Draw("same");
500 l = new TLine(-75.1333, -86.475,75.1333, -86.475); l->Draw("same");
501 l = new TLine(75.1333, -86.475,75.1333, 86.475); l->Draw("same");
503 void DrawPMDBoundarySM1()
505 TH2F *hsm1 = new TH2F("hsm1","",200,-100,100,200,-100,100);
506 gStyle->SetLineWidth(1);
507 gStyle->SetLineColor(4);
509 l = new TLine(-75.1333, 86.475, -10.447, 86.475); l->Draw("same");
510 l = new TLine(-10.447, 86.475, -10.446, -10.925); l->Draw("same");
511 l = new TLine(-10.446, -10.925, -75.1333,-10.925); l->Draw("same");
512 l = new TLine(-75.1333,-10.925, -75.1333, 86.475); l->Draw("same");
514 void DrawPMDBoundarySM2()
516 TH2F *hsm2 = new TH2F("hsm2","",200,-100,100,200,-100,100);
517 gStyle->SetLineWidth(1);
518 gStyle->SetLineColor(4);
520 l = new TLine(75.1333, -86.475, 10.446, -86.475); l->Draw("same");
521 l = new TLine(10.446, -86.475, 10.446, 10.925); l->Draw("same");
522 l = new TLine(10.446, 10.925, 75.1333, 10.925); l->Draw("same");
523 l = new TLine(75.1333, 10.925, 75.1333, -86.475); l->Draw("same");
526 void DrawPMDBoundarySM3()
528 TH2F *hsm3 = new TH2F("hsm3","",200,-100,100,200,-100,100);
529 gStyle->SetLineWidth(1);
530 gStyle->SetLineColor(1);
532 l = new TLine( -9.167, 86.475, 75.1333, 86.475); l->Draw("same");
533 l = new TLine(75.1333,86.475, 75.1333, 11.925); l->Draw("same");
534 l = new TLine(75.1333,11.925, -9.167, 11.925); l->Draw("same");
535 l = new TLine( -9.167, 11.925, -9.167, 86.475); l->Draw("same");
537 void DrawPMDBoundarySM4()
539 TH2F *hsm4 = new TH2F("hsm4","",200,-100,100,200,-100,100);
540 gStyle->SetLineWidth(1);
541 gStyle->SetLineColor(1);
543 l = new TLine(9.167, -86.475, -75.1333,-86.475); l->Draw("same");
544 l = new TLine(-75.1333,-86.475, -75.1333,-11.925); l->Draw("same");
545 l = new TLine(-75.1333,-11.925, 9.167, -11.925); l->Draw("same");
546 l = new TLine(9.167, -11.925, 9.167, -86.475); l->Draw("same");