Index: /trunk/MagicSoft/Mars/macros/CT1Analysis.C
===================================================================
--- /trunk/MagicSoft/Mars/macros/CT1Analysis.C	(revision 2574)
+++ /trunk/MagicSoft/Mars/macros/CT1Analysis.C	(revision 2575)
@@ -864,4 +864,6 @@
  }
 
+
+
   //---------------------------------------------------------------------
   // Job B_RF_UP
@@ -885,8 +887,8 @@
     gLog << "Macro CT1Analysis : JobB_RF_UP, RTrainRF, CTrainRF, RTree, WRF = "
          << (JobB_RF_UP ? "kTRUE" : "kFALSE")  << ",  " 
-         << (RTrainRF    ? "kTRUE" : "kFALSE")  << ",  "
-         << (CTrainRF    ? "kTRUE" : "kFALSE")  << ",  "
-         << (RTree      ? "kTRUE" : "kFALSE")  << ",  "
-         << (WRF        ? "kTRUE" : "kFALSE")  << endl;
+         << (RTrainRF ?   "kTRUE" : "kFALSE")  << ",  " 
+         << (CTrainRF ?   "kTRUE" : "kFALSE")  << ",  " 
+         << (RTree ?      "kTRUE" : "kFALSE")  << ",  "
+         << (WRF ?        "kTRUE" : "kFALSE")  << endl;
 
 
@@ -897,5 +899,5 @@
     Int_t NdSize   =   1;
 
-    // cut in RF hadronness
+
     TString hadRFName = "HadRF";
     Float_t maxhadronness =  0.23;
@@ -909,34 +911,48 @@
 
 
+    TString extin  = "1.root";
+    TString extout = "2.root";
+
     //--------------------------------------------
-    // file to be updated (either ON or MC)
+    // for the analysis using ON data only set typeMatrixHadrons = "ON"
+    //                        ON and OFF data                    = "OFF"
+    TString typeMatrixHadrons = "ON";
+    gLog << "typeMatrixHadrons = " << typeMatrixHadrons << endl;
+
+
+    // file to be updated (ON, OFF or MC)
 
     //TString typeInput = "ON";
-    TString typeInput = "MC";
+    TString typeInput = "OFF";
+    //TString typeInput = "MC";
     gLog << "typeInput = " << typeInput << endl;
 
     // name of input root file
-    TString filenameData = outPath;
-    filenameData += typeInput;
-    filenameData += "1.root";
-    gLog << "filenameData = " << filenameData << endl; 
+    TString NameData = outPath;
+    NameData += typeInput;
+    TString inNameData(NameData);
+    inNameData += extin;
+    gLog << "inNameData = " << inNameData << endl; 
 
     // name of output root file
-    TString outNameImage = outPath;
-    outNameImage += typeInput;
-    outNameImage += "2.root";
-    //TString outNameImage = filenameData;
-
-    gLog << "outNameImage = " << outNameImage << endl; 
+    TString outNameData(NameData);
+    outNameData += extout;
+    gLog << "outNameData = " << outNameData << endl; 
 
     //--------------------------------------------
-    // files to be read for generating the matrices of training events
+    // files to be read for generating 
+    //    - the matrices of training events
+    //    - and the root files of training and test events
+
+
     // "hadrons" :
-    TString filenameON = outPath;
-    filenameON += "ON";
-    filenameON += "1.root";
-    Int_t howManyHadrons = 35000;
-    gLog << "filenameON = " << filenameON << ",   howManyHadrons = "
-         << howManyHadrons  << endl; 
+    TString filenameHad = outPath;
+    filenameHad += typeMatrixHadrons;
+    filenameHad += extin;
+    Int_t howManyHadronsTrain = 12000;
+    Int_t howManyHadronsTest  = 12000;
+    gLog << "filenameHad = "    << filenameHad << ",   howManyHadronsTrain = "
+         << howManyHadronsTrain << ",   howManyHadronsTest = "
+         << howManyHadronsTest  << endl; 
     
 
@@ -944,24 +960,66 @@
     TString filenameMC = outPath;
     filenameMC += "MC";
-    filenameMC += "1.root";
-    Int_t howManyGammas = 35000;
-    gLog << "filenameMC = " << filenameMC << ",   howManyGammas = "
-         << howManyGammas   << endl; 
+    filenameMC += extin;
+    Int_t howManyGammasTrain = 12000;
+    Int_t howManyGammasTest  = 12000;
+    gLog << "filenameMC = "    << filenameMC << ",   howManyGammasTrain = "
+         << howManyGammasTrain << ",   howManyGammasTest = "
+         << howManyGammasTest  << endl; 
     
     //--------------------------------------------
-    // files of training events 
-
-    TString outNameGammas = outPath;
-    outNameGammas += "RFmatrix_gammas_";
-    outNameGammas += "MC";
-    outNameGammas += ".root";
-
-    TString typeMatrixHadrons = "ON";
-    gLog << "typeMatrixHadrons = " << typeMatrixHadrons << endl;
-
-    TString outNameHadrons = outPath;
-    outNameHadrons += "RFmatrix_hadrons_";
-    outNameHadrons += typeMatrixHadrons;
-    outNameHadrons += ".root";
+    // files for the matrices of training events 
+
+    TString NameGammas = outPath;
+    NameGammas += "RFmatrix_gammas_Train_";
+    NameGammas += "MC";
+    NameGammas += extin;
+
+    TString NameHadrons = outPath;
+    NameHadrons += "RFmatrix_hadrons_Train_";
+    NameHadrons += typeMatrixHadrons;
+    NameHadrons += extin;
+
+
+    //--------------------------------------------
+    // root files for the training events 
+
+    TString NameGammasTrain = outPath;
+    NameGammasTrain += "RF_gammas_Train_";
+    NameGammasTrain += "MC";
+    TString inNameGammasTrain(NameGammasTrain);    
+    inNameGammasTrain += extin;
+    TString outNameGammasTrain(NameGammasTrain);    
+    outNameGammasTrain += extout;
+
+
+    TString NameHadronsTrain = outPath;
+    NameHadronsTrain += "RF_hadrons_Train_";
+    NameHadronsTrain += typeMatrixHadrons;
+    TString inNameHadronsTrain(NameHadronsTrain);    
+    inNameHadronsTrain += extin;
+    TString outNameHadronsTrain(NameHadronsTrain);    
+    outNameHadronsTrain += extout;
+
+
+    //--------------------------------------------
+    // root files for the test events 
+
+    TString NameGammasTest = outPath;
+    NameGammasTest += "RF_gammas_Test_";
+    NameGammasTest += "MC";
+    TString inNameGammasTest(NameGammasTest);    
+    inNameGammasTest += extin;
+    TString outNameGammasTest(NameGammasTest);    
+    outNameGammasTest += extout;
+
+    TString NameHadronsTest = outPath;
+    NameHadronsTest += "RF_hadrons_Test_";
+    NameHadronsTest += typeMatrixHadrons;
+    TString inNameHadronsTest(NameHadronsTest);    
+    inNameHadronsTest += extin;
+    TString outNameHadronsTest(NameHadronsTest);    
+    outNameHadronsTest += extout;
+
+    //--------------------------------------------------------------------
 
 
@@ -1002,11 +1060,11 @@
     gLog << "Get matrix for (gammas)" << endl;
     gLog << "matrix name        = " << mtxName << endl;
-    gLog << "name of root file  = " << outNameGammas << endl;
+    gLog << "name of root file  = " << NameGammas << endl;
     gLog << "" << endl;
 
 
-    // read in the object with the name 'mtxName' from file 'outNameGammas'
-    //
-    TFile fileg(outNameGammas); 
+    // read in the object with the name 'mtxName' from file 'NameGammas'
+    //
+    TFile fileg(NameGammas); 
 
     matrixg.Read(mtxName);
@@ -1022,11 +1080,11 @@
     gLog << " Get matrix for (hadrons)" << endl;
     gLog << "matrix name        = " << mtxName << endl;
-    gLog << "name of root file  = " << outNameHadrons << endl;
+    gLog << "name of root file  = " << NameHadrons << endl;
     gLog << "" << endl;
 
 
-    // read in the object with the name 'mtxName' from file 'outNameHadrons'
-    //
-    TFile fileh(outNameHadrons); 
+    // read in the object with the name 'mtxName' from file 'NameHadrons'
+    //
+    TFile fileh(NameHadrons); 
 
     matrixh.Read(mtxName);
@@ -1037,31 +1095,20 @@
    //*************************************************************************
    // create matrices of training events
+   // and root files of training and test events
+ 
 if (CTrainRF)
   {
     gLog << "" << endl;
     gLog << "========================================================" << endl;
-    gLog << " Create matrices of training events" << endl;
+    gLog << " Create matrices of training events and root files of training and test events" 
+         << endl;
     gLog << " Gammas :" << endl;
-
+    gLog << "---------" << endl;
 
     MParList  plistg;
     MTaskList tlistg;
-    MFilterList flistg;
-
-    MParList  plisth;
-    MTaskList tlisth;
-    MFilterList flisth;
 
     MReadMarsFile  readg("Events", filenameMC);
     readg.DisableAutoScheme();
-
-    MReadMarsFile  readh("Events", filenameON);
-    readh.DisableAutoScheme();
-
-    MFParticleId fgamma("MMcEvt", '=', kGAMMA);
-    fgamma.SetName("gammaID");
-
-    MFParticleId fhadrons("MMcEvt", '!', kGAMMA);
-    fhadrons.SetName("hadronID)");
 
     TString mgname("costhg");
@@ -1075,23 +1122,60 @@
       gref.GetHist().SetBinContent(i, 1.0);
 
-
     MFEventSelector2 selectorg(gref);
-    selectorg.SetNumMax(howManyGammas);
-    selectorg.SetName("selectGammas");
-
+    selectorg.SetNumMax(howManyGammasTrain+howManyGammasTest);
+    selectorg.SetName("selectGammasTrainTest");
+    selectorg.SetInverted();
+    selectorg.SetUseOrigDistribution(kTRUE);
+
+    MContinue contg(&selectorg);
+    contg.SetName("ContGammas");
+
+    Double_t probg = ( (Double_t) howManyGammasTrain )
+                   / ( (Double_t)(howManyGammasTrain+howManyGammasTest) );
+    MFRandomSplit splitg(probg);
 
     MFillH fillmatg("MatrixGammas");
-    fillmatg.SetFilter(&flistg);
+    fillmatg.SetFilter(&splitg);
     fillmatg.SetName("fillGammas");
 
-
-
+    //-----------------------
+    // for writing the root files of training and test events
+    // for gammas
+    
+    MWriteRootFile writetraing(inNameGammasTrain, "RECREATE");
+    writetraing.SetName("WriteGammasTrain");
+    writetraing.SetFilter(&splitg);
+
+      writetraing.AddContainer("MRawRunHeader", "RunHeaders");
+      writetraing.AddContainer("MTime",         "Events");
+      writetraing.AddContainer("MMcEvt",        "Events");
+      writetraing.AddContainer("ThetaOrig",     "Events");
+      writetraing.AddContainer("MSrcPosCam",    "Events");
+      writetraing.AddContainer("MSigmabar",     "Events");
+      writetraing.AddContainer("MHillas",       "Events");
+      writetraing.AddContainer("MHillasExt",    "Events");
+      writetraing.AddContainer("MHillasSrc",    "Events");
+      writetraing.AddContainer("MNewImagePar",  "Events");
+
+    MContinue contgtrain(&splitg);
+    contgtrain.SetName("ContGammaTrain");
+
+    MWriteRootFile writetestg(inNameGammasTest, "RECREATE");
+    writetestg.SetName("WriteGammasTest");
+
+      writetestg.AddContainer("MRawRunHeader", "RunHeaders");
+      writetestg.AddContainer("MTime",         "Events");
+      writetestg.AddContainer("MMcEvt",        "Events");
+      writetestg.AddContainer("ThetaOrig",     "Events");
+      writetestg.AddContainer("MSrcPosCam",    "Events");
+      writetestg.AddContainer("MSigmabar",     "Events");
+      writetestg.AddContainer("MHillas",       "Events");
+      writetestg.AddContainer("MHillasExt",    "Events");
+      writetestg.AddContainer("MHillasSrc",    "Events");
+      writetestg.AddContainer("MNewImagePar",  "Events");
+
+    //-----------------------
+    
     //*****************************   fill gammas   ***  
-    // entries in MFilterList
-
-    flistg.AddToList(&fgamma);
-    flistg.AddToList(&selectorg);
-
-    //*****************************  
     // entries in MParList
     
@@ -1105,6 +1189,12 @@
     
     tlistg.AddToList(&readg);
-    tlistg.AddToList(&flistg);
+    tlistg.AddToList(&contg);
+
+    tlistg.AddToList(&splitg);
     tlistg.AddToList(&fillmatg);
+    tlistg.AddToList(&writetraing);
+    tlistg.AddToList(&contgtrain);
+
+    tlistg.AddToList(&writetestg);
 
     //*****************************
@@ -1112,4 +1202,5 @@
     MProgressBar matrixbar;
     MEvtLoop evtloopg;
+    evtloopg.SetName("FillGammaMatrix");
     evtloopg.SetParList(&plistg);
     //evtloopg.ReadEnv(env, "", printEnv);
@@ -1122,8 +1213,35 @@
     tlistg.PrintStatistics(0, kTRUE);
 
-    
+    matrixg.Print("SizeCols");
+    Int_t generatedgTrain = matrixg.GetM().GetNrows();
+    if ( fabs(generatedgTrain-howManyGammasTrain) > 
+                                    3.0*sqrt(howManyGammasTrain) )
+    {
+      gLog << "ONOFFCT1Analysis.C : no.of generated gamma training events (" 
+           << generatedgTrain << ") is incompatible with the no.of requested events (" 
+           << howManyGammasTrain << ")" << endl;   
+    }
+
+
+    Int_t generatedgTest = writetestg.GetNumExecutions();
+    if ( fabs(generatedgTest-howManyGammasTest) > 
+                                    3.0*sqrt(howManyGammasTest) )
+    {
+      gLog << "ONOFFCT1Analysis.C : no.of generated gamma test events (" 
+           << generatedgTest << ") is incompatible with the no.of requested events (" 
+           << howManyGammasTest << ")" << endl;   
+    }
+
     //*****************************   fill hadrons   ***  
-
+    gLog << "---------------------------------------------------------------"
+         << endl;
     gLog << " Hadrons :" << endl;
+    gLog << "----------" << endl;
+
+    MParList  plisth;
+    MTaskList tlisth;
+
+    MReadMarsFile  readh("Events", filenameHad);
+    readh.DisableAutoScheme();
 
     TString mhname("costhh");
@@ -1131,25 +1249,64 @@
     binh.SetEdges(10, 0., 1.0);
 
-    MH3 href("cos(MMcEvt.fTelescopeTheta)");
-    href.SetName(mhname);
-    MH::SetBinning(&href.GetHist(), &binh);
-    for (Int_t i=1; i<=href.GetNbins(); i++)
-      href.GetHist().SetBinContent(i, 1.0);
+    //MH3 href("cos(MMcEvt.fTelescopeTheta)");
+    //href.SetName(mhname);
+    //MH::SetBinning(&href.GetHist(), &binh);
+    //for (Int_t i=1; i<=href.GetNbins(); i++)
+    //  href.GetHist().SetBinContent(i, 1.0);
+
+    //use the original distribution from the gammas
+    MH3 &href = *(selectorg.GetHistOrig());
 
     MFEventSelector2 selectorh(href);
-    //selectorh.SetNumMax(howManyHadrons);
-    // select as many hadrons as gammas
-    selectorh.SetNumMax(matrixg.GetM().GetNrows());
-    selectorh.SetName("selectHadrons");
+    selectorh.SetNumMax(howManyHadronsTrain+howManyHadronsTest);
+    selectorh.SetName("selectHadronsTrainTest");
+    selectorh.SetInverted();
+
+    MContinue conth(&selectorh);
+    conth.SetName("ContHadrons");
+
+    Double_t probh = ( (Double_t) howManyHadronsTrain )
+                   / ( (Double_t)(howManyHadronsTrain+howManyHadronsTest) );
+    MFRandomSplit splith(probh);
 
     MFillH fillmath("MatrixHadrons");
-    fillmath.SetFilter(&flisth);
+    fillmath.SetFilter(&splith);
     fillmath.SetName("fillHadrons");
 
-
-    // entries in MFilterList
-
-    flisth.AddToList(&fhadrons);
-    flisth.AddToList(&selectorh);
+    //-----------------------
+    // for writing the root files of training and test events
+    // for hadrons
+    
+    MWriteRootFile writetrainh(inNameHadronsTrain, "RECREATE");
+    writetrainh.SetName("WriteHadronsTrain");
+    writetrainh.SetFilter(&splith);
+
+      writetrainh.AddContainer("MRawRunHeader", "RunHeaders");
+      writetrainh.AddContainer("MTime",         "Events");
+      writetrainh.AddContainer("MMcEvt",        "Events");
+      writetrainh.AddContainer("ThetaOrig",     "Events");
+      writetrainh.AddContainer("MSrcPosCam",    "Events");
+      writetrainh.AddContainer("MSigmabar",     "Events");
+      writetrainh.AddContainer("MHillas",       "Events");
+      writetrainh.AddContainer("MHillasExt",    "Events");
+      writetrainh.AddContainer("MHillasSrc",    "Events");
+      writetrainh.AddContainer("MNewImagePar",  "Events");
+
+    MContinue conthtrain(&splith);
+
+    MWriteRootFile writetesth(inNameHadronsTest, "RECREATE");
+    writetesth.SetName("WriteHadronsTest");
+
+      writetesth.AddContainer("MRawRunHeader", "RunHeaders");
+      writetesth.AddContainer("MTime",         "Events");
+      writetesth.AddContainer("MMcEvt",        "Events");
+      writetesth.AddContainer("ThetaOrig",     "Events");
+      writetesth.AddContainer("MSrcPosCam",    "Events");
+      writetesth.AddContainer("MSigmabar",     "Events");
+      writetesth.AddContainer("MHillas",       "Events");
+      writetesth.AddContainer("MHillasExt",    "Events");
+      writetesth.AddContainer("MHillasSrc",    "Events");
+      writetesth.AddContainer("MNewImagePar",  "Events");
+
 
     //*****************************  
@@ -1165,6 +1322,12 @@
     
     tlisth.AddToList(&readh);
-    tlisth.AddToList(&flisth);
+    tlisth.AddToList(&conth);
+
+    tlisth.AddToList(&splith);
     tlisth.AddToList(&fillmath);
+    tlisth.AddToList(&writetrainh);
+    tlisth.AddToList(&conthtrain);
+
+    tlisth.AddToList(&writetesth);
 
     //*****************************
@@ -1172,4 +1335,5 @@
     MProgressBar matrixbar;
     MEvtLoop evtlooph;
+    evtlooph.SetName("FillHadronMatrix");
     evtlooph.SetParList(&plisth);
     //evtlooph.ReadEnv(env, "", printEnv);
@@ -1182,4 +1346,23 @@
     tlisth.PrintStatistics(0, kTRUE);
 
+    matrixh.Print("SizeCols");
+    Int_t generatedhTrain = matrixh.GetM().GetNrows();
+    if ( fabs(generatedhTrain-howManyHadronsTrain) > 
+                                    3.0*sqrt(howManyHadronsTrain) )
+    {
+      gLog << "ONOFFCT1Analysis.C : no.of generated hadron training events (" 
+           << generatedhTrain << ") is incompatible with the no.of requested events (" 
+           << howManyHadronsTrain << ")" << endl;   
+    }
+
+
+    Int_t generatedhTest = writetesth.GetNumExecutions();
+    if ( fabs(generatedhTest-howManyHadronsTest) > 
+                                    3.0*sqrt(howManyHadronsTest) )
+    {
+      gLog << "ONOFFCT1Analysis.C : no.of generated gamma test events (" 
+           << generatedhTest << ") is incompatible with the no.of requested events (" 
+           << howManyHadronsTest << ")" << endl;   
+    }
 
 
@@ -1187,5 +1370,5 @@
 
 
-    // write out matrices of training events
+    // write out matrices of training events 
 
     gLog << "" << endl;
@@ -1199,10 +1382,10 @@
       matrixg.Print("SizeCols");
 
-      TFile writeg(outNameGammas, "RECREATE", "");
+      TFile writeg(NameGammas, "RECREATE", "");
       matrixg.Write();
 
       gLog << "" << endl;
       gLog << "Macro CT1Analysis : matrix of training events for gammas written onto file "
-           << outNameGammas << endl;
+           << NameGammas << endl;
 
       //-------------------------------------------
@@ -1211,10 +1394,10 @@
       matrixh.Print("SizeCols");
 
-      TFile writeh(outNameHadrons, "RECREATE", "");
+      TFile writeh(NameHadrons, "RECREATE", "");
       matrixh.Write();
 
       gLog << "" << endl;
       gLog << "Macro CT1Analysis : matrix of training events for hadrons written onto file "
-           << outNameHadrons << endl;
+           << NameHadrons << endl;
 
   }
@@ -1254,4 +1437,6 @@
       tlisttr.PrintStatistics(0, kTRUE);
 
+      gLog << "ONOFFCT1Analysis : RF trees were read in from file "
+           << outRF << endl;
 
     // get adresses of objects which are used in the next eventloop
@@ -1259,5 +1444,5 @@
     if (!fRanForest)
     {
-        *fLog << err << dbginf << "MRanForest not found... aborting." << endl;
+        gLog << err << dbginf << "MRanForest not found... aborting." << endl;
         return kFALSE;
     }
@@ -1266,5 +1451,5 @@
     if (!fRanTree)                                  
     {                                                                          
-        *fLog << err << dbginf << "MRanTree not found... aborting." << endl;    
+        gLog << err << dbginf << "MRanTree not found... aborting." << endl;    
         return kFALSE;
     }
@@ -1309,5 +1494,5 @@
     //
     MEvtLoop treeloop;
-    treeloop.SetName("GrowRFTrees");  
+    treeloop.SetName("GrowRFTrees");
     treeloop.SetParList(&plist2);
 
@@ -1324,5 +1509,5 @@
     if (!fRanForest)
     {
-        *fLog << err << dbginf << "MRanForest not found... aborting." << endl;
+        gLog << err << dbginf << "MRanForest not found... aborting." << endl;
         return kFALSE;
     }
@@ -1331,5 +1516,5 @@
     if (!fRanTree)                                  
     {                                                                          
-        *fLog << err << dbginf << "MRanTree not found... aborting." << endl;    
+        gLog << err << dbginf << "MRanTree not found... aborting." << endl;    
         return kFALSE;
     }
@@ -1340,15 +1525,33 @@
 
 
-
     //-----------------------------------------------------------------
-    // Update the input files with the RF hadronness
-    //
+    // Update the root files with the RF hadronness
+    //
+
  if (WRF)
   {
+    //TString fileName(inNameHadronsTrain);
+    //TString outName(outNameHadronsTrain);
+
+    //TString fileName(inNameHadronsTest);
+    //TString outName(outNameHadronsTest);
+
+    //TString fileName(inNameGammasTrain);
+    //TString outName(outNameGammasTrain);
+
+    //TString fileName(inNameGammasTest);
+    //TString outName(outNameGammasTest);
+
+    TString fileName(inNameData);
+    TString outName(outNameData);
+
+
+
     gLog << "" << endl;
     gLog << "========================================================" << endl;
-    gLog << "Update input file '" <<  filenameData 
-         << "' with the RF hadronness" << endl;
-
+    gLog << "Update root file '" <<  fileName 
+         << "' with the RF hadronness; ==> " << outName << endl;
+
+   
     MTaskList tliston;
     MParList pliston;
@@ -1363,5 +1566,5 @@
     //
 
-    MReadMarsFile read("Events", filenameData);
+    MReadMarsFile read("Events", fileName);
     read.DisableAutoScheme();
 
@@ -1374,8 +1577,9 @@
     rfcalc.SetHadronnessName(hadRFName);
 
+
     //.......................................................................
 
-      //MWriteRootFile write(outNameImage, "UPDATE");
-      MWriteRootFile write(outNameImage, "RECREATE");
+      //MWriteRootFile write(outName, "UPDATE");
+      MWriteRootFile write(outName, "RECREATE");
 
       write.AddContainer("MRawRunHeader", "RunHeaders");
@@ -1392,5 +1596,4 @@
       write.AddContainer(hadRFName,       "Events");
 
-
     //-----------------------------------------------------------------
 
@@ -1425,4 +1628,5 @@
     alpha.SetName("FillAlphaAbs");
 
+
     MFillH hfill1("MHHillas",    fHilName);
     hfill1.SetName("HHillas");
@@ -1451,4 +1655,5 @@
     pliston.AddToList(&binsalphaabs);
     pliston.AddToList(&alphaabs);
+
 
     //*****************************
@@ -1480,4 +1685,5 @@
     MProgressBar bar;
     MEvtLoop evtloop;
+    evtloop.SetName("UpdateRootFile");
     evtloop.SetParList(&pliston);
     evtloop.SetProgressBar(&bar);
@@ -1495,4 +1701,5 @@
     pliston.FindObject("MHRanForest")->DrawClone();
     pliston.FindObject("hadRF", "MHHadronness")->DrawClone();
+    pliston.FindObject("hadRF", "MHHadronness")->Print();
 
     pliston.FindObject("MHHillas")->DrawClone();
@@ -1501,4 +1708,5 @@
     pliston.FindObject("MHNewImagePar")->DrawClone();
     pliston.FindObject("MHStarMap")->DrawClone();
+
 
      //-------------------------------------------
@@ -1529,5 +1737,5 @@
     Float_t alphasi = findsig.GetAlphasi();
 
-    gLog << "For file '" << filenameData << "' : " << endl;
+    gLog << "For file '" << fileName << "' : " << endl;
     gLog << "Significance of gamma signal after supercuts : "
          << significance << " (for |alpha| < " << alphasi << " degrees)" 
@@ -1546,6 +1754,4 @@
  }
   //---------------------------------------------------------------------
-
-
 
 
@@ -1600,4 +1806,5 @@
 
     //TString typeInput = "ON";
+    //TString typeInput = "OFF";
     TString typeInput = "MC";
     gLog << "typeInput = " << typeInput << endl;
@@ -1667,5 +1874,5 @@
     findsuper.SetFilenameParam(parSCfile);
     findsuper.SetHadronnessName("HadSC");
-
+    findsuper.SetUseOrigDistribution(kTRUE);
 
     //--------------------------
@@ -1673,11 +1880,20 @@
     if (CMatrix)
     {
-      MH3 &mh3 = *(new MH3("MHillas.fSize"));
-      mh3.SetName("Target distribution for SIZE");
+      TString mname("costheta");
+      MBinning bin("Binning"+mname);
+      bin.SetEdges(10, 0., 1.0);
+
+      MH3 mh3("cos(MMcEvt.fTelescopeTheta)");
+      mh3.SetName(mname);
+      MH::SetBinning(&mh3.GetHist(), &bin);
+      for (Int_t i=1; i<=mh3.GetNbins(); i++)
+        mh3.GetHist().SetBinContent(i, 1.0);
+
 
       if (filenameTrain == filenameTest)
       {
-        if ( !findsuper.DefineTrainTestMatrix(filenameTrain, 
-                              howManyTrain, mh3, howManyTest,  mh3,
+        if ( !findsuper.DefineTrainTestMatrix(
+                              filenameTrain,   mh3, 
+                              howManyTrain,    howManyTest,  
                               fileMatrixTrain, fileMatrixTest)     )
         {
@@ -1689,6 +1905,6 @@
       else
       {
-        if ( !findsuper.DefineTrainMatrix(filenameTrain, 
-                              howManyTrain, mh3, fileMatrixTrain) )
+        if ( !findsuper.DefineTrainMatrix(filenameTrain, mh3,
+                                          howManyTrain,  fileMatrixTrain) )
         {
           *fLog << "CT1Analysis.C : DefineTrainMatrix failed" << endl;
@@ -1696,6 +1912,6 @@
         }
 
-	if ( !findsuper.DefineTestMatrix( filenameTest,  
-                              howManyTest,  mh3, fileMatrixTest)  )
+	if ( !findsuper.DefineTestMatrix( filenameTest, mh3, 
+                                          howManyTest,  fileMatrixTest)  )
         {
           *fLog << "CT1Analysis.C : DefineTestMatrix failed" << endl;
@@ -2116,4 +2332,5 @@
 
 
+
   //---------------------------------------------------------------------
   // Job C  
Index: /trunk/MagicSoft/Mars/macros/ONOFFCT1Analysis.C
===================================================================
--- /trunk/MagicSoft/Mars/macros/ONOFFCT1Analysis.C	(revision 2574)
+++ /trunk/MagicSoft/Mars/macros/ONOFFCT1Analysis.C	(revision 2575)
@@ -215,6 +215,6 @@
     //     or MC2.root)
 
-    Bool_t JobB_RF_UP  = kTRUE;  
-    Bool_t CTrainRF    = kTRUE;  // create  matrices of training events
+    Bool_t JobB_RF_UP  = kFALSE;  
+    Bool_t CTrainRF    = kFALSE;  // create  matrices of training events
                                   // and root files of training and test events
     Bool_t RTrainRF    = kFALSE;  // read in matrices of training events
@@ -228,6 +228,6 @@
     //  - update the input files with the hadroness (==>ON3.root or MC3.root)
 
-    Bool_t JobB_SC_UP  = kFALSE;
-    Bool_t CMatrix     = kFALSE;  // create training and test matrices 
+    Bool_t JobB_SC_UP  = kTRUE;
+    Bool_t CMatrix     = kTRUE;  // create training and test matrices 
     Bool_t RMatrix     = kFALSE;  // read training and test matrices from file
     Bool_t WOptimize   = kFALSE;  // do optimization using the training sample
@@ -782,25 +782,32 @@
 
 
+    TString extin  = "1.root";
+    TString extout = "2.root";
+
     //--------------------------------------------
+    // for the analysis using ON data only set typeMatrixHadrons = "ON"
+    //                        ON and OFF data                    = "OFF"
+    TString typeMatrixHadrons = "OFF";
+    gLog << "typeMatrixHadrons = " << typeMatrixHadrons << endl;
+
+
     // file to be updated (ON, OFF or MC)
 
     //TString typeInput = "ON";
-    //TString typeInput = "OFF";
-    TString typeInput = "MC";
+    TString typeInput = "OFF";
+    //TString typeInput = "MC";
     gLog << "typeInput = " << typeInput << endl;
 
     // name of input root file
-    TString filenameData = outPath;
-    filenameData += typeInput;
-    filenameData += "1.root";
-    gLog << "filenameData = " << filenameData << endl; 
+    TString NameData = outPath;
+    NameData += typeInput;
+    TString inNameData(NameData);
+    inNameData += extin;
+    gLog << "inNameData = " << inNameData << endl; 
 
     // name of output root file
-    TString outNameImage = outPath;
-    outNameImage += typeInput;
-    outNameImage += "2.root";
-    //TString outNameImage = filenameData;
-
-    gLog << "outNameImage = " << outNameImage << endl; 
+    TString outNameData(NameData);
+    outNameData += extout;
+    gLog << "outNameData = " << outNameData << endl; 
 
     //--------------------------------------------
@@ -809,13 +816,11 @@
     //    - and the root files of training and test events
 
-    TString typeMatrixHadrons = "OFF";
-    gLog << "typeMatrixHadrons = " << typeMatrixHadrons << endl;
 
     // "hadrons" :
     TString filenameHad = outPath;
     filenameHad += typeMatrixHadrons;
-    filenameHad += "1.root";
-    Int_t howManyHadronsTrain = 8000;
-    Int_t howManyHadronsTest  = 8000;
+    filenameHad += extin;
+    Int_t howManyHadronsTrain = 12000;
+    Int_t howManyHadronsTest  = 12000;
     gLog << "filenameHad = "    << filenameHad << ",   howManyHadronsTrain = "
          << howManyHadronsTrain << ",   howManyHadronsTest = "
@@ -826,7 +831,7 @@
     TString filenameMC = outPath;
     filenameMC += "MC";
-    filenameMC += "1.root";
-    Int_t howManyGammasTrain = 8000;
-    Int_t howManyGammasTest  = 8000;
+    filenameMC += extin;
+    Int_t howManyGammasTrain = 12000;
+    Int_t howManyGammasTest  = 12000;
     gLog << "filenameMC = "    << filenameMC << ",   howManyGammasTrain = "
          << howManyGammasTrain << ",   howManyGammasTest = "
@@ -836,13 +841,13 @@
     // files for the matrices of training events 
 
-    TString outNameGammas = outPath;
-    outNameGammas += "RFmatrix_gammas_Train_";
-    outNameGammas += "MC";
-    outNameGammas += ".root";
-
-    TString outNameHadrons = outPath;
-    outNameHadrons += "RFmatrix_hadrons_Train_";
-    outNameHadrons += typeMatrixHadrons;
-    outNameHadrons += ".root";
+    TString NameGammas = outPath;
+    NameGammas += "RFmatrix_gammas_Train_";
+    NameGammas += "MC";
+    NameGammas += extin;
+
+    TString NameHadrons = outPath;
+    NameHadrons += "RFmatrix_hadrons_Train_";
+    NameHadrons += typeMatrixHadrons;
+    NameHadrons += extin;
 
 
@@ -850,13 +855,20 @@
     // root files for the training events 
 
-    TString outNameGammasTrain = outPath;
-    outNameGammasTrain += "RF_gammas_Train_";
-    outNameGammasTrain += "MC";
-    outNameGammasTrain += ".root";
-
-    TString outNameHadronsTrain = outPath;
-    outNameHadronsTrain += "RF_hadrons_Train_";
-    outNameHadronsTrain += typeMatrixHadrons;
-    outNameHadronsTrain += ".root";
+    TString NameGammasTrain = outPath;
+    NameGammasTrain += "RF_gammas_Train_";
+    NameGammasTrain += "MC";
+    TString inNameGammasTrain(NameGammasTrain);    
+    inNameGammasTrain += extin;
+    TString outNameGammasTrain(NameGammasTrain);    
+    outNameGammasTrain += extout;
+
+
+    TString NameHadronsTrain = outPath;
+    NameHadronsTrain += "RF_hadrons_Train_";
+    NameHadronsTrain += typeMatrixHadrons;
+    TString inNameHadronsTrain(NameHadronsTrain);    
+    inNameHadronsTrain += extin;
+    TString outNameHadronsTrain(NameHadronsTrain);    
+    outNameHadronsTrain += extout;
 
 
@@ -864,13 +876,19 @@
     // root files for the test events 
 
-    TString outNameGammasTest = outPath;
-    outNameGammasTest += "RF_gammas_Test_";
-    outNameGammasTest += "MC";
-    outNameGammasTest += ".root";
-
-    TString outNameHadronsTest = outPath;
-    outNameHadronsTest += "RF_hadrons_Test_";
-    outNameHadronsTest += typeMatrixHadrons;
-    outNameHadronsTest += ".root";
+    TString NameGammasTest = outPath;
+    NameGammasTest += "RF_gammas_Test_";
+    NameGammasTest += "MC";
+    TString inNameGammasTest(NameGammasTest);    
+    inNameGammasTest += extin;
+    TString outNameGammasTest(NameGammasTest);    
+    outNameGammasTest += extout;
+
+    TString NameHadronsTest = outPath;
+    NameHadronsTest += "RF_hadrons_Test_";
+    NameHadronsTest += typeMatrixHadrons;
+    TString inNameHadronsTest(NameHadronsTest);    
+    inNameHadronsTest += extin;
+    TString outNameHadronsTest(NameHadronsTest);    
+    outNameHadronsTest += extout;
 
     //--------------------------------------------------------------------
@@ -913,11 +931,11 @@
     gLog << "Get matrix for (gammas)" << endl;
     gLog << "matrix name        = " << mtxName << endl;
-    gLog << "name of root file  = " << outNameGammas << endl;
+    gLog << "name of root file  = " << NameGammas << endl;
     gLog << "" << endl;
 
 
-    // read in the object with the name 'mtxName' from file 'outNameGammas'
-    //
-    TFile fileg(outNameGammas); 
+    // read in the object with the name 'mtxName' from file 'NameGammas'
+    //
+    TFile fileg(NameGammas); 
 
     matrixg.Read(mtxName);
@@ -933,11 +951,11 @@
     gLog << " Get matrix for (hadrons)" << endl;
     gLog << "matrix name        = " << mtxName << endl;
-    gLog << "name of root file  = " << outNameHadrons << endl;
+    gLog << "name of root file  = " << NameHadrons << endl;
     gLog << "" << endl;
 
 
-    // read in the object with the name 'mtxName' from file 'outNameHadrons'
-    //
-    TFile fileh(outNameHadrons); 
+    // read in the object with the name 'mtxName' from file 'NameHadrons'
+    //
+    TFile fileh(NameHadrons); 
 
     matrixh.Read(mtxName);
@@ -962,15 +980,6 @@
     MTaskList tlistg;
 
-    MFilterList flistgtrain;
-    flistgtrain.SetName("GammaFilterTrain");
-    MFilterList flistgtest;
-    flistgtest.SetName("GammaFilterTest");
-
     MReadMarsFile  readg("Events", filenameMC);
     readg.DisableAutoScheme();
-
-
-    MFParticleId fgamma("MMcEvt", '=', kGAMMA);
-    fgamma.SetName("gammaID");
 
     TString mgname("costhg");
@@ -987,15 +996,16 @@
     selectorg.SetNumMax(howManyGammasTrain+howManyGammasTest);
     selectorg.SetName("selectGammasTrainTest");
-
-    TString strgtrain = "gRandom->Rndm()*(";
-    strgtrain += howManyGammasTrain;
-    strgtrain += "+";
-    strgtrain += howManyGammasTest;
-    strgtrain += ")<";
-    strgtrain += howManyGammasTrain;    
-    MF selsplitg(strgtrain);
+    selectorg.SetInverted();
+    selectorg.SetUseOrigDistribution(kTRUE);
+
+    MContinue contg(&selectorg);
+    contg.SetName("ContGammas");
+
+    Double_t probg = ( (Double_t) howManyGammasTrain )
+                   / ( (Double_t)(howManyGammasTrain+howManyGammasTest) );
+    MFRandomSplit splitg(probg);
 
     MFillH fillmatg("MatrixGammas");
-    fillmatg.SetFilter(&flistgtrain);
+    fillmatg.SetFilter(&splitg);
     fillmatg.SetName("fillGammas");
 
@@ -1004,7 +1014,7 @@
     // for gammas
     
-    MWriteRootFile writetraing(outNameGammasTrain, "RECREATE");
+    MWriteRootFile writetraing(inNameGammasTrain, "RECREATE");
     writetraing.SetName("WriteGammasTrain");
-    writetraing.SetFilter(&flistgtrain);
+    writetraing.SetFilter(&splitg);
 
       writetraing.AddContainer("MRawRunHeader", "RunHeaders");
@@ -1019,9 +1029,9 @@
       writetraing.AddContainer("MNewImagePar",  "Events");
 
-    MContinue contg(&flistgtrain);
-
-    MWriteRootFile writetestg(outNameGammasTest, "RECREATE");
+    MContinue contgtrain(&splitg);
+    contgtrain.SetName("ContGammaTrain");
+
+    MWriteRootFile writetestg(inNameGammasTest, "RECREATE");
     writetestg.SetName("WriteGammasTest");
-    writetestg.SetFilter(&flistgtest);
 
       writetestg.AddContainer("MRawRunHeader", "RunHeaders");
@@ -1039,15 +1049,4 @@
     
     //*****************************   fill gammas   ***  
-    // entries in MFilterList
-
-    flistgtrain.AddToList(&fgamma);
-    flistgtrain.AddToList(&selectorg);
-    flistgtrain.AddToList(&selsplitg);
-
-    flistgtest.AddToList(&fgamma);
-    flistgtest.AddToList(&selectorg);
-    flistgtest.AddToList(&selsplitg);
-
-    //*****************************  
     // entries in MParList
     
@@ -1061,12 +1060,11 @@
     
     tlistg.AddToList(&readg);
-
-    tlistg.AddToList(&flistgtrain);
+    tlistg.AddToList(&contg);
+
+    tlistg.AddToList(&splitg);
     tlistg.AddToList(&fillmatg);
     tlistg.AddToList(&writetraing);
-
-    tlistg.AddToList(&contg);
-
-    tlistg.AddToList(&flistgtest);
+    tlistg.AddToList(&contgtrain);
+
     tlistg.AddToList(&writetestg);
 
@@ -1107,5 +1105,6 @@
 
     //*****************************   fill hadrons   ***  
-
+    gLog << "---------------------------------------------------------------"
+         << endl;
     gLog << " Hadrons :" << endl;
     gLog << "----------" << endl;
@@ -1114,14 +1113,6 @@
     MTaskList tlisth;
 
-    MFilterList flisthtrain;
-    flisthtrain.SetName("HadronFilterTrain");
-    MFilterList flisthtest;
-    flisthtest.SetName("HadronFilterTest");
-
     MReadMarsFile  readh("Events", filenameHad);
     readh.DisableAutoScheme();
-
-    MFParticleId fhadrons("MMcEvt", '!', kGAMMA);
-    fhadrons.SetName("hadronID)");
 
     TString mhname("costhh");
@@ -1129,24 +1120,27 @@
     binh.SetEdges(10, 0., 1.0);
 
-    MH3 href("cos(MMcEvt.fTelescopeTheta)");
-    href.SetName(mhname);
-    MH::SetBinning(&href.GetHist(), &binh);
-    for (Int_t i=1; i<=href.GetNbins(); i++)
-      href.GetHist().SetBinContent(i, 1.0);
+    //MH3 href("cos(MMcEvt.fTelescopeTheta)");
+    //href.SetName(mhname);
+    //MH::SetBinning(&href.GetHist(), &binh);
+    //for (Int_t i=1; i<=href.GetNbins(); i++)
+    //  href.GetHist().SetBinContent(i, 1.0);
+
+    //use the original distribution from the gammas
+    MH3 &href = *(selectorg.GetHistOrig());
 
     MFEventSelector2 selectorh(href);
     selectorh.SetNumMax(howManyHadronsTrain+howManyHadronsTest);
     selectorh.SetName("selectHadronsTrainTest");
-
-    TString strhtrain = "gRandom->Rndm()*(";
-    strhtrain += howManyHadronsTrain;
-    strhtrain += "+";
-    strhtrain += howManyHadronsTest;
-    strhtrain += ")<";
-    strhtrain += howManyHadronsTrain;    
-    MF selsplith(strhtrain);
+    selectorh.SetInverted();
+
+    MContinue conth(&selectorh);
+    conth.SetName("ContHadrons");
+
+    Double_t probh = ( (Double_t) howManyHadronsTrain )
+                   / ( (Double_t)(howManyHadronsTrain+howManyHadronsTest) );
+    MFRandomSplit splith(probh);
 
     MFillH fillmath("MatrixHadrons");
-    fillmath.SetFilter(&flisthtrain);
+    fillmath.SetFilter(&splith);
     fillmath.SetName("fillHadrons");
 
@@ -1155,7 +1149,7 @@
     // for hadrons
     
-    MWriteRootFile writetrainh(outNameHadronsTrain, "RECREATE");
+    MWriteRootFile writetrainh(inNameHadronsTrain, "RECREATE");
     writetrainh.SetName("WriteHadronsTrain");
-    writetrainh.SetFilter(&flisthtrain);
+    writetrainh.SetFilter(&splith);
 
       writetrainh.AddContainer("MRawRunHeader", "RunHeaders");
@@ -1170,9 +1164,8 @@
       writetrainh.AddContainer("MNewImagePar",  "Events");
 
-    MContinue conth(&flisthtrain);
-
-    MWriteRootFile writetesth(outNameHadronsTest, "RECREATE");
+    MContinue conthtrain(&splith);
+
+    MWriteRootFile writetesth(inNameHadronsTest, "RECREATE");
     writetesth.SetName("WriteHadronsTest");
-    writetesth.SetFilter(&flisthtest);
 
       writetesth.AddContainer("MRawRunHeader", "RunHeaders");
@@ -1187,15 +1180,4 @@
       writetesth.AddContainer("MNewImagePar",  "Events");
 
-    //-----------------------
-
-    // entries in MFilterList
-
-    flisthtrain.AddToList(&fhadrons);
-    flisthtrain.AddToList(&selectorh);
-    flisthtrain.AddToList(&selsplith);
-
-    flisthtest.AddToList(&fhadrons);
-    flisthtest.AddToList(&selectorh);
-    flisthtest.AddToList(&selsplith);
 
     //*****************************  
@@ -1211,12 +1193,11 @@
     
     tlisth.AddToList(&readh);
-
-    tlisth.AddToList(&flisthtrain);
+    tlisth.AddToList(&conth);
+
+    tlisth.AddToList(&splith);
     tlisth.AddToList(&fillmath);
     tlisth.AddToList(&writetrainh);
-
-    tlisth.AddToList(&conth);
-
-    tlisth.AddToList(&flisthtest);
+    tlisth.AddToList(&conthtrain);
+
     tlisth.AddToList(&writetesth);
 
@@ -1272,10 +1253,10 @@
       matrixg.Print("SizeCols");
 
-      TFile writeg(outNameGammas, "RECREATE", "");
+      TFile writeg(NameGammas, "RECREATE", "");
       matrixg.Write();
 
       gLog << "" << endl;
       gLog << "Macro CT1Analysis : matrix of training events for gammas written onto file "
-           << outNameGammas << endl;
+           << NameGammas << endl;
 
       //-------------------------------------------
@@ -1284,10 +1265,10 @@
       matrixh.Print("SizeCols");
 
-      TFile writeh(outNameHadrons, "RECREATE", "");
+      TFile writeh(NameHadrons, "RECREATE", "");
       matrixh.Write();
 
       gLog << "" << endl;
       gLog << "Macro CT1Analysis : matrix of training events for hadrons written onto file "
-           << outNameHadrons << endl;
+           << NameHadrons << endl;
 
   }
@@ -1327,4 +1308,6 @@
       tlisttr.PrintStatistics(0, kTRUE);
 
+      gLog << "ONOFFCT1Analysis : RF trees were read in from file "
+           << outRF << endl;
 
     // get adresses of objects which are used in the next eventloop
@@ -1414,14 +1397,32 @@
 
     //-----------------------------------------------------------------
-    // Update the input files with the RF hadronness
+    // Update the root files with the RF hadronness
     //
 
  if (WRF)
   {
+    //TString fileName(inNameHadronsTrain);
+    //TString outName(outNameHadronsTrain);
+
+    //TString fileName(inNameHadronsTest);
+    //TString outName(outNameHadronsTest);
+
+    //TString fileName(inNameGammasTrain);
+    //TString outName(outNameGammasTrain);
+
+    //TString fileName(inNameGammasTest);
+    //TString outName(outNameGammasTest);
+
+    TString fileName(inNameData);
+    TString outName(outNameData);
+
+
+
     gLog << "" << endl;
     gLog << "========================================================" << endl;
-    gLog << "Update input file '" <<  filenameData 
-         << "' with the RF hadronness" << endl;
-
+    gLog << "Update root file '" <<  fileName 
+         << "' with the RF hadronness; ==> " << outName << endl;
+
+   
     MTaskList tliston;
     MParList pliston;
@@ -1436,5 +1437,5 @@
     //
 
-    MReadMarsFile read("Events", filenameData);
+    MReadMarsFile read("Events", fileName);
     read.DisableAutoScheme();
 
@@ -1450,6 +1451,6 @@
     //.......................................................................
 
-      //MWriteRootFile write(outNameImage, "UPDATE");
-      MWriteRootFile write(outNameImage, "RECREATE");
+      //MWriteRootFile write(outName, "UPDATE");
+      MWriteRootFile write(outName, "RECREATE");
 
       write.AddContainer("MRawRunHeader", "RunHeaders");
@@ -1571,4 +1572,5 @@
     pliston.FindObject("MHRanForest")->DrawClone();
     pliston.FindObject("hadRF", "MHHadronness")->DrawClone();
+    pliston.FindObject("hadRF", "MHHadronness")->Print();
 
     pliston.FindObject("MHHillas")->DrawClone();
@@ -1606,5 +1608,5 @@
     Float_t alphasi = findsig.GetAlphasi();
 
-    gLog << "For file '" << filenameData << "' : " << endl;
+    gLog << "For file '" << fileName << "' : " << endl;
     gLog << "Significance of gamma signal after supercuts : "
          << significance << " (for |alpha| < " << alphasi << " degrees)" 
@@ -1743,5 +1745,5 @@
     findsuper.SetFilenameParam(parSCfile);
     findsuper.SetHadronnessName("HadSC");
-
+    findsuper.SetUseOrigDistribution(kTRUE);
 
     //--------------------------
@@ -1749,11 +1751,20 @@
     if (CMatrix)
     {
-      MH3 &mh3 = *(new MH3("MHillas.fSize"));
-      mh3.SetName("Target distribution for SIZE");
+      TString mname("costheta");
+      MBinning bin("Binning"+mname);
+      bin.SetEdges(10, 0., 1.0);
+
+      MH3 mh3("cos(MMcEvt.fTelescopeTheta)");
+      mh3.SetName(mname);
+      MH::SetBinning(&mh3.GetHist(), &bin);
+      for (Int_t i=1; i<=mh3.GetNbins(); i++)
+        mh3.GetHist().SetBinContent(i, 1.0);
+
 
       if (filenameTrain == filenameTest)
       {
-        if ( !findsuper.DefineTrainTestMatrix(filenameTrain, 
-                              howManyTrain, mh3, howManyTest,  mh3,
+        if ( !findsuper.DefineTrainTestMatrix(
+                              filenameTrain,   mh3, 
+                              howManyTrain,    howManyTest,  
                               fileMatrixTrain, fileMatrixTest)     )
         {
@@ -1765,6 +1776,6 @@
       else
       {
-        if ( !findsuper.DefineTrainMatrix(filenameTrain, 
-                              howManyTrain, mh3, fileMatrixTrain) )
+        if ( !findsuper.DefineTrainMatrix(filenameTrain, mh3,
+                                          howManyTrain,  fileMatrixTrain) )
         {
           *fLog << "CT1Analysis.C : DefineTrainMatrix failed" << endl;
@@ -1772,6 +1783,6 @@
         }
 
-	if ( !findsuper.DefineTestMatrix( filenameTest,  
-                              howManyTest,  mh3, fileMatrixTest)  )
+	if ( !findsuper.DefineTestMatrix( filenameTest, mh3, 
+                                          howManyTest,  fileMatrixTest)  )
         {
           *fLog << "CT1Analysis.C : DefineTestMatrix failed" << endl;
@@ -2212,16 +2223,74 @@
 
 
+
+    TString ext("2.root");
+    TString extout("2.root");
+
+    TString typeHadrons("OFF");
+    TString typeGammas("MC");
+
+    //--------------------------------------------
     // name of input data file
-    TString filenameData = outPath;
-    filenameData += "OFF";
-    filenameData += "3.root";
+    TString NameData = outPath;
+    NameData += typeHadrons;
+    TString inNameData(NameData);
+    inNameData += ext;
+    gLog << "inNameData   = " << inNameData   << endl;
+
+    // name of input MC file
+    TString NameMC = outPath;
+    NameMC += typeGammas;
+    TString inNameMC(NameMC);
+    inNameMC += ext;
+    gLog << "inNameMC   = " << inNameMC   << endl;
+
+
+    //--------------------------------------------
+    // root files for the training events 
+
+
+
+    TString NameGammasTrain = outPath;
+    NameGammasTrain += "RF_gammas_Train_";
+    NameGammasTrain += typeGammas;
+    TString outNameGammasTrain(NameGammasTrain);    
+    outNameGammasTrain += extout;
+
+
+    TString NameHadronsTrain = outPath;
+    NameHadronsTrain += "RF_hadrons_Train_";
+    NameHadronsTrain += typeHadrons;
+    TString outNameHadronsTrain(NameHadronsTrain);    
+    outNameHadronsTrain += extout;
+
+
+    //--------------------------------------------
+    // root files for the test events 
+
+    TString NameGammasTest = outPath;
+    NameGammasTest += "RF_gammas_Test_";
+    NameGammasTest += typeGammas;
+    TString outNameGammasTest(NameGammasTest);    
+    outNameGammasTest += extout;
+
+    TString NameHadronsTest = outPath;
+    NameHadronsTest += "RF_hadrons_Test_";
+    NameHadronsTest += typeHadrons;
+    TString outNameHadronsTest(NameHadronsTest);    
+    outNameHadronsTest += extout;
+
+    //--------------------------------------------------------------------
+
+    //TString filenameData(inNameData);
+    //TString filenameMC(inNameMC);
+
+    //TString filenameData(outNameHadronsTrain);
+    //TString filenameMC(outNameGammasTrain);
+
+    TString filenameData(outNameHadronsTest);
+    TString filenameMC(outNameGammasTest);
+
     gLog << "filenameData = " << filenameData << endl;
-
-    // name of input MC file
-    TString filenameMC = outPath;
-    filenameMC += "MC";
-    filenameMC += "3.root";
     gLog << "filenameMC   = " << filenameMC   << endl;
-
 
     //-----------------------------------------------------------------
@@ -2270,6 +2339,6 @@
 
 
-    MFillH fillhadsc("hadSC[MHHadronness]", hadSCName);
-    fillhadsc.SetName("HhadSC");
+    //MFillH fillhadsc("hadSC[MHHadronness]", hadSCName);
+    //fillhadsc.SetName("HhadSC");
     MFillH fillhadrf("hadRF[MHHadronness]", hadRFName);
     fillhadrf.SetName("HhadRF");
@@ -2311,5 +2380,5 @@
     tliston.AddToList(&read);
 
-    tliston.AddToList(&fillhadsc);
+    //tliston.AddToList(&fillhadsc);
     tliston.AddToList(&fillhadrf);
    
@@ -2345,5 +2414,5 @@
     //
 
-    pliston.FindObject("hadSC", "MHHadronness")->DrawClone();
+    //pliston.FindObject("hadSC", "MHHadronness")->DrawClone();
     pliston.FindObject("hadRF", "MHHadronness")->DrawClone();
 
