Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 1341)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 1342)
@@ -92,5 +92,16 @@
   * mdata/MReadTree.cc:
      - fixed a root bug for root versions<3.03/00 (the open file in
-       the TChain was not deleted (closed))
+       the TChain was not deleted (closed))           
+
+   * mbase/MReadMarsFile.[h,cc]:
+     - store parlist instead of tasklist
+     - check for run types between files
+     - check for used reflector version (because of a bug in the program)
+
+   * mmc/MMcRunheader.hxx:
+     - added GetReflVersion()
+
+   * mmontecarlo/MMcTriggerRateCalc.cc:
+     - changed particle Id numbers to predefined constants
 
 
Index: /trunk/MagicSoft/Mars/mbase/MReadMarsFile.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MReadMarsFile.cc	(revision 1341)
+++ /trunk/MagicSoft/Mars/mbase/MReadMarsFile.cc	(revision 1342)
@@ -41,4 +41,8 @@
 #include "MParList.h"
 #include "MTaskList.h"
+
+#include "MRawRunHeader.h"
+
+#include "MMcRunHeader.hxx"
 
 ClassImp(MReadMarsFile);
@@ -109,9 +113,9 @@
 {
     Int_t runtype = -1;
-/*
-    const MRawRunHeader *runheader = (MRawRunHeader*)fParList->FindObject("MRawRunHeader");
-    if (runheader)
-        runtype = runheader->GetRunType();
-*/
+
+    const MRawRunHeader *rawheader = (MRawRunHeader*)fParList->FindObject("MRawRunHeader");
+    if (rawheader)
+        runtype = rawheader->GetRunType();
+
     //
     // Try to read the new run headers. If reading the new run header
@@ -120,24 +124,45 @@
     const Int_t idx = GetFileIndex();
     fRun->SetEventNum(idx<0?0:idx); // Assumption: One Entry per File!
-    if (fRun->Process())
+    if (!fRun->Process())
     {
-        *fLog << inf << "MReadMarsFile: Switching to #" << GetFileIndex();
-        *fLog << " '" << GetFileName() << "' (before event #";
-        *fLog << GetEventNum()-1 << ")" << endl;
-/*
-        if (runheader)
-            if (runtype != runheader->GetRunType())
-                *fLog << warn << "Warning - You are mixing files with different run types!" << endl;
-*/
-        if (fTaskList->ReInit())
-            return kTRUE;
+        *fLog << err << "ERROR - Cannot read new runheaders #" << idx;
+        *fLog << " after reading event #" << GetEventNum() << endl;
+        return kFALSE;
+    }
 
-        //MReadTree::Notify();
+    *fLog << inf << "MReadMarsFile: Switching to #" << GetFileIndex();
+    *fLog << " '" << GetFileName() << "' (before event #";
+    *fLog << GetEventNum()-1 << ")" << endl;
 
-        *fLog << err << "ERROR - ReInit of '" << fTaskList->GetName() << "' failed." << endl;
+    if (rawheader)
+    {
+        if (runtype != rawheader->GetRunType())
+            *fLog << warn << "Warning - You are mixing files with different run types!" << endl;
     }
-    else
-        *fLog << err << "ERROR - Cannot read new runheaders after reading event #" << GetEventNum() << endl;
 
+    const MMcRunHeader *mcheader = (MMcRunHeader*)fParList->FindObject("MMcRunHeader");
+    if (mcheader)
+    {
+        if (mcheader->GetReflVersion()<=40 && mcheader->GetTelesTheta()>15)
+        {
+            *fLog << warn << "Warning - You may use Monte Carlo data produced with a version" << endl;
+            *fLog << "of the reflector program < 0.4 and a zenith angle > 15," << endl;
+            *fLog << "in this case you may get less photons than you would expect." << endl;
+        }
+    }
+
+    MTaskList *tlist = (MTaskList*)fParList->FindObject("MTaskList");
+    if (!tlist)
+    {
+        *fLog << err << dbginf << "ERROR - Task List not found in Parameter List." << endl;
+        return kFALSE;
+    }
+
+    if (tlist->ReInit())
+        return kTRUE;
+
+    //MReadTree::Notify();
+
+    *fLog << err << "ERROR - ReInit of '" << tlist->GetName() << "' failed." << endl;
     return kFALSE;
 }
@@ -151,5 +176,4 @@
 {
     fParList  = pList;
-    fTaskList = (MTaskList*)pList->FindObject("MTaskList");
 
     if (!fRun->PreProcess(pList))
Index: /trunk/MagicSoft/Mars/mbase/MReadMarsFile.h
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MReadMarsFile.h	(revision 1341)
+++ /trunk/MagicSoft/Mars/mbase/MReadMarsFile.h	(revision 1342)
@@ -14,5 +14,4 @@
     MReadTree *fRun;
     MParList  *fParList;  //! Parlist for reinitialization
-    MTaskList *fTaskList; //! Tasklist for reinitialization
 
     Bool_t Notify();
Index: /trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.cc	(revision 1341)
+++ /trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.cc	(revision 1342)
@@ -159,9 +159,13 @@
 
         rate.SetParticle(fPartId);
-	if (fPartId ==14)
-	    rate.SetFlux(0.1091, 2.75);
-	else if (fPartId == 402)
-	    rate.SetFlux(0.0660, 2.62);
-	else {
+        switch (fPartId)
+        {
+        case kPROTON:
+            rate.SetFlux(0.1091, 2.75);
+            break;
+        case kHELIUM:
+            rate.SetFlux(0.0660, 2.62);
+            break;
+        default:
 	    *fLog << err << dbginf << "Unknown incident flux parameters for ";
 	    *fLog << fPartId<< " particle Id ... aborting." << endl;
Index: /trunk/MagicSoft/include-Classes/MMcFormat/MMcRunHeader.hxx
===================================================================
--- /trunk/MagicSoft/include-Classes/MMcFormat/MMcRunHeader.hxx	(revision 1341)
+++ /trunk/MagicSoft/include-Classes/MMcFormat/MMcRunHeader.hxx	(revision 1342)
@@ -138,4 +138,5 @@
   Float_t  GetTelesTheta() const          { return fTelesTheta; }
   UShort_t GetCamVersion() const          { return fCamVersion; }
+  UShort_t GetReflVersion() const         { return fReflVersion; }
   UInt_t   GetNumSimulatedShowers() const { return fNumSimulatedShowers; }
   UInt_t   GetCorsikaVersion() const      { return fCorsikaVersion; }
