Index: trunk/MagicSoft/Mars/mhist/MHFadcCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHFadcCam.cc	(revision 1651)
+++ trunk/MagicSoft/Mars/mhist/MHFadcCam.cc	(revision 1652)
@@ -16,5 +16,5 @@
 !
 !
-!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
+!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
 !   Author(s): Harald Kornmayer 1/2001
 !
@@ -34,4 +34,7 @@
 #include "MHFadcCam.h"
 
+#include "MLog.h"
+#include "MLogManip.h"
+
 #include "MRawEvtData.h"
 #include "MRawEvtPixelIter.h"
@@ -44,5 +47,6 @@
 //  creates an a list of histograms for all pixels and both gain channels
 //
-MHFadcCam::MHFadcCam(const char *name, const char *title)
+MHFadcCam::MHFadcCam(MHFadcPix::Type_t t, const char *name, const char *title)
+    : fNumHiGains(-1), fNumLoGains(-1), fType(t)
 {
     //
@@ -60,5 +64,5 @@
 
     for (Int_t i=0; i<577; i++)
-        (*fArray)[i] = new MHFadcPix(i+1);
+        (*fArray)[i] = new MHFadcPix(i+1, fType);
 }
 
@@ -89,31 +93,36 @@
 Bool_t MHFadcCam::Fill(const MParContainer *par)
 {
-    MRawEvtData *evt = (MRawEvtData*)par;
-
-    MRawEvtPixelIter pixel(evt);
-
-    const Int_t nhisamples = evt->GetNumHiGainSamples();
-    const Int_t nlosamples = evt->GetNumLoGainSamples();
-
-    while (pixel.Next())
-    {
-        const UInt_t id = pixel.GetPixelId();
-
-        for (Int_t i=0; i<nhisamples; i++)
-            FillHi(id, pixel.GetHiGainSamples()[i]);
-
-        if (!pixel.HasLoGain())
-            continue;
-
-        for (Int_t i=0; i<nlosamples; i++)
-            FillLo(id, pixel.GetLoGainSamples()[i]);
-    }
-
-    return kTRUE;
+    return Fill((MRawEvtData*)par);
 }
 
 Bool_t MHFadcCam::Fill(const MRawEvtData *par)
 {
-    return Fill((MParContainer*)par);
+    if (fType==MHFadcPix::kSlices)
+    {
+        const Int_t nlo = par->GetNumLoGainSamples();
+        const Int_t nhi = par->GetNumHiGainSamples();
+
+        //
+        // First call
+        //
+        if (fNumHiGains<0)
+            for (int i=0; i<577; i++)
+                (*this)[i].Init(nhi, nlo);
+        else
+            if (fNumHiGains!=nhi || fNumLoGains!=nlo)
+            {
+                *fLog << err << dbginf << "ERROR - Number of lo- or hi-gain samples changed." << endl;
+                return kFALSE;
+            }
+
+        fNumHiGains = nhi;
+        fNumLoGains = nlo;
+    }
+
+    for (int i=0; i<577; i++)
+        if (!(*this)[i].Fill(*par))
+            return kFALSE;
+
+    return kTRUE;
 }
 
Index: trunk/MagicSoft/Mars/mhist/MHFadcCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHFadcCam.h	(revision 1651)
+++ trunk/MagicSoft/Mars/mhist/MHFadcCam.h	(revision 1652)
@@ -24,19 +24,24 @@
     TObjArray *fArray;	//-> List of Lo/Hi gain Histograms
 
-    void FillHi(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillHi(data); }
-    void FillLo(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillLo(data); }
+    //    void FillHi(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillHi(data); }
+    //    void FillLo(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillLo(data); }
+
+    Int_t fNumHiGains; //!
+    Int_t fNumLoGains; //!
+
+    MHFadcPix::Type_t fType; //!
 
 public:
-    MHFadcCam(const char *name=NULL, const char *title=NULL);
+    MHFadcCam(MHFadcPix::Type_t t=MHFadcPix::kValue, const char *name=NULL, const char *title=NULL);
     ~MHFadcCam();
 
-    MHFadcPix *operator[](UInt_t i) { return (MHFadcPix*)(fArray->At(i)); }
-    const MHFadcPix *operator[](UInt_t i) const { return (MHFadcPix*)(fArray->At(i)); }
+    MHFadcPix &operator[](UInt_t i) { return *(MHFadcPix*)(fArray->At(i)); }
+    const MHFadcPix &operator[](UInt_t i) const { return *(MHFadcPix*)(fArray->At(i)); }
 
-    TH1F *GetHistHi(UInt_t i)  { return (*this)[i]->GetHistHi(); }
-    TH1F *GetHistLo(UInt_t i)  { return (*this)[i]->GetHistLo(); }
+    TH1F *GetHistHi(UInt_t i)  { return (*this)[i].GetHistHi(); }
+    TH1F *GetHistLo(UInt_t i)  { return (*this)[i].GetHistLo(); }
 
-    const TH1F *GetHistHi(UInt_t i) const { return (*this)[i]->GetHistHi(); }
-    const TH1F *GetHistLo(UInt_t i) const { return (*this)[i]->GetHistLo(); }
+    const TH1F *GetHistHi(UInt_t i) const { return (*this)[i].GetHistHi(); }
+    const TH1F *GetHistLo(UInt_t i) const { return (*this)[i].GetHistLo(); }
 
     Bool_t Fill(const MParContainer *par);
@@ -51,5 +56,5 @@
     void DrawLo(UInt_t i)      { GetHistLo(i)->Draw(); }
 
-    void DrawPix(UInt_t i)     { (*this)[i]->Draw(); }
+    void DrawPix(UInt_t i)     { (*this)[i].Draw(); }
 
     Int_t GetEntries() const   { return fArray->GetEntries(); }
Index: trunk/MagicSoft/Mars/mhist/MHFadcPix.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHFadcPix.cc	(revision 1651)
+++ trunk/MagicSoft/Mars/mhist/MHFadcPix.cc	(revision 1652)
@@ -16,8 +16,8 @@
 !
 !
-!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
+!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
 !   Author(s): Harald Kornmayer 1/2001
 !
-!   Copyright: MAGIC Software Development, 2000-2001
+!   Copyright: MAGIC Software Development, 2000-2002
 !
 !
@@ -28,15 +28,17 @@
 // MHFadcPix
 //
-// This container stores a hostogram to display an Fadc Spekrtum.
+// This container stores a histogram to display an Fadc Spektrum.
 // The spektrum of all the values measured by the Fadcs.
 //
 ///////////////////////////////////////////////////////////////////////
-
 #include "MHFadcPix.h"
 
-#include <TH1.h>
 #include <TPad.h>
 
 #include "MH.h"
+#include "MBinning.h"
+
+#include "MRawEvtData.h"
+#include "MRawEvtPixelIter.h"
 
 ClassImp(MHFadcPix);
@@ -46,40 +48,77 @@
 // Creates the histograms for lo and hi gain of one pixel
 //
-MHFadcPix::MHFadcPix(UInt_t pixid) : fPixId(pixid)
+MHFadcPix::MHFadcPix(UInt_t pixid, Type_t t)
+    : fPixId(pixid), fType(t)
 {
-    fHistHi =  new TH1F(pixid ? Form("HiGain%03d", pixid) : "HiGain",
-                        pixid ? Form("Hi Gain Pixel #%d", pixid) : "Hi Gain Samples",
-                        256, -.5, 255.5);
+    fHistHi.SetName(pixid ? Form("HiGain%03d", pixid) : "HiGain");
+    fHistHi.SetTitle(pixid ? Form("Hi Gain Pixel #%d", pixid) : "Hi Gain Samples");
+    fHistHi.SetDirectory(NULL);
 
-    fHistHi->SetDirectory(NULL);
-    fHistHi->SetXTitle("Signal/FADC Units");
-    fHistHi->SetYTitle("Count");
+    fHistLo.SetName(pixid ? Form("LoGain%03d", pixid) : "LoGain");
+    fHistLo.SetTitle(pixid ? Form("Lo Gain Pixel #%d", pixid) : "Lo Gain Samples");
+    fHistLo.SetDirectory(NULL);
 
-    fHistLo = new TH1F(pixid ? Form("LoGain%03d", pixid) : "LoGain",
-                       pixid ? Form("Lo Gain Pixel #%d", pixid) : "Lo Gain Samples",
-                       256, -.5, 255.5);
+    if (fType==kValue)
+    {
+        fHistHi.SetXTitle("Signal/FADC Units");
+        fHistLo.SetXTitle("Signal/FADC Units");
+        fHistHi.SetYTitle("Count");
+        fHistLo.SetYTitle("Count");
 
-    fHistLo->SetDirectory(NULL);
-    fHistLo->SetXTitle("Signal/FADC Units");
-    fHistLo->SetYTitle("Count");
+        MBinning bins;
+        bins.SetEdges(255, -.5, 255.5);
+
+        bins.Apply(fHistHi);
+        bins.Apply(fHistLo);
+    }
+    else
+    {
+        fHistHi.SetXTitle("Time/FADC Slices");
+        fHistLo.SetXTitle("Time/FADC Slices");
+        fHistLo.SetYTitle("Sum Signal/FADC Units");
+        fHistHi.SetYTitle("Sum Signal/FADC Units");
+    }
 }
 
-// --------------------------------------------------------------------------
-MHFadcPix::~MHFadcPix()
+void MHFadcPix::Init(Byte_t nhi, Byte_t nlo)
 {
-    delete fHistHi;
-    delete fHistLo;
+    MBinning bins;
+
+    bins.SetEdges(nhi, -.5, -.5+nhi);
+    bins.Apply(fHistHi);
+
+    bins.SetEdges(nlo, -.5, -.5+nlo);
+    bins.Apply(fHistLo);
 }
 
-// --------------------------------------------------------------------------
-void MHFadcPix::FillHi(Byte_t i)
+Bool_t MHFadcPix::Fill(const MRawEvtData &evt)
 {
-    fHistHi->Fill(i);
-}
+    MRawEvtPixelIter pixel((MRawEvtData*)&evt);
 
-// --------------------------------------------------------------------------
-void MHFadcPix::FillLo(Byte_t i)
-{
-    fHistLo->Fill(i);
+    if (!pixel.Jump(fPixId))
+        return kTRUE;
+
+    const Int_t nhisamples = evt.GetNumHiGainSamples();
+
+    if (fType==kValue)
+        for (Int_t i=0; i<nhisamples; i++)
+            fHistHi.Fill(pixel.GetHiGainSamples()[i]);
+    else
+        for (Int_t i=0; i<nhisamples; i++)
+            fHistHi.Fill(i, pixel.GetHiGainSamples()[i]);
+
+    if (!pixel.HasLoGain())
+        return kTRUE;
+
+    const Int_t nlosamples = evt.GetNumLoGainSamples();
+
+    if (fType==kValue)
+        for (Int_t i=0; i<nlosamples; i++)
+            fHistLo.Fill(pixel.GetLoGainSamples()[i]);
+    else
+        for (Int_t i=0; i<nlosamples; i++)
+            fHistLo.Fill(i, pixel.GetLoGainSamples()[i]);
+
+    return kTRUE;
 }
 
@@ -87,5 +126,5 @@
 void MHFadcPix::DrawHi()
 {
-    fHistHi->Draw();
+    fHistHi.Draw();
 }
 
@@ -93,5 +132,5 @@
 void MHFadcPix::DrawLo()
 {
-    fHistLo->Draw();
+    fHistLo.Draw();
 }
 
@@ -105,6 +144,6 @@
     MHFadcPix &pix = *(MHFadcPix*)TObject::Clone();
 
-    pix.fHistHi->SetDirectory(NULL);
-    pix.fHistLo->SetDirectory(NULL);
+    pix.fHistHi.SetDirectory(NULL);
+    pix.fHistLo.SetDirectory(NULL);
 
     return &pix;
@@ -116,5 +155,5 @@
     if (!gPad)
     {
-        const char *name  = StrDup(fPixId ? Form("Pixel #%d", fPixId) : "Pixel");
+        const char *name = StrDup(fPixId ? Form("Pixel #%d", fPixId) : "Pixel");
         MH::MakeDefCanvas(name, fPixId ? Form("%s FADC Samples", name) : "FADC Samples");
         delete [] name;
@@ -124,7 +163,7 @@
 
     gPad->cd(1);
-    fHistHi->Draw();
+    fHistHi.Draw();
 
     gPad->cd(2);
-    fHistLo->Draw();
+    fHistLo.Draw();
 }
Index: trunk/MagicSoft/Mars/mhist/MHFadcPix.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHFadcPix.h	(revision 1651)
+++ trunk/MagicSoft/Mars/mhist/MHFadcPix.h	(revision 1652)
@@ -6,26 +6,34 @@
 #endif
 
-class TH1F;
+#ifndef ROOT_TH1
+#include <TH1.h>
+#endif
+
+class MRawEvtData;
 
 class MHFadcPix : public MParContainer
 {
+public:
+    enum Type_t { kSlices, kValue };
+
 private:
-    TH1F *fHistHi;
-    TH1F *fHistLo;
+    TH1F fHistHi;
+    TH1F fHistLo;
 
     UInt_t fPixId;
 
+    Type_t fType;
+
 public:
-    MHFadcPix(UInt_t pixid=0);
-    ~MHFadcPix();
+    MHFadcPix(UInt_t pixid=0, Type_t t=kValue);
 
-    TH1F *GetHistHi() { return fHistHi; }
-    TH1F *GetHistLo() { return fHistLo; }
+    TH1F *GetHistHi() { return &fHistHi; }
+    TH1F *GetHistLo() { return &fHistLo; }
 
-    const TH1F *GetHistHi() const { return fHistHi; }
-    const TH1F *GetHistLo() const { return fHistLo; }
+    const TH1F *GetHistHi() const { return &fHistHi; }
+    const TH1F *GetHistLo() const { return &fHistLo; }
 
-    void FillHi(Byte_t i);
-    void FillLo(Byte_t i);
+    void Init(Byte_t nhi, Byte_t nlo);
+    Bool_t Fill(const MRawEvtData &evt);
 
     void DrawHi();
Index: trunk/MagicSoft/Mars/mmain/MDataCheck.cc
===================================================================
--- trunk/MagicSoft/Mars/mmain/MDataCheck.cc	(revision 1651)
+++ trunk/MagicSoft/Mars/mmain/MDataCheck.cc	(revision 1652)
@@ -31,6 +31,7 @@
 #include "MFillH.h"
 #include "MParList.h"
+#include "MEvtLoop.h"
+#include "MHFadcCam.h"
 #include "MTaskList.h"
-#include "MEvtLoop.h"
 #include "MReadTree.h"
 #include "MGDisplayAdc.h"
@@ -58,7 +59,7 @@
 {
     TGTextButton *pedadc = new TGTextButton(fTop1, "ADC Spectra of Pedestals", kButPedAdc);
-    TGTextButton *cradc  = new TGTextButton(fTop1, "ADC Specta of Cosmics",    kButEvtAdc);
-    TGTextButton *pedtdc = new TGTextButton(fTop3, "TDC Spectra of Pedestals", kButPedTdc);
-    TGTextButton *crtdc  = new TGTextButton(fTop3, "TDC Specta of Cosmics",    kButEvtTdc);
+    TGTextButton *cradc  = new TGTextButton(fTop1, "ADC Spectra of Cosmics",    kButEvtAdc);
+    TGTextButton *pedtdc = new TGTextButton(fTop3, "Run Spectra of Pedestals", kButPedTdc);
+    TGTextButton *crtdc  = new TGTextButton(fTop3, "Run Spectra of Cosmics",    kButEvtTdc);
 
     pedadc->Associate(this);
@@ -97,5 +98,5 @@
 //  histograms.
 //
-void MDataCheck::ViewAdcSpectra(const char *inputfile, const char *treeName)
+void MDataCheck::View(const char *inputfile, const char *treeName, MHFadcPix::Type_t t)
 {
     //
@@ -119,5 +120,8 @@
     read.DisableAutoScheme();
 
-    MFillH fill("MHFadcCam", "MRawEvtData");
+    MHFadcCam hist(t);
+    plist.AddToList(&hist);
+
+    MFillH fill(&hist, "MRawEvtData");
 
     tasks.AddToList(&read);
@@ -149,5 +153,5 @@
         return;
 
-    new MGDisplayAdc((MHFadcCam*)plist.FindObject("MHFadcCam"));
+    new MGDisplayAdc(&hist);
 }
 
@@ -178,16 +182,17 @@
         {
         case kButPedAdc:
-            ViewAdcSpectra(fInputFile, "PedEvents");
+            View(fInputFile, "PedEvents", MHFadcPix::kValue);
             return kTRUE;
 
         case kButEvtAdc:
-            ViewAdcSpectra(fInputFile, "Events");
+            View(fInputFile, "Events", MHFadcPix::kValue);
             return kTRUE;
 
         case kButPedTdc:
-            // fOctober.PedTdcSpectra(fInputFile) ;
+            View(fInputFile, "PedEvents", MHFadcPix::kSlices);
             return kTRUE;
 
         case kButEvtTdc:
+            View(fInputFile, "Events", MHFadcPix::kSlices);
             return kTRUE;
         }
Index: trunk/MagicSoft/Mars/mmain/MDataCheck.h
===================================================================
--- trunk/MagicSoft/Mars/mmain/MDataCheck.h	(revision 1651)
+++ trunk/MagicSoft/Mars/mmain/MDataCheck.h	(revision 1652)
@@ -6,8 +6,12 @@
 #endif
 
+#ifndef MARS_MHFadcPix
+#include "MHFadcPix.h"
+#endif
+
 class MDataCheck : public MBrowser
 {
 private:
-    void ViewAdcSpectra(const char *inputfile, const char *treeName);
+    void View(const char *inputfile, const char *treeName, MHFadcPix::Type_t t);
 
 public:
