Index: trunk/MagicSoft/Mars/mmontecarlo/MMcThresholdCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mmontecarlo/MMcThresholdCalc.cc	(revision 983)
+++ trunk/MagicSoft/Mars/mmontecarlo/MMcThresholdCalc.cc	(revision 984)
@@ -103,24 +103,26 @@
     }
 
+    UInt_t from = fDimension>0 ?          1 : -fDimension;
+    UInt_t to   = fDimension>0 ? fDimension : -fDimension;
 
-    const UInt_t from = fDimension<=0 ? -fDimension : 0;
+    fNum = to-from+1;
 
-    if (fDimension<=0)
-        fDimension = -fDimension;
+    Int_t num;
 
-    if (fDimension==0)
-        fDimension=1;
-
-    fMcTrig = new TObjArray(pList->FindObjectList("MMcTrig", from, fDimension));
-    if (fMcTrig->GetEntriesFast() != fDimension)
+    fMcTrig = new TObjArray(pList->FindObjectList("MMcTrig", from, to));
+    num = fMcTrig->GetEntriesFast();
+    if (num != fNum)
     {
-        *fLog << dbginf << "Error: Not all requested MMcTrig objects are available...aborting." << endl;
+        *fLog << dbginf << fNum << " MMcTrig objects requested, ";
+        *fLog << num << " are available... aborting." << endl;
         return kFALSE;
     }
 
-    fEnergy = new TObjArray(pList->FindCreateObjList("MHMcEnergy", from, fDimension));
-    if (fMcTrig->GetEntriesFast() != fDimension && fDimension)
+    fEnergy = new TObjArray(pList->FindCreateObjList("MHMcEnergy", from, to));
+    num = fMcTrig->GetEntriesFast();
+    if (num != fNum)
     {
-        *fLog << dbginf << "Error: Not all requested MHMcEnergy objects are available...aborting." << endl;
+        *fLog << dbginf << fNum << " MHMcEnergy objects requested, ";
+        *fLog << num << " are available... aborting." << endl;
         return kFALSE;
     }
@@ -141,5 +143,5 @@
     const Float_t reciproc = 1./energy;
 
-    for (Int_t i=0; i<fDimension; i++)
+    for (Int_t i=0; i<fNum; i++)
         if (GetTrig(i)->GetFirstLevel()>0)
             GetHEnergy(i)->Fill(lg10, reciproc);
@@ -155,5 +157,5 @@
 Bool_t MMcThresholdCalc::PostProcess()
 {
-    for (Int_t i=0; i<fDimension; i++)
+    for (Int_t i=0; i<fNum; i++)
     {
         MHMcEnergy &hist = *GetHEnergy(i);
Index: trunk/MagicSoft/Mars/mmontecarlo/MMcThresholdCalc.h
===================================================================
--- trunk/MagicSoft/Mars/mmontecarlo/MMcThresholdCalc.h	(revision 983)
+++ trunk/MagicSoft/Mars/mmontecarlo/MMcThresholdCalc.h	(revision 984)
@@ -25,4 +25,5 @@
 private:
     Int_t fDimension;
+    Int_t fNum;
 
     const MMcEvt  *fMcEvt;       // Container with Monte Carlo information
Index: trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.cc	(revision 983)
+++ trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.cc	(revision 984)
@@ -43,5 +43,5 @@
     *fTitle = title ? title : "Task to calc the trigger rate ";
 
-    fDimension=dim;
+    fDimension = dim;
 
     for (int i=0;i<10;i++)
@@ -111,27 +111,30 @@
     }
 
-    const UInt_t from = fDimension<=0 ? -fDimension : 0;
-
-    if (fDimension<=0)
-        fDimension = -fDimension;
-
-    if (fDimension==0)
-        fDimension=1;
-
-    fMcTrig = new TObjArray(pList->FindObjectList("MMcTrig", from, fDimension));
-    if (fMcTrig->GetEntriesFast() != fDimension)
-    {
-        *fLog << dbginf << "Error: Not all requested MMcTrig objects are available...aborting." << endl;
+    UInt_t from = fDimension>0 ?          1 : -fDimension;
+    UInt_t to   = fDimension>0 ? fDimension : -fDimension;
+
+    fNum = to-from+1;
+
+    Int_t num;
+
+    fMcTrig = new TObjArray(pList->FindObjectList("MMcTrig", from, to));
+    num = fMcTrig->GetEntriesFast();
+    if (num != fNum)
+    {
+        *fLog << dbginf << fNum << " MMcTrig objects requested, ";
+        *fLog << num << " are available... aborting." << endl;
         return kFALSE;
     }
 
-    fMcRate = new TObjArray(pList->FindObjectList("MHMcRate", from, fDimension));
-    if (fMcRate->GetEntriesFast() != fDimension)
-    {
-        *fLog << dbginf << "Error: Not all requested MHMcRate objects are available...aborting." << endl;
+    fMcRate = new TObjArray(pList->FindObjectList("MHMcRate", from, to));
+    num = fMcRate->GetEntriesFast();
+    if (num != fNum)
+    {
+        *fLog << dbginf << fNum << " MHMcRate objects requested, ";
+        *fLog << num << " are available... aborting." << endl;
         return kFALSE;
     }
 
-    for (int i=0; i<fDimension; i++)
+    for (int i=0; i<fNum; i++)
     {
         MHMcRate &rate = *GetRate(i);
@@ -175,5 +178,5 @@
     //  Counting number of triggers
     //
-    for (int i=0; i<fDimension; i++)
+    for (int i=0; i<fNum; i++)
     {
         fTrigger[i] += GetTrig(i)->GetFirstLevel();
@@ -194,5 +197,5 @@
     // Computing trigger rate
     //
-    for (int i=0; i<fDimension; i++)
+    for (int i=0; i<fNum; i++)
         GetRate(i)->CalcRate(fTrigger[i], fAnalShow, fShowers);
 
Index: trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.h
===================================================================
--- trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.h	(revision 983)
+++ trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.h	(revision 984)
@@ -27,4 +27,5 @@
     Int_t      fDimension;     // Information about the trigger conditions
                                // in the root file to be read.
+    Int_t      fNum;           // decoded dimension
 
     Float_t    fTrigger[10];   // Number of triggered showers
@@ -38,5 +39,5 @@
 
     MHMcRate *GetRate(UInt_t i) const { return (MHMcRate*)((*fMcRate)[i]); }
-    MMcTrig *GetTrig(UInt_t i) const { return (MMcTrig*)((*fMcTrig)[i]); }
+    MMcTrig  *GetTrig(UInt_t i) const { return (MMcTrig*)((*fMcTrig)[i]); }
 
 public:
