Index: trunk/MagicSoft/Mars/mjtrain/MJTrainDisp.cc
===================================================================
--- trunk/MagicSoft/Mars/mjtrain/MJTrainDisp.cc	(revision 8767)
+++ trunk/MagicSoft/Mars/mjtrain/MJTrainDisp.cc	(revision 8888)
@@ -493,6 +493,11 @@
     DisplayResult(hdisp1, hdisp2);
 
+    TObjArray arr;
+    arr.Add(const_cast<MDataSet*>(&set));
+    if (fDisplay)
+        arr.Add(fDisplay);
+
     SetPathOut(out);
-    return WriteDisplay(0, "UPDATE");
+    return WriteContainer(arr, 0, "UPDATE");
 }
 
Index: trunk/MagicSoft/Mars/mjtrain/MJTrainEnergy.cc
===================================================================
--- trunk/MagicSoft/Mars/mjtrain/MJTrainEnergy.cc	(revision 8767)
+++ trunk/MagicSoft/Mars/mjtrain/MJTrainEnergy.cc	(revision 8888)
@@ -191,12 +191,14 @@
 
     // -------------------------------------------------------------
-    MBinning binsS(50, 10,     100000, "BinningSize",           "log");
-    MBinning binsE(70, 10,     31623,  "BinningEnergy",         "log");
-    MBinning binsG(50,-10,     10,     "BinningSlope",          "lin");
-    MBinning binsR(50, -1,     1,      "BinningEnergyResidual", "lin");
-    MBinning binsL(50,  0,     0.3,    "BinningLeakage",        "lin");
-    MBinning binsT(51, -0.005, 0.505,  "BinningTheta",          "asin");
-    MBinning binsD(50,  0,     1.6,    "BinningDist",           "lin");
-    MBinning binsC(50,  1e-2,  1,      "BinningConc",           "log");
+    MBinning binsS(50,  10,     100000, "BinningSize",             "log");
+    MBinning binsE(70,  10,     31623,  "BinningEnergy",           "log");
+    MBinning binsF(35,  10,     31623,  "BinningEnergyEst",        "log");
+    MBinning binsG(50, -10,     10,     "BinningSlope",            "lin");
+    MBinning binsR(50,  -1,     1,      "BinningEnergyResidual",   "lin");
+    MBinning binsL(50,   0,     0.3,    "BinningLeakage",          "lin");
+    MBinning binsT(51,  -0.005, 0.505,  "BinningTheta",            "asin");
+    MBinning binsD(50,   0,     1.6,    "BinningDist",             "lin");
+    MBinning binsC(50,   1e-2,  1,      "BinningConc",             "log");
+    MBinning binsI(16,   0,     800,    "BinningImpact",           "lin");
 
     plist.AddToList(&binsG);
@@ -204,8 +206,10 @@
     plist.AddToList(&binsR);
     plist.AddToList(&binsE);
+    plist.AddToList(&binsF);
     plist.AddToList(&binsL);
     plist.AddToList(&binsT);
     plist.AddToList(&binsD);
     plist.AddToList(&binsC);
+    plist.AddToList(&binsI);
 
     MHEnergyEst hist;
@@ -252,13 +256,35 @@
     hres2.SetDrawOption("colz profx");
 
-    MFillH fillh(&hist);
+    MHn hres3("Resolution", "Energy Resolution");
+    hres3.AddHist("MEnergyEst.fVal", "(MMcEvt.fEnergy/MEnergyEst.fVal-1)^2", MH3::kProfile);
+    hres3.InitName("ResEest;EnergyEst;");
+    hres3.InitTitle(";E_{est} [GeV];Resolution (E_{mc}/E_{est}-1)^{2};");
+
+    hres3.AddHist("MHillas.fSize", "(MMcEvt.fEnergy/MEnergyEst.fVal-1)^2", MH3::kProfile);
+    hres3.InitName("ResSize;Size;");
+    hres3.InitTitle(";S [phe];Resolution (E_{mc}/E_{est}-1)^{2};");
+/*
+    hres3.AddHist("MMcEvt.fEnergy", "(MEnergyEst.fVal/MMcEvt.fEnergy-1)^2", MH3::kProfile);
+    hres3.InitName("ResEmc;EnergyEst;");
+    hres3.InitTitle(";E_{mc} [GeV];Resolution (E_{est}/E_{mc}-1)^{2};");
+  */
+    hres3.AddHist("MPointingPos.fZd", "(MMcEvt.fEnergy/MEnergyEst.fVal-1)^2", MH3::kProfile);
+    hres3.InitName("ResTheta;Theta;");
+    hres3.InitTitle(";\\Theta [\\circ];Resolution (E_{mc}/E_{est}-1)^{2};");
+    hres3.AddHist("MMcEvt.fImpact/100", "(MMcEvt.fEnergy/MEnergyEst.fVal-1)^2", MH3::kProfile);
+    hres3.InitName("ResImpact;Impact;");
+    hres3.InitTitle(";I [m];Resolution (E_{mc}/E_{est}-1)^{2};");
+
+    MFillH fillh0(&hist);
     MFillH fillh1(&hres1, "", "FillResiduals1");
     MFillH fillh2(&hres2, "", "FillResiduals2");
+    MFillH fillh3(&hres3, "", "FillResolution");
 
     if (fEnableWeights)
     {
-        fillh.SetWeight();
+        fillh0.SetWeight();
         fillh1.SetWeight();
         fillh2.SetWeight();
+        fillh3.SetWeight();
     }
 
@@ -268,7 +294,8 @@
     tlist.AddToList(&rf);
     tlist.AddToList(fPostTasks);
-    tlist.AddToList(&fillh);
+    tlist.AddToList(&fillh0);
     tlist.AddToList(&fillh1);
     tlist.AddToList(&fillh2);
+    tlist.AddToList(&fillh3);
     tlist.AddToList(fTestTasks);
 
@@ -283,8 +310,10 @@
         return kFALSE;
 
+    TObjArray arr;
+    arr.Add(const_cast<MDataSet*>(&set));
+    if (fDisplay)
+        arr.Add(fDisplay);
+
     SetPathOut(out);
-    if (!WriteDisplay(0, "UPDATE"))
-        return kFALSE;
-
-    return kTRUE;
+    return WriteContainer(arr, 0, "UPDATE");
 }
Index: trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.cc
===================================================================
--- trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.cc	(revision 8767)
+++ trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.cc	(revision 8888)
@@ -1047,9 +1047,12 @@
 
     // Write the display
+    TObjArray arr;
+    arr.Add(const_cast<MDataSet*>(&fDataSetTrain));
+    arr.Add(const_cast<MDataSet*>(&fDataSetTest));
+    if (fDisplay)
+        arr.Add(fDisplay);
+
     SetPathOut(out);
-    if (!WriteDisplay(0, "UPDATE"))
-        return kFALSE;
-
-    return kTRUE;
+    return WriteContainer(arr, 0, "UPDATE");
 }
 
