Changeset 9441 for trunk


Ignore:
Timestamp:
05/10/09 11:52:17 (16 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r9436 r9441  
    1818
    1919                                                 -*-*- END OF LINE -*-*-
     20 2009/05/10 Thomas Bretz
     21
     22   * ceres.cc:
     23     - added usage of sequence files
     24     - added new options for pedestal and calibration mode
     25
     26   * mbase/MDirIter.[h,cc]:
     27     - added AddFile member function
     28
     29   * mgeom/MGeomPix.h:
     30     - added Getter for Width in x and y
     31
     32   * mjobs/MJSimulation.[h,cc]:
     33     - added fOperationMode
     34     - added use of sequence
     35     - name ceres file according to sequence number
     36     - changes to the binnings
     37
     38   * mjobs/MSequence.[h,cc]:
     39     - unified the usual and the default constructor
     40     - don't output default values in Print
     41     - added kCorsika files
     42
     43
     44
    2045 2009/04/29 Thomas Bretz
    2146
  • trunk/MagicSoft/Mars/NEWS

    r9434 r9441  
    4141     initialized. The effect might be random but seems to be small.
    4242
     43   * Now accepts sequence files as input
     44
     45   * creation of pedestal and calibration files is now steered by
     46     --mode (see ceres help)
     47
    4348 ;callisto:
    4449
     
    4651     calibrated (ceres files worked)
    4752
    48  ;star;
     53 ;star:
    4954
    5055   * allow to run thru even if discriminator threshold are missing
  • trunk/MagicSoft/Mars/ceres.cc

    r9345 r9441  
    1515#include "MEnv.h"
    1616#include "MArgs.h"
     17#include "MDirIter.h"
    1718
    1819#include "MJSimulation.h"
     
    3940    gLog << all << endl;
    4041    gLog << "Sorry the usage is:" << endl;
    41     gLog << "   ceres [options] inputfile" << endl << endl;
    42     gLog << "     inputfile               MMCS (CORSIKA) binary (cherenkov) file." << endl;
     42    gLog << "   ceres [options] [inputfiles|sequence.txt]" << endl << endl;
     43    gLog << "     inputfiles              MMCS (CORSIKA) binary (cherenkov) files, wildcards allowed." << endl;
     44    gLog << "     sequence.txt            A sequence file." << endl;
    4345    gLog << " Root Options:" << endl;
    4446    gLog << "   -b                        Batch mode (no graphical output to screen)" << endl<<endl;
     
    4951    gLog << "   --debug-env=2             Display untouched resources after eventloop setup" << endl;
    5052    gLog << "   --debug-env=3             Debug setting resources from resource file and" << endl;
    51     gLog << "                             command line" << endl;
     53    gLog << "                              command line" << endl;
    5254    gLog << "   --debug-mem               Debug memory usage" << endl << endl;
    5355    gLog << "   --rc=Name:option          Set or overwrite a resource of the resource file." << endl;
     
    5961    gLog << "   -ff                       Force reading of file even if problems occur" << endl;
    6062    gLog << "   --out=path                Path to write the all results to [def=local path]" << endl;
     63    gLog << "   --ind=path                Input path of Corsika files if sequence used" << endl;
     64    gLog << "                              [def=standard path in datacenter]" << endl;
    6165    gLog << "   --dev-null                Suppress output of files (for test purpose)" << endl;
     66    gLog << "   --print-seq               Print Sequence information [sequence only]" << endl;
     67    gLog << "   --print-files             Print Files taken from Sequence" << endl;
     68    gLog << "   --print-found             Print Files found from Sequence" << endl;
    6269    gLog << "   --config=ceres.rc         Resource file [default=reflector.rc]" << endl;
     70    gLog << endl;
     71    gLog << "   --mode=pedestal           Execution mode. Produce either pedestals," << endl;
     72    gLog << "   --mode=calibration        calibration data (no input files required) or" << endl;
     73    gLog << "   --mode=data               process data files [default]" << endl;
    6374    gLog << endl;
    6475//    gLog << "     -f:  force reading of runheader" << endl;
     
    8697}
    8798
     99static void PrintFiles(const MArgs &arg, Bool_t allopt)
     100{
     101    const char *prep = allopt ? "Found" : "Scheduled";
     102
     103    gLog << all;
     104    gLog.Separator(Form("%s Data Files", prep));
     105    for (int i=0; i<arg.GetNumArguments(); i++)
     106        if (!allopt || gSystem->AccessPathName(arg.GetArgumentStr(i), kFileExists)==0)
     107            gLog << arg.GetArgumentStr(i) << endl;
     108    gLog << endl;
     109}
     110
     111
     112static void PrintFiles(const MSequence &seq, const TString &kInpathD, Bool_t allopt)
     113{
     114    const char *prep = allopt ? "Found" : "Scheduled";
     115
     116    MDirIter Next;
     117    seq.GetRuns(Next, MSequence::kCorsika, kInpathD);
     118
     119    gLog << all;
     120    gLog.Separator(Form("%s Data Files", prep));
     121    Next.Print(allopt?"all":"");
     122    gLog << endl;
     123}
     124
    88125int main(int argc, char **argv)
    89126{
     
    110147    }
    111148
    112     const Bool_t  kBatch     = arg.HasOnlyAndRemove("-b");
     149    const Bool_t  kBatch      = arg.HasOnlyAndRemove("-b");
    113150    //const Int_t   kCompLvl   = arg.GetIntAndRemove("--comp=", 1);
    114     const Bool_t  kForce     = arg.HasOnlyAndRemove("-ff");
    115     const Bool_t  kDebugMem  = arg.HasOnlyAndRemove("--debug-mem");
    116     const Bool_t  kNullOut   = arg.HasOnlyAndRemove("--dev-null");
     151    const Bool_t  kForce      = arg.HasOnlyAndRemove("-ff");
     152    const Bool_t  kDebugMem   = arg.HasOnlyAndRemove("--debug-mem");
     153    const Bool_t  kNullOut    = arg.HasOnlyAndRemove("--dev-null");
    117154    Int_t kDebugEnv = arg.HasOnlyAndRemove("--debug-env") ? 1 : 0;
    118155    kDebugEnv = arg.GetIntAndRemove("--debug-env=", kDebugEnv);
    119156
    120     const Bool_t  kQuit      = arg.HasOnlyAndRemove("-q");
    121     const Bool_t  kOverwrite = arg.HasOnlyAndRemove("-f");
    122 
    123     const TString kConfig    = arg.GetStringAndRemove("--config=", "ceres.rc");
    124     const TString kOutpath   = arg.GetStringAndRemove("--out=", ".");
     157    const Bool_t  kPrintSeq   = arg.HasOnlyAndRemove("--print-seq");
     158    const Bool_t  kPrintFiles = arg.HasOnlyAndRemove("--print-files");
     159    const Bool_t  kPrintFound = arg.HasOnlyAndRemove("--print-found");
     160
     161    const Bool_t  kQuit       = arg.HasOnlyAndRemove("-q");
     162    const Bool_t  kOverwrite  = arg.HasOnlyAndRemove("-f");
     163
     164    const TString kConfig     = arg.GetStringAndRemove("--config=", "ceres.rc");
     165    const TString kInpath     = arg.GetStringAndRemove("--ind=", "");
     166    const TString kOutpath    = arg.GetStringAndRemove("--out=", ".");
     167
     168    const TString kOpMode     = arg.GetStringAndRemove("--mode=", "data");
     169
     170    Int_t opmode = -1;
     171    if (TString("data").BeginsWith(kOpMode, TString::kIgnoreCase))
     172        opmode = MJSimulation::kModeData;
     173    if (TString("pointrun").BeginsWith(kOpMode, TString::kIgnoreCase))
     174        opmode = MJSimulation::kModePointRun;
     175    if (TString("pedestal").BeginsWith(kOpMode, TString::kIgnoreCase))
     176        opmode = MJSimulation::kModePed;
     177    if (TString("calibration").BeginsWith(kOpMode, TString::kIgnoreCase))
     178        opmode = MJSimulation::kModeCal;
     179
     180    if (opmode<0)
     181    {
     182        gLog << err << "ERROR - Wrong mode specified..." << endl;
     183        Usage();
     184        return 2;
     185    }
    125186
    126187    //
    127188    // check for the right usage of the program (number of arguments)
    128     if (arg.GetNumArguments()<1/* || arg.GetNumArguments()>2*/)
     189    if (arg.GetNumArguments()<1 && opmode==MJSimulation::kModeData)
    129190    {
    130191        gLog << warn << "WARNING - Wrong number of arguments..." << endl;
     192        Usage();
     193        return 2;
     194    }
     195
     196    //
     197    // for compatibility with the first version of ceres
     198    //
     199    if (arg.GetNumArguments()==1 && opmode==MJSimulation::kModeData)
     200    {
     201        if (arg.GetArgumentStr(0)=="pedestal")
     202        {
     203            opmode = MJSimulation::kModePed;
     204            arg.RemoveArgument(0);
     205        }
     206        if (arg.GetArgumentStr(0)=="calibration")
     207        {
     208            opmode = MJSimulation::kModeCal;
     209            arg.RemoveArgument(0);
     210        }
     211    }
     212
     213    if (arg.GetNumArguments()>0 && opmode!=MJSimulation::kModeData)
     214    {
     215        gLog << warn << "WARNING - No arguments allowed in this mode..." << endl;
    131216        Usage();
    132217        return 2;
     
    160245
    161246    //
     247    // Setup sequence file and check for its existance
     248    //
     249    TString kSequence = arg.GetNumArguments()==1 ? arg.GetArgumentStr(0) : "";
     250
     251    //
     252    // Check if the first argument (if any) is a sequence file or not
     253    //
     254    if (!kSequence.EndsWith(".txt"))
     255        kSequence = "";
     256
     257    //
     258    // Something special for datacenter access
     259    //
     260    if (!kSequence.IsNull() && !MSequence::InflateSeq(kSequence, kTRUE))
     261        return 2;
     262
     263    //
     264    // Setup sequence and check its validity
     265    //
     266    MSequence seq(kSequence, kInpath);
     267    if (!kSequence.IsNull())
     268    {
     269        if (kPrintSeq)
     270        {
     271            gLog << all;
     272            gLog.Separator(kSequence);
     273            seq.Print();
     274            gLog << endl;
     275        }
     276        if (seq.IsValid() && !seq.IsMonteCarlo())
     277        {
     278            gLog << err << "Sequence is not a Monte Carlo Sequence." << endl << endl;
     279            return 2;
     280        }
     281        if (!seq.IsValid())
     282        {
     283            gLog << err << "Sequence read but not valid!" << endl << endl;
     284            return 2;
     285        }
     286
     287        //
     288        // Process print options
     289        //
     290        if (kPrintFiles)
     291            PrintFiles(seq, kInpath, kFALSE);
     292        if (kPrintFound)
     293            PrintFiles(seq, kInpath, kTRUE);
     294    }
     295    else
     296    {
     297        if (kPrintFiles)
     298            PrintFiles(arg, kFALSE);
     299        if (kPrintFound)
     300            PrintFiles(arg, kTRUE);
     301    }
     302
     303    //
    162304    // Initialize root
    163305    //
     
    180322    // From now on each 'Exit' means: Terminate the application
    181323    d->SetBit(MStatusDisplay::kExitLoopOnExit);
    182     d->SetTitle(Form("-- Ceres: %s --", ""/*kNamein.Data()*/));
     324    d->SetTitle(seq.IsValid() ? Form("-- Ceres: %s --", kSequence.Data()) : "-- Ceres --");
    183325
    184326    if (kDebugMem)
     
    189331    //
    190332    {
    191 
    192         MJSimulation job("Ceres"/*Form("MJSimulation #%d", seq.GetSequence())*/);
     333        MJSimulation job(seq.IsValid() ? Form("Ceres #%d", seq.GetSequence()) : "Ceres");
    193334        //job.SetSequence(seq);
    194335        job.SetEnv(&env);
     
    199340        job.SetNullOut(kNullOut);
    200341        job.SetForceMode(kForce);
     342        job.SetMode(opmode);
    201343        // job.SetPathIn(kInpath); // not yet needed
    202344
    203         if (!job.Process(arg))
     345        if (!job.Process(arg, seq))
    204346        {
    205347            gLog << err << "Calculation of ceres failed." << endl << endl;
  • trunk/MagicSoft/Mars/mbase/MDirIter.cc

    r8907 r9441  
    152152// --------------------------------------------------------------------------
    153153//
     154// Add a single file to the iterator
     155//
     156Int_t MDirIter::AddFile(const char *name)
     157{
     158    return AddDirectory(gSystem->DirName(name), gSystem->BaseName(name));
     159}
     160
     161// --------------------------------------------------------------------------
     162//
    154163// Adds all entries from iter to this object
    155164//
  • trunk/MagicSoft/Mars/mbase/MDirIter.h

    r7808 r9441  
    5252
    5353    Int_t AddDirectory(const char *dir, const char *filter="", Int_t recursive=0);
     54    Int_t AddFile(const char *name);
    5455    void  Add(const MDirIter &iter);
    5556    void  Reset();
  • trunk/MagicSoft/Mars/mgeom/MGeomPix.h

    r9385 r9441  
    4545    Float_t GetT() const  { return fD/gsTan60; } // Distance between two opposite edges (traverse)
    4646
     47    Float_t GetDx() const { return fD; }           // Distance of two rows in x-direction (without rotation)
     48    Float_t GetDy() const { return fD*gsTan60/2; } // Distance of two rows in y-direction (without rotation)
     49
    4750    Bool_t  IsInside(Float_t px, Float_t py) const;
    4851    void    PaintPrimitive(const TAttLine &line, const TAttFill &fill, Double_t scalexy=1, Double_t scaled=1) const;
  • trunk/MagicSoft/Mars/mjobs/MJSimulation.cc

    r9428 r9441  
    6262
    6363#include "MArgs.h"
    64 //#include "MDirIter.h"
     64#include "MDirIter.h"
    6565#include "MParList.h"
    6666#include "MTaskList.h"
     
    126126//
    127127MJSimulation::MJSimulation(const char *name, const char *title)
    128     : fForceMode(kFALSE), fCamera(kTRUE) ,fForceTrigger(kFALSE)
     128    : fForceMode(kFALSE), fCamera(kTRUE), fForceTrigger(kFALSE),
     129    fOperationMode(kModeData)
    129130{
    130131    fName  = name  ? name  : "MJSimulation";
     
    140141    return kTRUE;
    141142}
    142 
    143 Bool_t MJSimulation::WriteResult(const MParList &plist)
     143/*
     144TString MJSimulation::GetOutFile(const MSequence &seq) const
     145{
     146    return seq.IsValid() ? Form("ceres%08d.root", seq.GetSequence()) : "ceres.root";
     147}
     148*/
     149
     150Bool_t MJSimulation::WriteResult(const MParList &plist, const MSequence &seq)
    144151{
    145152    if (fPathOut.IsNull())
     
    151158    TObjArray cont;
    152159    cont.Add(const_cast<TEnv*>(GetEnv()));
    153     //cont.Add(const_cast<MSequence*>(&fSequence));
     160    if (seq.IsValid())
     161        cont.Add(const_cast<MSequence*>(&seq));
    154162
    155163    cont.Add(plist.FindObject("PulseShape"));
     
    160168    if (fDisplay)
    161169    {
    162 //        TString title = "--  Reflector: ";
    163 //        title += fSequence.GetSequence();
    164 //        title += "  --";
    165 //        fDisplay->SetTitle(title, kFALSE);
     170        TString title = "--  Ceres";
     171        if (seq.IsValid())
     172        {
     173            title += ": ";
     174            title += seq.GetSequence();
     175        }
     176        title += "  --";
    166177        fDisplay->SetTitle("Ceres", kFALSE);
    167178
     
    169180    }
    170181
    171 //    const TString oname = Form("reflector%08d.root", fSequence.GetSequence());
    172     const TString oname = "ceres.root";
    173     return WriteContainer(cont, oname, "RECREATE");
     182    const TString name = seq.IsValid() ? Form("ceres%08d.root", seq.GetSequence()) : "ceres.root";
     183    return WriteContainer(cont, name, "RECREATE");
    174184}
    175185
     
    235245}
    236246
    237 Bool_t MJSimulation::Process(const MArgs &args)
     247Bool_t MJSimulation::Process(const MArgs &args, const MSequence &seq)
    238248{
    239249    /*
     
    245255    */
    246256
    247     //if (!HasWritePermission(GetPathOut()))
    248     //    return kFALSE;
     257//    if (!HasWritePermission(CombinePath(fPathOut, GetOutFile(seq))))
     258//        return kFALSE;
    249259
    250260    *fLog << inf;
     
    254264        return kFALSE;
    255265
    256     *fLog << warn << "FIXME: Monte Carlo simulation: Sequences not supported yet.";
    257     //*fLog << fSequence.GetFileName() << endl;
     266    if (seq.IsValid())
     267        *fLog << fSequence.GetFileName() << endl;
     268    else
     269        *fLog << args.GetNumArguments() << "-files" << endl;
    258270    *fLog << endl;
    259271
     272    MDirIter iter;
     273    if (seq.IsValid() && seq.GetRuns(iter, MSequence::kCorsika)<=0)
     274    {
     275        *fLog << err << "ERROR - Sequence valid but without files." << endl;
     276        return kFALSE;
     277    }
     278
    260279    // --------------------------------------------------------------------------------
    261 
    262     //MDirIter iter;
    263     //if (fSequence.GetRuns(iter, MSequence::kCalibrated)<=0)
    264     //    return kFALSE;
    265280
    266281    // Setup Parlist
     
    297312    //header.InitFadcType(3);
    298313
    299     header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTData);
    300     if (args.GetNumArguments()==1)
    301     {
    302         if (!args.GetArgumentStr(0).CompareTo("pedestal", TString::kIgnoreCase))
    303         {
    304             header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTPedestal);
    305             header.SetSourceInfo("Pedestal");
    306         }
    307         if (!args.GetArgumentStr(0).CompareTo("calibration", TString::kIgnoreCase))
    308         {
    309             header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTCalibration);
    310             header.SetSourceInfo("Calibration");
    311         }
    312         if (!args.GetArgumentStr(0).CompareTo("pointrun", TString::kIgnoreCase))
    313             header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTPointRun);
     314    switch (fOperationMode)
     315    {
     316    case kModeData:
     317        header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTData);
     318        break;
     319
     320    case kModePed:
     321        header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTPedestal);
     322        header.SetSourceInfo("Pedestal");
     323        break;
     324
     325    case kModeCal:
     326        header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTCalibration);
     327        header.SetSourceInfo("Calibration");
     328        break;
     329
     330    case kModePointRun:
     331        header.SetRunType(MRawRunHeader::kRTMonteCarlo|MRawRunHeader::kRTPointRun);
     332        break;
    314333    }
    315334
     
    333352    read.SetForceMode(fForceMode);
    334353
    335     for (int i=0; i<args.GetNumArguments(); i++)
    336         read.AddFile(args.GetArgumentStr(i));
     354    if (!seq.IsValid())
     355    {
     356        for (int i=0; i<args.GetNumArguments(); i++)
     357            read.AddFile(args.GetArgumentStr(i));
     358    }
     359    else
     360        read.AddFiles(iter);
    337361
    338362    MSimMMCS simmmcs;
     
    366390    // -------------------------------------------------------------------
    367391
    368     MBinning binse( 100,     1,   100000, "BinningEnergy",    "log");
    369     MBinning binsth( 70,   0.9,   900000, "BinningThreshold", "log");
    370     MBinning binsee( 35,   0.9,   900000, "BinningEnergyEst", "log");
     392    MBinning binse( 120,     1,  1000000, "BinningEnergy",    "log");
     393    MBinning binsth( 60,   0.9,   900000, "BinningThreshold", "log");
     394    MBinning binsee( 36,   0.9,   900000, "BinningEnergyEst", "log");
    371395    MBinning binss( 100,     1, 10000000, "BinningSize",      "log");
    372396//    MBinning binsi( 100,  -500,      500, "BinningImpact");
    373     MBinning binsi(  55,     0,     1100, "BinningImpact");
     397    MBinning binsi(  32,     0,      800, "BinningImpact");
    374398    MBinning binsh( 150,     0,       50, "BinningHeight");
    375399    MBinning binsaz(720,  -360,      360, "BinningAz");
    376400    MBinning binszd( 70,     0,       70, "BinningZd");
    377     MBinning binsvc( 45,     0,        9, "BinningViewCone");
     401    MBinning binsvc( 35,     0,        7, "BinningViewCone");
    378402    MBinning binsel(150,     0,       50, "BinningTotLength");
    379403    MBinning binsew(150,     0,       15, "BinningMedLength");
     
    845869    //-------------------------------------------
    846870
    847     if (!WriteResult(plist))
     871    if (!WriteResult(plist, seq))
    848872        return kFALSE;
    849873
  • trunk/MagicSoft/Mars/mjobs/MJSimulation.h

    r9343 r9441  
    99class MArgs;
    1010class MParList;
     11class MSequence;
    1112class MWriteRootFile;
    1213
    1314class MJSimulation : public MJob
    1415{
     16public:
     17    enum Mode_t { kModeData, kModePed, kModeCal, kModePointRun };
     18
    1519private:
    1620    Bool_t fForceMode;      // Force execution even if RUNE-section was not foundm
     
    1923    Bool_t fForceTrigger;   // Force the use of the trigger "electronics"
    2024
    21     Bool_t WriteResult(const MParList &plist);
     25    Int_t fOperationMode;   // Operation mode (data, ped, cal, pointrun)
     26
     27    Bool_t WriteResult(const MParList &plist, const MSequence &seq);
    2228    Bool_t CheckEnvLocal();
    2329
     
    3036    void SetForceMode(Bool_t force=kTRUE) { fForceMode = force; }
    3137
     38    void SetMode(Int_t mode) { fOperationMode = mode; }
     39
    3240    // Process
    33     Bool_t Process(const MArgs &args);
     41    Bool_t Process(const MArgs &args, const MSequence &seq);
    3442
    3543    ClassDef(MJSimulation, 0) // Job to run the simulation (ceres)
  • trunk/MagicSoft/Mars/mjobs/MSequence.cc

    r9333 r9441  
    447447TString MSequence::InflateFileName(const MTime &night, UShort_t tel, Int_t run, Int_t file, Int_t type)
    448448{
     449    if (!night && type==kCorsika)
     450        return MString::Format("cer%06d", -run);
     451
    449452    const char *id="_";
    450453    switch ((RunType_t)(type&kRunType))
     
    711714    const TArrayI *r=0, *f=0;
    712715    GetArrays(r, f, type);
    713     return GetRuns(iter, *r, *f, type, path);
     716    return r==0 ? 0 : GetRuns(iter, *r, *f, type, path);
    714717}
    715718
     
    859862    const Bool_t rc = !fDataPath.IsNull() && gSystem->AccessPathName(fDataPath, kFileExists);
    860863    if (rc)
    861         gLog << err << "ERROR - Directory '" << path << "' doesn't exist." << endl;
     864        gLog << err << "ERROR - Directory '" << fDataPath << "' doesn't exist." << endl;
    862865
    863866    return !rc;
     
    942945//
    943946MSequence::MSequence(const char *fname, const char *path, UInt_t seq)
    944 {
     947   : fTelescope(1), fSequence((UInt_t)-1), fLastRun((UInt_t)-1),
     948     fNumEvents((UInt_t)-1), fPeriod((UInt_t)-1), fLightCondition(kNA),
     949     fMonteCarlo(kFALSE)
     950{
     951    fName  = "MSequence";
     952    fTitle = "Sequence file";
     953
     954    if (TString(fname).IsNull() && TString(path).IsNull() && seq==(UInt_t)-1)
     955        return;
     956
    945957    // regular expression to distinguish beween a mysql-path and
    946958    // a filename from where the sequence should be retrieved
     
    951963    const Bool_t rc1 = db.IsNull() ? ReadFile(fname, seq) : ReadDatabase(fname, seq);
    952964    const Bool_t rc2 = SetDataPath(path);
    953 
    954     fName  = "MSequence";
    955     fTitle = "Sequence file";
    956965
    957966    if (!rc1 || !rc2)
     
    13531362        out << pre << "Night:          " << fNight.GetStringFmt("%Y-%m-%d") << endl;
    13541363    out << endl;
    1355     out << pre << "LightCondition: ";
    1356     switch (fLightCondition)
    1357     {
    1358     case kNA:       out << "n/a" << endl;      break;
    1359     case kNoMoon:   out << "NoMoon" << endl;   break;
    1360     case kTwilight: out << "Twilight" << endl; break;
    1361     case kMoon:     out << "Moon" << endl;     break;
    1362     case kDay:      out << "Day" << endl;      break;
     1364    if (fLightCondition!=kNA)
     1365    {
     1366        out << pre << "LightCondition: ";
     1367        switch (fLightCondition)
     1368        {
     1369        case kNA:       out << "n/a" << endl;      break;
     1370        case kNoMoon:   out << "NoMoon" << endl;   break;
     1371        case kTwilight: out << "Twilight" << endl; break;
     1372        case kMoon:     out << "Moon" << endl;     break;
     1373        case kDay:      out << "Day" << endl;      break;
     1374        }
    13631375    }
    13641376
    13651377    if (fStart!=MTime())
    13661378        out << pre << "Start:          " << fStart.GetSqlDateTime() << endl;
    1367     if (fLastRun>=0)
     1379    if (fLastRun!=(UInt_t)-1)
    13681380        out << pre << "LastRun:        " << fLastRun << endl;
    1369     if (fNumEvents>=0)
     1381    if (fNumEvents!=(UInt_t)-1)
    13701382        out << pre << "NumEvents:      " << fNumEvents << endl;
    13711383    if (!fProject.IsNull())
  • trunk/MagicSoft/Mars/mjobs/MSequence.h

    r9039 r9441  
    2323        kRoot  =BIT(1),
    2424        kReport=BIT(2),
     25        kCer   =BIT(3),  // Corsika files
    2526    };
    2627    enum RunType_t {
    27         kPed   =BIT(3),
    28         kCal   =BIT(4),
    29         kDat   =BIT(5),
    30         kExcl  =BIT(6),
     28        kPed   =BIT(4),  // Don't use overlapping bits!
     29        kCal   =BIT(5),
     30        kDat   =BIT(6),
     31        kExcl  =BIT(7),
    3132        kAll   =kPed|kDat|kCal,
    32         kImage =BIT(7),
    33         kCalib =BIT(8)
     33        kImage =BIT(8),
     34        kCalib =BIT(9)
    3435    };
    3536
    3637    enum { kRunType   = kPed|kCal|kDat|kImage|kCalib };
    37     enum { kFileType  = kRaw|kRoot|kReport };
     38    enum { kFileType  = kRaw|kRoot|kReport|kCer };
    3839    enum { kFilePaths = kFileType|kImage|kCalib };
    3940
     
    5354        kCalibrated = kRoot  |kCalib,
    5455        kImages     = kRoot  |kImage,
     56        kCorsika    = kCer   |kDat,
    5557    };
    5658
     
    131133
    132134public:
     135/*
    133136    MSequence() : fTelescope(1), fSequence((UInt_t)-1), fLastRun((UInt_t)-1),
    134137        fNumEvents((UInt_t)-1), fPeriod((UInt_t)-1), fLightCondition(kNA), fMonteCarlo(kFALSE)
     
    137140        fTitle = "Sequence file";
    138141    }
    139     MSequence(const char *fname, const char *path="", UInt_t id=(UInt_t)-1);
     142    */
     143    MSequence(const char *fname=0, const char *path=0, UInt_t id=(UInt_t)-1);
    140144    MSequence(const char *fname, UInt_t seq, UShort_t tel=0);
    141145    MSequence(const MSequence &s) : MParContainer(s),
Note: See TracChangeset for help on using the changeset viewer.