Index: trunk/MagicSoft/Mars/mmontecarlo/MMcCollectionAreaCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mmontecarlo/MMcCollectionAreaCalc.cc	(revision 5072)
+++ trunk/MagicSoft/Mars/mmontecarlo/MMcCollectionAreaCalc.cc	(revision 5073)
@@ -78,5 +78,5 @@
     if (!fMcEvt)
     {
-        *fLog << err << dbginf << "MMcEvt not found... exit." << endl;
+        *fLog << err << "MMcEvt not found... abort." << endl;
         return kFALSE;
     }
@@ -87,9 +87,47 @@
 Bool_t MMcCollectionAreaCalc::ReInit(MParList *plist)
 {
+    fCollArea=0;
+
     MMcRunHeader *runheader = (MMcRunHeader*)plist->FindObject("MMcRunHeader");
     if (!runheader)
     {
-        *fLog << err << dbginf << "Error - MMcRunHeader not found... exit." << endl;
-        return kFALSE;
+        *fLog << err << "Error - MMcRunHeader not found... abort." << endl;
+        return kFALSE;
+    }
+
+    fTotalNumSimulatedShowers += runheader->GetNumSimulatedShowers();
+    *fLog << inf << "Total Number of Simulated showers: " << fTotalNumSimulatedShowers << endl;
+
+
+    if (fTheta>=0 && fTheta!=runheader->GetTelesTheta())
+    {
+        *fLog << warn << "Warning - Read files have different TelesTheta (";
+        *fLog << fTheta << ", " << runheader->GetTelesTheta() << ")..." << endl;
+    }
+    fTheta = runheader->GetTelesTheta();
+
+
+    if (fCorsikaVersion!=0 && fCorsikaVersion!=runheader->GetCorsikaVersion())
+        *fLog << warn << "Warning - Read files have different Corsika versions..." << endl;
+    fCorsikaVersion = runheader->GetCorsikaVersion();
+
+
+    fAllEvtsTriggered |= runheader->GetAllEvtsTriggered();
+    *fLog << inf << "Only triggered events avail: " << (fAllEvtsTriggered?"yes":"no") << endl;
+
+
+    fCollArea = (MHMcCollectionArea*)plist->FindCreateObj("MHMcCollectionArea");
+    if (!fCollArea)
+        return kFALSE;
+
+    if (!fAllEvtsTriggered)
+    {
+        fMcTrig = (MMcTrig*)plist->FindObject(fObjName);
+        if (!fMcTrig)
+        {
+            *fLog << err << fObjName << " [MMcTrig] not found... anort." << endl;
+            return kFALSE;
+        }
+        return kTRUE;
     }
 
@@ -97,79 +135,42 @@
     if (!corrunheader)
     {
-        *fLog << err << dbginf << "Error - MMcCorsikaRunHeader not found... exit." << endl;
-        return kFALSE;
-    }
-
-    fTotalNumSimulatedShowers += runheader->GetNumSimulatedShowers();
-    *fLog << inf << "Total Number of Simulated showers: " << fTotalNumSimulatedShowers << endl;
-
-
-    if (fTheta>=0 && fTheta!=runheader->GetTelesTheta())
-    {
-        *fLog << warn << dbginf << "Warning - Read files have different TelesTheta (";
-        *fLog << fTheta << ", " << runheader->GetTelesTheta() << ")..." << endl;
-    }
-    fTheta = runheader->GetTelesTheta();
-
-
-    if (fCorsikaVersion!=0 && fCorsikaVersion!=runheader->GetCorsikaVersion())
-        *fLog << warn << dbginf << "Warning - Read files have different Corsika versions..." << endl;
-    fCorsikaVersion = runheader->GetCorsikaVersion();
-
-
-    fAllEvtsTriggered |= runheader->GetAllEvtsTriggered();
-    *fLog << inf << "Only triggered events avail: " << (fAllEvtsTriggered?"yes":"no") << endl;
-
-
-    fCollArea = (MHMcCollectionArea*)plist->FindCreateObj("MHMcCollectionArea");
-    if (!fCollArea)
-        return kFALSE;
-
-    if (fAllEvtsTriggered)
-      {
-	//
-	// Calculate approximately the original number of events in each 
-	// energy bin:
-	//
-
-	const Float_t emin = corrunheader->GetELowLim();
-	const Float_t emax = corrunheader->GetEUppLim();
-	const Float_t expo = 1 + corrunheader->GetSlopeSpec();
-	const Float_t k = runheader->GetNumSimulatedShowers() / 
-	  (pow(emax,expo) - pow(emin,expo)) ;
-
-        TH2 &hall = *fCollArea->GetHistAll();
-
-	const Int_t nbinx = hall.GetNbinsX();
-
-        TAxis &axe = *hall.GetXaxis();
-	for (Int_t i = 1; i <= nbinx; i++)
-	  {
-	    const Float_t e1 = axe.GetBinLowEdge(i);
-	    const Float_t e2 = axe.GetBinLowEdge(i+1);
-
-	    if (e1 < emin || e2 > emax)
-	      continue;
-
-	    const Float_t events = k * (pow(e2, expo) - pow(e1, expo));
-	    //
-	    // We fill the i-th energy bin, with the total number of events
-	    // Second argument of Fill would be impact parameter of each
-	    // event, but we don't really need it for the collection area,
-	    // so we just put a dummy value (1.)
-	    //
-
-	    const Float_t energy = (e1+e2)/2.;
-	    hall.Fill(energy, 1., events);
-	  }
-
-        return kTRUE;
-      }
-
-    fMcTrig = (MMcTrig*)plist->FindObject(fObjName);
-    if (!fMcTrig)
-    {
-        *fLog << err << dbginf << fObjName << " [MMcTrig] not found... exit." << endl;
-        return kFALSE;
+        *fLog << err << "MMcCorsikaRunHeader not found... abort." << endl;
+        return kFALSE;
+    }
+
+    //
+    // Calculate approximately the original number of events in each
+    // energy bin:
+    //
+
+    const Float_t emin = corrunheader->GetELowLim();
+    const Float_t emax = corrunheader->GetEUppLim();
+    const Float_t expo = 1 + corrunheader->GetSlopeSpec();
+    const Float_t k = runheader->GetNumSimulatedShowers() /
+        (pow(emax,expo) - pow(emin,expo)) ;
+
+    TH2 &hall = *fCollArea->GetHistAll();
+
+    const Int_t nbinx = hall.GetNbinsX();
+
+    TAxis &axe = *hall.GetXaxis();
+    for (Int_t i = 1; i <= nbinx; i++)
+    {
+        const Float_t e1 = axe.GetBinLowEdge(i);
+        const Float_t e2 = axe.GetBinLowEdge(i+1);
+
+        if (e1 < emin || e2 > emax)
+            continue;
+
+        const Float_t events = k * (pow(e2, expo) - pow(e1, expo));
+        //
+        // We fill the i-th energy bin, with the total number of events
+        // Second argument of Fill would be impact parameter of each
+        // event, but we don't really need it for the collection area,
+        // so we just put a dummy value (1.)
+        //
+
+        const Float_t energy = (e1+e2)/2.;
+        hall.Fill(energy, 1., events);
     }
 
@@ -205,5 +206,8 @@
 
 Int_t MMcCollectionAreaCalc::PostProcess()
-{ 
+{
+    if (!fCollArea)
+        return kTRUE;
+
     //
     //   do the calculation of the effectiv area
