1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 Revision 1.6 1999/11/09 07:38:51 fca
19 Changes for compatibility with version 2.23 of ROOT
21 Revision 1.5 1999/09/29 09:24:29 fca
22 Introduction of the Copyright and cvs Log
27 //////////////////////////////////////////////////////////////////////////
31 // Utility class to display ALICE outline, tracks, hits,.. //
33 //////////////////////////////////////////////////////////////////////////
42 #include <TPolyMarker3D.h>
43 #include <TPolyMarker.h>
44 #include <TPaveLabel.h>
45 #include <TPaveText.h>
52 #include <TSliderBox.h>
54 #include <TVirtualX.h>
56 #include <X3DBuffer.h>
59 #include "AliDetector.h"
61 #include "AliRICHConst.h"
62 #include "AliRICHdisplay.h"
63 #include "AliRICHpoints.h"
64 #include "TParticle.h"
67 ClassImp(AliRICHdisplay)
70 //____________________________________________________________________________
71 AliRICHdisplay::AliRICHdisplay()
79 //_____________________________________________________________________________
80 AliRICHdisplay::AliRICHdisplay(Int_t size)
82 // Create an event display object.
83 // A canvas named "edisplay" is created with a vertical size in pixels
85 // A QUICK Overview of the Event Display functions
86 // ===============================================
88 // The event display can ve invoked by executing the macro "display.C"
89 // A canvas like in the picture below will appear.
91 // On the left side of the canvas, the following buttons appear:
92 // *Next* to move to the next event
93 // *Previous* to move to the previous event
95 // *Pick* Select this option to be able to point on a track with the
96 // mouse. Once on the track, use the right button to select
97 // an action. For example, select SetMarkerAttributes to
98 // change the marker type/color/size for the track.
99 // *Zoom* Select this option (default) if you want to zoom.
100 // To zoom, simply select the selected area with the left button.
101 // *UnZoom* To revert to the previous picture size.
103 // slider R On the left side, the vertical slider can be used to
104 // set the default picture size.
106 // When you are in Zoom mode, you can click on the black part of the canvas
107 // to select special options with the right mouse button.
110 // When you are in pick mode, you can "Inspect" the object pointed by the mouse.
111 // When you are on a track, select the menu item "InspectParticle"
112 // to display the current particle attributes.
114 // You can activate the Root browser by selecting the Inspect menu
115 // in the canvas tool bar menu. Then select "Start Browser"
116 // This will open a new canvas with the browser. At this point, you may want
117 // to display some histograms (from the Trees). Go to the "File" menu
118 // of the browser and click on "New canvas".
119 // In the browser, click on item "ROOT files" in the left pane.
120 // Click on galice.root.
122 // Click on TPC for example
123 // Click on any variable (eg TPC.fX) to histogram the variable.
125 // If you are lost, you can click on HELP in any Root canvas or browser.
128 <img src="gif/aliRICHdisplay.gif">
135 gAlice->SetDisplay(this);
137 // Initialize display default parameters
140 // Set front view by default
147 fDrawClusters = kTRUE;
156 // Create display canvas
158 if (ysize < 100) ysize = 750;
159 Int_t xsize = Int_t(size*830./ysize);
160 fCanvas = new TCanvas("Canvas", "RICH Clusters Display",14,47,xsize,ysize);
161 fCanvas->ToggleEventStatus();
163 // Create main display pad
164 fPad = new TPad("viewpad", "RICH display",0.15,0,0.9,1);
167 fPad->SetFillColor(1);
168 fPad->SetBorderSize(2);
173 fColPad = new TPad("colpad", "Colors pad",0.9,0,1,1);
176 fColPad->SetFillColor(19);
177 fColPad->SetBorderSize(2);
183 // Create user interface control pad
187 // Create Range and mode pad
190 fTrigPad = new TPad("trigger", "range and mode pad",0,0,dxtr,dytr);
191 fTrigPad->SetEditable(kFALSE);
194 fTrigPad->SetFillColor(22);
195 fTrigPad->SetBorderSize(2);
196 fRangeSlider = new TSlider("range","range",0.7,0.42,0.9,0.98);
197 fRangeSlider->SetObject(this);
198 char pickmode[] = "gAlice->Display()->SetPickMode()";
200 fPickButton = new TButton("Pick",pickmode,0.05,0.32,0.65,0.32+db);
201 fPickButton->SetFillColor(38);
203 char zoommode[] = "gAlice->Display()->SetZoomMode()";
204 fZoomButton = new TButton("Zoom",zoommode,0.05,0.21,0.65,0.21+db);
205 fZoomButton->SetFillColor(38);
207 fArcButton = new TArc(.8,fZoomButton->GetYlowNDC()+0.5*db,0.33*db);
208 fArcButton->SetFillColor(kGreen);
210 char butUnzoom[] = "gAlice->Display()->UnZoom()";
211 TButton *button = new TButton("UnZoom",butUnzoom,0.05,0.05,0.95,0.15);
212 button->SetFillColor(38);
214 AppendPad(); // append display object as last object to force selection
221 //_____________________________________________________________________________
222 AliRICHdisplay::~AliRICHdisplay()
224 // Delete space point structure
225 if (fPoints) fPoints->Delete();
229 if (fPhits) fPhits->Delete();
233 if (fPCerenkovs) fPCerenkovs->Delete();
238 //_____________________________________________________________________________
239 void AliRICHdisplay::Clear(Option_t *)
241 // Delete graphics temporary objects
244 //_____________________________________________________________________________
245 void AliRICHdisplay::DisplayButtons()
247 // Create the user interface buttons
250 fButtons = new TPad("buttons", "newpad",0,0.45,0.15,1);
251 fButtons->SetEditable(kFALSE);
253 fButtons->SetFillColor(38);
254 fButtons->SetBorderSize(2);
257 // Int_t butcolor = 33;
258 Float_t dbutton = 0.08;
265 char but1[] = "gAlice->Display()->ShowNextEvent(1)";
266 button = new TButton("Next",but1,x0,y-dbutton,x1,y);
267 button->SetFillColor(38);
271 char but2[] = "gAlice->Display()->ShowNextEvent(-1)";
272 button = new TButton("Previous",but2,x0,y-dbutton,x1,y);
273 button->SetFillColor(38);
277 TDiamond *diamond = new TDiamond(0.05,0.015,0.95,0.22);
278 diamond->SetFillColor(50);
279 diamond->SetTextAlign(22);
280 diamond->SetTextColor(5);
281 diamond->SetTextSize(0.11);
283 diamond->AddText(".. ");
284 diamond->AddText("ROOT");
285 diamond->AddText("RICH");
286 diamond->AddText("... ");
287 diamond->AddText(" ");
290 //_____________________________________________________________________________
291 void AliRICHdisplay::CreateColors()
293 // Create the colors palette used to display clusters
308 new TColor(color,r,g,b);
318 new TColor(color,r,g,b);
328 new TColor(color,r,g,b);
338 new TColor(color,r,g,b);
348 new TColor(color,r,g,b);
357 //_____________________________________________________________________________
358 void AliRICHdisplay::DisplayColorScale()
363 Float_t xlow, ylow, xup, yup, hs;
364 Float_t x1, y1, x2, y2;
368 gPad->SetFillColor(0);
370 gPad->Range(x1,y1,x2,y2);
371 TText *text = new TText(0,0,"");
372 text->SetTextFont(61);
373 text->SetTextSize(0.03);
374 text->SetTextAlign(22);
378 //*-* draw colortable boxes
379 hs = (y2-y1)/Float_t(22);
383 ylow = y1 + hs*(Float_t(i));
384 yup = y1 + hs*(Float_t(i+1));
386 Double_t logscale=Double_t(i+1)*(TMath::Log(adc_satm)/22);
387 Int_t scale=(Int_t)TMath::Exp(logscale);
388 sprintf(label,"%d",scale);
389 box = new TBox(xlow, ylow, xup, yup);
390 box->SetFillColor(color);
392 text->DrawText(xup+4, 0.5*(ylow+yup),label);
396 //______________________________________________________________________________
397 Int_t AliRICHdisplay::DistancetoPrimitive(Int_t px, Int_t)
399 // Compute distance from point px,py to objects in event
401 gPad->SetCursor(kCross);
403 if (gPad == fTrigPad) return 9999;
405 const Int_t big = 9999;
407 Float_t xmin = gPad->GetX1();
408 Float_t xmax = gPad->GetX2();
409 Float_t dx = 0.02*(xmax - xmin);
410 Float_t x = gPad->AbsPixeltoX(px);
411 if (x < xmin+dx || x > xmax-dx) return dist;
413 if (fZoomMode) return 0;
417 //_____________________________________________________________________________
418 void AliRICHdisplay::Draw(Option_t *)
420 // Display current event
424 DrawView(fTheta, fPhi, fPsi); // see how to draw PGON+inner frames
426 // Display the event number and title
432 //_____________________________________________________________________________
434 void AliRICHdisplay::DrawCerenkovs()
436 // Draw cerenkovs hits for RICH chambers
438 LoadCerenkovs(fChamber);
439 printf("\nDrawCerenkovs\n");
441 Int_t ntracks, track;
446 cpoints = fPCerenkovs;
447 printf ("Cpoints: %p",cpoints);
448 if (!cpoints) return;
449 ntracks = cpoints->GetEntriesFast();
450 printf("DrawCerenkovs - ntracks %d \n",ntracks);
451 for (track=0;track<ntracks;track++) {
452 pm = (AliRICHpoints*)cpoints->UncheckedAt(track);
455 fHitsCuts += pm->GetN();
459 //_____________________________________________________________________________
460 void AliRICHdisplay::DrawClusters()
462 // Draw clusterss for RICH chambers
464 Int_t ndigits, digit;
471 ndigits = points->GetEntriesFast();
472 printf("DrawClusters - ndigits %d \n",ndigits);
473 for (digit=0;digit<ndigits;digit++){
474 pm = (AliRICHpoints*)points->UncheckedAt(digit);
477 fClustersCuts +=pm->GetN();
481 //_____________________________________________________________________________
482 void AliRICHdisplay::DrawHits()
484 // Draw hits for RICH chambers
488 Int_t ntracks, track;
495 ntracks = points->GetEntriesFast();
496 printf("DrawHits - ntracks %d \n",ntracks);
497 for (track=0;track<ntracks;track++) {
498 pm = (AliRICHpoints*)points->UncheckedAt(track);
501 fHitsCuts += pm->GetN();
506 //_____________________________________________________________________________
507 void AliRICHdisplay::DrawTitle(Option_t *option)
509 // Draw the event title
511 Float_t xmin = gPad->GetX1();
512 Float_t xmax = gPad->GetX2();
513 Float_t ymin = gPad->GetY1();
514 Float_t ymax = gPad->GetY2();
515 Float_t dx = xmax-xmin;
516 Float_t dy = ymax-ymin;
518 if (strlen(option) == 0) {
519 TPaveText *title = new TPaveText(xmin +0.01*dx, ymax-0.09*dy, xmin +0.5*dx, ymax-0.01*dy);
520 title->SetBit(kCanDelete);
521 title->SetFillColor(42);
524 sprintf(ptitle,"Alice event: %d, Run:%d",gAlice->GetHeader()->GetEvent(), gAlice->GetHeader()->GetRun());
525 title->AddText(ptitle);
526 Int_t nparticles = gAlice->Particles()->GetEntriesFast();
527 sprintf(ptitle,"Nparticles = %d Nhits = %d Npads fired = %d",nparticles, fHitsCuts,fClustersCuts);
528 title->AddText(ptitle);
530 TPaveLabel *label = new TPaveLabel(xmin +0.01*dx, ymax-0.07*dy, xmin +0.2*dx, ymax-0.01*dy,option);
531 label->SetBit(kCanDelete);
532 label->SetFillColor(42);
537 //_____________________________________________________________________________
538 void AliRICHdisplay::DrawView(Float_t theta, Float_t phi, Float_t psi)
540 // Draw a view of RICH clusters
542 gPad->SetCursor(kWatch);
543 gPad->SetFillColor(1);
547 TView *view = new TView(1);
548 Float_t range = fRrange*fRangeSlider->GetMaximum();
549 view->SetRange(-range,-range,-range,range, range, range);
556 //Display RICH Chamber Geometry
557 gAlice->GetGeometry()->Draw("same");
559 //add clusters to the pad
564 // add itself to the list (must be last)
567 view->SetView(phi, theta, psi, iret);
571 //______________________________________________________________________________
572 void AliRICHdisplay::ExecuteEvent(Int_t event, Int_t px, Int_t py)
574 // Execute action corresponding to the mouse event
576 static Float_t x0, y0, x1, y1;
578 static Int_t pxold, pyold;
579 static Int_t px0, py0;
580 static Int_t linedrawn;
583 if (px == 0 && py == 0) { //when called by sliders
584 if (event == kButton1Up) {
589 if (!fZoomMode && gPad->GetView()) {
590 gPad->GetView()->ExecuteRotateView(event, px, py);
594 // something to zoom ?
595 gPad->SetCursor(kCross);
600 gVirtualX->SetLineColor(-1);
601 gPad->TAttLine::Modify(); //Change line attributes only if necessary
602 x0 = gPad->AbsPixeltoX(px);
603 y0 = gPad->AbsPixeltoY(py);
605 pxold = px; pyold = py;
610 if (linedrawn) gVirtualX->DrawBox(px0, py0, pxold, pyold, TVirtualX::kHollow);
614 gVirtualX->DrawBox(px0, py0, pxold, pyold, TVirtualX::kHollow);
618 gPad->GetCanvas()->FeedbackMode(kFALSE);
619 if (px == px0) return;
620 if (py == py0) return;
621 x1 = gPad->AbsPixeltoX(px);
622 y1 = gPad->AbsPixeltoY(py);
624 if (x1 < x0) {temp = x0; x0 = x1; x1 = temp;}
625 if (y1 < y0) {temp = y0; y0 = y1; y1 = temp;}
626 gPad->Range(x0,y0,x1,y1);
627 if (fZooms < kMAXZOOM-1) {
629 fZoomX0[fZooms] = x0;
630 fZoomY0[fZooms] = y0;
631 fZoomX1[fZooms] = x1;
632 fZoomY1[fZooms] = y1;
634 gPad->Modified(kTRUE);
640 //___________________________________________
641 void AliRICHdisplay::LoadDigits()
643 // Read digits info and store x,y,z info in arrays fPoints
644 // Loop on all detectors
646 printf("Entering Load-digits");
650 AliRICH *RICH = (AliRICH*)gAlice->GetDetector("RICH");
651 AliRICHchamber* iChamber;
652 AliRICHsegmentation* segmentation;
656 for (ich=0; ich<7; ich++) {
657 TClonesArray *RICHdigits = RICH->DigitsAddress(ich);
658 if (RICHdigits == 0) continue;
659 gAlice->ResetDigits();
660 gAlice->TreeD()->GetEvent(1);
661 Int_t ndigits = RICHdigits->GetEntriesFast();
662 printf("Found %d digits in chamber %d \n",ndigits,ich);
665 if (fPoints == 0) fPoints = new TObjArray(NallDigits);
667 for (ich=0; ich<7; ich++) {
668 TClonesArray *RICHdigits = RICH->DigitsAddress(ich);
669 if (RICHdigits == 0) continue;
670 gAlice->ResetDigits();
671 gAlice->TreeD()->GetEvent(1);
672 Int_t ndigits = RICHdigits->GetEntriesFast();
673 printf("Found %d digits in chamber %d \n",ndigits,ich);
674 if (ndigits == 0) continue;
678 iChamber = &(RICH->Chamber(ich));
679 printf("LoadPoints - chamber %d \n",ich);
680 segmentation=iChamber->GetSegmentationModel(1);
681 Float_t dpx = segmentation->Dpx();
682 Float_t dpy = segmentation->Dpy();
683 printf("LoadPoints - dpx, dpy %f %f \n",dpx,dpy);
685 AliRICHpoints *points = 0;
687 //loop over all digits and store their position
690 for (Int_t digit=0;digit<ndigits;digit++) {
691 mdig = (AliRICHdigit*)RICHdigits->UncheckedAt(digit);
692 points = new AliRICHpoints(npoints);
693 fPoints->AddAt(points,counter);
695 Int_t charge=mdig->fSignal;
696 Int_t index=Int_t(TMath::Log(charge)/(TMath::Log(adc_satm)/22));
697 Int_t color=51+index;
698 if (color>72) color=72;
699 points->SetMarkerColor(color);
700 points->SetMarkerStyle(21);
701 points->SetMarkerSize(0.5);
702 // get the center of the pad - add on x and y half of pad size
704 segmentation->GetPadCxy(mdig->fPadX, mdig->fPadY,xpad, ypad);
705 printf("\n chamber x,y, %d %f %f ", ich, xpad, ypad);
707 Float_t VecLoc[3]={xpad,0,ypad};
709 iChamber->LocaltoGlobal(VecLoc,VecGlob);
710 points->SetParticle(-1);
711 points->SetHitIndex(-1);
712 points->SetTrackIndex(-1);
713 points->SetDigitIndex(digit);
714 points->SetPoint(0,VecGlob[0],VecGlob[1],VecGlob[2]);
715 } // loop over digits
716 } // loop over chambers
720 //___________________________________________
721 void AliRICHdisplay::LoadHits(Int_t chamber)
723 // Read hits info and store x,y,z info in arrays fPhits
724 // Loop on all detectors
726 printf("Entering Load-hits");
731 AliRICH *RICH = (AliRICH*)gAlice->GetDetector("RICH");
732 AliRICHchamber* iChamber;
734 iChamber = &(RICH->Chamber(chamber-1));
735 Float_t zpos=iChamber->ZPosition();
736 printf("LoadHits - zpos %f \n",zpos);
738 Int_t ntracks = (Int_t)gAlice->TreeH()->GetEntries();
739 printf("ntracks %d\n",ntracks);
740 Int_t ntrks = gAlice->GetNtrack();
741 printf("ntrks %d\n",ntrks);
743 if (fPhits == 0) fPhits = new TObjArray(ntracks);
744 TVector *xp = new TVector(1000);
745 TVector *yp = new TVector(1000);
746 TVector *zp = new TVector(1000);
747 TVector *ptrk = new TVector(1000);
748 TVector *phit = new TVector(1000);
749 for (Int_t track=0; track<ntracks;track++) {
751 gAlice->TreeH()->GetEvent(track);
752 TClonesArray *RICHhits = RICH->Hits();
753 if (RICHhits == 0) return;
754 Int_t nhits = RICHhits->GetEntriesFast();
755 if (nhits == 0) continue;
757 AliRICHpoints *points = 0;
759 for (Int_t hit=0;hit<nhits;hit++) {
760 mHit = (AliRICHhit*)RICHhits->UncheckedAt(hit);
761 (*xp)(npoints)=mHit->fX;
762 (*yp)(npoints)=mHit->fY;
763 (*zp)(npoints)=mHit->fZ;
764 (*ptrk)(npoints)=Float_t(mHit->GetTrack());
765 (*phit)(npoints)=Float_t(hit);
769 if (npoints == 0) continue;
770 points = new AliRICHpoints(npoints);
771 for (Int_t p=0;p<npoints;p++) {
772 points->SetMarkerColor(kRed);
773 points->SetMarkerStyle(5);
774 points->SetMarkerSize(1.);
775 points->SetParticle(Int_t((*ptrk)(p)));
776 points->SetHitIndex(Int_t((*phit)(p)));
777 points->SetTrackIndex(track);
778 points->SetDigitIndex(-1);
779 points->SetPoint(p,(*xp)(p),(*yp)(p),(*zp)(p));
785 fPhits->AddAt(points,track);
790 //_____________________________________________________________________________
792 void AliRICHdisplay::LoadCerenkovs(Int_t chamber)
794 // Read cerenkov hits info and store x,y,z info in array fPCerenkovs
795 // Loop on all detectors
797 printf("Entering Load-Cerenkovs");
802 AliRICH *RICH = (AliRICH*)gAlice->GetDetector("RICH");
803 AliRICHchamber* iChamber;
805 iChamber = &(RICH->Chamber(chamber-1));
806 Float_t zpos=iChamber->ZPosition();
807 printf("LoadCerenkovs - zpos %f \n",zpos);
809 RICH->SetTreeAddress();
810 Int_t ntracks = (Int_t)gAlice->TreeH()->GetEntries();
811 printf("ntracks %d\n",ntracks);
812 Int_t ntrks = gAlice->GetNtrack();
813 printf("ntrks %d\n",ntrks);
815 if (fPCerenkovs == 0) fPCerenkovs = new TObjArray(ntracks);
816 TVector *xp = new TVector(1000);
817 TVector *yp = new TVector(1000);
818 TVector *zp = new TVector(1000);
819 TVector *ptrk = new TVector(1000);
820 TVector *phit = new TVector(1000);
821 for (Int_t track=0; track<ntracks;track++) {
823 gAlice->TreeH()->GetEvent(track);
824 TClonesArray *RICHCerenkovs = RICH->Cerenkovs();
825 printf("RICHCerenkovs %p\n",RICHCerenkovs);
826 if (RICHCerenkovs == 0) return;
827 Int_t nhits = RICHCerenkovs->GetEntriesFast();
828 if (nhits == 0) continue;
829 printf("nhits %d \n",nhits);
830 AliRICHCerenkov *mCerenkov;
831 AliRICHpoints *cpoints = 0;
834 //Display Cerenkov hits in blue
836 for (Int_t hit=0;hit<nhits;hit++) {
837 mCerenkov = (AliRICHCerenkov*)RICHCerenkovs->UncheckedAt(hit);
838 (*xp)(npoints)=mCerenkov->fX;
839 (*yp)(npoints)=mCerenkov->fY;
840 (*zp)(npoints)=mCerenkov->fZ;
841 (*ptrk)(npoints)=Float_t(mCerenkov->GetTrack());
842 (*phit)(npoints)=Float_t(hit);
843 printf("track, trk %d %d\n",track,mCerenkov->GetTrack());
846 if (npoints == 0) continue;
847 printf("npoints %d \n",npoints);
848 cpoints = new AliRICHpoints(npoints);
849 for (Int_t p=0;p<npoints;p++) {
850 cpoints->SetMarkerColor(kBlue);
851 cpoints->SetMarkerStyle(3);
852 cpoints->SetMarkerSize(1.);
853 cpoints->SetParticle(Int_t((*ptrk)(p)));
854 Int_t index=cpoints->GetIndex();
855 printf("index %d \n",index);
856 cpoints->SetHitIndex(Int_t((*phit)(p)));
857 cpoints->SetTrackIndex(track);
858 cpoints->SetDigitIndex(-1);
859 cpoints->SetPoint(p,(*xp)(p),(*yp)(p),(*zp)(p));
865 fPCerenkovs->AddAt(cpoints,track);
869 //_____________________________________________________________________________
870 void AliRICHdisplay::Paint(Option_t *)
872 // Paint miscellaneous items
876 //_____________________________________________________________________________
877 void AliRICHdisplay::SetPickMode()
881 fArcButton->SetY1(fPickButton->GetYlowNDC()+0.5*fPickButton->GetHNDC());
882 fTrigPad->Modified();
885 //_____________________________________________________________________________
886 void AliRICHdisplay::SetZoomMode()
890 fArcButton->SetY1(fZoomButton->GetYlowNDC()+0.5*fZoomButton->GetHNDC());
891 fTrigPad->Modified();
894 //_____________________________________________________________________________
895 void AliRICHdisplay::SetChamberAndCathode(Int_t chamber, Int_t cathode)
897 // Set chamber and cathode number
901 printf("SetChamberAndCathode - fChamber fCathode %d %d\n",fChamber,fCathode);
908 //_____________________________________________________________________________
909 void AliRICHdisplay::SetRange(Float_t rrange, Float_t zrange)
911 // Set view range along R and Z
920 //_____________________________________________________________________________
921 void AliRICHdisplay::SetView(Float_t theta, Float_t phi, Float_t psi)
923 // change viewing angles for current event
931 TView *view = gPad->GetView();
932 if (view) view->SetView(fPhi, fTheta, fPsi, iret);
938 //_____________________________________________________________________________
939 void AliRICHdisplay::ShowNextEvent(Int_t delta)
941 // Display (current event_number+delta)
942 // delta = 1 shown next event
943 // delta = -1 show previous event
947 Int_t current_event = gAlice->GetHeader()->GetEvent();
948 Int_t new_event = current_event + delta;
949 gAlice->GetEvent(new_event);
950 if (!gAlice->TreeD()) return;
960 //______________________________________________________________________________
961 void AliRICHdisplay::UnZoom()
963 if (fZooms <= 0) return;
965 TPad *pad = (TPad*)gPad->GetPadSave();
966 pad->Range(fZoomX0[fZooms],fZoomY0[fZooms], fZoomX1[fZooms],fZoomY1[fZooms]);
970 //_____________________________________________________________________________
971 void AliRICHdisplay::ResetPoints()
974 // Reset array of points
982 //_____________________________________________________________________________
983 void AliRICHdisplay::ResetPhits()
986 // Reset array of points
994 //_____________________________________________________________________________
995 void AliRICHdisplay::ResetPCerenkovs()
998 // Reset array of points
1001 fPCerenkovs->Delete();