Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 7554)
+++ trunk/MagicSoft/Mars/Changelog	(revision 7555)
@@ -52,4 +52,8 @@
      - updated how the units are printed in Print()
 
+   * mjobs/MJCut.cc:
+     - added a new loop to fill the source position of the on-data
+     - the acceleration of the two main loops are disabled because
+       they are not yet tested.
 
 
Index: trunk/MagicSoft/Mars/mjobs/MJCut.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCut.cc	(revision 7554)
+++ trunk/MagicSoft/Mars/mjobs/MJCut.cc	(revision 7555)
@@ -86,5 +86,5 @@
     : fStoreSummary(kFALSE), fStoreResult(kTRUE), fWriteOnly(kFALSE),
     fIsWobble(kFALSE), fIsMonteCarlo(kFALSE),  fFullDisplay(kTRUE),
-    fNameHist("MHThetaSq"), fCalcHadronness(0), fCalcDisp(0)
+    fRndmSrcPos(kFALSE), fNameHist("MHThetaSq"), fCalcHadronness(0), fCalcDisp(0)
 {
     fName  = name  ? name  : "MJCut";
@@ -323,4 +323,5 @@
     EnableMonteCarloMode(GetEnv("MonteCarlo", fIsMonteCarlo));
     EnableFullDisplay(GetEnv("FullDisplay", fFullDisplay));
+    EnableRandomSrcPos(GetEnv("RandomSourcePosition", fRndmSrcPos));
     //EnableSubstraction(GetEnv("HistogramSubstraction", fSubstraction));
 
@@ -426,4 +427,91 @@
 }
 
+Bool_t MJCut::FillSrcPosCam(const MDataSet &set, MPointingPos &source)
+{
+    *fLog << inf;
+    fLog->Separator(GetDescriptor());
+    *fLog << "Filling MHSrcPosCam " << set.GetName() << endl;
+    *fLog << endl;
+
+    // --------------------------------------------------------------------------------
+
+    // Setup Parlist
+    MParList plist;
+    plist.AddToList(this); // take care of fDisplay!
+
+    // Setup Tasklist
+    MTaskList tlist;
+    plist.AddToList(&tlist);
+
+    // La Palma Magic1, Possible source position
+    MObservatory obs;
+    plist.AddToList(&obs);
+    plist.AddToList(&source);
+
+    // Initialize default binnings
+    // MBinning bins1(18,  0,     90,    "BinningSrcPosCam", "lin");
+    // plist.AddToList(&bins1);
+
+    // ------------- Loop Off Data --------------------
+    MReadReports read;
+
+    read.EnableAutoScheme();
+    read.AddToBranchList("MTimeEffectiveOnTime.*");
+    read.AddToBranchList("MEffectiveOnTime.*");
+
+    read.AddTree("Events", "MTime.", MReadReports::kMaster);
+    read.AddTree("Drive",            MReadReports::kRequired);
+    read.AddTree("Starguider",       MReadReports::kRequired);
+    read.AddTree("EffectiveOnTime");
+
+    set.AddFilesOn(read);
+
+    MFillH fill("MHSrcPosCam", "MSrcPosCam", "FillSrcPosCam");
+    fill.SetNameTab("SrcPos");
+
+    // How to get source position from off- and on-data?
+    MSrcPosCorrect scor;
+    MSrcPosCalc scalc;
+    scalc.SetMode(MSrcPosCalc::kDefault);
+
+    MPointingDevCalc devcalc;
+
+    tlist.AddToList(&read);
+    tlist.AddToList(&devcalc, "Starguider");
+    tlist.AddToList(&scalc,   "Events");
+    tlist.AddToList(&scor,    "Events");
+    tlist.AddToList(&fill,    "Events");
+
+    // by setting it here it is distributed to all consecutive tasks
+    tlist.SetAccelerator(MTask::kAccDontReset|MTask::kAccDontTime);
+    read.SetAccelerator();//MTask::kAccDontReset|MTask::kAccDontCount);
+
+    // Create and setup the eventloop
+    MEvtLoop evtloop(fName);
+    evtloop.SetParList(&plist);
+    evtloop.SetDisplay(fDisplay);
+    evtloop.SetLogStream(fLog);
+    if (!SetupEnv(evtloop))
+        return kFALSE;
+
+    // Execute first analysis
+    if (!evtloop.Eventloop(fMaxEvents))
+    {
+        *fLog << err << GetDescriptor() << ": Processing of on-sequences failed." << endl;
+        return kFALSE;
+    }
+
+    if (!evtloop.GetDisplay())
+    {
+        *fLog << err << GetDescriptor() << ": Execution stopped by user." << endl;
+        return kFALSE;
+    }
+
+    *fLog << all << GetDescriptor() << ": Done." << endl;
+    *fLog << endl << endl;
+
+    return kTRUE;
+}
+
 Bool_t MJCut::Process(const MDataSet &set)
 {
@@ -435,4 +523,22 @@
 
     CheckEnv();
+
+    // --------------------------------------------------------------------------------
+
+    // Possible source position (eg. Wobble Mode)
+    MPointingPos source("MSourcePos");
+    if (set.HasSource())
+    {
+        if (!set.GetSourcePos(source))
+            return kFALSE;
+        *fLog << all;
+        source.Print("RaDec");
+    }
+    else
+        *fLog << all << "No source position applied..." << endl;
+
+    if (!fIsWobble && source.IsInitialized() && fRndmSrcPos)
+        if (!FillSrcPosCam(set, source))
+            return kFALSE;
 
     // --------------------------------------------------------------------------------
@@ -460,16 +566,6 @@
     plist.AddToList(&obs);
 
-    // Possible source position (eg. Wobble Mode)
-    MPointingPos source("MSourcePos");
-    if (set.HasSource())
-    {
-        if (!set.GetSourcePos(source))
-            return kFALSE;
+    if (source.IsInitialized())
         plist.AddToList(&source);
-        *fLog << all;
-        source.Print("RaDec");
-    }
-    else
-        *fLog << inf << "No source position applied..." << endl;
 
     // Initialize default binnings
@@ -546,10 +642,4 @@
     SetupWriter(write1, "WriteAfterCut3");
 
-/*
-    MEnergyEstimate est;
-
-    MTaskEnv taskenv1("EstimateEnergy");
-    taskenv1.SetDefault(fEstimateEnergy ? fEstimateEnergy : &est);
-  */
     MTaskEnv taskenv2("CalcHadronness");
     taskenv2.SetDefault(fCalcHadronness);
@@ -632,4 +722,7 @@
     tlist.AddToList(&devcalc, "Starguider");
     tlist.AddToList(&tlist2,  "Events");
+
+    // by setting it here it is distributed to all consecutive tasks
+    //tlist.SetAccelerator(MTask::kAccDontReset|MTask::kAccDontTime);
  
     par.SetVal(0);
@@ -795,4 +888,7 @@
     }
 
+    // by setting it here it is distributed to all consecutive tasks
+    //tlist.SetAccelerator(MTask::kAccDontReset|MTask::kAccDontTime);
+
     par.SetVal(1);
 
Index: trunk/MagicSoft/Mars/mjobs/MJCut.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCut.h	(revision 7554)
+++ trunk/MagicSoft/Mars/mjobs/MJCut.h	(revision 7555)
@@ -12,4 +12,5 @@
 class MH;
 class MWriteRootFile;
+class MPointingPos;
 
 class MJCut : public MJob
@@ -22,4 +23,5 @@
     Bool_t  fIsMonteCarlo;
     Bool_t  fFullDisplay;
+    Bool_t  fRndmSrcPos;
     //Bool_t  fSubstraction;
 
@@ -32,6 +34,6 @@
 
     //MTask *fEstimateEnergy;
-    MTask *fCalcHadronness;
-    MTask *fCalcDisp;
+    MTask  *fCalcHadronness;
+    MTask  *fCalcDisp;
 
     TString  GetOutputFile(UInt_t num) const;
@@ -45,4 +47,6 @@
     Bool_t   CanStoreSummary() const { return !fPathOut.IsNull() && fStoreSummary; }
     Bool_t   CanStoreResult() const  { return !fPathOut.IsNull() && fStoreResult;  }
+
+    Bool_t   FillSrcPosCam(const MDataSet &set, MPointingPos &source);
 
 public:
@@ -58,4 +62,5 @@
     void EnableMonteCarloMode(Bool_t b=kTRUE)    { fIsMonteCarlo = b; }
     void EnableFullDisplay(Bool_t b=kTRUE)       { fFullDisplay  = b; }
+    void EnableRandomSrcPos(Bool_t b=kTRUE)      { fRndmSrcPos   = b; }
     //void EnableSubstraction(Bool_t b=kTRUE)      { fSubstraction = b; }
 
