Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 2629)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 2630)
@@ -4,4 +4,11 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2003/12/10: Thomas Bretz
+
+   * manalysis/MPedPhotPix.[h,cc], manalysis/MPedPhotCam.[h,cc]:
+     - added
+
+
+
  2003/12/09: Markus Gaug
 
@@ -31,4 +38,5 @@
    * macros/calibration.C
 	- EventDisplay which allows to get plot by clicking on pixel
+
 
 
Index: /trunk/MagicSoft/Mars/manalysis/MPedPhotCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MPedPhotCam.cc	(revision 2630)
+++ /trunk/MagicSoft/Mars/manalysis/MPedPhotCam.cc	(revision 2630)
@@ -0,0 +1,204 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz, 12/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2003
+!
+!
+\* ======================================================================== */
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// MPedPhotCam
+//
+// Hold the Pedestal information for all pixels in the camera (in usints
+// of photons)
+//
+/////////////////////////////////////////////////////////////////////////////
+#include "MPedPhotCam.h"
+#include "MPedPhotPix.h"
+
+#include <TClonesArray.h>
+
+#include "MLog.h"
+#include "MLogManip.h"
+
+#include "MGeomCam.h"
+
+ClassImp(MPedPhotCam);
+
+using namespace std;
+
+// --------------------------------------------------------------------------
+//
+// Default constructor. Creates a MPedPhotPix object for each pixel
+//
+MPedPhotCam::MPedPhotCam(const char *name, const char *title)
+{
+    fName  = name  ? name  : "MPedPhotCam";
+    fTitle = title ? title : "Storage container for all Pedestal Information in the camera (in units of photons)";
+
+    fArray = new TClonesArray("MPedPhotPix", 1);
+
+//    for (int i=0; i<577; i++)
+//        new ((*fArray)[i]) MPedPhotPix;
+}
+
+// --------------------------------------------------------------------------
+//
+// Delete the array conatining the pixel pedest information
+//
+MPedPhotCam::~MPedPhotCam()
+{
+    delete fArray;
+}
+
+// --------------------------------------------------------------------------
+//
+// Set the size of the camera
+//
+void MPedPhotCam::InitSize(const UInt_t i)
+{
+    fArray->ExpandCreate(i);
+}
+
+// --------------------------------------------------------------------------
+//
+// Get the size of the MPedPhotCam
+//
+Int_t MPedPhotCam::GetSize() const
+{
+    return fArray->GetEntriesFast();
+}
+
+// --------------------------------------------------------------------------
+//
+// Get i-th pixel (pixel number)
+//
+MPedPhotPix &MPedPhotCam::operator[](Int_t i)
+{
+    return *static_cast<MPedPhotPix*>(fArray->UncheckedAt(i));
+}
+
+// --------------------------------------------------------------------------
+//
+// Get i-th pixel (pixel number)
+//
+MPedPhotPix &MPedPhotCam::operator[](Int_t i) const
+{
+    return *static_cast<MPedPhotPix*>(fArray->UncheckedAt(i));
+}
+
+/*
+// --------------------------------------------------------------------------
+//
+// Check if position i is inside bounds
+//
+Bool_t MPedPhotCam::CheckBounds(Int_t i)
+{
+    return i < fArray->GetEntriesFast();
+} 
+*/
+void MPedPhotCam::Clear(Option_t *o)
+{
+    fArray->ForEach(TObject, Clear)();
+}
+
+void MPedPhotCam::Print(Option_t *o) const
+{
+    *fLog << all << GetDescriptor() << ":" << endl;
+    int id = 0;
+
+    TIter Next(fArray);
+    MPedPhotPix *pix;
+    while ((pix=(MPedPhotPix*)Next()))
+    {
+        id++;
+
+        if (!pix->IsValid())
+            continue;
+
+        *fLog << id-1 << ": ";
+        *fLog << pix->GetMean() << " " << pix->GetRms() << endl;
+    }
+}
+/*
+Float_t MPedPhotCam::GetPedestalMin(const MGeomCam *geom) const
+{
+    if (fArray->GetEntries() <= 0)
+        return 50.;
+
+    Float_t minval = (*this)[0].GetPedestalRms();
+
+    for (Int_t i=1; i<fArray->GetEntries(); i++)
+    {
+        const MPedPhotPix &pix = (*this)[i];
+
+        Float_t testval = pix.GetPedestalRms();
+
+        if (geom)
+            testval *= geom->GetPixRatio(i);
+
+        if (testval < minval)
+            minval = testval;
+    }
+    return minval;
+}
+
+Float_t MPedPhotCam::GetPedestalMax(const MGeomCam *geom) const
+{
+    if (fArray->GetEntries() <= 0)
+        return 50.;
+
+    Float_t maxval = (*this)[0].GetPedestalRms();
+
+    for (Int_t i=1; i<fArray->GetEntries(); i++)
+    {
+        const MPedPhotPix &pix = (*this)[i];
+
+        Float_t testval = pix.GetPedestalRms();
+
+        if (geom)
+            testval *= geom->GetPixRatio(i);
+
+        if (testval > maxval)
+            maxval = testval;
+    }
+    return maxval;
+}
+*/
+Bool_t MPedPhotCam::GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type) const
+{
+    switch (type)
+    {
+    case 0:
+        val = (*this)[idx].GetMean();
+        break;
+    case 1:
+        val = (*this)[idx].GetRms();
+        break;
+    default:
+	return kFALSE;
+    }
+    return val>=0;
+}
+
+void MPedPhotCam::DrawPixelContent(Int_t num) const
+{
+    *fLog << warn << "MPedPhotCam::DrawPixelContent - not available." << endl;
+}
Index: /trunk/MagicSoft/Mars/manalysis/MPedPhotCam.h
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MPedPhotCam.h	(revision 2630)
+++ /trunk/MagicSoft/Mars/manalysis/MPedPhotCam.h	(revision 2630)
@@ -0,0 +1,44 @@
+#ifndef MARS_MPedPhotCam
+#define MARS_MPedPhotCam
+
+#ifndef MARS_MCamEvent
+#include "MCamEvent.h"
+#endif
+
+class TClonesArray;
+
+class MGeomCam;
+class MPedPhotPix;
+
+class MPedPhotCam : public MCamEvent
+{
+private:
+    TClonesArray *fArray; // FIXME: Change TClonesArray away from a pointer?
+
+public:
+    MPedPhotCam(const char *name=NULL, const char *title=NULL);
+    ~MPedPhotCam();
+
+    void Clear(Option_t *o="");
+
+    void InitSize(const UInt_t i);
+    Int_t GetSize() const;
+
+    MPedPhotPix &operator[](Int_t i);
+    MPedPhotPix &operator[](Int_t i) const;
+
+    //    Float_t GetPedestalMin(const MGeomCam *cam) const;
+    //    Float_t GetPedestalMax(const MGeomCam *cam) const;
+
+    //    Bool_t CheckBounds(Int_t i);
+
+    void Print(Option_t *o="") const;
+
+    Bool_t GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type=0) const;
+    void DrawPixelContent(Int_t num) const;
+
+    ClassDef(MPedPhotCam, 1)	// Storage Container for all pedestal information of the camera (in units of photons)
+};
+
+#endif
+
Index: /trunk/MagicSoft/Mars/manalysis/MPedPhotPix.cc
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MPedPhotPix.cc	(revision 2630)
+++ /trunk/MagicSoft/Mars/manalysis/MPedPhotPix.cc	(revision 2630)
@@ -0,0 +1,53 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2001
+!
+!
+\* ======================================================================== */
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// MPedPhotPix
+//
+// This is the storage container to hold informations about the pedestal
+// (offset) value of one Pixel (PMT) in units of photons
+//
+/////////////////////////////////////////////////////////////////////////////
+#include "MPedPhotPix.h"
+
+#include "MLog.h"
+
+ClassImp(MPedPhotPix);
+
+MPedPhotPix::MPedPhotPix()
+{
+    Clear();
+}
+
+// ------------------------------------------------------------------------
+//
+// Invalidate values
+//
+void MPedPhotPix::Clear(Option_t *o)
+{
+    fMean = -1;
+    fRms  = -1;
+}
+
Index: /trunk/MagicSoft/Mars/manalysis/MPedPhotPix.h
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MPedPhotPix.h	(revision 2630)
+++ /trunk/MagicSoft/Mars/manalysis/MPedPhotPix.h	(revision 2630)
@@ -0,0 +1,32 @@
+#ifndef MARS_MPedPhotPix
+#define MARS_MPedPhotPix
+
+#ifndef ROOT_TObject
+#include <TObject.h>
+#endif
+
+class MPedPhotPix : public TObject
+{
+private:
+    Float_t fMean; // [phot] mean value of pedestal (should be 0)
+    Float_t fRms;  // [phot] rms of mean
+
+public:
+    MPedPhotPix();
+
+    void Clear(Option_t *o="");
+
+    Float_t GetMean() const { return fMean; }
+    Float_t GetRms() const  { return fRms; }
+
+    //void SetMean(Float_t f) { fMean = f; }
+    //void SetRms(Float_t f)  { fRms  = f; }
+    void Set(Float_t m, Float_t r) { fMean = m; fRms = r; }
+
+    Bool_t IsValid() const { return fRms>=0; }
+
+    ClassDef(MPedPhotPix, 1) // Storage Container for Pedestal information of one pixel in units of photons
+};
+
+#endif
+
