Index: trunk/MagicSoft/Mars/manalysis/MEventRateCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MEventRateCalc.cc	(revision 9269)
+++ trunk/MagicSoft/Mars/manalysis/MEventRateCalc.cc	(revision 9270)
@@ -141,4 +141,8 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// This resets the calculation whenever a new file is opened.
+//
 Bool_t MEventRateCalc::ReInit(MParList *pList)
 {
Index: trunk/MagicSoft/Mars/mbase/MParEnv.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MParEnv.cc	(revision 9269)
+++ trunk/MagicSoft/Mars/mbase/MParEnv.cc	(revision 9270)
@@ -165,5 +165,5 @@
         rc = kTRUE;
         TString cls = GetEnvValue(env, prefix, "Class", "");
-        cont = GetNewObject(fName, cls);
+        cont = GetNewObject(cls, fClassName);
     }
 
Index: trunk/MagicSoft/Mars/melectronics/MAnalogChannels.cc
===================================================================
--- trunk/MagicSoft/Mars/melectronics/MAnalogChannels.cc	(revision 9269)
+++ trunk/MagicSoft/Mars/melectronics/MAnalogChannels.cc	(revision 9270)
@@ -134,5 +134,5 @@
 // Return the number of channels.
 //
-Int_t MAnalogChannels::GetNumChannels() const
+UInt_t MAnalogChannels::GetNumChannels() const
 {
     return fArray ? fArray->GetEntriesFast() : 0;
@@ -143,5 +143,5 @@
 // Return the number of samples per channel
 //
-Int_t MAnalogChannels::GetNumSamples() const
+UInt_t MAnalogChannels::GetNumSamples() const
 {
     return operator()(0) ? operator()(0)->GetSize() : 0;
Index: trunk/MagicSoft/Mars/melectronics/MAnalogChannels.h
===================================================================
--- trunk/MagicSoft/Mars/melectronics/MAnalogChannels.h	(revision 9269)
+++ trunk/MagicSoft/Mars/melectronics/MAnalogChannels.h	(revision 9270)
@@ -29,4 +29,7 @@
     void Init(UInt_t n, UInt_t len);
 
+    void InitNumChannels(UInt_t n) { Init(n, GetNumSamples());  }
+    void InitLenChannels(UInt_t l) { Init(GetNumChannels(), l); }
+
     MAnalogSignal &operator[](UInt_t i);
     MAnalogSignal *operator()(UInt_t i);
@@ -35,6 +38,6 @@
     const MAnalogSignal *operator()(UInt_t i) const;
 
-    Int_t GetNumChannels() const;
-    Int_t GetNumSamples() const;
+    UInt_t GetNumChannels() const;
+    UInt_t GetNumSamples() const;
 
     void SetValidRange(Int_t min, Int_t max) { fValidRangeMin=min; fValidRangeMax=max; }
Index: trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 9269)
+++ trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 9270)
@@ -1151,5 +1151,5 @@
 //  Init a camera
 //
-void MRawRunHeader::InitCamera(UShort_t type)
+void MRawRunHeader::InitCamera(UShort_t type, UShort_t pix)
 {
     switch (type)
@@ -1163,4 +1163,8 @@
         fNumPixInCrate = 703;
         break;
+    case (UShort_t)-1:
+        fNumCrates     =   1;
+        fNumPixInCrate = pix;
+        break;
     }
 
Index: trunk/MagicSoft/Mars/mraw/MRawRunHeader.h
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawRunHeader.h	(revision 9269)
+++ trunk/MagicSoft/Mars/mraw/MRawRunHeader.h	(revision 9270)
@@ -100,5 +100,6 @@
 */
     void InitFadcType(UShort_t type);
-    void InitCamera(UShort_t type);
+    void InitCamera(UShort_t type, UShort_t pix=0);
+    void InitPixels(UShort_t pix) { InitCamera((UShort_t)-1, pix); }
     void SetRunInfo(UShort_t type, UShort_t tel, UInt_t run, UInt_t file=0);
     void SetSourceInfo(const char src[80], char epoch='J', UShort_t date=2000);
Index: trunk/MagicSoft/Mars/msimcamera/MSimReadout.cc
===================================================================
--- trunk/MagicSoft/Mars/msimcamera/MSimReadout.cc	(revision 9269)
+++ trunk/MagicSoft/Mars/msimcamera/MSimReadout.cc	(revision 9270)
@@ -33,4 +33,5 @@
 //
 //  Input Containers:
+//   MGeomCam
 //   MAnalogChannels
 //   TriggerPos [MParameterD]
@@ -53,4 +54,6 @@
 #include "MParameters.h"
 
+#include "MGeomCam.h"
+
 #include "MRawRunHeader.h"
 #include "MRawEvtHeader.h"
@@ -104,5 +107,4 @@
     }
 
-
     fRunHeader = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
     if (!fRunHeader)
@@ -112,9 +114,21 @@
     }
 
-    // -----------------------------------------------------------------------
-
     fData = (MRawEvtData*)pList->FindCreateObj("MRawEvtData");
     if (!fData)
         return kFALSE;
+
+    return kTRUE;
+}
+
+Bool_t MSimReadout::ReInit(MParList *plist)
+{
+    MGeomCam *cam = (MGeomCam*)plist->FindObject("MGeomCam");
+    if (!cam)
+    {
+        *fLog << err << "MGeomCam not found... aborting." << endl;
+        return kFALSE;
+    }
+
+    fRunHeader->InitPixels(cam->GetNumPixels());
 
     fData->InitRead(fRunHeader);
@@ -134,5 +148,5 @@
     if (fData->GetNumLoGainSamples()>0)
     {
-        *fLog << err << "ERROR - Lo-gains not implemented yet." << endl;
+        *fLog << err << "ERROR - MSimReadout: Lo-gains not implemented yet." << endl;
         return kERROR;
     }
@@ -141,8 +155,9 @@
     const UInt_t npix = fData->GetNumPixels();
 
-    // Sanity check
-    if (fData->GetNumPixels()!=fCamera->GetNumChannels())
-    {
-        *fLog << err << "ERROR - Number of analog channels doen't match number of pixels." << endl;
+    if (npix!=fCamera->GetNumChannels())
+    {
+        *fLog << err;
+        *fLog << "ERROR - Number of analog channels " << fCamera->GetNumChannels();
+        *fLog << " doesn't match number of pixels " << fData->GetNumPixels() << endl;
         return kERROR;
     }
@@ -150,5 +165,5 @@
     if (fTrigger->GetVal()<0)
     {
-        *fLog << err << "ERROR - MSimReadout executed for an event which has no trigger." << endl;
+        *fLog << err << "ERROR - MSimReadout: MSimReadout executed for an event which has no trigger." << endl;
         return kERROR;
     }
Index: trunk/MagicSoft/Mars/msimcamera/MSimReadout.h
===================================================================
--- trunk/MagicSoft/Mars/msimcamera/MSimReadout.h	(revision 9269)
+++ trunk/MagicSoft/Mars/msimcamera/MSimReadout.h	(revision 9270)
@@ -23,6 +23,7 @@
 
     // MTask
-    Int_t PreProcess(MParList *pList);
-    Int_t Process();
+    Int_t  PreProcess(MParList *pList);
+    Int_t  Process();
+    Bool_t ReInit(MParList *pList);
 
 public:
