Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 7700)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 7701)
@@ -76,4 +76,12 @@
      - implemented usage of weights
 
+   * mjtrain/MJTrainSeparation.[h,cc]:
+     - implemented the usage of weights
+     - implemented a random source position to train with wobble 
+       data
+     - added some more output
+     - added an option to switch between classification and regression
+     - added th epossibility to change the MC flux
+
 
 
Index: /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.h
===================================================================
--- /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.h	(revision 7700)
+++ /trunk/MagicSoft/Mars/mjtrain/MJTrainSeparation.h	(revision 7701)
@@ -24,6 +24,15 @@
     UInt_t fNumTestOff;
 
+    TList fPreTasksOn;
+    TList fPreTasksOff;
+    TList fPostTasksOn;
+    TList fPostTasksOff;
+
     Bool_t fAutoTrain;
     Bool_t fUseRegression;
+    Bool_t fEnableWeightsOn;
+    Bool_t fEnableWeightsOff;
+
+    Float_t fFlux;
 
     void DisplayResult(MH3 &h31, MH3 &h32);
@@ -38,5 +47,6 @@
         fNumTrainOn((UInt_t)-1), fNumTrainOff((UInt_t)-1),
         fNumTestOn((UInt_t)-1), fNumTestOff((UInt_t)-1),
-        fAutoTrain(kFALSE), fUseRegression(kTRUE)
+        fAutoTrain(kFALSE), fUseRegression(kFALSE),
+        fEnableWeightsOn(kFALSE), fEnableWeightsOff(kFALSE), fFlux(2e-7)
     { }
 
@@ -60,4 +70,28 @@
     }
 
+    void AddPreTaskOn(MTask *t)                     { Add(fPreTasksOn,  t); }
+    void AddPreTaskOn(const char *rule,
+                      const char *name="MWeight")   { AddPar(fPreTasksOn, rule, name); }
+
+    void AddPreTaskOff(MTask *t)                    { Add(fPreTasksOff, t); }
+    void AddPreTaskOff(const char *rule,
+                       const char *name="MWeight")  { AddPar(fPreTasksOff, rule, name); }
+
+    void AddPostTaskOn(MTask *t)                    { Add(fPostTasksOn,  t); }
+    void AddPostTaskOn(const char *rule,
+                       const char *name="MWeight")  { AddPar(fPostTasksOn, rule, name); }
+
+    void AddPostTaskOff(MTask *t)                   { Add(fPostTasksOff, t); }
+    void AddPostTaskOff(const char *rule,
+                        const char *name="MWeight") { AddPar(fPostTasksOff, rule, name); }
+
+    void SetWeightsOn(const char *rule)  { if (fEnableWeightsOn) return;  fEnableWeightsOn=kTRUE;  AddPostTaskOn(rule); }
+    void SetWeightsOn(MTask *t)          { if (fEnableWeightsOn) return;  fEnableWeightsOn=kTRUE;  AddPostTaskOn(t);    }
+
+    void SetWeightsOff(const char *rule) { if (fEnableWeightsOff) return; fEnableWeightsOff=kTRUE; AddPostTaskOff(rule); }
+    void SetWeightsOff(MTask *t)         { if (fEnableWeightsOff) return; fEnableWeightsOff=kTRUE; AddPostTaskOff(t);    }
+
+    void SetFlux(Float_t f) { fFlux = f; }
+
     void EnableAutoTrain(Bool_t b=kTRUE)      { fAutoTrain     =  b; }
     void EnableRegression(Bool_t b=kTRUE)     { fUseRegression =  b; }
