Index: display/Delphes3DGeometry.cc
===================================================================
--- display/Delphes3DGeometry.cc	(revision 486c4c370ad65df39cd6950d6b5b3a60f5f8ee19)
+++ display/Delphes3DGeometry.cc	(revision 1180bc1b2e3d69ab9b461d8a74ba6973a22eef1f)
@@ -17,8 +17,6 @@
  */
 
-#include "display/Delphes3DGeometry.h"
 #include <set>
 #include <map>
-#include <string>
 #include <utility>
 #include <vector>
@@ -26,4 +24,6 @@
 #include <sstream>
 #include <cassert>
+
+#include "TAxis.h"
 #include "TGeoManager.h"
 #include "TGeoVolume.h"
@@ -35,10 +35,14 @@
 #include "TGeoCone.h"
 #include "TGeoArb8.h"
-#include "external/ExRootAnalysis/ExRootConfReader.h"
-#include "classes/DelphesClasses.h"
 #include "TF2.h"
 #include "TFormula.h"
 #include "TH1F.h"
 #include "TMath.h"
+#include "TString.h"
+
+#include "display/Delphes3DGeometry.h"
+
+#include "classes/DelphesClasses.h"
+#include "external/ExRootAnalysis/ExRootConfReader.h"
 
 using namespace std;
@@ -93,5 +97,5 @@
    tk_Bz_     = confReader->GetDouble("ParticlePropagator::Bz", 0.0);                           // tk_Bz
    
-   string buffer;
+   TString buffer;
    const char *it;
  
@@ -103,11 +107,12 @@
    tkEffFormula.ReplaceAll("phi","0.");
  
+   buffer.Clear();
    for(it = tkEffFormula.Data(); *it; ++it)
    {
      if(*it == ' ' || *it == '\t' || *it == '\r' || *it == '\n' || *it == '\\' ) continue;
-     buffer.push_back(*it);
-   }
-
-   TF2* tkEffFunction = new TF2("tkEff",buffer.c_str(),0,1000,-10,10);
+     buffer.Append(*it);
+   }
+
+   TF2* tkEffFunction = new TF2("tkEff",buffer,0,1000,-10,10);
    TH1F etaHisto("eta","eta",100,5.,-5.);
    Double_t pt,eta;
@@ -132,12 +137,12 @@
    muonEffFormula.ReplaceAll("phi","0.");
    
-   buffer.clear();
+   buffer.Clear();
    for(it = muonEffFormula.Data(); *it; ++it)
    {
      if(*it == ' ' || *it == '\t' || *it == '\r' || *it == '\n' || *it == '\\' ) continue;
-     buffer.push_back(*it);
-   }
-
-   TF2* muEffFunction = new TF2("muEff",buffer.c_str(),0,1000,-10,10);
+     buffer.Append(*it);
+   }
+
+   TF2* muEffFunction = new TF2("muEff",buffer,0,1000,-10,10);
    TH1F etaHisto("eta2","eta2",100,5.,-5.);
    Double_t pt,eta;
Index: display/Delphes3DGeometry.h
===================================================================
--- display/Delphes3DGeometry.h	(revision 486c4c370ad65df39cd6950d6b5b3a60f5f8ee19)
+++ display/Delphes3DGeometry.h	(revision 1180bc1b2e3d69ab9b461d8a74ba6973a22eef1f)
@@ -1,18 +1,18 @@
 /*
- *  Delphes: a framework for fast simulation of a generic collider experiment
- *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
+  * Delphes: a framework for fast simulation of a generic collider experiment
+  * Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
  *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
+  * This program is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation, either version 3 of the License, or
+  * (at your option) any later version.
  *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  * You should have received a copy of the GNU General Public License
+  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
@@ -22,12 +22,12 @@
 #include <set>
 #include <map>
-#include <utility>
 #include <vector>
-#include <algorithm>
-#include <sstream>
-#include "TAxis.h"
-#include "TGeoManager.h"
-#include "TGeoVolume.h"
-#include "TGeoMedium.h"
+
+#include "Rtypes.h"
+
+class TAxis;
+class TGeoManager;
+class TGeoVolume;
+class TGeoMedium;
 
 // TODO: asymmetric detector
@@ -38,8 +38,8 @@
      ~Delphes3DGeometry() {}
 
-     void readFile(const char* filename, const char* ParticlePropagator="ParticlePropagator",
-                                         const char* TrackingEfficiency="ChargedHadronTrackingEfficiency",
-                                         const char* MuonEfficiency="MuonEfficiency",
-                                         const char* Calorimeters="Calorimeter");
+     void readFile(const char *filename, const char *ParticlePropagator="ParticlePropagator",
+                                         const char *TrackingEfficiency="ChargedHadronTrackingEfficiency",
+                                         const char *MuonEfficiency="MuonEfficiency",
+                                         const char *Calorimeters="Calorimeter");
 
      void setContingency(Double_t contingency) { contingency_ = contingency; }
@@ -48,5 +48,5 @@
      void setMuonSystemThickness(Double_t thickness) { muonSystem_thickn_ = thickness; }
 
-     TGeoVolume* getDetector(bool withTowers = true);
+     TGeoVolume *getDetector(bool withTowers = true);
 
      Double_t getTrackerRadius() const { return tk_radius_; }
@@ -59,7 +59,7 @@
    private:
      std::pair<Double_t, Double_t> addTracker(TGeoVolume *top);
-     std::pair<Double_t, Double_t> addCalorimeter(TGeoVolume *top, const char* name, Double_t innerBarrelRadius, Double_t innerBarrelLength, std::set< std::pair<Double_t, Int_t> >& caloBinning);
-     std::pair<Double_t, Double_t> addMuonDets(TGeoVolume *top, const char* name, Double_t innerBarrelRadius, Double_t innerBarrelLength);
-     void addCaloTowers(TGeoVolume *top, const char* name, Double_t innerBarrelRadius, Double_t innerBarrelLength, std::set< std::pair<Double_t, Int_t> >& caloBinning);
+     std::pair<Double_t, Double_t> addCalorimeter(TGeoVolume *top, const char *name, Double_t innerBarrelRadius, Double_t innerBarrelLength, std::set< std::pair<Double_t, Int_t> >& caloBinning);
+     std::pair<Double_t, Double_t> addMuonDets(TGeoVolume *top, const char *name, Double_t innerBarrelRadius, Double_t innerBarrelLength);
+     void addCaloTowers(TGeoVolume *top, const char *name, Double_t innerBarrelRadius, Double_t innerBarrelLength, std::set< std::pair<Double_t, Int_t> >& caloBinning);
 
    private:
@@ -72,6 +72,6 @@
      TGeoMedium *mudetmed_;
 
-     TAxis* etaAxis_;
-     TAxis* phiAxis_;
+     TAxis *etaAxis_;
+     TAxis *phiAxis_;
 
      Double_t contingency_;
@@ -91,5 +91,5 @@
      std::map<std::string, Double_t> muonSystem_etamax_;
      std::map<std::string, std::set< std::pair<Double_t, Int_t> > > caloBinning_;
-     
+
 };
 
Index: display/DelphesEventDisplay.cc
===================================================================
--- display/DelphesEventDisplay.cc	(revision 486c4c370ad65df39cd6950d6b5b3a60f5f8ee19)
+++ display/DelphesEventDisplay.cc	(revision 1180bc1b2e3d69ab9b461d8a74ba6973a22eef1f)
@@ -1,18 +1,18 @@
 /*
- *  Delphes: a framework for fast simulation of a generic collider experiment
- *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
+  * Delphes: a framework for fast simulation of a generic collider experiment
+  * Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
  *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
+  * This program is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation, either version 3 of the License, or
+  * (at your option) any later version.
  *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  * You should have received a copy of the GNU General Public License
+  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
@@ -21,13 +21,7 @@
 #include <utility>
 #include <algorithm>
+
 #include "TGeoManager.h"
 #include "TGeoVolume.h"
-#include "external/ExRootAnalysis/ExRootConfReader.h"
-#include "external/ExRootAnalysis/ExRootTreeReader.h"
-#include "display/DelphesCaloData.h"
-#include "display/DelphesBranchElement.h"
-#include "display/Delphes3DGeometry.h"
-#include "display/DelphesEventDisplay.h"
-#include "classes/DelphesClasses.h"
 #include "TEveElement.h"
 #include "TEveJetCone.h"
@@ -53,4 +47,21 @@
 #include "TCanvas.h"
 #include "TH1F.h"
+#include "TAxis.h"
+#include "TChain.h"
+#include "TGHtml.h"
+#include "TGStatusBar.h"
+
+#include "display/DelphesCaloData.h"
+#include "display/DelphesBranchElement.h"
+#include "display/Delphes3DGeometry.h"
+#include "display/DelphesEventDisplay.h"
+#include "display/DelphesDisplay.h"
+#include "display/Delphes3DGeometry.h"
+#include "display/DelphesHtmlSummary.h"
+#include "display/DelphesPlotSummary.h"
+
+#include "classes/DelphesClasses.h"
+#include "external/ExRootAnalysis/ExRootConfReader.h"
+#include "external/ExRootAnalysis/ExRootTreeReader.h"
 
 DelphesEventDisplay::DelphesEventDisplay()
@@ -98,5 +109,5 @@
    TEveManager::Create(kTRUE, "IV");
    fStatusBar_ = gEve->GetBrowser()->GetStatusBar();
-   TGeoManager* geom = gGeoManager;
+   TGeoManager *geom = gGeoManager;
 
    // build the detector
@@ -108,11 +119,11 @@
    etaAxis_ = det3D.getCaloAxes().first;
    phiAxis_ = det3D.getCaloAxes().second;
-   TGeoVolume* top = det3D.getDetector(false);
+   TGeoVolume *top = det3D.getDetector(false);
    geom->SetTopVolume(top);
    TEveElementList *geometry = new TEveElementList("Geometry");
-   TObjArray* nodes = top->GetNodes();
+   TObjArray *nodes = top->GetNodes();
    TIter itNodes(nodes);
-   TGeoNode* nodeobj;
-   TEveGeoTopNode* node;
+   TGeoNode *nodeobj;
+   TEveGeoTopNode *node;
    while((nodeobj = (TGeoNode*)itNodes.Next())) {
      node = new TEveGeoTopNode(gGeoManager,nodeobj);
@@ -131,7 +142,7 @@
    // prepare data collections
    readConfig(configFile, elements_);
-   for(std::vector<DelphesBranchBase*>::iterator element = elements_.begin(); element<elements_.end(); ++element) {
-     DelphesBranchElement<TEveTrackList>*   item_v1 = dynamic_cast<DelphesBranchElement<TEveTrackList>*>(*element);
-     DelphesBranchElement<TEveElementList>* item_v2 = dynamic_cast<DelphesBranchElement<TEveElementList>*>(*element);
+   for(std::vector<DelphesBranchBase *>::iterator element = elements_.begin(); element<elements_.end(); ++element) {
+     DelphesBranchElement<TEveTrackList> *item_v1 = dynamic_cast<DelphesBranchElement<TEveTrackList>*>(*element);
+     DelphesBranchElement<TEveElementList> *item_v2 = dynamic_cast<DelphesBranchElement<TEveElementList>*>(*element);
      if(item_v1) gEve->AddElement(item_v1->GetContainer());
      if(item_v2) gEve->AddElement(item_v2->GetContainer());
@@ -144,7 +155,7 @@
    delphesDisplay_->ImportGeomRhoZ(geometry);
    // find the first calo data and use that to initialize the calo display
-   for(std::vector<DelphesBranchBase*>::iterator data=elements_.begin();data<elements_.end();++data) {
+   for(std::vector<DelphesBranchBase *>::iterator data=elements_.begin();data<elements_.end();++data) {
      if(TString((*data)->GetType())=="Tower") { // we could also use GetClassName()=="DelphesCaloData"
-       DelphesCaloData* container = dynamic_cast<DelphesBranchElement<DelphesCaloData>*>((*data))->GetContainer();
+       DelphesCaloData *container = dynamic_cast<DelphesBranchElement<DelphesCaloData>*>((*data))->GetContainer();
        assert(container);
        TEveCalo3D *calo3d = new TEveCalo3D(container);
@@ -182,7 +193,7 @@
    ExRootConfParam branches = confReader->GetParam("TreeWriter::Branch");
    Int_t nBranches = branches.GetSize()/3;
-   DelphesBranchElement<TEveTrackList>* tlist;
-   DelphesBranchElement<DelphesCaloData>* clist;
-   DelphesBranchElement<TEveElementList>* elist;
+   DelphesBranchElement<TEveTrackList> *tlist;
+   DelphesBranchElement<DelphesCaloData> *clist;
+   DelphesBranchElement<TEveElementList> *elist;
    // first loop with all but tracks
    for(Int_t b = 0; b<nBranches; ++b) {
@@ -273,5 +284,5 @@
 
    // update display
-   TEveElement* top = (TEveElement*)gEve->GetCurrentEvent();
+   TEveElement *top = (TEveElement*)gEve->GetCurrentEvent();
    delphesDisplay_->DestroyEventRPhi();
    delphesDisplay_->ImportEventRPhi(top);
@@ -356,10 +367,10 @@
 
    // add a tab on the left
-   TEveBrowser* browser = gEve->GetBrowser();
+   TEveBrowser *browser = gEve->GetBrowser();
    browser->SetWindowName("Delphes Event Display");
    browser->StartEmbedding(TRootBrowser::kLeft);
 
    // set the main title
-   TGMainFrame* frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600);
+   TGMainFrame *frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600);
    frmMain->SetWindowName("Delphes Event Display");
    frmMain->SetCleanup(kDeepCleanup);
@@ -371,9 +382,9 @@
    if(!gSystem->OpenDirectory(icondir)) 
      icondir = Form("%s/icons/", (const char*)gSystem->GetFromPipe("root-config --etcdir") );
-   TGGroupFrame* vf = new TGGroupFrame(frmMain,"Event navigation",kVerticalFrame | kFitWidth );
+   TGGroupFrame *vf = new TGGroupFrame(frmMain,"Event navigation",kVerticalFrame | kFitWidth );
    {
-     TGHorizontalFrame* hf = new TGHorizontalFrame(frmMain);
+     TGHorizontalFrame *hf = new TGHorizontalFrame(frmMain);
      {
-        TGPictureButton* b = 0;
+        TGPictureButton *b = 0;
 
         b = new TGPictureButton(hf, gClient->GetPicture(icondir+"GoBack.gif"));
@@ -381,5 +392,5 @@
         b->Connect("Clicked()", "DelphesEventDisplay", this, "Bck()");
 
-        TGNumberEntry* numberEntry = new TGNumberEntry(hf,0,9,-1,TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, 0, treeReader_->GetEntries());
+        TGNumberEntry *numberEntry = new TGNumberEntry(hf,0,9,-1,TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, 0, treeReader_->GetEntries());
         hf->AddFrame(numberEntry, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 2, 0, 10, 10));
         this->Connect("EventChanged(Int_t)","TGNumberEntry",numberEntry,"SetIntNumber(Long_t)");
@@ -394,5 +405,5 @@
      vf->AddFrame(hf, new TGLayoutHints(kLHintsExpandX , 2, 2, 2, 2));
 
-     TGHProgressBar* progress = new TGHProgressBar(frmMain, TGProgressBar::kFancy, 100);
+     TGHProgressBar *progress = new TGHProgressBar(frmMain, TGProgressBar::kFancy, 100);
      progress->SetMax( treeReader_->GetEntries());
      progress->ShowPosition(kTRUE, kFALSE, "Event %.0f");
@@ -418,5 +429,5 @@
    // the summary tab
    htmlSummary_ = new DelphesHtmlSummary("Delphes Event Display Summary Table");
-   TEveWindowSlot* slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
+   TEveWindowSlot *slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
    gHtml_ = new TGHtml(0, 100, 100);
    TEveWindowFrame *wf = slot->MakeFrame(gHtml_);
@@ -426,5 +437,5 @@
    // plot tab
    slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
-   TEveWindowTab* tab = slot->MakeTab();
+   TEveWindowTab *tab = slot->MakeTab();
    tab->SetElementName("Summary plots");
    tab->SetShowTitleBar(kFALSE);
@@ -435,3 +446,40 @@
 }
 
-
+void DelphesEventDisplay::Fwd() {  
+  if (event_id_ < treeReader_->GetEntries() - 2) {
+     EventChanged(event_id_+1);
+  } else {
+     printf("Already at last event.\n");
+  }
+}
+
+void DelphesEventDisplay::Bck() {
+  if (event_id_ > 0) {
+     EventChanged(event_id_-1);
+  } else {
+     printf("Already at first event.\n");
+  }
+}
+
+void DelphesEventDisplay::PreSetEv(char *ev) {
+  event_id_tmp_ = Int_t(atoi(ev));
+}
+
+void DelphesEventDisplay::GoTo() {
+  if (event_id_tmp_>=0 && event_id_tmp_ < treeReader_->GetEntries()-1) {
+    EventChanged(event_id_tmp_);
+  } else {
+    printf("Error: no such event.\n");
+  }
+}
+
+void DelphesEventDisplay::InitSummaryPlots() {
+  plotSummary_->FillSample(treeReader_, event_id_);
+  plotSummary_->FillEvent();
+  plotSummary_->Draw();
+}
+
+void DelphesEventDisplay::DisplayProgress(Int_t p) { 
+  fStatusBar_->SetText(Form("Processing... %d %%",p), 1);
+  gSystem->ProcessEvents();
+}
Index: display/DelphesEventDisplay.h
===================================================================
--- display/DelphesEventDisplay.h	(revision 486c4c370ad65df39cd6950d6b5b3a60f5f8ee19)
+++ display/DelphesEventDisplay.h	(revision 1180bc1b2e3d69ab9b461d8a74ba6973a22eef1f)
@@ -1,18 +1,18 @@
 /*
- *  Delphes: a framework for fast simulation of a generic collider experiment
- *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
+  * Delphes: a framework for fast simulation of a generic collider experiment
+  * Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
  *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
+  * This program is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation, either version 3 of the License, or
+  * (at your option) any later version.
  *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  * You should have received a copy of the GNU General Public License
+  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
@@ -21,27 +21,24 @@
 
 #include <vector>
-#include <iostream>
-#include "external/ExRootAnalysis/ExRootTreeReader.h"
-#include "display/DelphesDisplay.h"
-#include "display/Delphes3DGeometry.h"
-#include "display/DelphesHtmlSummary.h"
-#include "display/DelphesPlotSummary.h"
-#include "TSystem.h"
-#include "TChain.h"
-#include "TAxis.h"
-#include "TGHtml.h"
-#include "TClonesArray.h"
-#include "TGStatusBar.h"
-#include "TGNumberEntry.h"
-#include "TGProgressBar.h"
-#include <RQ_OBJECT.h>
 
+#include "Rtypes.h"
+#include "RQ_OBJECT.h"
 
+class TAxis;
+class TChain;
+class TGHtml;
+class TGStatusBar;
+class DelphesDisplay;
+class Delphes3DGeometry;
+class DelphesBranchBase;
+class DelphesHtmlSummary;
+class DelphesPlotSummary;
+class ExRootTreeReader;
 
 /*
- * assembly.C: sauvegarde as shape-extract -> implement in the geometry class (read/write)
- * histobrowser.C: intÃ©gration d'histogrammes dans le display (on pourrait avoir Pt, eta, phi pour les principales collections)
- * also from alice_esd: summary html table
- * 
+  *assembly.C: sauvegarde as shape-extract -> implement in the geometry class (read/write)
+  *histobrowser.C: intÃ©gration d'histogrammes dans le display (on pourrait avoir Pt, eta, phi pour les principales collections)
+  *also from alice_esd: summary html table
+  *
  */
 
@@ -59,5 +56,5 @@
     void make_gui();
     void load_event();
-    void readConfig(const char *configFile, std::vector<DelphesBranchBase*>& elements);
+    void readConfig(const char *configFile, std::vector<DelphesBranchBase *>& elements);
 
     // Configuration and global variables.
@@ -67,52 +64,25 @@
     Double_t tkRadius_, totRadius_, tkHalfLength_, muHalfLength_, bz_;
     TAxis *etaAxis_, *phiAxis_;
-    TChain* chain_;
-    std::vector<DelphesBranchBase*> elements_;
+    TChain *chain_;
+    std::vector<DelphesBranchBase *> elements_;
     DelphesDisplay *delphesDisplay_;
     DelphesHtmlSummary *htmlSummary_;
     TGHtml *gHtml_;
     DelphesPlotSummary *plotSummary_;
-    TGStatusBar* fStatusBar_;
+    TGStatusBar *fStatusBar_;
     
     // gui controls
   public:
-     void Fwd() {  
-        if (event_id_ < treeReader_->GetEntries() - 2) {
-           EventChanged(event_id_+1);
-        } else {
-           printf("Already at last event.\n");
-        }
-     }
+     void Fwd();
 
-     void Bck() {
-        if (event_id_ > 0) {
-           EventChanged(event_id_-1);
-        } else {
-           printf("Already at first event.\n");
-        }
-     }
+     void Bck();
 
-    void PreSetEv(char* ev) {
-      event_id_tmp_ = Int_t(atoi(ev));
-    }
+    void PreSetEv(char *ev);
 
-    void GoTo() {
-      if (event_id_tmp_>=0 && event_id_tmp_ < treeReader_->GetEntries()-1) {
-        EventChanged(event_id_tmp_);
-      } else {
-        printf("Error: no such event.\n");
-      }
-    }
+    void GoTo();
 
-    void InitSummaryPlots() {
-      plotSummary_->FillSample(treeReader_, event_id_);
-      plotSummary_->FillEvent();
-      plotSummary_->Draw();
-    }
+    void InitSummaryPlots();
 
-    void DisplayProgress(Int_t p) { 
-         fStatusBar_->SetText(Form("Processing... %d %%",p), 1);
-         gSystem->ProcessEvents();
-    }
+    void DisplayProgress(Int_t p);
 };
 
