1 void SPDclusterTest(Int_t evNumber1=0,Int_t evNumber2=0){
3 // macro to monitor the SPD digitization and clusterization done with
4 // the Bari/Salerno model
6 // R. Caliandro 15/05/2001
11 //--pag1: number of hits per SPD detector (1-->250)
12 // number of hits per SPD detector (1-->250)
13 // number of clusters per SPD detector (1-->250)
15 //--pag2: r-phi cluster length layer 1 (red)
16 // z cluster length layer 1 (red)
17 // r-phi cluster length layer 2 (blue)
18 // z cluster length layer 2 (blue)
20 //--pag3: r-phi resolution layer 1 (red)
21 // z resolution layer 1 (red)
22 // r-phi resolution layer 2 (blue)
23 // z resolution layer 2 (blue)
25 //--pag4: Cluster shape analysis for clusters of 1, 2 and 3 digits
26 // zdim versus xdim for clusters of 4 digits
28 // input file name, digitized and clusterized
29 char *filein="galice.root";
30 // output file name, containing histograms
31 char *fileout="SPD_his.root";
32 // flag for debugging: 0=no debugging, 1=debugging
36 // Dynamically link some shared libs
37 if (gClassTable->GetID("AliRun") < 0) {
38 gROOT->LoadMacro("loadlibs.C");
46 // Connect the Root Galice file containing Geometry, Kine and Hits
47 TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filein);
48 if (!file) file = new TFile(filein);
50 // Get AliRun object from file or create it if not on file
52 gAlice = (AliRun*)file->Get("gAlice");
53 if (gAlice) printf("AliRun object found on file\n");
54 if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
58 //=======================================================
59 //--booking of ntuples
61 //--ntuple for each detector
62 TNtuple *ntuple2 = new TNtuple("ntuple2","","ndet:lay:lad:det:nhits:ndig:nclus");
63 //--ntuple for each cluster
64 TNtuple *ntuple = new TNtuple("ntuple","","ndet:iclus:ndigclus:xdim:zdim:xdiff:zdiff:anglex:anglez:pmom:errx:errz");
66 //--booking of histograms
68 TH1F *hist1n1 = new TH1F("hist1n1","xdim",15,0.5,15.5);
69 TH1F *hist2n1 = new TH1F("hist2n1","zdim",10,0.5,10.5);
70 TH1F *hist3n1 = new TH1F("hist3n1","dig/clus",20,0.5,20.5);
71 TH1F *hist4n1 = new TH1F("hist4n1","errx",100,0,0.01);
72 TH1F *hist5n1 = new TH1F("hist5n1","errz",500,0,0.05);
73 TH2F *hist7n1 = new TH2F("hist7n1","xdim:delx",80,0,800.,15,0.5,15.5);
74 TH2F *hist8n1 = new TH2F("hist8n1","zdim:delz",180,0,1800.,10,0.5,10.5);
76 TH1F *hist1n2 = new TH1F("hist1n2","xdim",15,0.5,15.5);
77 TH1F *hist2n2 = new TH1F("hist2n2","zdim",10,0.5,10.5);
78 TH1F *hist3n2 = new TH1F("hist3n2","dig/clus",20,0.5,20.5);
79 TH1F *hist4n2 = new TH1F("hist4n2","errx",100,0,0.01);
80 TH1F *hist5n2 = new TH1F("hist5n2","errz",500,0,0.05);
81 TH2F *hist7n2 = new TH2F("hist7n2","xdim:delx",80,0,800.,15,0.5,15.5);
82 TH2F *hist8n2 = new TH2F("hist8n2","zdim:delz",180,0,1800.,10,0.5,10.5);
84 TH1F *hist1 = new TH1F("hist1","xdiff",200,-100,100);
85 TH1F *hist3 = new TH1F("hist3","xdiff",200,-100,100);
86 TH1F *hist2 = new TH1F("hist2","zdiff",170,-850,850);
87 TH1F *hist4 = new TH1F("hist4","zdiff",170,-850,850);
89 TH1F *hist5 = new TH1F("hist5","pmom",200,0,2000);
91 TH1F *hist6 = new TH1F("hist6","rapidity",60,-3,3);
92 TH1F *hist6b= new TH1F("hist6b","rapidity - charged tracks",60,-3,3);
93 TH1F *hist6b1= new TH1F("hist6b1","rapidity - charged tracks SPD",60,-3,3);
95 TH1F *hist6p = new TH1F("hist6p","eta - charged tracks ",60,-3,3);
96 TH1F *hist6p1 = new TH1F("hist6p1","eta - charged tracks SPD ",60,-3,3);
97 TH1F *hist6p2 = new TH1F("hist6p2","eta - charged tracks SPD 2 ",60,-3,3);
98 //--resolution vs angle
99 TH1F *hist11n1=new TH1F("hist11n1","anglex - layer 1",180,-90,90);
100 TH1F *hist11n2=new TH1F("hist11n2","anglex - layer 2",180,-90,90);
101 TH1F *hist12n1=new TH1F("hist12n1","anglez - layer 1",360,-180,180);
102 TH1F *hist12n2=new TH1F("hist12n2","anglez - layer 2",360,-180,180);
103 TH2F *hist13n1=new TH2F("hist13n1","xidff:anglex",20,-15,15,200,-100,100);
104 TH2F *hist13n2=new TH2F("hist13n2","xidff:anglex",20,-30,-15,200,-100,100);
105 TH2F *hist14n1=new TH2F("hist14n1","zidff:anglez",18,-90,90,170,-850,850);
106 TH2F *hist14n2=new TH2F("hist14n2","zidff:anglez",18,-90,90,170,-850,850);
107 //--histograms for cluster shape analysis
108 TH1F *histsp1=new TH1F("histsp1","Cluster shape (1)",10,0.5,10.5);
109 TH2F *histsp2=new TH2F("histsp2","Cluster shape (2)",5,0.5,5.5,5,0.5,5.5);
110 //=======================================================
113 for (int nev=0; nev<= evNumber2; nev++) {
114 Int_t nparticles = gAlice->GetEvent(nev);
115 cout << "nev " <<nev<<endl;
116 cout << "nparticles " <<nparticles<<endl;
117 if (nev < evNumber1) continue;
118 if (nparticles <= 0) return;
120 TTree *TH = gAlice->TreeH();
121 Int_t ntracks = TH->GetEntries();
122 cout << "ntracks " <<ntracks<<endl;
124 // Get pointers to Alice detectors and Digit containers
125 AliITS *ITS = (AliITS *)gAlice->GetModule("ITS");
126 //to get the segmentation pointer
127 AliITSDetType *iDetType=ITS->DetType(0);
128 AliITSsegmentationSPD *seg=(AliITSsegmentationSPD*)iDetType->GetSegmentationModel();
129 //TClonesArray *Particles = gAlice->Particles();
132 // fill modules with sorted by module hits
134 ITS->InitModules(-1,nmodules);
135 ITS->FillModules(nev,evNumber2,nmodules," "," ");
137 // get pointer to modules array
138 TObjArray *mods = ITS->GetModules();
142 //get the Tree for clusters
144 TTree *TC=ITS->TreeC();
146 Int_t nent=TC->GetEntries();
147 printf("Found %d entries in the tree of clusters)\n",nent);
148 TClonesArray *ITSclusters = ITS->ClustersAddress(0);
149 printf("ITSclusters %p\n",ITSclusters);
151 //get the Tree for digits
152 TTree *TD = gAlice->TreeD();
154 Int_t nentd=TD->GetEntries();
155 printf("Found %d entries in the tree of digits)\n",nentd);
156 TObjArray *fBranches=TD->GetListOfBranches();
157 TBranch *branch = (TBranch*)fBranches->UncheckedAt(0);
158 printf ("branch %p entries %d \n",branch,branch->GetEntries());
159 TClonesArray *ITSdigits = ITS->DigitsAddress(0);
160 printf ("ITSdigits %p \n",ITSdigits);
162 //get the Tree for rec points
163 TTree *TR = gAlice->TreeR();
165 Int_t nentr=TR->GetEntries();
166 printf("Found %d entries in the tree of rec points)\n",nentr);
167 TClonesArray *ITSrec = ITS->RecPoints();
168 printf ("ITSrec %p \n",ITSrec);
169 AliITSRecPoint *recp;
171 // calculus of rapidity distribution for the generated tracks
172 gAlice-> ResetHits();
174 for (Int_t track=0; track<ntracks; track++)
176 particle = (TParticle*)gAlice->Particle(track);
177 Int_t ikparen = particle -> GetFirstMother();
178 Double_t charge = particle -> GetPDG() ->Charge();
179 charge = charge/3.; //charge is multiplied by 3 in PDG
180 Double_t mass = particle -> GetPDG() -> Mass();
181 Double_t eta = particle -> Eta();
182 Int_t pdgcode = particle -> GetPdgCode();
183 char* title = particle -> GetTitle();
186 Double_t part_ene = particle->Energy();
187 Double_t part_pz = particle->Pz();
189 if (part_ene != part_pz)
191 rapid=0.5*TMath::Log((part_ene+part_pz)/(part_ene-part_pz));
196 // filling of the rapidity histogram
197 hist6->Fill( (Float_t) rapid);
199 hist6b->Fill( (Float_t) rapid);
200 hist6p->Fill( (Float_t) eta);
202 // printf("charge= %f, mass = %f , pdg= %d, title = %s\n",
203 // charge,mass,pdgcode,title);
207 AliITSgeom *g = ((AliITS *)ITS)->GetITSgeom();
209 //printf("Starts loop on SPD detectors\n");
212 //loop over the pixel detectors index=0-79 (1-20)*4 layer 1
213 // index=80-239 (1-40)*4 layer 2
214 for (Int_t index=g->GetStartSPD();index<=g->GetLastSPD();index++)
215 // for (Int_t index=g->GetStartSPD();index<1;index++) //debug
218 g->GetModuleId(index,lay,lad,det);
219 //printf("detector %d (lay=%d lad=%d det=%d)\n",index+1,lay,lad,det);
221 AliITSmodule *itsModule = (AliITSmodule*) mods->At(index);
222 Int_t numofhits = itsModule->GetNhits();
223 //printf("number of hits %d\n",numofhits);
224 if(!numofhits) continue;
226 //---------- starts test on digits
229 Int_t ndigits = ITSdigits->GetEntriesFast();
230 //if (ndigits) printf("Found %d digits for module %d \n",ndigits,index+1);
231 if (!ndigits) printf("no digits found \n");
237 for (Int_t digit=0;digit<ndigits;digit++) {
238 ITSdigit = (AliITSdigitSPD*)ITSdigits->UncheckedAt(digit);
239 printf("digit=%d fCoord1=%d FCoord2=%d fSignal=%d fTracks=%d fHits=%d \n",digit,ITSdigit->fCoord1,ITSdigit->fCoord2,ITSdigit->fSignal,ITSdigit->fTracks[0],ITSdigit->fHits[0]);
241 cout<<"END test for digits "<<endl;
245 //---------- starts test on clusters
246 ITS->ResetClusters();
248 Int_t nclust = ITSclusters->GetEntries();
249 //printf("Found %d clusters \n",nclust);
250 if (!nclust) printf("no clusters found \n");
255 for (Int_t clu=0;clu<nclust;clu++)
257 //itsclu = (AliITSRawClusterSPD*) ITSclusters->UncheckedAt(clu);
258 itsclu = (AliITSRawClusterSPD*) ITSclusters->At(clu);
259 printf("cluster %d nZ=%f nX=%f Q=%f Z=%f X=%f\n",clu+1,itsclu->NclZ(),
260 itsclu->NclX(),itsclu->Q(),itsclu->Z(),itsclu->X());
262 cout<<"END test for clusters "<<endl;
267 //---------- starts test on rec points
268 ITS->ResetRecPoints();
270 Int_t nrecpoints = ITSrec->GetEntries();
271 //printf("Found %d recpoints for module %d \n",nrecpoints,index+1);
272 if (!nrecpoints) printf("no recpoints found \n");
276 for (Int_t irec=0;irec<nrecpoints;irec++) {
277 recp = (AliITSRecPoint*)ITSrec->UncheckedAt(irec);
278 printf("%d %f %f %f %f %d %d %d\n",irec+1,recp->GetX(),recp->GetZ(),
279 recp->fSigmaX2,recp->fSigmaZ2,
280 recp->fTracks[0],recp->fTracks[1],recp->fTracks[2]);
284 printf("Detector n.%d (%d hits) (%d digits) (%d clusters)\n",
285 index+1,numofhits,ndigits,nclust);
288 ntuple2->Fill ( (Float_t) index+1,
303 // loop on clusters in each detector
304 for (Int_t i=0; i<nclust; i++)
307 irawclu = (AliITSRawClusterSPD*) ITSclusters->UncheckedAt(i);
308 irecp = (AliITSRecPoint*)ITSrec->UncheckedAt(i);
310 Int_t xdim = irawclu->NclX();
311 Int_t zdim = irawclu->NclZ();
312 Float_t errx = TMath::Sqrt(irecp->fSigmaX2);
313 Float_t errz = TMath::Sqrt(irecp->fSigmaZ2);
314 Float_t xcenter = irawclu->X();
315 Float_t zcenter = irawclu->Z();
316 Float_t ndigclus = irawclu->Q();
317 Int_t itrackclus = irecp->fTracks[0];
319 //Find the hits associated to the main track of the cluster
320 // loop on hits in the detector
321 for (Int_t hit=0; hit<numofhits; hit++)
323 AliITShit *itsHit = (AliITShit*)itsModule->GetHit(hit);
324 Int_t itrackhit = itsHit->GetTrack();
325 //Take the same track index of the main track of the cluster
326 if (itrackhit == itrackclus) {
327 if (itsHit->GetTrackStatus()==66) {
328 Float_t x1l = 10000*itsHit->GetXL(); //in microns
329 Float_t y1l = 10000*itsHit->GetYL();
330 Float_t z1l = 10000*itsHit->GetZL();
331 Float_t p1x = 1000*itsHit->GetPXL(); //in MeV/c
332 Float_t p1y = 1000*itsHit->GetPYL();
333 Float_t p1z = 1000*itsHit->GetPZL();
336 Float_t x2l = 10000*itsHit->GetXL();
337 Float_t y2l = 10000*itsHit->GetYL();
338 Float_t z2l = 10000*itsHit->GetZL();
339 Float_t p2x = 1000*itsHit->GetPXL();
340 Float_t p2y = 1000*itsHit->GetPYL();
341 Float_t p2z = 1000*itsHit->GetPZL();
346 }// end loop on hits on detector
349 Float_t pmom=TMath::Sqrt(p1x*p1x+p1y*p1y+p1z*p1z);
352 Float_t dxhit = TMath::Abs(x2l-x1l);
353 Float_t dzhit = TMath::Abs(z2l-z1l);
355 Float_t xmidhit = (x1l + x2l)/2;
356 Float_t zmidhit = (z1l + z2l)/2;
358 // printf("cluster n.%d: x=%f z=%f\n",i,xcenter,zcenter);
359 // printf("track n.%d: x1=%f x2=%f z1=%f z2=%f\n",itrackclus,
360 // x1l, x2l, z1l, z2l);
362 // analysis of resolution vs angle
373 // anglex is the angle in xy plane (local frame)
374 Float_t anglex = atan2(px,py);
375 // anglez is the angle in zy plane (local frame)
376 Float_t anglez = atan2(pz,py);
377 anglex *= 180.0/TMath::Pi(); // degrees
378 anglez *= 180.0/TMath::Pi(); // degrees
380 if(xmidhit != 0 || zmidhit != 0)
382 Float_t xdiff = (xcenter - xmidhit);
383 Float_t zdiff = (zcenter - zmidhit);
391 // plots of resolution vs angle
392 hist11n1->Fill(anglex);
393 hist12n1->Fill(anglez);
394 hist13n1->Fill(anglex,xdiff);
395 hist14n1->Fill(anglez,zdiff);
403 // plots of resolution vs angle
404 hist11n2->Fill(anglex);
405 hist12n2->Fill(anglez);
406 hist13n2->Fill(anglex,xdiff);
407 hist14n2->Fill(anglez,zdiff);
413 ntuple->Fill ( (Float_t) index,
429 hist1n1->Fill((Float_t) xdim);
430 hist2n1->Fill((Float_t) zdim);
431 hist3n1->Fill(ndigclus);
434 hist7n1->Fill(dxhit,(Float_t) xdim);
435 hist8n1->Fill(dzhit,(Float_t) zdim);
438 hist1n2->Fill((Float_t) xdim);
439 hist2n2->Fill((Float_t) zdim);
440 hist3n2->Fill(ndigclus);
443 hist7n2->Fill(dxhit,(Float_t) xdim);
444 hist8n2->Fill(dzhit,(Float_t) zdim);
447 //histograms for cluster shape analysis
452 } elseif(ndigclus==2){
453 if(zdim==2 && xdim==1) xx=2;
454 if(zdim==1 && xdim==2) xx=3;
455 if(zdim==2 && xdim==2) xx=4;
456 } elseif(ndigclus==3){
457 if(zdim==2 && xdim==2) xx=5;
458 if(zdim==3 && xdim==1) xx=6;
459 if(zdim==1 && xdim==3) xx=7;
460 if(zdim==3 && xdim==3) xx=8;
461 if(zdim==3 && xdim==2) xx=9;
462 if(zdim==2 && xdim==3) xx=10;
464 histsp1->Fill((Float_t) xx);
465 } elseif(ndigclus==4){
466 histsp2->Fill((Float_t) xdim,(Float_t) zdim);
470 }//end loop on clusters
472 } //end loop on the SPD detectors
474 } //end loop on events
477 //================== Plot the results ===================================
480 gStyle->SetFillColor(0);
481 gStyle->SetStatW(0.37);
482 gStyle->SetStatH(0.22);
484 //----------------------------------------------------- page 1
485 gStyle->SetOptLogy(0);
486 gStyle->SetOptStat(1100);
488 TCanvas *c1 = new TCanvas("c1","hits, digits, clusters",200,10,700,780);
492 ntuple2->SetMarkerColor(kRed);
493 ntuple2->SetMarkerStyle(20);
494 ntuple2->SetMarkerSize(0.6);
495 ntuple2->Draw("nhits:ndet","");
497 ntuple2->SetMarkerColor(kBlue);
498 ntuple2->Draw("ndig:ndet","");
500 ntuple2->SetMarkerColor(6);
501 ntuple2->Draw("nclus:ndet","");
503 //----------------------------------------------------- page 2
505 TCanvas *c2 = new TCanvas("c2","Cluster Lengths",200,10,700,780);
507 // Inside this canvas, we create 4 pads
509 pad1 = new TPad("pad1","xdim layer1" ,0.01,0.51,0.49,0.99,10);
510 pad2 = new TPad("pad2","zdim layer1" ,0.51,0.51,0.99,0.99,10);
511 pad3 = new TPad("pad3","xdim layer2" ,0.01,0.01,0.49,0.49,10);
512 pad4 = new TPad("pad4","zdim layer2" ,0.51,0.01,0.99,0.49,10);
518 gStyle->SetStatW(0.40);
519 gStyle->SetStatH(0.20);
520 gStyle->SetStatColor(42);
521 gStyle->SetOptStat(111110);
522 // gStyle->SetOptFit(1);
527 hist1n1->SetLineWidth(2);
528 hist1n1->SetLineColor(kRed);
529 hist1n1->GetXaxis()->SetNdivisions(110);
530 hist1n1->GetYaxis()->SetLabelSize(0.06);
536 hist2n1->SetLineWidth(2);
537 hist2n1->SetLineColor(kRed);
538 hist2n1->GetXaxis()->SetNdivisions(110);
539 hist2n1->GetYaxis()->SetLabelSize(0.06);
545 hist1n2->SetLineWidth(2);
546 hist1n2->SetLineColor(kBlue);
547 hist1n2->GetXaxis()->SetNdivisions(110);
548 hist1n2->GetYaxis()->SetLabelSize(0.06);
554 hist2n2->SetLineColor(kBlue);
555 hist2n2->SetLineWidth(2);
556 hist2n2->GetXaxis()->SetNdivisions(110);
557 hist2n2->GetYaxis()->SetLabelSize(0.06);
560 //----------------------------------------------------- page 3
562 TCanvas *c3 = new TCanvas("c3","Resolutions",200,10,700,780);
564 // Inside this canvas, we create 4 pads
566 pad1 = new TPad("pad1","xdiff layer1" ,0.01,0.51,0.49,0.99,10);
567 pad2 = new TPad("pad2","zdiff layer1" ,0.51,0.51,0.99,0.99,10);
568 pad3 = new TPad("pad3","xdiff layer2" ,0.01,0.01,0.49,0.49,10);
569 pad4 = new TPad("pad4","zdiff layer2" ,0.51,0.01,0.99,0.49,10);
575 gStyle->SetStatW(0.20);
576 gStyle->SetStatH(0.20);
577 gStyle->SetStatColor(42);
578 gStyle->SetOptStat(0);
579 gStyle->SetOptFit(1);
583 hist1->SetLineColor(kRed);
589 hist2->SetLineColor(kRed);
595 hist3->SetLineColor(kBlue);
601 hist4->SetLineColor(kBlue);
605 //----------------------------------------------------- page 4
606 TCanvas *c4 = new TCanvas("c4","Cluster Shape Analysis",200,10,700,780);
608 gStyle->SetOptStat(0);
618 histsp2->Draw("box");
625 //================== Store the histograms ===================================
627 //to write the histograms into a .root file
628 TFile outfile(fileout,"RECREATE");
670 //-----------------------------------------------------------------
676 //macro to display the legend of the cluster shape analysis plot
679 TPad *pad1 = new TPad("pad1", "This is pad2",0,0,1,1);
682 pad1->Range(0,0.25,1,1);
683 pad1->SetFillColor(0);
684 pad1->SetBorderSize(1);
686 //------------------------------------------
687 Float_t yfirst= 0.95;
690 Float_t ynum = 0.005;
691 //------------------------------------------
694 TLatex *tex = new TLatex(0.12,yfirst,"1");
695 tex->SetTextSize(0.07);
696 tex->SetLineWidth(2);
698 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
699 pave->SetFillColor(18);
700 pave->SetLineWidth(2);
705 TLatex *tex = new TLatex(0.12,yfirst,"2");
706 tex->SetTextSize(0.07);
707 tex->SetLineWidth(2);
709 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
710 pave->SetFillColor(18);
711 pave->SetLineWidth(2);
713 TPave *pave = new TPave(0.5,yfirst,0.7,yfirst+ysiz,1,"br");
714 pave->SetFillColor(18);
715 pave->SetLineWidth(2);
720 TLatex *tex = new TLatex(0.12,yfirst-ynum,"3");
721 tex->SetTextSize(0.07);
722 tex->SetLineWidth(2);
724 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
725 pave->SetFillColor(18);
726 pave->SetLineWidth(2);
728 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst-ysiz,1,"br");
729 pave->SetFillColor(18);
730 pave->SetLineWidth(2);
734 yfirst=yfirst-1.8*ysh;
735 TLatex *tex = new TLatex(0.12,yfirst+3*ynum,"4");
736 tex->SetTextSize(0.07);
737 tex->SetLineWidth(2);
739 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
740 pave->SetFillColor(18);
741 pave->SetLineWidth(2);
743 TPave *pave = new TPave(0.5,yfirst+ysiz,0.7,yfirst+2*ysiz,1,"br");
744 pave->SetFillColor(18);
745 pave->SetLineWidth(2);
749 yfirst=yfirst-1.5*ysh;
750 TLatex *tex = new TLatex(0.12,yfirst+3*ynum,"5");
751 tex->SetTextSize(0.07);
752 tex->SetLineWidth(2);
754 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
755 pave->SetFillColor(18);
756 pave->SetLineWidth(2);
758 TPave *pave = new TPave(0.5,yfirst,0.7,yfirst+ysiz,1,"br");
759 pave->SetFillColor(18);
760 pave->SetLineWidth(2);
762 TPave *pave = new TPave(0.5,yfirst+ysiz,0.7,yfirst+2*ysiz,1,"br");
763 pave->SetFillColor(18);
764 pave->SetLineWidth(2);
768 yfirst=yfirst-1.5*ysh;
769 TLatex *tex = new TLatex(0.12,yfirst+ynum,"6");
770 tex->SetTextSize(0.07);
771 tex->SetLineWidth(2);
773 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
774 pave->SetFillColor(18);
775 pave->SetLineWidth(2);
777 TPave *pave = new TPave(0.5,yfirst,0.7,yfirst+ysiz,1,"br");
778 pave->SetFillColor(18);
779 pave->SetLineWidth(2);
781 TPave *pave = new TPave(0.7,yfirst,0.9,yfirst+ysiz,1,"br");
782 pave->SetFillColor(18);
783 pave->SetLineWidth(2);
788 TLatex *tex = new TLatex(0.12,yfirst+ysiz+ynum,"7");
789 tex->SetTextSize(0.07);
790 tex->SetLineWidth(2);
792 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
793 pave->SetFillColor(18);
794 pave->SetLineWidth(2);
796 TPave *pave = new TPave(0.3,yfirst+ysiz,0.5,yfirst+2*ysiz,1,"br");
797 pave->SetFillColor(18);
798 pave->SetLineWidth(2);
800 TPave *pave = new TPave(0.3,yfirst+2*ysiz,0.5,yfirst+3*ysiz,1,"br");
801 pave->SetFillColor(18);
802 pave->SetLineWidth(2);
806 yfirst=yfirst-1.5*ysh;
807 TLatex *tex = new TLatex(0.12,yfirst+ynum,"8");
808 tex->SetTextSize(0.07);
809 tex->SetLineWidth(2);
811 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
812 pave->SetFillColor(18);
813 pave->SetLineWidth(2);
815 TPave *pave = new TPave(0.5,yfirst+ysiz,0.7,yfirst+2*ysiz,1,"br");
816 pave->SetFillColor(18);
817 pave->SetLineWidth(2);
819 TPave *pave = new TPave(0.7,yfirst+2*ysiz,0.9,yfirst+3*ysiz,1,"br");
820 pave->SetFillColor(18);
821 pave->SetLineWidth(2);
825 yfirst=yfirst-1.5*ysh;
826 TLatex *tex = new TLatex(0.12,yfirst+ynum,"9");
827 tex->SetTextSize(0.07);
828 tex->SetLineWidth(2);
830 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
831 pave->SetFillColor(18);
832 pave->SetLineWidth(2);
834 TPave *pave = new TPave(0.5,yfirst,0.7,yfirst+ysiz,1,"br");
835 pave->SetFillColor(18);
836 pave->SetLineWidth(2);
838 TPave *pave = new TPave(0.7,yfirst+ysiz,0.9,yfirst+2*ysiz,1,"br");
839 pave->SetFillColor(18);
840 pave->SetLineWidth(2);
844 yfirst=yfirst-1.5*ysh;
845 TLatex *tex = new TLatex(0.12,yfirst-ynum,"10");
846 tex->SetTextSize(0.07);
847 tex->SetLineWidth(2);
849 TPave *pave = new TPave(0.3,yfirst-ysiz,0.5,yfirst,1,"br");
850 pave->SetFillColor(18);
851 pave->SetLineWidth(2);
853 TPave *pave = new TPave(0.3,yfirst,0.5,yfirst+ysiz,1,"br");
854 pave->SetFillColor(18);
855 pave->SetLineWidth(2);
857 TPave *pave = new TPave(0.5,yfirst+ysiz,0.7,yfirst+2*ysiz,1,"br");
858 pave->SetFillColor(18);
859 pave->SetLineWidth(2);