]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliDisplay.cxx
Removing warnings (icc)
[u/mrichter/AliRoot.git] / STEER / AliDisplay.cxx
index f4491f269be088e8325549dce0da4826f9b9fc34..8bb6bf67a1d85c59b657b29d522abe338b73b05a 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.8  2000/07/11 18:24:59  fca
-Coding convention corrections + few minor bug fixes
-
-Revision 1.7  1999/11/10 07:37:06  fca
-Pads do not inherit editability from canvas any more
-
-Revision 1.6  1999/11/09 07:38:52  fca
-Changes for compatibility with version 2.23 of ROOT
-
-Revision 1.5  1999/09/29 09:24:29  fca
-Introduction of the Copyright and cvs Log
-
-*/
-
+/* $Id$ */
 
 //////////////////////////////////////////////////////////////////////////
 //                                                                      //
@@ -38,32 +23,29 @@ Introduction of the Copyright and cvs Log
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
-#include <TROOT.h>
-#include <TTree.h>
+#include <TArc.h>
 #include <TButton.h>
 #include <TCanvas.h>
-#include <TView.h>
-#include <TText.h>
-#include <TPolyMarker3D.h>
+#include <TDiamond.h>
+#include <TGaxis.h>
+#include <TMath.h>
 #include <TPaveLabel.h>
 #include <TPaveText.h>
-#include <TList.h>
-#include <TDiamond.h>
-#include <TNode.h>
-#include <TArc.h>
-#include <TTUBE.h>
 #include <TSlider.h>
 #include <TSliderBox.h>
-#include <TGaxis.h>
+#include <TTree.h>
+#include <TView.h>
 #include <TVirtualX.h>
-#include <TMath.h>
-#include <X3DBuffer.h>
 
-#include "AliRun.h"
 #include "AliDetector.h"
 #include "AliDisplay.h"
+#include "AliHeader.h"
 #include "AliPoints.h"
+#include "AliRun.h"
+#include "AliStack.h"
+#include "TGeometry.h"
 #include "TParticle.h"
+#include "AliMC.h"
 
 static const Float_t kptcutmax  = 2;
 static const Float_t ketacutmax = 1.5;
@@ -71,17 +53,70 @@ static const Float_t ketacutmax = 1.5;
 ClassImp(AliDisplay)
 
 
-//_____________________________________________________________________________
-AliDisplay::AliDisplay()
+//_______________________________________________________________________
+AliDisplay::AliDisplay():
+  fZoomMode(0),
+  fDrawAllViews(0),
+  fDrawParticles(0),
+  fDrawHits(0),
+  fPTcut(0),
+  fTheta(0),
+  fPhi(0),
+  fPsi(0),
+  fRrange(0),
+  fZrange(0),
+  fZooms(0),
+  fHitsCuts(0),
+  fCanvas(0),
+  fTrigPad(0),
+  fCutPad(0),
+  fEtaPad(0),
+  fButtons(0),
+  fPad(0),
+  fCutSlider(0),
+  fEtaSlider(0),
+  fRangeSlider(0),
+  fPickButton(0),
+  fZoomButton(0),
+  fArcButton(0),
+  fFruits(0),
+  fTracksToDisplay(0),
+  fNTracksToDisplay(0)
 {
   //
   // Default constructor
   //
-  fCanvas = 0;
 }
 
 //_____________________________________________________________________________
-AliDisplay::AliDisplay(Int_t size)
+AliDisplay::AliDisplay(Int_t size):
+  fZoomMode(1),
+  fDrawAllViews(kFALSE),
+  fDrawParticles(kTRUE),
+  fDrawHits(kTRUE),
+  fPTcut(0),
+  fTheta(0),
+  fPhi(-90),
+  fPsi(0),
+  fRrange(0),
+  fZrange(0),
+  fZooms(1),
+  fHitsCuts(0),
+  fCanvas(0),
+  fTrigPad(0),
+  fCutPad(0),
+  fEtaPad(0),
+  fButtons(0),
+  fPad(0),
+  fCutSlider(0),
+  fEtaSlider(0),
+  fRangeSlider(0),
+  fPickButton(0),
+  fZoomButton(0),
+  fArcButton(0),
+  fFruits(0),
+  fTracksToDisplay(0),
+  fNTracksToDisplay(0)
 {
 // Create an event display object.
 // A canvas named "edisplay" is created with a vertical size in pixels
@@ -153,121 +188,138 @@ AliDisplay::AliDisplay(Int_t size)
 */
 //End_Html
    
-   fPad = 0;
-   gAlice->SetDisplay(this);
-   
-   // Initialize display default parameters
-   SetRange();
-   SetPTcut();
-
-   // Set front view by default
-   fTheta = 0;
-   fPhi   = -90;
-   fPsi   = 0;
-   fDrawAllViews  = kFALSE;
-   fDrawHits      = kTRUE;
-   fDrawParticles = kTRUE;
-   fZoomMode      = 1;
-   fZooms         = 0;
-   fHitsCuts      = 0;
-   
-   // Create display canvas
-   Int_t ysize = size;
-   if (ysize < 100) ysize = 750;
-   Int_t xsize = Int_t(size*830./ysize);
-   fCanvas = new TCanvas("Canvas", "ALICE Event Display",14,47,xsize,ysize);
-   fCanvas->ToggleEventStatus();
+  gAlice->SetDisplay(this);
    
-   // Create main display pad
-   fPad = new TPad("viewpad", "Alice display",0.15,0,0.97,0.96);
-   fPad->Draw();
-   fPad->Modified();
-   fPad->SetFillColor(1);
-   fPad->SetBorderSize(2);
-
-   // Create user interface control pad
-   DisplayButtons();
-   fCanvas->cd();
-
-   // Create Range and mode pad
-   Float_t dxtr     = 0.15;
-   Float_t dytr     = 0.45;
-   fTrigPad = new TPad("trigger", "range and mode pad",0,0,dxtr,dytr);
-   fTrigPad->SetEditable(kFALSE);
-   fTrigPad->Draw();
-   fTrigPad->cd();
-   fTrigPad->SetFillColor(22);
-   fTrigPad->SetBorderSize(2);
-   fRangeSlider = new TSlider("range","range",0.7,0.42,0.9,0.98);
-   fRangeSlider->SetObject(this);
-   char pickmode[] = "gAlice->Display()->SetPickMode()";
-   Float_t db = 0.09;
-   fPickButton = new TButton("Pick",pickmode,0.05,0.32,0.65,0.32+db);
-   fPickButton->SetFillColor(38);
-   fPickButton->Draw();
-   char zoommode[] = "gAlice->Display()->SetZoomMode()";
-   fZoomButton = new TButton("Zoom",zoommode,0.05,0.21,0.65,0.21+db);
-   fZoomButton->SetFillColor(38);
-   fZoomButton->Draw();
-   fArcButton = new TArc(.8,fZoomButton->GetYlowNDC()+0.5*db,0.33*db);
-   fArcButton->SetFillColor(kGreen);
-   fArcButton->Draw();
-   char butUnzoom[] = "gAlice->Display()->UnZoom()";
-   TButton *button = new TButton("UnZoom",butUnzoom,0.05,0.05,0.95,0.15);
-   button->SetFillColor(38);
-   button->Draw();
-   AppendPad(); // append display object as last object to force selection
-
-   // Create momentum cut slider pad
-   fCanvas->cd();
-   fCutPad = new TPad("cutSlider", "pcut slider pad",dxtr,.96,1,1);
-   fCutPad->Draw();
-   fCutPad->cd();
-   fCutPad->SetFillColor(22);
-   fCutPad->SetBorderSize(2);
-   fCutSlider   = new TSlider("pcut","Momentum cut",0,0,1,1);
-   fCutSlider->SetRange(fPTcut/kptcutmax,1);
-   fCutSlider->SetObject(this);
-   fCutSlider->SetFillColor(45);
-   TSliderBox *sbox = (TSliderBox*)fCutSlider->GetListOfPrimitives()->First();
-   sbox->SetFillColor(46);
-   fCutSlider->cd();
-   TGaxis *cutaxis = new TGaxis(0.02,0.8,0.98,0.8,0,kptcutmax,510,"");
-   cutaxis->SetLabelSize(0.5);
-   cutaxis->SetTitleSize(0.6);
-   cutaxis->SetTitleOffset(0.5);
-   cutaxis->SetTitle("pcut .  ");
-   fCutSlider->GetListOfPrimitives()->AddFirst(cutaxis);
-
-      // Create rapidity cut slider pad
-   fCanvas->cd();
-   fEtaPad = new TPad("EtaSlider", "Eta slider pad",0.97,0,1,0.96);
-   fEtaPad->Draw();
-   fEtaPad->cd();
-   fEtaPad->SetFillColor(22);
-   fEtaPad->SetBorderSize(2);
-   fEtaSlider   = new TSlider("etacut","Rapidity cut",0,0,1,1);
-   fEtaSlider->SetObject(this);
-   fEtaSlider->SetFillColor(45);
-   TSliderBox *sbox2 = (TSliderBox*)fEtaSlider->GetListOfPrimitives()->First();
-   sbox2->SetFillColor(46);
-   fEtaSlider->cd();
-   TGaxis *etaaxis = new TGaxis(0.9,0.02,0.9,0.98,-ketacutmax,ketacutmax,510,"");
-   etaaxis->SetLabelSize(0.5);
-   etaaxis->SetTitleSize(0.6);
-   etaaxis->SetTitleOffset(0.2);
-   cutaxis->SetTitle("Etacut .  ");
-   fEtaSlider->GetListOfPrimitives()->AddFirst(etaaxis);
-   fCanvas->cd();
-   
-
-   fCanvas->cd();
-   fCanvas->Update();
+  // Initialize display default parameters
+  SetRange();
+  SetPTcut();
+  
+  // Create display canvas
+  Int_t ysize = size;
+  if (ysize < 100) ysize = 750;
+  Int_t xsize = Int_t(size*830./ysize);
+  fCanvas = new TCanvas("Canvas", "ALICE Event Display",14,47,xsize,ysize);
+  fCanvas->ToggleEventStatus();
+
+  // Create main display pad
+  fPad = new TPad("viewpad", "Alice display",0.15,0,0.97,0.96);
+  fPad->Draw();
+  fPad->Modified();
+  fPad->SetFillColor(1);
+  fPad->SetBorderSize(2);
+
+  // Create user interface control pad
+  DisplayButtons();
+  fCanvas->cd();
+
+  // Create Range and mode pad
+  Float_t dxtr     = 0.15;
+  Float_t dytr     = 0.45;
+  fTrigPad = new TPad("trigger", "range and mode pad",0,0,dxtr,dytr);
+  fTrigPad->Draw();
+  fTrigPad->cd();
+  fTrigPad->SetFillColor(22);
+  fTrigPad->SetBorderSize(2);
+  fRangeSlider = new TSlider("range","range",0.7,0.42,0.9,0.98);
+  fRangeSlider->SetObject(this);
+  char pickmode[] = "gAlice->Display()->SetPickMode()";
+  Float_t db = 0.09;
+  fPickButton = new TButton("Pick",pickmode,0.05,0.32,0.65,0.32+db);
+  fPickButton->SetFillColor(38);
+  fPickButton->Draw();
+  char zoommode[] = "gAlice->Display()->SetZoomMode()";
+  fZoomButton = new TButton("Zoom",zoommode,0.05,0.21,0.65,0.21+db);
+  fZoomButton->SetFillColor(38);
+  fZoomButton->Draw();
+  fArcButton = new TArc(.8,fZoomButton->GetYlowNDC()+0.5*db,0.33*db);
+  fArcButton->SetFillColor(kGreen);
+  fArcButton->Draw();
+  char butUnzoom[] = "gAlice->Display()->UnZoom()";
+  TButton *button = new TButton("UnZoom",butUnzoom,0.05,0.05,0.95,0.15);
+  button->SetFillColor(38);
+  button->Draw();
+  AppendPad(); // append display object as last object to force selection
+  // Create momentum cut slider pad
+  fCanvas->cd();
+  fCutPad = new TPad("cutSlider", "pcut slider pad",dxtr,.96,1,1);
+  fCutPad->Draw();
+  fCutPad->cd();
+  fCutPad->SetFillColor(22);
+  fCutPad->SetBorderSize(2);
+  fCutSlider = new TSlider("pcut","Momentum cut",0,0,1,1);
+  fCutSlider->SetRange(fPTcut/kptcutmax,1);
+  fCutSlider->SetObject(this);
+  fCutSlider->SetFillColor(45);
+  TSliderBox *sbox = dynamic_cast<TSliderBox*>(fCutSlider->GetListOfPrimitives()->First());
+  sbox->SetFillColor(46);
+  fCutSlider->cd();
+  TGaxis *cutaxis = new TGaxis(0.02,0.8,0.98,0.8,0,kptcutmax,510,"");
+  cutaxis->SetLabelSize(0.5);
+  cutaxis->SetTitleSize(0.6);
+  cutaxis->SetTitleOffset(0.5);
+  cutaxis->SetTitle("pcut .  ");
+  fCutSlider->GetListOfPrimitives()->AddFirst(cutaxis);
+  // Create rapidity cut slider pad
+  fCanvas->cd();
+  fEtaPad = new TPad("EtaSlider", "Eta slider pad",0.97,0,1,0.96);
+  fEtaPad->Draw();
+  fEtaPad->cd();
+  fEtaPad->SetFillColor(22);
+  fEtaPad->SetBorderSize(2);
+  fEtaSlider = new TSlider("etacut","Rapidity cut",0,0,1,1);
+  fEtaSlider->SetObject(this);
+  fEtaSlider->SetFillColor(45);
+  TSliderBox *sbox2 = dynamic_cast<TSliderBox*>(fEtaSlider->GetListOfPrimitives()->First());
+  sbox2->SetFillColor(46);
+  fEtaSlider->cd();
+  TGaxis *etaaxis = new TGaxis(0.9,0.02,0.9,0.98,-ketacutmax,ketacutmax,510,"");
+  etaaxis->SetLabelSize(0.5);
+  etaaxis->SetTitleSize(0.6);
+  etaaxis->SetTitleOffset(0.2);
+  cutaxis->SetTitle("Etacut .  ");
+  fEtaSlider->GetListOfPrimitives()->AddFirst(etaaxis);
+  fCanvas->cd();
+
+  fTrigPad->SetEditable(kFALSE);
+  fButtons->SetEditable(kFALSE);
+  fTracksToDisplay =0;
+  fNTracksToDisplay =0;   
+
+  fCanvas->cd();
+  fCanvas->Update();
 }
 
 
-//_____________________________________________________________________________
-AliDisplay::AliDisplay(const AliDisplay &disp)
+//_______________________________________________________________________
+AliDisplay::AliDisplay(const AliDisplay &disp):
+  TObject(disp),
+  fZoomMode(0),
+  fDrawAllViews(0),
+  fDrawParticles(0),
+  fDrawHits(0),
+  fPTcut(0),
+  fTheta(0),
+  fPhi(0),
+  fPsi(0),
+  fRrange(0),
+  fZrange(0),
+  fZooms(0),
+  fHitsCuts(0),
+  fCanvas(0),
+  fTrigPad(0),
+  fCutPad(0),
+  fEtaPad(0),
+  fButtons(0),
+  fPad(0),
+  fCutSlider(0),
+  fEtaSlider(0),
+  fRangeSlider(0),
+  fPickButton(0),
+  fZoomButton(0),
+  fArcButton(0),
+  fFruits(0),
+  fTracksToDisplay(0),
+  fNTracksToDisplay(0)
 {
   //
   // Copy constructor
@@ -290,7 +342,7 @@ void AliDisplay::Clear(Option_t *)
 }
 
 //_____________________________________________________________________________
-void AliDisplay::Copy(AliDisplay &disp) const
+void AliDisplay::Copy(TObject &) const
 {
   //
   // Copy *this onto disp -- not implemented
@@ -299,12 +351,16 @@ void AliDisplay::Copy(AliDisplay &disp) const
 }
 
 //----------------------------------------------------------------------------
-void AliDisplay::ShowTrack(Int_t idx) {
-   AliDetector *mTPC=(AliDetector*)gAlice->GetModule("TPC");
+void AliDisplay::ShowTrack(Int_t idx) 
+{
+  //
+  // Display track idx
+  //
+   AliDetector *mTPC=dynamic_cast<AliDetector*>(gAlice->GetModule("TPC"));
    TObjArray *points=mTPC->Points();
    int ntracks=points->GetEntriesFast();
    for (int track=0;track<ntracks;track++) {
-      AliPoints *pm = (AliPoints*)points->UncheckedAt(track);
+      AliPoints *pm = dynamic_cast<AliPoints*>(points->UncheckedAt(track));
       if (!pm) continue;
       if (idx == pm->GetIndex()) {
          pm->SetMarkerColor(2);
@@ -312,8 +368,9 @@ void AliDisplay::ShowTrack(Int_t idx) {
          pm->Draw("same");
 //       fPad->Update();
 //       fPad->Modified();
-         TClonesArray *particles=gAlice->Particles();
-         TParticle *p = (TParticle*)particles->UncheckedAt(idx);
+        //         TClonesArray *particles=gAlice->Particles();
+        //         TParticle *p = (TParticle*)particles->UncheckedAt(idx);
+        TParticle *p = gAlice->GetMCApp()->Particle(idx);
          printf("\nTrack index %d\n",idx);
          printf("Particle ID %d\n",p->GetPdgCode());
          printf("Parent %d\n",p->GetFirstMother());
@@ -325,15 +382,16 @@ void AliDisplay::ShowTrack(Int_t idx) {
 }
 
 //----------------------------------------------------------------------------
-void AliDisplay::HideTrack(Int_t idx) {
+void AliDisplay::HideTrack(Int_t idx) const
+{
   //
   // Hide track on display
   //
-   AliDetector *mTPC=(AliDetector*)gAlice->GetModule("TPC");
+   AliDetector *mTPC=dynamic_cast<AliDetector*>(gAlice->GetModule("TPC"));
    TObjArray *points=mTPC->Points();
    int ntracks=points->GetEntriesFast();
    for (int track=0;track<ntracks;track++) {
-      AliPoints *pm = (AliPoints*)points->UncheckedAt(track);
+      AliPoints *pm = dynamic_cast<AliPoints*>(points->UncheckedAt(track));
       if (!pm) continue;
       if (idx == pm->GetIndex()) {
          pm->SetMarkerColor(5);
@@ -351,7 +409,7 @@ void AliDisplay::DisableDetector(const char *name)
 {
 //    Disable detector name from graphics views
    
-   AliModule *module = (AliModule*)gAlice->Modules()->FindObject(name);
+   AliModule *module = dynamic_cast<AliModule*>(gAlice->Modules()->FindObject(name));
    if (!module) return;
    module->Disable();
    Draw();
@@ -363,7 +421,6 @@ void AliDisplay::DisplayButtons()
 //    Create the user interface buttons
 
    fButtons = new TPad("buttons", "newpad",0,0.45,0.15,1);
-   fButtons->SetEditable(kFALSE);
    fButtons->Draw();
    fButtons->SetFillColor(38);
    fButtons->SetBorderSize(2);
@@ -544,13 +601,13 @@ void AliDisplay::DrawHits()
    TIter next(gAlice->Modules());
    AliModule *module;
    fHitsCuts = 0;
-   while((module = (AliModule*)next())) {
+   while((module = dynamic_cast<AliModule*>(next()))) {
       if (!module->IsActive()) continue;
       points = module->Points();
       if (!points) continue;
       ntracks = points->GetEntriesFast();
       for (track=0;track<ntracks;track++) {
-         pm = (AliPoints*)points->UncheckedAt(track);
+         pm = dynamic_cast<AliPoints*>(points->UncheckedAt(track));
          if (!pm) continue;
          particle = pm->GetParticle();
          if (!particle) continue;
@@ -561,7 +618,7 @@ void AliDisplay::DrawHits()
          pxyz  = pm->GetP();
          r     = TMath::Sqrt(pxyz[0]*pxyz[0] + pxyz[1]*pxyz[1]);
          theta = TMath::ATan2(r,TMath::Abs(pxyz[2]));
-         if(theta) eta = -TMath::Log(TMath::Tan(0.5*theta)); else eta = 1e10;
+         if(theta) eta = -TMath::Log(TMath::Abs(TMath::Tan(0.5*theta))); else eta = 1e10;
          if (pxyz[2] < 0) eta = -eta;
          if (eta < etamin || eta > etamax) continue;
          pm->Draw();
@@ -590,7 +647,7 @@ void AliDisplay::DrawTitle(Option_t *option)
       char ptitle[100];
       sprintf(ptitle,"Alice event: %d, Run:%d",gAlice->GetHeader()->GetEvent(), gAlice->GetHeader()->GetRun());
       title->AddText(ptitle);
-      Int_t nparticles = gAlice->Particles()->GetEntriesFast();
+      Int_t nparticles = gAlice->GetMCApp()->Particles()->GetEntriesFast();
       sprintf(ptitle,"Nparticles = %d  Nhits = %d",nparticles, fHitsCuts);
       title->AddText(ptitle);
    } else {
@@ -637,7 +694,7 @@ void AliDisplay::DrawViewGL()
 {
 //    Draw current view using OPENGL
 
-   TPad *pad = (TPad*)gPad->GetPadSave();
+   TPad *pad = dynamic_cast<TPad*>(gPad->GetPadSave());
    pad->cd();
    TView *view = pad->GetView();
    if (!view) return;
@@ -649,7 +706,7 @@ void AliDisplay::DrawViewX3D()
 {
 //    Draw current view using X3D
 
-   TPad *pad = (TPad*)gPad->GetPadSave();
+   TPad *pad = dynamic_cast<TPad*>(gPad->GetPadSave());
    pad->cd();
    TView *view = pad->GetView();
    if (!view) return;
@@ -661,7 +718,7 @@ void AliDisplay::EnableDetector(const char *name)
 {
 //    Enable detector name in graphics views
    
-   AliModule *module = (AliModule*)gAlice->Modules()->FindObject(name);
+   AliModule *module = dynamic_cast<AliModule*>(gAlice->Modules()->FindObject(name));
    if (!module) return;
    module->Enable();
    Draw();
@@ -737,6 +794,13 @@ void AliDisplay::ExecuteEvent(Int_t event, Int_t px, Int_t py)
 
 }
  
+
+void AliDisplay::SetTracksToDisplay(Int_t *tracks, Int_t n){
+  //
+  // set tracks to display  - MI
+  fTracksToDisplay = tracks;
+  fNTracksToDisplay = n;
+}
 //___________________________________________
 void AliDisplay::LoadPoints()
 {
@@ -746,14 +810,50 @@ void AliDisplay::LoadPoints()
    gAlice->ResetPoints();
    TIter next(gAlice->Modules());
    AliModule *module;
-   Int_t ntracks = gAlice->GetNtrack();
-   for (Int_t track=0; track<ntracks;track++) {
+   Int_t ntracks = gAlice->GetMCApp()->GetNtrack();
+
+   while((module = (AliModule*)next())) 
+    {
+     AliDetector* detector = dynamic_cast<AliDetector*>(module);
+     if(detector) detector->SetTreeAddress();
+    }
+   next.Reset();
+
+   // load only wanted tracks
+   if (fNTracksToDisplay>0)
+    {
+      Int_t nprim =  gAlice->Stack()->GetNprimary();
+      for (Int_t track=0; track<fNTracksToDisplay;track++) 
+       {
+        gAlice->ResetHits();
+        Int_t nev = nprim-1-gAlice->GetMCApp()->GetPrimary(fTracksToDisplay[track]);
+        while((module = (AliModule*)next())) 
+         {
+          AliDetector* detector = dynamic_cast<AliDetector*>(module);
+          if(detector)
+           {
+            detector->TreeH()->GetEvent(nev);
+            module->LoadPoints(nprim-1-gAlice->GetMCApp()->GetPrimary(fTracksToDisplay[track]));
+           }
+         }
+        next.Reset();
+     }
+   }
+   else
+    {
+      
+      for (Int_t track=0; track<ntracks;track++) {
       gAlice->ResetHits();
-      gAlice->TreeH()->GetEvent(track);
       while((module = (AliModule*)next())) {
-         module->LoadPoints(track);
+         AliDetector* detector = dynamic_cast<AliDetector*>(module);
+         if(detector)
+           {
+             detector->TreeH()->GetEvent(track);
+             detector->LoadPoints(track);
+           }
       }
       next.Reset();
+     }
    }
 }
 
@@ -840,11 +940,14 @@ void AliDisplay::ShowNextEvent(Int_t delta)
 //    delta = -1 show previous event
 
   if (delta) {
-     gAlice->Clear();
-     Int_t currentEvent = gAlice->GetHeader()->GetEvent();
+//     gAlice->Clear();
+     //Int_t currentEvent = gAlice->GetHeader()->GetEvent();//event number is not filled correctly
+     Int_t currentEvent = gAlice->GetRunLoader()->GetEventNumber();
      Int_t newEvent     = currentEvent + delta;
      gAlice->GetEvent(newEvent);
-     if (!gAlice->TreeH()) return; 
+     cout<<"AliDisplay::ShowNextEvent: delta = "<<delta
+         <<"  currentEvent = "<<currentEvent
+         <<"  newEvent = "<<newEvent<<endl;
    }
   LoadPoints();
   fPad->cd(); 
@@ -859,7 +962,7 @@ void AliDisplay::UnZoom()
   //
   if (fZooms <= 0) return;
   fZooms--;
-  TPad *pad = (TPad*)gPad->GetPadSave();
+  TPad *pad = dynamic_cast<TPad*>(gPad->GetPadSave());
   pad->Range(fZoomX0[fZooms],fZoomY0[fZooms], fZoomX1[fZooms],fZoomY1[fZooms]);
   pad->Modified();
 }