Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 585)
+++ trunk/MagicSoft/Mars/Changelog	(revision 586)
@@ -1,3 +1,19 @@
                                                                   -*-*- END -*-*-
+ 2000/01/22: Harald Kornmayer
+
+   *  started with the development of a EventDisplay Utitliy. 
+      Therefore I added the following files. 
+
+      meventdisp/EvtDispIncl.h
+      meventdisp/EvtDispLinkDef.h
+      meventdisp/MGFadcDisp.cc
+      meventdisp/MGFadcDisp.h
+      meventdisp/Makefile
+
+      Also a few of the older files where slightly changed. 
+      ./Makefile
+      ./Makefile.rules
+      mraw/MRawEvtData.
+      
 
  2000/01/19: Thomas Bretz
Index: trunk/MagicSoft/Mars/meventdisp/EvtDispIncl.h
===================================================================
--- trunk/MagicSoft/Mars/meventdisp/EvtDispIncl.h	(revision 586)
+++ trunk/MagicSoft/Mars/meventdisp/EvtDispIncl.h	(revision 586)
@@ -0,0 +1,25 @@
+#ifndef __CINT__
+#include "MParList.h"
+#include "MRawRunHeader.h"
+#include "MRawEvtHeader.h"
+#include "MTime.h"
+#include "MRawEvtData.h"
+#include "MRawCrateArray.h"
+#include "MReadTree.h"
+
+
+#include <TGButton.h>       // TGPictureButton
+#include <TGTab.h>          // TGTab
+#include <TGMenu.h>         // TGPopupMenu
+#include <TGMsgBox.h>       // TGMsgBox
+#include <TGListBox.h>      // TGListBox
+#include <TGListView.h>     // TGListBox
+#include <TGSplitter.h>     // TGHorizontal3DLine
+#include <TGSlider.h>       // TGVSlider
+#include <TGLabel.h>        // TGLabel
+#include <TRootEmbeddedCanvas.h>        // TGRootEmbeddedCanvas
+#include <TCanvas.h>        // TCanvas
+#include <TGTextEntry.h>
+
+#endif // __CINT__
+
Index: trunk/MagicSoft/Mars/meventdisp/EvtDispLinkDef.h
===================================================================
--- trunk/MagicSoft/Mars/meventdisp/EvtDispLinkDef.h	(revision 586)
+++ trunk/MagicSoft/Mars/meventdisp/EvtDispLinkDef.h	(revision 586)
@@ -0,0 +1,9 @@
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#pragma link C++ class MGFadcDisp ;
+
+#endif
Index: trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.cc
===================================================================
--- trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.cc	(revision 586)
+++ trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.cc	(revision 586)
@@ -0,0 +1,417 @@
+#include "MGFadcDisp.h"
+
+#include <TGButton.h>      // TGPictureButton
+#include <TGLabel.h>       // TGLabel
+#include <TGSplitter.h>    // TGHorizontal3DLine
+#include <TGTab.h>         // TGTab
+#include <TGListBox.h>     // TGListBox
+#include <TGSlider.h>      // TGVSlider
+#include <TRootEmbeddedCanvas.h>      // TRootEmbeddedCanvas
+#include <TCanvas.h>
+#include <TGTextEntry.h>   
+#include <TGMsgBox.h>
+
+
+
+#include "MParList.h"
+#include "MRawRunHeader.h"
+#include "MRawEvtHeader.h"
+#include "MTime.h"
+#include "MRawEvtData.h"
+#include "MRawCrateArray.h"
+#include "MReadTree.h"
+#include "MRawEvtPixelIter.h"
+
+ClassImp(MGFadcDisp)
+
+
+MGFadcDisp::MGFadcDisp(char *filename, char *treename, 
+		       const TGWindow *p, const TGWindow *main, 
+		       UInt_t w, UInt_t h ) 
+        : TGTransientFrame(p, main, w, h )  
+{
+  //   default constructor 
+
+  //   first connect the file with this Object
+  
+  plist = new MParList(); 
+
+  runheader = new MRawRunHeader();
+  plist->AddToList(runheader);
+
+  evtheader = new MRawEvtHeader();
+  plist->AddToList(evtheader);
+  evttime   = new MTime();
+  plist->AddToList(evttime);
+  evtdata   = new MRawEvtData();
+  plist->AddToList(evtdata);
+  evtcrate  = new MRawCrateArray();
+  plist->AddToList(evtcrate);
+
+  
+  readin  =  new MReadTree ( filename, treename ) ; 
+  readin->PreProcess( plist ) ; 
+
+  //
+  //   the top part of the window
+  //
+  fFrameTop = new TGVerticalFrame (this, 300, 100 ) ; 
+
+  fTop1 = new TGHorizontalFrame (fFrameTop, 300, 100 ) ;
+  
+  fLabelFile = new TGLabel(fTop1, new TGString("File:") );
+  fTop1->AddFrame( fLabelFile, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ; 
+
+  fNameFile = new TGLabel(fTop1, new TGString( filename ) );
+  fTop1->AddFrame( fNameFile, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ; 
+
+  fLabelTree = new TGLabel(fTop1, new TGString("Tree:") );
+  fTop1->AddFrame( fLabelTree, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ; 
+
+  fNameTree = new TGLabel(fTop1, new TGString( treename ) );
+  fTop1->AddFrame( fNameTree, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ;
+
+  fFrameTop->AddFrame(fTop1,new TGLayoutHints (kLHintsTop ) ) ; 
+
+  fTop2 = new TGHorizontalFrame (fFrameTop, 300, 100 ) ;
+  
+  fButtonPrevEvt = new TGTextButton (fTop2, "<< Previous Event", M_PREVEVT ) ;
+  fButtonPrevEvt->Associate(this) ; 
+  fTop2->AddFrame (fButtonPrevEvt, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10  ) ) ; 
+  
+  fLabelEvtNr = new TGLabel(fTop2, new TGString("Event: ") );
+  fTop2->AddFrame( fLabelEvtNr, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ; 
+
+  fTxtEvtNr = new TGTextEntry(fTop2, fTxtBufEvtNr = new TGTextBuffer(100), 9999 );
+  fTxtEvtNr->Resize(60, fTxtEvtNr->GetDefaultHeight());
+  fTop2->AddFrame(fTxtEvtNr, new TGLayoutHints(kLHintsTop | kLHintsLeft,
+                                                       5, 5, 5, 5)); 
+
+  char wortdummy[100] ; 
+  sprintf (wortdummy, "out of %d Events", readin->GetEntries() ) ; 
+  fLabelTotNr = new TGLabel(fTop2, new TGString( wortdummy ) );
+  fTop2->AddFrame( fLabelTotNr, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10)) ; 
+  
+  fButtonNextEvt = new TGTextButton (fTop2, "Next Event >>", M_NEXTEVT ) ; 
+  fButtonNextEvt->Associate(this) ; 
+  fTop2->AddFrame (fButtonNextEvt, new TGLayoutHints (kLHintsLeft, 10, 10, 10, 10  ) ) ; 
+
+  
+  fFrameTop->AddFrame(fTop2,new TGLayoutHints ( kLHintsCenterX ) ) ; 
+
+  
+
+  AddFrame(fFrameTop, new TGLayoutHints (kLHintsTop | kLHintsCenterX ) ) ;   
+  
+  //   a line between top and mid frame
+
+  fLineSep1 = new TGHorizontal3DLine(this) ; 
+  AddFrame(fLineSep1, new TGLayoutHints(kLHintsTop | kLHintsExpandX) );
+
+  //
+  //   the middle part of the window
+  //
+  
+  fFrameMid = new TGHorizontalFrame (this, 300, 100 ) ; 
+  
+  //   the left part is the control tab enviroment
+  
+  fTabControl = new TGTab(fFrameMid, 300, 300);
+  TGCompositeFrame *tControl = fTabControl->AddTab("PixelList");     
+  tControl->ChangeOptions ( kHorizontalFrame ) ; 
+
+
+  fPixelList = new TGListBox(tControl, M_PIXELLIST ) ; 
+  fPixelList->Associate(this) ; 
+  tControl->AddFrame(fPixelList, new TGLayoutHints(kLHintsExpandY | kLHintsLeft, 5, 5, 5, 5 ) ) ; 
+  fPixelList->Resize(80, 230 ) ;
+
+  fMid1 = new TGVerticalFrame (tControl, 300, 100 ) ; 
+  
+  
+  fButtonPrevPix = new TGTextButton (fMid1, "<< Prev Pixel", 9999 ) ; 
+  fMid1->AddFrame(fButtonPrevPix, new TGLayoutHints(kLHintsRight) ) ; 
+
+  fPixSlider = new TGVSlider (fMid1, 200, kSlider1 | kScaleBoth, 9999 );
+  fPixSlider->Associate(this);
+  fPixSlider->SetRange(0, 576);
+  fMid1->AddFrame(fPixSlider, new TGLayoutHints(kLHintsCenterX | kLHintsExpandY));
+  
+  fButtonNextPix = new TGTextButton (fMid1, "Next Pixel >>", 9999 ) ; 
+  fMid1->AddFrame(fButtonNextPix, new TGLayoutHints(kLHintsRight) ) ; 
+
+  tControl->AddFrame(fMid1, new TGLayoutHints(kLHintsRight | kLHintsExpandY, 5, 5, 5, 5)) ; 
+  
+  fFrameMid-> AddFrame(fTabControl, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandY, 10, 10, 10 ,10 ) );  
+
+  //   the right part is the display tab enviroment
+  
+  fTabDisplay = new TGTab(fFrameMid, 300, 300);
+  TGCompositeFrame *tDisplay = fTabDisplay->AddTab("Digital Scope");     
+
+  fECanDigScope = new TRootEmbeddedCanvas("fECanDigScope", tDisplay, 400, 400 ) ;
+  tDisplay->AddFrame( fECanDigScope, new TGLayoutHints ( kLHintsCenterX | kLHintsCenterY | kLHintsExpandX | kLHintsExpandY ) ) ; 
+
+  fCan = fECanDigScope->GetCanvas() ;
+        
+
+  fFrameMid-> AddFrame(fTabDisplay, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandY | kLHintsExpandX  , 10, 10, 10 ,10 ) );  
+  
+  
+  AddFrame(fFrameMid, new TGLayoutHints (kLHintsExpandY | kLHintsExpandX ) ) ;   
+
+  //   a line between mid and low frame
+  
+  fLineSep2 = new TGHorizontal3DLine(this) ; 
+  AddFrame(fLineSep2, new TGLayoutHints(kLHintsTop | kLHintsExpandX) );
+
+   //   the low part of the window
+  //
+  fFrameLow = new TGHorizontalFrame (this, 300, 100 ) ; 
+ 
+  
+  fButtonPrint = new TGTextButton(fFrameLow, "Print", 9999) ; 
+  fFrameLow->AddFrame( fButtonPrint, new TGLayoutHints(kLHintsLeft , 10, 10, 10, 10 ) )  ; 
+
+  fButtonClose = new TGTextButton(fFrameLow, "Close", 9999) ; 
+  fFrameLow->AddFrame( fButtonClose, new TGLayoutHints(kLHintsLeft, 10, 10, 10, 10 ) )  ; 
+
+ 
+  AddFrame(fFrameLow, new TGLayoutHints (kLHintsTop ) ) ;   
+
+  
+
+  //
+  //   Map the window, set up the layout, etc. 
+  //
+
+  SetWMSizeHints(450, 400, 1000, 1000, 10, 10 ) ;      // set the smallest and biggest size of the Main frame
+
+  MapSubwindows();
+  
+  Layout();
+  
+  SetWindowName("FadcDisplay");
+  SetIconName("FadcDisp");
+  
+  MapWindow();
+
+  //
+  //   readin the first event and update the window
+  //
+
+  readin->GetEvent() ; 
+  CreatePixelList() ; 
+  UpdateEventCounter() ; 
+
+}
+
+
+MGFadcDisp::~MGFadcDisp()
+{
+
+  delete  fButtonPrint ; 
+  delete  fButtonClose ; 
+
+  delete  fCan ; 
+  delete  fECanDigScope ; 
+  delete  fTabDisplay ; 
+
+  delete  fPixSlider ; 
+  delete  fButtonPrevPix ; 
+  delete  fButtonNextPix ; 
+  delete  fMid1 ; 
+  delete  fPixelList; 
+  delete  fTabControl  ; 
+
+  delete  fLabelEvtNr ; 
+  delete  fLabelTotNr ; 
+  delete  fTxtEvtNr ; 
+  delete  fTxtBufEvtNr ; 
+  delete  fButtonNextEvt ; 
+  delete  fButtonPrevEvt ; 
+  delete  fLabelTree ; 
+  delete  fNameTree ; 
+  delete  fNameFile ; 
+  delete  fLabelFile ; 
+  delete  fTop2 ; 
+  delete  fTop1 ; 
+
+  delete  fFrameLow ; 
+  delete  fLineSep2 ; 
+  delete  fFrameMid ; 
+  delete  fLineSep1 ; 
+  delete  fFrameTop ; 
+}
+
+
+void MGFadcDisp::CreatePixelList() {
+  //
+  //   after a new event is read in one has to update
+  //   the list of pixels in the fPixelList (TGListBox)
+  //
+  
+  Int_t redraw ; 
+
+  MRawEvtPixelIter fPixelIter( evtdata );
+  char wortdummy[100] ; 
+
+  //   put the selection of the last event in memory
+  redraw = fPixelList->GetSelected() ; 
+  
+  cout << "redraw: " << redraw << endl ; 
+
+  fPixelList->RemoveEntries(0, fPixelsinList) ; 
+  fPixelsinList = 0 ; 
+
+  while ( fPixelIter.Next() )
+    {
+      //      cout << fPixelIter.GetPixelId() << endl ; 
+      sprintf( wortdummy, "%d", fPixelIter.GetPixelId() ) ; 
+      
+      fPixelList->AddEntry( wortdummy, fPixelsinList++ ) ; 
+    }
+
+  fPixelList->MapSubwindows() ; 
+  fPixelList->Layout() ; 
+
+  // check if the pixel from last event also occurs in this event
+
+  Bool_t neuzeich = kFALSE ;  
+  fPixelIter.Reset() ; 
+
+  while ( fPixelIter.Next() )
+    {
+      if (fPixelIter.GetPixelId() == redraw ) 
+	neuzeich = kTRUE ; 
+    }
+
+  if ( neuzeich == kTRUE ) 
+    {
+      sprintf(wortdummy, "GRAPH%d", redraw ) ; 
+      
+      fCan->Clear() ; 
+      fCan->cd() ; 
+      
+      evtdata->Draw(wortdummy) ; 
+      
+      fCan->Modified() ; 
+      fCan->Update() ; 
+      
+      fPixelList->Select(redraw, kTRUE) ; 
+    }
+  else 
+    {
+      fCan->Clear() ; 
+      fCan->cd() ; 
+      fCan->Modified() ; 
+      fCan->Update() ; 
+      
+    }
+  
+  
+}
+
+void MGFadcDisp::UpdateEventCounter() 
+{
+  //     Update the event counter 
+  
+  char wortdummy[256] ; 
+    
+  sprintf (wortdummy, "%d", readin->GetEventNum() )  ; 
+  
+  fTxtEvtNr->SetText(wortdummy) ; 
+
+
+
+}
+
+void MGFadcDisp::ReadinEvent(Int_t iEvt)
+{
+  Int_t   buttons = 4, retval = 0 ;
+
+  //  first check if the new event is in the range of possible events
+  
+  if ( (iEvt < 0) || (iEvt>= readin->GetEntries()) ) {
+    new TGMsgBox(fClient->GetRoot(), this,
+  		 "WARNING!",
+  		 "The event number is out of range!!!",
+  		 kMBIconExclamation, buttons, &retval); 
+    return ; 
+  }
+  else {
+    readin->SetEventNum(iEvt) ; 
+    readin->GetEvent() ; 
+    CreatePixelList() ; 
+    UpdateEventCounter() ; 
+  }
+}  
+
+
+
+  
+Bool_t MGFadcDisp::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2) 
+{
+  //------------------------------------------------------------------
+  //
+  //    ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
+  //
+  // Processes information from all GUI items.
+  // Selecting an item usually generates an event with 4 parameters.
+  // The first two are packed into msg (first and second bytes).
+  // The other two are parm1 and parm2.
+  //
+  //------------------------------------------------------------------
+  char wortdummy[256] ; 
+
+  switch(GET_MSG(msg)) 
+    {
+    case kC_COMMAND:
+    
+      switch(GET_SUBMSG(msg)) 
+	{
+	  
+	case kCM_BUTTON:
+	  
+	  switch (parm1)
+	    {
+	    case M_PREVEVT:
+
+	      ReadinEvent(readin->GetEventNum()-1 ) ; 
+ 
+	      break; 
+	      
+	    case M_NEXTEVT:
+	      
+	      ReadinEvent(readin->GetEventNum()+1 ) ; 
+
+	      break; 
+	      
+	    }
+	  
+	case kCM_LISTBOX:
+	  switch (parm1) 
+	    {
+	    case M_PIXELLIST:
+	      sprintf(wortdummy, "GRAPH%d",fPixelList->GetSelected() ) ; 
+
+	      fCan->Clear() ; 
+	      fCan->cd() ; 
+
+	      evtdata->Draw(wortdummy) ; 
+	      
+	      fCan->Modified() ; 
+	      fCan->Update() ; 
+
+	      
+	      break; 
+	    }
+	  break; 
+	  
+	}
+    default:
+      break;     
+    }
+
+  return kTRUE ; 
+}
Index: trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.h
===================================================================
--- trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.h	(revision 586)
+++ trunk/MagicSoft/Mars/meventdisp/MGFadcDisp.h	(revision 586)
@@ -0,0 +1,117 @@
+#ifndef MGFADCDISP_H
+#define MGFADCDISP_H
+
+#ifndef MAGIC_H
+#include "MAGIC.h"
+#endif
+
+#ifndef ROOT_TGFrame
+#include <TGFrame.h>
+#endif
+
+class MParList ; 
+class MRawRunHeader ; 
+class MRawEvtHeader ; 
+class MTime ; 
+class MRawEvtData ; 
+class MRawCrateArray ; 
+
+class MReadTree ; 
+
+class TGHorizontal3DLine;
+class TGLabel ; 
+class TGTextButton ; 
+class TGTab ; 
+class TGListBox ; 
+class TGVSlider; 
+class TRootEmbeddedCanvas ; 
+class TCanvas ; 
+class TGTextEntry ; 
+class TGTextBuffer ; 
+
+enum MGFadcDispCommand {
+  
+  M_PIXELLIST = 4201 , 
+  M_PREVEVT, 
+  M_NEXTEVT 
+  
+
+}; 
+
+//
+//
+
+class MGFadcDisp : public TGTransientFrame {
+
+ private: 
+
+  //
+  //     members to read in the file
+  //
+
+  MParList       *plist ; 
+  MRawRunHeader  *runheader ;  
+  MRawEvtHeader  *evtheader ; 
+  MTime          *evttime   ; 
+  MRawEvtData    *evtdata    ; 
+  MRawCrateArray *evtcrate  ; 
+
+  MReadTree *readin ; 
+  
+  //
+  //     members for the gui 
+  // 
+  
+  //    divide the whole frame in three subframes
+  
+  TGVerticalFrame    *fFrameTop ; 
+  TGHorizontalFrame  *fFrameMid, *fFrameLow ; 
+  TGHorizontal3DLine *fLineSep1, *fLineSep2 ;
+
+  //    members in the top frame
+
+  TGHorizontalFrame  *fTop1, *fTop2 ; 
+  TGLabel       *fLabelFile, *fNameFile,  *fLabelTree, *fNameTree ; 
+  TGTextButton  *fButtonPrevEvt, *fButtonNextEvt ; 
+  TGLabel       *fLabelEvtNr, *fLabelTotNr ; 
+  TGTextEntry          *fTxtEvtNr ;
+  TGTextBuffer         *fTxtBufEvtNr ; //!  no output for this member  
+                                       //   neccessary to compile  H.K.
+
+  //    members in the mid frame
+  
+  TGTab            *fTabControl ; 
+  TGListBox        *fPixelList  ; 
+  Int_t            fPixelsinList ; 
+  TGVerticalFrame  *fMid1 ; 
+  TGTextButton     *fButtonPrevPix, *fButtonNextPix ; 
+  TGVSlider        *fPixSlider ; 
+  
+  TGTab   *fTabDisplay ; 
+  TRootEmbeddedCanvas  *fECanDigScope ; 
+
+  TCanvas               *fCan ;
+  
+  //    members in the low frame
+
+  TGTextButton  *fButtonPrint, *fButtonClose ; 
+
+ public:
+  
+  MGFadcDisp(char *filename, char *treename, 
+	     const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h ) ; 
+
+  ~MGFadcDisp()  ; 
+
+  void CreatePixelList() ; 
+  void UpdateEventCounter() ; 
+  void ReadinEvent(Int_t iEvt) ; 
+
+  virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
+ 
+  ClassDef(MGFadcDisp, 1)
+}; 
+
+#endif
+
+
Index: trunk/MagicSoft/Mars/meventdisp/Makefile
===================================================================
--- trunk/MagicSoft/Mars/meventdisp/Makefile	(revision 586)
+++ trunk/MagicSoft/Mars/meventdisp/Makefile	(revision 586)
@@ -0,0 +1,123 @@
+#################################################################
+#
+#   makefile
+# 
+#   for the MARS software
+#
+##################################################################
+# @maintitle
+
+# @code
+
+#
+#  please change all system depend values in the 
+#  config.mk.${OSTYPE} file 
+#
+#
+include ../Makefile.conf.$(OSTYPE)
+include ../Makefile.conf.general
+
+# @endcode 
+
+# @code 
+
+LIB   = meventdisp.a
+
+#
+#  connect the include files defined in the config.mk file
+#
+INCLUDES = -I. -I../ -I../mbase -I../mraw
+
+#
+#  ----->>>   root libraries
+#
+
+ROOTLIBS   =  `root-config --libs`
+ROOTGLIBS  =  `root-config --glibs`
+ROOTCFLAGS =  `root-config --cflags`
+
+#
+#  compiler flags
+#
+
+CXXFLAGS  = $(ROOTCFLAGS) $(INCLUDES) $(OPTIM) $(DEBUG)
+CFLAGS    = $(CXXFLAGS)
+FFLAGS    = $(CXXFLAGS)
+
+#------------------------------------------------------------------------------
+
+#.SILENT:
+
+.SUFFIXES: .c .cc .cxx .h .hxx .o 
+
+
+SRCFILES = MGFadcDisp.cc
+
+
+SRCS    = $(SRCFILES)
+HEADERS = $(SRCFILES:.cc=.h)
+OBJS    = $(SRCFILES:.cc=.o) 
+
+############################################################
+
+all: $(LIB)
+
+depend:
+	@makedepend $(SRCS) $(INCLUDES) $(ROOTCFLAGS) \
+        -f../Makefile.depend 2> kk.kk ; cat kk.kk
+
+$(LIB): $(OBJS) EvtDispCint.o
+	@echo " - Building Library $(LIB) ... "
+	$(AR) $(LIB) *.o
+
+EvtDispCint.cc: $(HEADERS) 
+	@echo 
+	@echo " - Generating dictionary EvtDispCint.cc ..."
+
+	$(ROOTSYS)/bin/rootcint -f EvtDispCint.cc \
+	-c $(INCLUDES) $(HEADERS) EvtDispIncl.h EvtDispLinkDef.h 
+
+.cxx.o:	
+	@echo " - Compiling " $<
+	$(CXX) $(CXXFLAGS) -c $< -o $@
+
+.cc.o:	
+	@echo " - Compiling " $<
+	$(CXX) $(CXXFLAGS) -c $< -o $@
+
+.c.o:	
+	@echo " - Compiling " $<
+	$(CC) $(CFLAGS) -c $< -o $@
+
+#
+# The cleaning facility
+#
+
+rmlib:	
+	@echo "Removing libraries..."
+	@rm -f lib*.a
+
+rmcint:	
+	@echo "Removing cint-stuff..."
+	@rm -f EvtDispCint.*
+
+rmobjs:	
+	@echo "Removing object files..."
+	@rm -f *.o
+
+rmbin:	
+	@echo "Removing binary files..."
+	@rm -f core
+
+
+clean:	rmlib rmcint rmobjs rmbin
+
+mrproper:	clean
+	@echo "Removing *~ kk.kk html/..."
+	@rm -f *~ kk.kk
+
+cflags: 
+	@echo $(INCLUDES) $(CXXFLAGS)
+
+# @endcode
+
