Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 5042)
+++ trunk/MagicSoft/Mars/Changelog	(revision 5043)
@@ -61,4 +61,7 @@
 
  2004/09/15: Markus Gaug
+
+   * mcalib/MCalibration*Cam.[h,cc]
+     - replace TObjArray by TOrdCollection, otherwise the streamer does not work
 
    * mimage/MHillasCalc.[h,cc]
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationBlindCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationBlindCam.cc	(revision 5042)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationBlindCam.cc	(revision 5043)
@@ -30,12 +30,12 @@
 // the actual values of the MCalibrationBlindPix's. 
 //
-// Contains TObjArrays for the following objects:
-// - fBlindPixels:    Array of classes derived from MCalibrationBlindPix, one entry 
-//                    per blind pixel. 
+// Contains TOrdCollections for the following objects:
+// - fPixels:    Array of classes derived from MCalibrationBlindPix, one entry 
+//               per blind pixel. 
 //
-// All TObjArrays have to enlarged by the corresponding calls to (e.g. in MGeomApply): 
+// All TOrdCollections have to enlarged by the corresponding calls to (e.g. in MGeomApply): 
 // - InitSize()
 //
-// See also: MCalibrationBlindCamOneOldStyle
+// See also: MCalibrationBlindCamOneOldStyle, MCalibrationBlindCamTwoNewStyle
 //
 /////////////////////////////////////////////////////////////////////////////
@@ -43,5 +43,5 @@
 #include "MCalibrationBlindPix.h"
 
-#include <TObjArray.h>
+#include <TOrdCollection.h>
 
 #include "MLogManip.h"
@@ -66,5 +66,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fPixels)[i] = new MCalibrationBlindPix;
+    fPixels->AddAt(new MCalibrationBlindPix,i);
 }
 
@@ -78,6 +78,7 @@
   MCalibrationBlindCam &calib = (MCalibrationBlindCam&)object;
   
-  //  MParContainer::Copy(calib);
-  
+  MCalibrationCam::Copy(calib);
+
+  /*  
   const UInt_t n = GetSize();
   if (n != 0)
@@ -87,22 +88,8 @@
         (*this)[i].Copy(calib[i]);
     }
+  */
 }
 
 
-// --------------------------------------------------------------------------
-//
-// Expands and creates new MCalibrationPix's. Cannot use ExpandCreate(), because
-// for some reason, the constructor of MCalibrationPix does not initialize the 
-// Arrays correctly, then.
-//
-void MCalibrationBlindCam::InitSize( const UInt_t n) 
-{
-  const UInt_t size = GetSize();
-  fPixels->Expand(n);
-
-  for (UInt_t i=size; i<n; i++)
-    (*fPixels)[i] = new MCalibrationBlindPix;
-
-}
 
 // --------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 5042)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 5043)
@@ -29,5 +29,5 @@
 // Base class for Camera Calibration results. 
 //
-// Contains TObjArrays for the following objects:
+// Contains TOrdCollections for the following objects:
 // - fPixels:         Array of classes derived from MCalibrationPix, one entry 
 //                    per pixel. Has to be created
@@ -42,5 +42,5 @@
 //                    per camera SECTOR. Is created automatically.
 //
-// All TObjArrays have to enlarged by the corresponding calls to (e.g. in MGeomApply): 
+// All TOrdCollections have to enlarged by the corresponding calls to (e.g. in MGeomApply): 
 // - InitSize()
 // - InitAverageAreas()
@@ -50,5 +50,5 @@
 #include "MCalibrationCam.h"
 
-#include <TObjArray.h>
+#include <TOrdCollection.h>
 
 #include "MGeomCam.h"
@@ -82,5 +82,5 @@
 // - fNumLoGainFADCSlices to 0.
 //
-// Creates a TObjArray of MBadPixelsPix containers for the TObjArray's: 
+// Creates a TOrdCollection of MBadPixelsPix containers for the TOrdCollection's: 
 // - fAverageBadAreas
 // - fAverageBadSectors
@@ -94,17 +94,17 @@
 {
 
-  fPixels = new TObjArray;
+  fPixels = new TOrdCollection;
   fPixels->SetOwner();
 
-  fAverageAreas = new TObjArray;
+  fAverageAreas = new TOrdCollection;
   fAverageAreas->SetOwner();
   
-  fAverageSectors = new TObjArray;
+  fAverageSectors = new TOrdCollection;
   fAverageSectors->SetOwner();
 
-  fAverageBadAreas = new TObjArray;
+  fAverageBadAreas = new TOrdCollection;
   fAverageBadAreas->SetOwner();
   
-  fAverageBadSectors = new TObjArray;
+  fAverageBadSectors = new TOrdCollection;
   fAverageBadSectors->SetOwner();
 
@@ -221,5 +221,4 @@
 // -------------------------------------------------------------------
 //
-// Calls TObjArray::ExpandCreate() for fPixels
 //
 void MCalibrationCam::InitSize(const UInt_t i)
@@ -231,5 +230,5 @@
     return;
   
-  fPixels->Expand(i);
+  // Pixels->Expand(i);
 
   if (i>save)
@@ -240,5 +239,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fPixels)[i] = new MCalibrationPix;
+    fPixels->AddAt(new MCalibrationPix,i);
 }
 
@@ -246,5 +245,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageAreas)[i] = new MCalibrationPix;
+    fAverageAreas->AddAt(new MCalibrationPix,i);
 }
 
@@ -252,5 +251,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageSectors)[i] = new MCalibrationPix;
+    fAverageSectors->AddAt(new MCalibrationPix,i);
 }
 
@@ -270,6 +269,6 @@
     return;
   
-  fAverageAreas->Expand(i);
-  fAverageBadAreas->Expand(i);
+  //fAverageAreas->Expand(i);
+  //fAverageBadAreas->Expand(i);
 
   fNumUnsuitable.Set(i);
@@ -282,5 +281,5 @@
 
   for (UInt_t j=save; j<i; j++)
-    (*fAverageBadAreas)[j] = new MBadPixelsPix;
+    fAverageBadAreas->AddAt(new MBadPixelsPix,j);
   
   AddArea(save,i);
@@ -305,6 +304,6 @@
     return;
   
-  fAverageSectors->Expand(i);
-  fAverageBadSectors->Expand(i);
+  //fAverageSectors->Expand(i);
+  //fAverageBadSectors->Expand(i);
 
   if (i < save)
@@ -312,5 +311,5 @@
 
   for (UInt_t j=save; j<i; j++)
-    (*fAverageBadSectors)[j] = new MBadPixelsPix;
+    fAverageBadSectors->AddAt(new MBadPixelsPix,j);
   
   AddSector(save,i);
@@ -405,5 +404,5 @@
 const Int_t MCalibrationCam::GetAverageAreas() const
 {
-  return fAverageAreas->GetEntriesFast();
+  return fAverageAreas->GetSize();
 }
 
@@ -415,5 +414,5 @@
 const Int_t MCalibrationCam::GetAverageSectors() const
 {
-  return fAverageSectors->GetEntriesFast();
+  return fAverageSectors->GetSize();
 }
 
@@ -425,5 +424,5 @@
 MCalibrationPix &MCalibrationCam::operator[](UInt_t i)
 {
-  return *static_cast<MCalibrationPix*>(fPixels->UncheckedAt(i));
+  return *static_cast<MCalibrationPix*>(fPixels->At(i));
 }
 
@@ -434,5 +433,5 @@
 const MCalibrationPix &MCalibrationCam::operator[](UInt_t i) const
 {
-  return *static_cast<MCalibrationPix*>(fPixels->UncheckedAt(i));
+  return *static_cast<MCalibrationPix*>(fPixels->At(i));
 }
 
@@ -444,5 +443,5 @@
 const Int_t MCalibrationCam::GetSize() const
 {
-  return fPixels->GetEntriesFast();
+  return fPixels->GetSize();
 }
 
@@ -453,5 +452,5 @@
 MCalibrationPix &MCalibrationCam::GetAverageArea(const UInt_t i)
 {
-  return *static_cast<MCalibrationPix*>(fAverageAreas->UncheckedAt(i));
+  return *static_cast<MCalibrationPix*>(fAverageAreas->At(i));
 }
 
@@ -462,5 +461,5 @@
 const MCalibrationPix &MCalibrationCam::GetAverageArea(const UInt_t i) const 
 {
-  return *static_cast<MCalibrationPix*>(fAverageAreas->UncheckedAt(i));
+  return *static_cast<MCalibrationPix*>(fAverageAreas->At(i));
 }
 
@@ -471,5 +470,5 @@
 MCalibrationPix &MCalibrationCam::GetAverageSector(const UInt_t i)
 {
-  return *static_cast<MCalibrationPix*>(fAverageSectors->UncheckedAt(i));
+  return *static_cast<MCalibrationPix*>(fAverageSectors->At(i));
 }
 
@@ -480,5 +479,5 @@
 const MCalibrationPix &MCalibrationCam::GetAverageSector(const UInt_t i) const 
 {
-  return *static_cast<MCalibrationPix*>(fAverageSectors->UncheckedAt(i));
+  return *static_cast<MCalibrationPix*>(fAverageSectors->At(i));
 }
 
@@ -489,5 +488,5 @@
 MBadPixelsPix &MCalibrationCam::GetAverageBadArea(const UInt_t i)
 {
-  return *static_cast<MBadPixelsPix*>(fAverageBadAreas->UncheckedAt(i));
+  return *static_cast<MBadPixelsPix*>(fAverageBadAreas->At(i));
 }
 
@@ -498,5 +497,5 @@
 const MBadPixelsPix &MCalibrationCam::GetAverageBadArea(const UInt_t i) const 
 {
-  return *static_cast<MBadPixelsPix*>(fAverageBadAreas->UncheckedAt(i));
+  return *static_cast<MBadPixelsPix*>(fAverageBadAreas->At(i));
 }
 
@@ -507,5 +506,5 @@
 MBadPixelsPix &MCalibrationCam::GetAverageBadSector(const UInt_t i)
 {
-  return *static_cast<MBadPixelsPix*>(fAverageBadSectors->UncheckedAt(i));
+  return *static_cast<MBadPixelsPix*>(fAverageBadSectors->At(i));
 }
 
@@ -516,5 +515,5 @@
 const MBadPixelsPix &MCalibrationCam::GetAverageBadSector(const UInt_t i) const 
 {
-  return *static_cast<MBadPixelsPix*>(fAverageBadSectors->UncheckedAt(i));
+  return *static_cast<MBadPixelsPix*>(fAverageBadSectors->At(i));
 }
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 5042)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 5043)
@@ -15,5 +15,5 @@
 #endif
 
-class TObjArray;
+class TOrdCollection;
 
 class MCalibrationPix;
@@ -44,9 +44,9 @@
   PulserColor_t fPulserColor;        // Colour of the pulsed LEDs
 
-  TObjArray *fPixels;                // Array of MCalibrationPix, one per pixel
-  TObjArray *fAverageAreas;          // Array of MCalibrationPix, one per pixel area
-  TObjArray *fAverageSectors;        // Array of MCalibrationPix, one per camera sector
-  TObjArray *fAverageBadAreas;       // Array of MBadPixelsPix,   one per pixel area
-  TObjArray *fAverageBadSectors;     // Array of MBadPixelsPix,   one per camera sector
+  TOrdCollection *fPixels;            // Array of MCalibrationPix, one per pixel
+  TOrdCollection *fAverageAreas;      // Array of MCalibrationPix, one per pixel area
+  TOrdCollection *fAverageSectors;    // Array of MCalibrationPix, one per camera sector
+  TOrdCollection *fAverageBadAreas;   // Array of MBadPixelsPix,   one per pixel area
+  TOrdCollection *fAverageBadSectors; // Array of MBadPixelsPix,   one per camera sector
 
   virtual void Add(const UInt_t a, const UInt_t b);
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 5042)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 5043)
@@ -82,5 +82,5 @@
 #include "MCalibrationChargeCam.h"
 
-#include <TObjArray.h>
+#include <TOrdCollection.h>
 
 #include "MLog.h"
@@ -118,9 +118,54 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// Creates new MCalibrationCam only for the averaged areas:
+// the rest has to be retrieved directly, e.g. via: 
+//
+TObject *MCalibrationChargeCam::Clone(const char *) const
+{
+
+  //
+  // FIXME, this might be done faster and more elegant, by direct copy.
+  //
+  MCalibrationChargeCam *cam = new MCalibrationChargeCam(fName,fTitle);
+
+  cam->fNumUnsuitable        = fNumUnsuitable;
+  cam->fNumUnreliable        = fNumUnreliable;
+  cam->fNumHiGainFADCSlices  = fNumHiGainFADCSlices;
+  cam->fNumLoGainFADCSlices  = fNumLoGainFADCSlices;
+  cam->fPulserColor          = fPulserColor;
+
+  cam->fFlags                = fFlags;
+
+  cam->fNumPhotonsBlindPixelMethod      = fNumPhotonsBlindPixelMethod;
+  cam->fNumPhotonsFFactorMethod         = fNumPhotonsFFactorMethod;
+  cam->fNumPhotonsPINDiodeMethod        = fNumPhotonsPINDiodeMethod;
+  cam->fNumPhotonsBlindPixelMethodErr   = fNumPhotonsBlindPixelMethodErr;
+  cam->fNumPhotonsFFactorMethodErr      = fNumPhotonsFFactorMethodErr;
+  cam->fNumPhotonsPINDiodeMethodErr     = fNumPhotonsPINDiodeMethodErr;
+
+  for (Int_t i=0; i<GetSize(); i++)
+    cam->fPixels->AddAt((*this)[i].Clone(),i);
+  
+  for (Int_t i=0; i<GetAverageAreas(); i++)
+    {
+      cam->fAverageAreas->AddAt(GetAverageArea(i).Clone(),i);
+      cam->fAverageBadAreas->AddAt(GetAverageBadArea(i).Clone(),i);
+    }
+  for (Int_t i=0; i<GetAverageSectors(); i++)
+    {
+      cam->fAverageSectors->AddAt(GetAverageSector(i).Clone(),i);
+      cam->fAverageBadSectors->AddAt(GetAverageBadSector(i).Clone(),i);
+    }
+
+  return cam;
+}
+
 
 void MCalibrationChargeCam::Add(const UInt_t a, const UInt_t b)
 {
   for (UInt_t i=a; i<b; i++)
-    (*fPixels)[i] = new MCalibrationChargePix;
+    fPixels->AddAt(new MCalibrationChargePix,i);
 }
 
@@ -129,5 +174,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageAreas)[i] = new MCalibrationChargePix;
+    fAverageAreas->AddAt(new MCalibrationChargePix,i);
 }
 
@@ -135,5 +180,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageSectors)[i] = new MCalibrationChargePix;
+    fAverageSectors->AddAt(new MCalibrationChargePix,i);
 }
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.cc	(revision 5042)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.cc	(revision 5043)
@@ -66,5 +66,7 @@
   fCams = new TObjArray;
   fCams->SetOwner();
-}
+  
+}
+
 
 // --------------------------------------------------------------------------
@@ -214,5 +216,5 @@
 const Int_t MCalibrationIntensityCam::GetSize() const 
 {
-  return fCams->GetEntries();
+  return fCams->GetEntriesFast();
 }
 
@@ -223,5 +225,5 @@
 MCalibrationPix &MCalibrationIntensityCam::operator[](UInt_t i)
 {
-  return (*GetCam(GetSize()-1))[i];
+  return (*GetCam())[i];
 }
 
@@ -232,5 +234,5 @@
 const MCalibrationPix &MCalibrationIntensityCam::operator[](UInt_t i) const 
 {
-  return (*GetCam(GetSize()-1))[i];
+  return (*GetCam())[i];
 }
 
@@ -242,5 +244,5 @@
 const Int_t MCalibrationIntensityCam::GetAverageAreas() const
 {
-  return GetCam(GetSize()-1)->GetAverageAreas();
+  return GetCam()->GetAverageAreas();
 }
 
@@ -251,5 +253,5 @@
 MCalibrationPix  &MCalibrationIntensityCam::GetAverageArea(UInt_t i)
 {
-  return GetCam(GetSize()-1)->GetAverageArea(i);
+  return GetCam()->GetAverageArea(i);
 }
 
@@ -260,5 +262,5 @@
 const MCalibrationPix  &MCalibrationIntensityCam::GetAverageArea(UInt_t i) const
 {
-  return GetCam(GetSize()-1)->GetAverageArea(i);
+  return GetCam()->GetAverageArea(i);
 }
 
@@ -269,5 +271,5 @@
 MBadPixelsPix  &MCalibrationIntensityCam::GetAverageBadArea(UInt_t i)
 {
-  return GetCam(GetSize()-1)->GetAverageBadArea(i);
+  return GetCam()->GetAverageBadArea(i);
 }
 
@@ -278,5 +280,5 @@
 const MBadPixelsPix  &MCalibrationIntensityCam::GetAverageBadArea(UInt_t i) const
 {
-  return GetCam(GetSize()-1)->GetAverageBadArea(i);
+  return GetCam()->GetAverageBadArea(i);
 }
 
@@ -287,5 +289,5 @@
 const Int_t MCalibrationIntensityCam::GetAverageSectors() const
 {
-  return GetCam(GetSize()-1)->GetAverageSectors();
+  return GetCam()->GetAverageSectors();
 }
 
@@ -296,5 +298,5 @@
 MCalibrationPix  &MCalibrationIntensityCam::GetAverageSector(UInt_t i)
 {
-  return GetCam(GetSize()-1)->GetAverageSector(i);
+  return GetCam()->GetAverageSector(i);
 }
 
@@ -305,5 +307,5 @@
 const MCalibrationPix  &MCalibrationIntensityCam::GetAverageSector(UInt_t i) const
 {
-  return GetCam(GetSize()-1)->GetAverageSector(i);
+  return GetCam()->GetAverageSector(i);
 }
 
@@ -314,5 +316,5 @@
 MBadPixelsPix  &MCalibrationIntensityCam::GetAverageBadSector(UInt_t i)
 {
-  return GetCam(GetSize()-1)->GetAverageBadSector(i);
+  return GetCam()->GetAverageBadSector(i);
 }
 
@@ -323,5 +325,5 @@
 const MBadPixelsPix  &MCalibrationIntensityCam::GetAverageBadSector(UInt_t i) const
 {
-  return GetCam(GetSize()-1)->GetAverageBadSector(i);
+  return GetCam()->GetAverageBadSector(i);
 }
 
@@ -333,5 +335,5 @@
 MCalibrationCam *MCalibrationIntensityCam::GetCam(Int_t i)
 {
-  return static_cast<MCalibrationCam*>(fCams->UncheckedAt(i==-1 ? GetSize()-1 : i));
+  return static_cast<MCalibrationCam*>(fCams->Last());
 }
 
@@ -342,5 +344,5 @@
 const MCalibrationCam *MCalibrationIntensityCam::GetCam(Int_t i) const 
 {
-  return static_cast<MCalibrationCam*>(fCams->UncheckedAt(i==-1 ? GetSize()-1 : i));
+  return static_cast<MCalibrationCam*>(fCams->Last());
 }
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationQECam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationQECam.cc	(revision 5042)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationQECam.cc	(revision 5043)
@@ -75,5 +75,5 @@
 #include "MCalibrationQECam.h"
 
-#include <TObjArray.h>
+#include <TOrdCollection.h>
 
 #include "MLog.h"
@@ -106,5 +106,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fPixels)[i] = new MCalibrationQEPix;
+    fPixels->AddAt(new MCalibrationQEPix,i);
 }
 
@@ -112,5 +112,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageAreas)[i] = new MCalibrationQEPix;
+    fAverageAreas->AddAt(new MCalibrationQEPix,i);
 }
 
@@ -118,5 +118,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageSectors)[i] = new MCalibrationQEPix;
+    fAverageSectors->AddAt(new MCalibrationQEPix,i);
 }
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCam.cc	(revision 5042)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCam.cc	(revision 5043)
@@ -76,5 +76,5 @@
 #include "MCalibrationCam.h"
 
-#include <TObjArray.h>
+#include <TOrdCollection.h>
 
 #include "MLog.h"
@@ -105,5 +105,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fPixels)[i] = new MCalibrationRelTimePix;
+    fPixels->AddAt(new MCalibrationRelTimePix,i);
 }
 
@@ -112,5 +112,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageAreas)[i] = new MCalibrationRelTimePix;
+    fAverageAreas->AddAt(new MCalibrationRelTimePix,i);
 }
 
@@ -118,5 +118,5 @@
 {
   for (UInt_t i=a; i<b; i++)
-    (*fAverageSectors)[i] = new MCalibrationRelTimePix;
+    fAverageSectors->AddAt(new MCalibrationRelTimePix,i);
 }
 
