Index: /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.cc
===================================================================
--- /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.cc	(revision 7663)
+++ /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.cc	(revision 7664)
@@ -86,4 +86,10 @@
     g.SetMarkerColor(kGreen);
 
+    TH2D res1(g);
+    TH2D res2(g);
+
+    res1.SetTitle("Significance Li/Ma");
+    res2.SetTitle("Significance Li/Ma * log_{10}(excess)");
+
     const Int_t nx = h.GetNbinsX();
     const Int_t ny = h.GetNbinsY();
@@ -106,6 +112,6 @@
             const Float_t s = gx->Integral(1, y+1);
             const Float_t b = hx->Integral(1, y+1);
-            const Float_t sig1 = MMath::SignificanceLiMa(s+b, b);
-            const Float_t sig2 = s<1 ? 0 : MMath::SignificanceLiMa(s+b, b)*TMath::Log10(s);
+            const Float_t sig1 = MMath::SignificanceLiMaSigned(s+b, b);
+            const Float_t sig2 = s<1 ? 0 : MMath::SignificanceLiMaSigned(s+b, b)*TMath::Log10(s);
             if (sig1>max1)
             {
@@ -118,4 +124,7 @@
                 max2 = sig2;
             }
+
+            res1.SetBinContent(x+1, y+1, sig1);
+            res2.SetBinContent(x+1, y+1, sig2);
         }
 
@@ -127,5 +136,8 @@
     }
 
-    fDisplay->AddTab("OptCut");
+    TCanvas &c = fDisplay->AddTab("OptCut");
+    c.Divide(2,2);
+
+    c.cd(1);
     gPad->SetLogx();
     h.DrawCopy();
@@ -136,4 +148,14 @@
     gr2.SetMarkerStyle(kFullDotMedium);
     gr2.DrawClone("LP")->SetBit(kCanDelete);
+
+    c.cd(2);
+    gPad->SetLogx();
+    MH::SetPalette("pretty");
+    res1.DrawCopy("colz");
+
+    c.cd(4);
+    gPad->SetLogx();
+    MH::SetPalette("pretty");
+    res2.DrawCopy("colz");
 }
 
@@ -457,4 +479,6 @@
         return kFALSE;
 
+    const Int_t numgammas = train.GetNumRows();
+
     // Set classifier for hadrons
     had.SetVal(1);
@@ -464,4 +488,6 @@
     if (!fill.Process(plistx))
         return kFALSE;
+
+    const Int_t numbackgrnd = train.GetNumRows()-numgammas;
 
     // ------------------------ Train RF --------------------------
@@ -478,19 +504,37 @@
     rf.SetNameOutput("MHadronness");
 
-    //MBinning b(2, -0.5, 1.5, "BinningHadronness", "lin");
+    if (fUseRegression)
+    {
+        if (!rf.TrainSingleRF(train))                  // regression
+            return kFALSE;
+    }
+    else
+    {
+        MBinning b(2, -0.5, 1.5, "BinningHadronness", "lin");
+        if (!rf.TrainSingleRF(train, b.GetEdgesD()))   // classification
+            return;
+    }
 
     //if (!rf.TrainMultiRF(train, b.GetEdgesD()))    // classification
     //    return;
 
-    //if (!rf.TrainSingleRF(train, b.GetEdgesD()))   // classification
-    //    return;
-
-    if (!rf.TrainSingleRF(train))                  // regression
-        return kFALSE;
-
     //fDisplay = rf.GetDisplay();
 
+
+    *fLog << all;
+    fLog->Separator();
+
+    *fLog << "Training method:" << endl;
+    *fLog << " * " << (fUseRegression?"regression":"classification") << endl;
+    *fLog << endl;
+    *fLog << "Events used for training:"   << endl;
+    *fLog << " * Gammas:     " << numgammas   << endl;
+    *fLog << " * Background: " << numbackgrnd << endl;
+
+    if (!fDataSetTest.IsValid())
+        return kTRUE;
+
     // --------------------- Display result ----------------------
-    gLog.Separator("Test");
+    fLog->Separator("Test");
 
     MParList  plist;
Index: /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.h
===================================================================
--- /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.h	(revision 7663)
+++ /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.h	(revision 7664)
@@ -25,4 +25,5 @@
 
     Bool_t fAutoTrain;
+    Bool_t fUseRegression;
 
     void DisplayResult(MH3 &h31, MH3 &h32);
@@ -36,5 +37,5 @@
         fNumTrainOn((UInt_t)-1), fNumTrainOff((UInt_t)-1),
         fNumTestOn((UInt_t)-1), fNumTestOff((UInt_t)-1),
-        fAutoTrain(kFALSE)
+        fAutoTrain(kFALSE), fUseRegression(kTRUE)
     { }
 
@@ -42,4 +43,7 @@
     {
         ds.Copy(fDataSetTrain);
+
+        fDataSet.SetNumAnalysis(1);
+
         fNumTrainOn = non;
         fNumTrainOff = noff;
@@ -48,9 +52,14 @@
     {
         ds.Copy(fDataSetTest);
+
+        fDataSet.SetNumAnalysis(1);
+
         fNumTestOn = non;
         fNumTestOff = noff;
     }
 
-    void EnableAutoTrain(Bool_t b=kTRUE) { fAutoTrain = b; }
+    void EnableAutoTrain(Bool_t b=kTRUE)      { fAutoTrain     =  b; }
+    void EnableRegression(Bool_t b=kTRUE)     { fUseRegression =  b; }
+    void EnableClassification(Bool_t b=kTRUE) { fUseRegression = !b; }
 
     Bool_t Train(const char *out);
