Index: /trunk/MagicSoft/Mars/mbase/MArray.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MArray.cc	(revision 4953)
+++ /trunk/MagicSoft/Mars/mbase/MArray.cc	(revision 4954)
@@ -37,4 +37,5 @@
 //////////////////////////////////////////////////////////////////////////////
 #include "MArray.h"
+#include "TArray.h"
 
 ClassImp(MArray);
Index: /trunk/MagicSoft/Mars/mbase/MArrayF.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MArrayF.cc	(revision 4954)
+++ /trunk/MagicSoft/Mars/mbase/MArrayF.cc	(revision 4954)
@@ -0,0 +1,39 @@
+/* ======================================================================== *\
+!
+! *
+! * 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@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2004
+!
+!
+\* ======================================================================== */
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// MArrayF
+//
+// Array of Float_t. It is almost the same than TArrayF but derives from
+// TObject
+//
+// Another advantage is: operator[] has no range check!
+//
+//////////////////////////////////////////////////////////////////////////////
+#include "MArrayF.h"
+
+ClassImp(MArrayF);
+
Index: /trunk/MagicSoft/Mars/mbase/MArrayF.h
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MArrayF.h	(revision 4954)
+++ /trunk/MagicSoft/Mars/mbase/MArrayF.h	(revision 4954)
@@ -0,0 +1,161 @@
+#ifndef MARS_MArrayF
+#define MARS_MArrayF
+
+#ifndef MARS_MArray
+#include "MArray.h"
+#endif
+
+#include <string.h>
+
+class MArrayF : public MArray
+{
+private:
+    Float_t *fArray; //[fN] Array of fN chars
+
+public:
+
+    MArrayF()
+    {
+        fN     = 0;
+        fArray = NULL;
+    }
+
+    MArrayF(UInt_t n)
+    {
+        fN     = 0;
+        fArray = NULL;
+        Set(n);
+    }
+
+    MArrayF(UInt_t n, Float_t *array)
+    {
+        // Create TArrayC object and initialize it with values of array.
+        fN     = 0;
+        fArray = NULL;
+        Set(n, array);
+    }
+
+    MArrayF(const MArrayF &array)
+    {
+        // Copy constructor.
+        fArray = NULL;
+        Set(array.fN, array.fArray);
+    }
+
+    UInt_t GetSize() const
+    {
+        return fN;
+    }
+
+    MArrayF &operator=(const MArrayF &rhs)
+    {
+        // TArrayC assignment operator.
+        if (this != &rhs)
+            Set(rhs.fN, rhs.fArray);
+        return *this;
+    }
+
+    virtual ~MArrayF()
+    {
+        // Delete TArrayC object.
+        delete [] fArray;
+        fArray = NULL;
+    }
+
+    void Adopt(UInt_t n, Float_t *array)
+    {
+        // Adopt array arr into TArrayC, i.e. don't copy arr but use it directly
+        // in TArrayC. User may not delete arr, TArrayC dtor will do it.
+        if (fArray)
+            delete [] fArray;
+
+        fN     = n;
+        fArray = array;
+    }
+
+    void AddAt(Float_t c, UInt_t i)
+    {
+        // Add char c at position i. Check for out of bounds.
+        fArray[i] = c;
+    }
+
+    Float_t     At(UInt_t i)
+    {
+        return fArray[i];
+    }
+
+    Float_t    *GetArray() const
+    {
+        return fArray;
+    }
+
+    void Reset()
+    {
+        memset(fArray, 0, fN*sizeof(Float_t));
+    }
+
+    void Set(UInt_t n)
+    {
+        // Set size of this array to n chars.
+        // A new array is created, the old contents copied to the new array,
+        // then the old array is deleted.
+
+        if (n==fN)
+            return;
+
+        Float_t *temp = fArray;
+        if (n == 0)
+            fArray = NULL;
+        else
+        {
+            fArray = new Float_t[n];
+            if (n < fN)
+                memcpy(fArray, temp, n*sizeof(Float_t));
+            else
+            {
+                memcpy(fArray, temp, fN*sizeof(Float_t));
+                memset(&fArray[fN], 0, (n-fN)*sizeof(Float_t));
+            }
+        }
+
+        if (fN)
+            delete [] temp;
+
+        fN = n;
+    }
+
+    void Set(UInt_t n, Float_t *array)
+    {
+        // Set size of this array to n chars and set the contents.
+        if (!array)
+            return;
+
+        if (fArray && fN != n)
+        {
+            delete [] fArray;
+            fArray = 0;
+        }
+        fN = n;
+
+        if (fN == 0)
+            return;
+
+        if (!fArray)
+            fArray = new Float_t[fN];
+
+        memcpy(fArray, array, n*sizeof(Float_t));
+    }
+
+    Float_t &operator[](UInt_t i)
+    {
+        return fArray[i];
+    }
+    const Float_t &operator[](UInt_t i) const
+    {
+        return fArray[i];
+    }
+
+    ClassDef(MArrayF, 1)  //Array of Float_t
+};
+
+#endif
