Index: trunk/MagicSoft/Mars/mranforest/MRanForest.cc
===================================================================
--- trunk/MagicSoft/Mars/mranforest/MRanForest.cc	(revision 2086)
+++ trunk/MagicSoft/Mars/mranforest/MRanForest.cc	(revision 2114)
@@ -85,7 +85,5 @@
 void MRanForest::SetPriors(Float_t prior_had, Float_t prior_gam)
 {
-    Float_t sum;
-
-    sum=prior_gam+prior_had;
+    const Float_t sum=prior_gam+prior_had;
 
     prior_gam/=sum;
@@ -98,13 +96,12 @@
 }
 
-Double_t MRanForest::CalcHadroness(TVector &event)
+Double_t MRanForest::CalcHadroness(const TVector &event)
 {
     Double_t hadroness=0;
     Int_t ntree=0;
+
+    TIter forest(fForest);
+
     MRanTree *tree;
-
-    TIter forest(fForest);
-    forest.Reset();
-
     while ((tree=(MRanTree*)forest.Next()))
     {
Index: trunk/MagicSoft/Mars/mranforest/MRanForest.h
===================================================================
--- trunk/MagicSoft/Mars/mranforest/MRanForest.h	(revision 2086)
+++ trunk/MagicSoft/Mars/mranforest/MRanForest.h	(revision 2114)
@@ -96,5 +96,5 @@
  
     // use forest to calculate hadronness of event
-    Double_t CalcHadroness(TVector &event);
+    Double_t CalcHadroness(const TVector &event);
 
     Bool_t AsciiWrite(ostream &out) const;
Index: trunk/MagicSoft/Mars/mranforest/MRanForestCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mranforest/MRanForestCalc.cc	(revision 2086)
+++ trunk/MagicSoft/Mars/mranforest/MRanForestCalc.cc	(revision 2114)
@@ -137,9 +137,7 @@
 Bool_t MRanForestCalc::Process()
 {
-    const Double_t ncols = fData->GetNumEntries();
-    TVector event(ncols);
-
-    for (int i=0; i<fData->GetNumEntries(); i++)
-        event(i) = (*fData)(i);
+    // first copy the data from the data array to a vector event
+    TVector event;
+    *fData >> event;
 
     Double_t hadroness=fRanForest->CalcHadroness(event);
Index: trunk/MagicSoft/Mars/mranforest/MRanTree.cc
===================================================================
--- trunk/MagicSoft/Mars/mranforest/MRanTree.cc	(revision 2086)
+++ trunk/MagicSoft/Mars/mranforest/MRanTree.cc	(revision 2114)
@@ -178,5 +178,5 @@
     // (Gini-index as criterium crit)
 
-    critmax=-1.0e20;
+    critmax=-1.0e20;  // FIXME: Replace by a constant from limits.h
 
     // random split selection, number of trials = fNumTry
@@ -301,6 +301,4 @@
     for(Int_t n=ndstart;n<=ndend;n++)
         ncase[n]=datasort[msplit*numdata+n];
-
-    return;
 }
 
@@ -459,6 +457,4 @@
             fBestSplit[kn]/=(classpop[0*nrnodes+kn]+classpop[1*nrnodes+kn]);
         }
-
-    return;
 }
 
@@ -468,36 +464,6 @@
 }
 
-Double_t MRanTree::TreeHad(TVector &event)
-{
-    Int_t kt=0;
-    // to optimize on storage space node status and node class
-    // are coded into fBestVar:
-    // status of node kt = TMath::Sign(1,fBestVar[kt])
-    // hadronness assigned to node kt = fBestSplit[kt]
-
-    for (Int_t k=0;k<fNumNodes;k++)
-    {
-        if (fBestVar[kt]<0)
-            break;
-
-        Int_t m=fBestVar[kt];
-
-        if (event(m)<=fBestSplit[kt])
-            kt=fTreeMap1[kt];
-        else
-            kt=fTreeMap2[kt];
-    }
-
-    return fBestSplit[kt];
-}
-
-Double_t MRanTree::TreeHad()
-{
-    const Double_t ncols = fData->GetNumEntries();
-    TVector event(ncols);
-
-    for (int i=0; i<fData->GetNumEntries(); i++)
-        event(i) = (*fData)(i);
-
+Double_t MRanTree::TreeHad(const TVector &event)
+{
     Int_t kt=0;
     // to optimize on storage space node status and node class
@@ -513,14 +479,18 @@
             break;
 
-        Int_t m=fBestVar[kt];
-
-        if (event(m)<=fBestSplit[kt])
-            kt=fTreeMap1[kt];
-        else
-            kt=fTreeMap2[kt];
-
+        const Int_t m=fBestVar[kt];
+
+        kt = event(m)<=fBestSplit[kt] ? fTreeMap1[kt] : fTreeMap2[kt];
     }
 
     return fBestSplit[kt];
+}
+
+Double_t MRanTree::TreeHad()
+{
+    TVector event;
+    *fData >> event;
+
+    return TreeHad(event);
 }
 
Index: trunk/MagicSoft/Mars/mranforest/MRanTree.h
===================================================================
--- trunk/MagicSoft/Mars/mranforest/MRanTree.h	(revision 2086)
+++ trunk/MagicSoft/Mars/mranforest/MRanTree.h	(revision 2114)
@@ -81,5 +81,5 @@
                    TArrayF &wl,Int_t ninbag);
 
-    Double_t TreeHad(TVector &event);
+    Double_t TreeHad(const TVector &event);
     Double_t TreeHad();
 
