Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 8740)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 8741)
@@ -22,4 +22,19 @@
    * datacenter/macros/plotdb.C:
      - updated some ranges
+
+   * callisto.cc, star.cc, ganymed.cc, sponde.cc:
+     - updated to allow --rc=
+     - moved execution of jobs into individual block if not already done
+
+   * mbase/MEnv.[h,cc]:
+     - added new member function TakeEnv to take resources from MArgs
+
+   * mpedestal/MExtractPedestal.cc:
+     - made sure that the program doesn't (sould not?) crash whenever
+       a lower bound is given which is much too large
+
+   * mpointing/MPointingDevCalc.cc:
+     - added comments from the runbook about mirror focussing
+       beginning of August
 
 
Index: /trunk/MagicSoft/Mars/callisto.cc
===================================================================
--- /trunk/MagicSoft/Mars/callisto.cc	(revision 8740)
+++ /trunk/MagicSoft/Mars/callisto.cc	(revision 8741)
@@ -61,6 +61,8 @@
     gLog << "   --debug-env[=1]           Display untouched resources after program execution" << endl;
     gLog << "   --debug-env=2             Display untouched resources after eventloop setup" << endl;
-    gLog << "   --debug-env=3             Debug setting resources from resource file" << endl;
+    gLog << "   --debug-env=3             Debug setting resources from resource file and command line" << endl;
     gLog << "   --debug-mem               Debug memory usage" << endl << endl;
+    gLog << "   --rc=Name:option          Set or overwrite a resource of the resource file." << endl;
+    gLog << "                             (Note, that this option can be used multiple times." << endl;
     gLog << endl;
     gLog << "   -q                        Quit when job is finished" << endl;
@@ -198,5 +200,5 @@
 
     //
-    // check for the right usage of the program
+    // check for the right usage of the program (number of arguments)
     //
     if (arg.GetNumArguments()!=1)
@@ -207,4 +209,22 @@
     }
 
+    //
+    // Now we access/read the resource file. This will remove all
+    // --rc= from the list of arguments.
+    //
+    MEnv env(kConfig);
+    if (!env.IsValid())
+    {
+        gLog << err << "ERROR - Reading resource file " << kConfig << "." << endl;
+        return 0xfe;
+    }
+
+    // And move the resource options from the command line to the MEnv
+    if (!env.TakeEnv(arg, kDebugEnv>2))
+        return 0xfd;
+
+    //
+    // check for the right usage of the program (number of options)
+    //
     if (arg.GetNumOptions()>0)
     {
@@ -339,11 +359,4 @@
     d->SetBit(MStatusDisplay::kExitLoopOnExit);
     d->SetTitle(kSequence);
-
-    MEnv env(kConfig);
-    if (!env.IsValid())
-    {
-        gLog << err << "Configuration file " << kConfig << " not found." << endl;
-        return 0xfe;
-    }
 
     if (kModeC/* || kUseTest*/)
Index: /trunk/MagicSoft/Mars/ganymed.cc
===================================================================
--- /trunk/MagicSoft/Mars/ganymed.cc	(revision 8740)
+++ /trunk/MagicSoft/Mars/ganymed.cc	(revision 8741)
@@ -58,6 +58,8 @@
     gLog << "   --debug-env[=1]           Display untouched resources after program execution" << endl;
     gLog << "   --debug-env=2             Display untouched resources after eventloop setup" << endl;
-    gLog << "   --debug-env=3             Debug setting resources from resource file" << endl;
+    gLog << "   --debug-env=3             Debug setting resources from resource file and command line" << endl;
     gLog << "   --debug-mem               Debug memory usage" << endl << endl;
+    gLog << "   --rc=Name:option          Set or overwrite a resource of the resource file." << endl;
+    gLog << "                             (Note, that this option can be used multiple times." << endl;
     gLog << endl;
     gLog << "   -q                        Quit when job is finished" << endl;
@@ -154,4 +156,32 @@
     }
 
+    //
+    // check for the right usage of the program (number of arguments)
+    //
+    if (arg.GetNumArguments()!=1)
+    {
+        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
+        Usage();
+        return 2;
+    }
+
+    //
+    // Now we access/read the resource file. This will remove all
+    // --rc= from the list of arguments.
+    //
+    MEnv env(kConfig);
+    if (!env.IsValid())
+    {
+        gLog << err << "ERROR - Reading resource file " << kConfig << "." << endl;
+        return 0xfe;
+    }
+
+    // And move the resource options from the command line to the MEnv
+    if (!env.TakeEnv(arg, kDebugEnv>2))
+        return 0xfd;
+
+    //
+    // check for the right usage of the program (number of options)
+    //
     if (arg.GetNumOptions()>0)
     {
@@ -159,14 +189,4 @@
         arg.Print("options");
         gLog << endl;
-        return 2;
-    }
-
-    //
-    // check for the right usage of the program
-    //
-    if (arg.GetNumArguments()!=1)
-    {
-        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
-        Usage();
         return 2;
     }
@@ -248,60 +268,55 @@
 
     //
-    // Calculate pedestal for pedestal-calculation and calibration
-    //
-    MEnv env(kConfig);
-    if (!env.IsValid())
-    {
-        gLog << err << "Configuration file " << kConfig << " not found." << endl;
-        return 0xfe;
-    }
-
-    MJCut job(Form("MJCut #%d", seq.GetNumAnalysis()));
-    job.SetEnv(&env);
-    job.SetEnvDebug(kDebugEnv);
-    job.SetDisplay(d);;
-    job.SetOverwrite(kOverwrite);
-    job.SetPathOut(kOutpath);
-    job.SetNameOutFile(kOutfile);
-    job.SetNameSummaryFile(kNameSummary);
-    //job.SetNameResultFile(kNameResult);
-    job.EnableWriteOnly(kWriteOnly);
-    //if (kFullDisplay)
-    //    job.EnableFullDisplay(kFullDisplay);
-    job.EnableStorageOfResult(!kSkipResult);
-    if (kWriteSummary) // Don't change flag set in SetNameSummaryFile
-        job.EnableStorageOfSummary();
-    //if (kWriteResult)  // Don't change flag set in SetNameSummaryFile
-    //    job.EnableStorageOfResult();
-
-    const Int_t rc = job.Process(seq);
-    if (rc<=0)
-    {
-        gLog << err << "Calculation of cuts failed." << endl << endl;
-
-        //error coding for the automatic analysis (to be filled into the database)
-        switch (rc)
+    // Run cut program. (block for debug-mem)
+    //
+    {
+        MJCut job(Form("MJCut #%d", seq.GetNumAnalysis()));
+        job.SetEnv(&env);
+        job.SetEnvDebug(kDebugEnv);
+        job.SetDisplay(d);;
+        job.SetOverwrite(kOverwrite);
+        job.SetPathOut(kOutpath);
+        job.SetNameOutFile(kOutfile);
+        job.SetNameSummaryFile(kNameSummary);
+        //job.SetNameResultFile(kNameResult);
+        job.EnableWriteOnly(kWriteOnly);
+        //if (kFullDisplay)
+        //    job.EnableFullDisplay(kFullDisplay);
+        job.EnableStorageOfResult(!kSkipResult);
+        if (kWriteSummary) // Don't change flag set in SetNameSummaryFile
+            job.EnableStorageOfSummary();
+        //if (kWriteResult)  // Don't change flag set in SetNameSummaryFile
+        //    job.EnableStorageOfResult();
+
+        const Int_t rc = job.Process(seq);
+        if (rc<=0)
         {
-        case  0:        // MJCut failed
-            return 3;
-        case -1:        // Source not found
-            return 4;
-        case -2:        // FillRndSrcCam failed
-            return 5;
-        case -3:        // Processing off-data failed
-            return 6;
-        case -4:        // Processing on-data failed
-            return 7;
+            gLog << err << "Calculation of cuts failed." << endl << endl;
+
+            //error coding for the automatic analysis (to be filled into the database)
+            switch (rc)
+            {
+            case  0:        // MJCut failed
+                return 3;
+            case -1:        // Source not found
+                return 4;
+            case -2:        // FillRndSrcCam failed
+                return 5;
+            case -3:        // Processing off-data failed
+                return 6;
+            case -4:        // Processing on-data failed
+                return 7;
+            }
+            return 2;
         }
-        return 2;
-    }
-
-    if (kDebugEnv>0)
-        env.PrintUntouched();
-
-    if (!job.GetDisplay())
-    {
-        gLog << warn << "Display closed by user... execution aborted." << endl << endl;
-        return 1;
+
+        if (kDebugEnv>0)
+            env.PrintUntouched();
+
+        if (!job.GetDisplay())
+        {
+            gLog << warn << "Display closed by user... execution aborted." << endl << endl;
+            return 1;
+        }
     }
 
Index: /trunk/MagicSoft/Mars/mbase/MEnv.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MEnv.cc	(revision 8740)
+++ /trunk/MagicSoft/Mars/mbase/MEnv.cc	(revision 8741)
@@ -57,4 +57,6 @@
 #include "MLog.h"
 #include "MLogManip.h"
+
+#include "MArgs.h"
 
 ClassImp(MEnv);
@@ -978,4 +980,79 @@
 //---------------------------------------------------------------------------
 //
+// Check MArgs for all options "--rc=" and remove them. Options should be
+// given like
+//
+//    program --rc=Option1:Test1 --rc=Option2.SubOption:Test2
+//
+// If all resources could be interpeted corrctly kTRUE is returned. If
+// there were problems kFALSE is returned.
+//
+Bool_t MEnv::TakeEnv(MArgs &arg, Bool_t print, Bool_t overwrite)
+{
+    if (!GetTable())
+    {
+        gLog << err << "ERROR - MEnv not yet initialized." << endl;
+        return kFALSE;
+    }
+
+    Bool_t ret = kTRUE;
+    while (1)
+    {
+        const TString rc = arg.GetStringAndRemove("--rc=");
+        if (rc.IsNull())
+            break;
+
+        const Ssiz_t pos = rc.First(':');
+        if (pos<0)
+        {
+            gLog << warn << "WARNING - Resource '" << rc << "' doesn't contain a colon... ignored." << endl;
+            ret=kFALSE;
+            continue;
+        }
+        if (pos==0)
+        {
+            gLog << warn << "WARNING - Resource '" << rc << "' doesn't contain a name... ignored." << endl;
+            ret=kFALSE;
+            continue;
+        }
+        if (pos==rc.Length()-1)
+        {
+            gLog << warn << "WARNING - Resource '" << rc << "' empty... ignored." << endl;
+            ret=kFALSE;
+            continue;
+        }
+
+        const TString name = rc(0,     pos);
+        const TString val  = rc(pos+1, rc.Length());
+
+        if (print)
+            gLog << all << "Command line resource '" << name << "' with value '" << val << "'...";
+
+        const Bool_t exists = Defined(name);
+        if (!exists)
+        {
+            SetValue(name, val, kEnvLocal);
+            if (print)
+                gLog << "set." << endl;
+            continue;
+        }
+
+        if (overwrite)
+        {
+            SetValue(name, "");
+            SetValue(name, val, kEnvLocal);
+            if (print)
+                gLog << "changed." << endl;
+            continue;
+        }
+
+        if (print)
+            gLog << "skipped/existing." << endl;
+    }
+    return ret;
+}
+
+//---------------------------------------------------------------------------
+//
 // Add name and full path to output
 //
Index: /trunk/MagicSoft/Mars/mbase/MEnv.h
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MEnv.h	(revision 8740)
+++ /trunk/MagicSoft/Mars/mbase/MEnv.h	(revision 8741)
@@ -15,4 +15,6 @@
 class TAttFill;
 class TPave;
+
+class MArgs;
 
 class MEnv : public TEnv
@@ -67,4 +69,5 @@
 
     void        AddEnv(const TEnv &env, Bool_t overwrite=kTRUE);
+    Bool_t      TakeEnv(MArgs &args, Bool_t print=kFALSE, Bool_t overwrite=kTRUE);
 
     Int_t       ReadFile(const char *fname, EEnvLevel level);
Index: /trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.cc
===================================================================
--- /trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.cc	(revision 8740)
+++ /trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.cc	(revision 8741)
@@ -1,4 +1,4 @@
 /* ======================================================================== *\
-! $Name: not supported by cvs2svn $:$Id: MExtractPedestal.cc,v 1.34 2007-07-14 00:02:24 tbretz Exp $
+! $Name: not supported by cvs2svn $:$Id: MExtractPedestal.cc,v 1.35 2007-09-05 19:36:36 tbretz Exp $
 ! --------------------------------------------------------------------------
 !
@@ -350,7 +350,8 @@
     const UInt_t num = fRunHeader->GetNumSamplesHiGain()+fRunHeader->GetNumSamplesLoGain();
 
+    // Check upper bound for check window
     if (fCheckWinLast >= num)
     {
-        *fLog << "CheckWindow [" << fCheckWinFirst << "," << fCheckWinLast;
+        *fLog << inf << "CheckWindow [" << fCheckWinFirst << "," << fCheckWinLast;
         *fLog << "] out of range [0," << num-1 << "]... ";
         *fLog << "reset upper edge." << endl;
@@ -359,7 +360,18 @@
     }
 
-    if (offset+fExtractWinLast >= num)
-    {
-        *fLog << "ExtractWindow [" << fExtractWinFirst+offset << "," << fExtractWinLast+offset;
+    // Now check lower bound for check window
+    if (fCheckWinFirst>fCheckWinLast)
+    {
+        *fLog << err << "CheckWindow first slice " << fCheckWinFirst;
+        *fLog << " greater than last slice " << fCheckWinLast;
+        *fLog << "... reset to 0." << endl;
+
+        fCheckWinFirst = 0;
+    }
+
+    // check upper bound for extaction window
+    if (fExtractWinLast+offset >= num)
+    {
+        *fLog << inf << "ExtractWindow [" << fExtractWinFirst+offset << "," << fExtractWinLast+offset;
         *fLog << "] out of range [0," << num-1 << "]... ";
         *fLog << "reset upper edge." << endl;
@@ -368,12 +380,26 @@
     }
 
+    // Now check lower bound for check window
+    if (fExtractWinFirst>fExtractWinLast)
+    {
+        *fLog << err << "ExtractionWindow first slice " << fExtractWinFirst+offset;
+        *fLog << " greater than last slice " << fExtractWinLast+offset;
+        *fLog << "... reset to 0." << endl;
+
+        fExtractWinFirst = 0;
+    }
+
+    // Calculate window size for extraction window
     fExtractWinSize = fExtractWinLast-fExtractWinFirst+1;
 
+    // Check if use tries to do a fundamental pedestal extraction
+    // with an odd number of slices
     if (fExtractor || TMath::Even(fExtractWinSize))
         return;
 
+    // Make sure the number of extracted slices is even
     fExtractWinLast += offset+fExtractWinLast==num-1 ? -1 : +1;
 
-    *fLog << "ExtractionWindow odd... set to [";
+    *fLog << inf << "ExtractionWindow odd... set to [";
     *fLog << fExtractWinFirst+offset << "," << fExtractWinLast+offset << "]" << endl;
 
Index: /trunk/MagicSoft/Mars/mpointing/MPointingDevCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/mpointing/MPointingDevCalc.cc	(revision 8740)
+++ /trunk/MagicSoft/Mars/mpointing/MPointingDevCalc.cc	(revision 8741)
@@ -166,4 +166,53 @@
 // Lid is closed. (< run 84980)
 //
+// Mirror refocussing around 4.Aug.2007, from the Runbook:
+//
+// [2007-08-04 04:46:47]
+// We finished with the focussing with Polaris. The images need to be
+// analysed and new LUTs generated.
+//
+// [2007-08-04 23:47:30]
+// Actually we see that the mispointing is always large; probably since
+// the LUT tables have not yet been adjusted to the new focussing.
+//
+// [2007-08-03 23:07:58]
+// Data taking stopped. Mirror focussing.
+//
+// [2007-08-05 00:09:16]
+// We take some pictures on stars nearby Cyg X3 with the sbig camera;
+// actually the spot doesn't look very nice... The pictures have been
+// saved with name Deneb- and Sadr- Polaris seems a bit better. Should we
+// have new LUT tables after the focussing?
+//
+// [2007-08-10 20:18:48]
+// Tonight we take first images of Polaris with a new LUT file generated
+// based on the recent focussing. The image will be analysed tomorrow and
+// than new LUTs will be generated. For tonight the focussing is still not
+// changed.
+//
+// [2007-08-14 20:57:59]
+// The weather is fine. There is a group of hobby astronomers at the
+// helicopter parking. Before data taking, we tried to check the new LUTs.
+// However, because of technical problems with the new LUTs we had to
+// postpone the measurements. We lost some 10 min of data taking because
+// of this.
+//
+// [2007-08-14 22:29:37]
+// Before continuing the observation we perform a focussing test with the
+// new LUTs from recent Polaris focussing. Note: Data on Her X-1 was taken
+// with old focussing. We performed PSF measurements on Kornephorus (Zd
+// 31.77, Az 264,67) first with old LUTs and then with new LUTs. We took
+// T-points with both focussing. The first T-Point corresponds to the
+// previous focussing and the second with the improved. Please check both
+// T-points for eventual misspointing. We found big improvement of the PSF
+// with the new LUTs and will therefore continue from now on with the new
+// focussing. Having a first look at the SBIG pictures we see a slightly
+// misspointing of ~0.1 deg with the new LUTs.
+//
+// [2007-08-14 22:46:10]
+// Comparing the trigger rate with yesterday night we do not see an
+// improvement with the new focussing. 
+//
+//
 //
 // ToDo:
Index: /trunk/MagicSoft/Mars/sponde.cc
===================================================================
--- /trunk/MagicSoft/Mars/sponde.cc	(revision 8740)
+++ /trunk/MagicSoft/Mars/sponde.cc	(revision 8741)
@@ -57,6 +57,8 @@
     gLog << "   --debug-env[=1]           Display untouched resources after program execution" << endl;
     gLog << "   --debug-env=2             Display untouched resources after eventloop setup" << endl;
-    gLog << "   --debug-env=3             Debug setting resources from resource file" << endl;
+    gLog << "   --debug-env=3             Debug setting resources from resource file and command line" << endl;
     gLog << "   --debug-mem               Debug memory usage" << endl << endl;
+    gLog << "   --rc=Name:Option          Set or overwrite a resource of the resource file." << endl;
+    gLog << "                             (Note, that this option can be used multiple times." << endl;
     gLog << endl;
     gLog << "   -q                        Quit when job is finished" << endl;
@@ -119,4 +121,32 @@
     const Bool_t  kForceTheta    =  arg.HasOnlyAndRemove("--force-theta");
 
+    //
+    // check for the right usage of the program (number of arguments)
+    //
+    if (arg.GetNumArguments()<2 || arg.GetNumArguments()>3)
+    {
+        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
+        Usage();
+        return 2;
+    }
+
+    //
+    // Now we access/read the resource file. This will remove all
+    // --rc= from the list of arguments.
+    //
+    MEnv env(kConfig);
+    if (!env.IsValid())
+    {
+        gLog << err << "ERROR - Reading resource file " << kConfig << "." << endl;
+        return 0xfe;
+    }
+
+    // And move the resource options from the command line to the MEnv
+    if (!env.TakeEnv(arg, kDebugEnv>2))
+        return 0xfd;
+
+    //
+    // check for the right usage of the program (number of options)
+    //
     if (arg.GetNumOptions()>0)
     {
@@ -124,14 +154,4 @@
         arg.Print("options");
         gLog << endl;
-        return 2;
-    }
-
-    //
-    // check for the right usage of the program
-    //
-    if (arg.GetNumArguments()<2 || arg.GetNumArguments()>3)
-    {
-        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
-        Usage();
         return 2;
     }
@@ -208,35 +228,30 @@
 
     //
-    // Calculate pedestal for pedestal-calculation and calibration
-    //
-    MEnv env(kConfig);
-    if (!env.IsValid())
-    {
-        gLog << err << "Configuration file " << kConfig << " not found." << endl;
-        return 0xfe;
-    }
-
-    MJSpectrum job(Form("Spectrum - %s", kInfile.Data()));
-    job.SetEnv(&env);
-    job.SetEnvDebug(kDebugEnv);
-    job.SetDisplay(d);;
-    job.SetOverwrite(kOverwrite);
-    job.SetPathOut(kOutfile);
-    job.SetPathIn(kInfile);
-
-    job.ForceTheta(kForceTheta);
-
-    if (!job.Process(seq))
-    {
-        gLog << err << "Calculation of spectrum failed." << endl << endl;
-        return 2;
-    }
-    if (kDebugEnv>0)
-        env.PrintUntouched();
-
-    if (!job.GetDisplay())
-    {
-        gLog << warn << "Display closed by user... execution aborted." << endl << endl;
-        return 1;
+    // Calculate spectrum (block for debug-mem)
+    //
+    {
+        MJSpectrum job(Form("Spectrum - %s", kInfile.Data()));
+        job.SetEnv(&env);
+        job.SetEnvDebug(kDebugEnv);
+        job.SetDisplay(d);;
+        job.SetOverwrite(kOverwrite);
+        job.SetPathOut(kOutfile);
+        job.SetPathIn(kInfile);
+
+        job.ForceTheta(kForceTheta);
+
+        if (!job.Process(seq))
+        {
+            gLog << err << "Calculation of spectrum failed." << endl << endl;
+            return 2;
+        }
+        if (kDebugEnv>0)
+            env.PrintUntouched();
+
+        if (!job.GetDisplay())
+        {
+            gLog << warn << "Display closed by user... execution aborted." << endl << endl;
+            return 1;
+        }
     }
 
Index: /trunk/MagicSoft/Mars/star.cc
===================================================================
--- /trunk/MagicSoft/Mars/star.cc	(revision 8740)
+++ /trunk/MagicSoft/Mars/star.cc	(revision 8741)
@@ -53,6 +53,8 @@
     gLog << "   --debug-env[=1]           Display untouched resources after program execution" << endl;
     gLog << "   --debug-env=2             Display untouched resources after eventloop setup" << endl;
-    gLog << "   --debug-env=3             Debug setting resources from resource file" << endl;
+    gLog << "   --debug-env=3             Debug setting resources from resource file and command line" << endl;
     gLog << "   --debug-mem               Debug memory usage" << endl << endl;
+    gLog << "   --rc=Name:option          Set or overwrite a resource of the resource file." << endl;
+    gLog << "                             (Note, that this option can be used multiple times." << endl;
     gLog << endl;
     gLog << " Input Options:" << endl;
@@ -132,4 +134,32 @@
     const TString kOutpath    = arg.GetStringAndRemove("--out=", ".");
 
+    //
+    // check for the right usage of the program (number of arguments)
+    //
+    if (arg.GetNumArguments()!=1)
+    {
+        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
+        Usage();
+        return 2;
+    }
+
+    //
+    // Now we access/read the resource file. This will remove all
+    // --rc= from the list of arguments.
+    //
+    MEnv env(kConfig);
+    if (!env.IsValid())
+    {
+        gLog << err << "ERROR - Reading resource file " << kConfig << "." << endl;
+        return 0xfe;
+    }
+
+    // And move the resource options from the command line to the MEnv
+    if (!env.TakeEnv(arg, kDebugEnv>2))
+        return 0xfd;
+
+    //
+    // check for the right usage of the program (number of options)
+    //
     if (arg.GetNumOptions()>0)
     {
@@ -137,14 +167,4 @@
         arg.Print("options");
         gLog << endl;
-        return 2;
-    }
-
-    //
-    // check for the right usage of the program
-    //
-    if (arg.GetNumArguments()!=1)
-    {
-        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
-        Usage();
         return 2;
     }
@@ -214,13 +234,6 @@
 
     //
-    // Do calibration in a block (debug mem)
-    //
-    MEnv env(kConfig);
-    if (!env.IsValid())
-    {
-        gLog << err << "Configuration file " << kConfig << " not found." << endl;
-        return 0xfe;
-    }
-
+    // Do star in a block (debug mem)
+    //
     {
         MJStar job(Form("MJStar #%d", seq.GetSequence()));
