Changeset 8724 for trunk/MagicSoft/Mars


Ignore:
Timestamp:
08/31/07 14:11:36 (17 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r8723 r8724  
    1818
    1919                                                 -*-*- END OF LINE -*-*-
     20 2007/08/31 Thomas Bretz
     21
     22   * ganymed.rc, ganymed_onoff.rc, ganymed_wobble.rc:
     23     - changed default values for starguider
     24     - changed quality cuts (more efficiency at higher energy/sizes,
     25       better spark suppression)
     26     - added default for the starguider-calibrations
     27     - added more examples how to use CalcDisp
     28
     29   * ganymed.cc:
     30     - added new command-line option "--dataset"
     31
     32   * mbase/MParContainer.[h,cc]:
     33     - added a lot of comments
     34     - allow an empty prefix in GetEnvValue
     35     - added GetEnvValue2
     36
     37   * mjobs/MDataSet.[h,cc]:
     38     - added and updated comments
     39     - moved code from constructor to Init
     40     - added new constructor
     41     - added support for collections of datasets in one file
     42     - wobble mode is now set or unset automatically if not overwritten
     43     - IsValid now also check if OnSequences are defined
     44
     45   * mjobs/MJCut.cc:
     46     - improved the check after adding sequences for the first loop
     47
     48
     49
    2050 2007/08/31 Stefan Ruegamer
    2151
  • trunk/MagicSoft/Mars/NEWS

    r8716 r8724  
    5252     a result which is highly independant of the source spectrum
    5353     and shows lower bias than all other options.
     54
     55   - general: Dataset files are allowed to contain collections of
     56     datasets. For more details see the class reference of MDataSet.
     57
     58   - general: The default WobbleMode in a datset file now (if not
     59     overwritten) is "auto", i.e. wobble mode is set if the dataset
     60     doesn't contain off-sequences.
    5461
    5562   - merpp: Merpp can read file format version 9 now. Please realize
     
    247254     something strange (sparks!) in your signal-region.
    248255
     256   - ganymed: To choose a dataset from a collection in a dataset file
     257     use the new command line option "--dataset=12345"
     258
    249259   - optim, sponde: should now properly support three off-regions.
    250260     Just produce your ganymed summary files with three off-regions.
  • trunk/MagicSoft/Mars/ganymed.cc

    r8683 r8724  
    4343    gLog << " ganymed [options] dataset.txt|number" << endl << endl;
    4444    gLog << " Arguments:" << endl;
    45     gLog << "   dataset.txt:              ASCII file defining a collection of sequences" << endl;
     45    gLog << "   dataset.txt:              ASCII file defining a collection of datasets/sequences" << endl;
     46    gLog << "                             (for more details see MSequence/MDataSet)" << endl;
    4647    gLog << "   number:                   The dataset number (using file in the datacenter)" << endl;
    4748    gLog << "                             For more details see MDataSet." << endl;
     
    6364    gLog << "   -f                        Force overwrite of existing files" << endl;
    6465    gLog << "   --n=number                Analysis number (required if not in dataset file)" << endl;
     66    gLog << "   --dataset=number          Choose a dataset from a collection of datasets in your file" << endl;
     67    gLog << "                             (for more details see MDataSet)" << endl;
    6568    gLog << "   --out=path                Path to write all output to [def=local path]" << endl;
    6669    gLog << "   --ind=path                Path to data/star files [default=datacenter path]" << endl;
     
    7174    gLog << "   --skip-res                Disable writing of result events" << endl;
    7275    gLog << "   --write-only              Only write output files. No histograms filled." << endl;
    73     gLog << "   --print-ds                Print Dataset information" << endl;
    74     gLog << "   --print-files             Print Files taken from Sequences ('+' found, '-' missing)" << endl;
     76    gLog << "   --print-ds                Print the information interpreted from the dataset file" << endl;
     77    gLog << "   --print-files             Print files taken from sequences ('+' found, '-' missing)" << endl;
    7578//    gLog << "   --full-display            Show as many plots as possible" << endl;
    7679    gLog << "   --config=ganymed.rc       Resource file [default=ganymed.rc]" << endl;
     
    133136
    134137    const Int_t   kNumAnalysis   = arg.GetIntAndRemove("--n=", -1);
     138    const Int_t   kNumDataset    = arg.GetIntAndRemove("--dataset=", -1);
    135139    const TString kOutpath       = arg.GetStringAndRemove("--out=",  ".");
    136140    const TString kOutfile       = arg.GetStringAndRemove("--outf=",  "");
     
    201205    // Setup sequence and check its validity
    202206    //
    203     MDataSet seq(kSequences, kPathSequences, kPathDataFiles);
     207    MDataSet seq(kSequences, (UInt_t)kNumDataset, kPathSequences, kPathDataFiles);
    204208    if (!seq.IsMonteCarlo())
    205209        seq.SetMonteCarlo(kIsMc);
  • trunk/MagicSoft/Mars/mbase/MParContainer.cc

    r8642 r8724  
    868868}
    869869
     870// --------------------------------------------------------------------------
     871//
     872// Check if the given resource is defined. If there is a postfix, prefix
     873// the postfix with a dot. Calls IsEnvDefined(env, name, print)
     874//
    870875Bool_t MParContainer::IsEnvDefined(const TEnv &env, TString prefix, TString postfix, Bool_t print) const
    871876{
     
    876881}
    877882
     883// --------------------------------------------------------------------------
     884//
     885// If print==kTRUE print information about what's going on. This is necessary
     886// to debug parsing of resource files. Check if a resource "name" is defined
     887// and return kFALSE/kTRUE depending on the result.
     888//
    878889Bool_t MParContainer::IsEnvDefined(const TEnv &env, TString name, Bool_t print) const
    879890{
     
    881892        *fLog << all << GetDescriptor() << " - " << name << "... " << flush;
    882893
    883     if (!((TEnv&)env).Defined(name))
     894    if (!const_cast<TEnv&>(env).Defined(name))
    884895    {
    885896        if (print)
     
    894905}
    895906
     907// --------------------------------------------------------------------------
     908//
     909// Return the resource prefix+"."+postfix from env or deftl if not available.
     910// If prefix IsNull search for postfix only.
     911//
    896912Int_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, TString postfix, Int_t dflt) const
    897913{
    898     return GetEnvValue(env, prefix+"."+postfix, dflt);
    899 }
    900 
     914    return GetEnvValue(env, prefix.IsNull()?postfix:(prefix+"."+postfix), dflt);
     915}
     916
     917// --------------------------------------------------------------------------
     918//
     919// Return the resource prefix+"."+postfix from env or deftl if not available.
     920// If prefix IsNull search for postfix only.
     921//
    901922Double_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, TString postfix, Double_t dflt) const
    902923{
    903     return GetEnvValue(env, prefix+"."+postfix, dflt);
    904 }
    905 
     924    return GetEnvValue(env, prefix.IsNull()?postfix:(prefix+"."+postfix), dflt);
     925}
     926
     927// --------------------------------------------------------------------------
     928//
     929// Return the resource prefix+"."+postfix from env or deftl if not available.
     930// If prefix IsNull search for postfix only.
     931//
    906932const char *MParContainer::GetEnvValue(const TEnv &env, TString prefix, TString postfix, const char *dflt) const
    907933{
    908     return GetEnvValue(env, prefix+"."+postfix, dflt);
    909 }
    910 
     934    return GetEnvValue(env, prefix.IsNull()?postfix:(prefix+"."+postfix), dflt);
     935}
     936
     937// --------------------------------------------------------------------------
     938//
     939// Return the resource prefix from env or deftl if not available.
     940//
    911941Int_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, Int_t dflt) const
    912942{
    913     return ((TEnv&)env).GetValue(prefix, dflt);
    914 }
    915 
     943    return const_cast<TEnv&>(env).GetValue(prefix, dflt);
     944}
     945
     946// --------------------------------------------------------------------------
     947//
     948// Return the resource prefix from env or deftl if not available.
     949//
    916950Double_t MParContainer::GetEnvValue(const TEnv &env, TString prefix, Double_t dflt) const
    917951{
    918     return ((TEnv&)env).GetValue(prefix, dflt);
    919 }
    920 
     952    return const_cast<TEnv&>(env).GetValue(prefix, dflt);
     953}
     954
     955// --------------------------------------------------------------------------
     956//
     957// Return the resource prefix from env or deftl if not available.
     958//
    921959const char *MParContainer::GetEnvValue(const TEnv &env, TString prefix, const char *dflt) const
    922960{
    923     return ((TEnv&)env).GetValue(prefix, dflt);
     961    return const_cast<TEnv&>(env).GetValue(prefix, dflt);
     962}
     963
     964// --------------------------------------------------------------------------
     965//
     966// Check for the resource prefix+"."+postfix. If it is not available or
     967// prefix IsNull check for the more common resource postfix. If none
     968// is found return the default.
     969//
     970template <class T>
     971T MParContainer::GetEnvValue2Imp(const TEnv &env, const TString &prefix, const TString &postfix, T dftl, Bool_t print) const
     972{
     973    // Check for a dedicated resource (prefix.postfix) first
     974    if (!prefix.IsNull())
     975    {
     976        if (IsEnvDefined(env, prefix, postfix, print))
     977            return GetEnvValue(env, prefix, postfix, dftl);
     978    }
     979
     980    // check for a general resource (postfix)
     981    if (IsEnvDefined(env, postfix, print))
     982        return GetEnvValue(env, postfix, dftl);
     983
     984    // return default
     985    return dftl;
     986}
     987
     988// --------------------------------------------------------------------------
     989//
     990// see template GetEnvValue2Imp
     991//
     992const char *MParContainer::GetEnvValue2(const TEnv &env, const TString &prefix, const TString &postfix, const char *dftl, Bool_t print) const
     993{
     994    return GetEnvValue2Imp(env, prefix, postfix, dftl, print);
     995}
     996
     997// --------------------------------------------------------------------------
     998//
     999// see template GetEnvValue2Imp
     1000//
     1001Int_t MParContainer::GetEnvValue2(const TEnv &env, const TString &prefix, const TString &postfix, Int_t dftl, Bool_t print) const
     1002{
     1003    return GetEnvValue2Imp(env, prefix, postfix, dftl, print);
     1004}
     1005
     1006// --------------------------------------------------------------------------
     1007//
     1008// see template GetEnvValue2Imp
     1009//
     1010Double_t MParContainer::GetEnvValue2(const TEnv &env, const TString &prefix, const TString &postfix, Double_t dftl, Bool_t print) const
     1011{
     1012    return GetEnvValue2Imp(env, prefix, postfix, dftl, print);
    9241013}
    9251014
  • trunk/MagicSoft/Mars/mbase/MParContainer.h

    r8642 r8724  
    143143    const char *GetEnvValue(const TEnv &env, TString prefix, const char *dflt) const;
    144144
     145    template <class T> T GetEnvValue2Imp(const TEnv &env, const TString &prefix, const TString &postfix, T dflt, Bool_t print=kFALSE) const;
     146    Int_t       GetEnvValue2(const TEnv &env, const TString &prefix, const TString &postfix, Int_t dflt, Bool_t print=kFALSE) const;
     147    Double_t    GetEnvValue2(const TEnv &env, const TString &prefix, const TString &postfix, Double_t dflt, Bool_t print=kFALSE) const;
     148    const char *GetEnvValue2(const TEnv &env, const TString &prefix, const TString &postfix, const char *dflt, Bool_t print=kFALSE) const;
     149
    145150    MParContainer *GetNewObject(const char *name, const char *base) const;
    146151    MParContainer *GetNewObject(const char *name, TClass *base=MParContainer::Class()) const;
  • trunk/MagicSoft/Mars/mjobs/MDataSet.cc

    r8674 r8724  
    3535//       AnalysisNumber: 1
    3636//
    37 //       SequencesOn: 35222
     37//       Name: SecondCrab
     38//
     39//       SequencesOn: 35222 35229
    3840//       SequencesOff: 36817
    3941//
     
    4749//       Sequence00036817.Dir: /data2/wuerzburg/Crab-Analyse/images/036817
    4850//
     51//       WobbleMode: No
    4952//       MonteCarlo: No
     53//
     54//       SourceName: CrabNebula
     55//       Catalog: /magic/datacenter/setup/magic_favorites_dc.edb
    5056//
    5157// AnalysisNumber: The analysis number is an artifical number used to name
     
    8086// stored using Sequence%08d.Dir (make sure you have 8 digits!)
    8187//
    82 //
     88// WobbleMode: This is just a flag which is passed to the program
     89// end eveluated (or not) by the individual program, which takes this
     90// dataset as an input. For example this is necessary in ganymed to do
     91// some wobble mode special setup. If no resource is given (or it is
     92// set to "auto") wobble mode if set if the datset contains no off-
     93// sequences.
     94//
     95// MonetCarlo: This is just a flag which is passed to the program
     96// end eveluated (or not) by the individual program, which takes this
     97// dataset as an input. For example this tells ganymed to skip some
     98// parts accessing time stamps which are not available in the MCs.
     99//
     100// SequencePath/DataPath: This determined were the sequences and data-files
     101// are stored. The priorities are as follows:
     102//  0) Build in default path:          /magic/sequences   /magic/data/star
     103//  1) Def.path from dataset file:       SequencePath         DataPath
     104//  2) Indiv.path from dataset file:  12345.SequencePath   12345.DataPath
     105//  3) Path from command line:            Argument in the constructors
     106//  4) Path for an indiv. dataset:         Sequences00022555.File/Dir
     107//
     108// Catalog: This is the xephem-style file from the central control
     109// containing the observed sky positions.
     110//
     111// SourceName: The source name, as defined in the catalog, of the object
     112// the data corresponds to.
     113//
     114// Name: A name is stored for your convinience
     115//
     116// Comment: It is just stored.
     117//
     118// General Remark: MDataSet doesn't implement any action on the given
     119// resources. Whether a resource is used, necessary or ignored, and
     120// what will happen if you change the resource is always defined by the
     121// executed macro or program.
    83122//
    84123// Resource file entries are case sensitive!
     124//
     125//
     126// Collection of datsets
     127// ---------------------
     128//
     129//  You can combine more than one datset in a file (if your program
     130//  supports this) Such a dataset file could look like this:
     131//
     132//       35222.SequencesOn: 35222
     133//       35222.SequencesOff: 36817
     134//
     135//       65778.SequencesOn: 65778
     136//
     137//       12345.SequencesOn: 12345
     138//
     139//       12345.SequencePath: /home/nobody/specialsequences
     140//       65778.DataPath:     /home/nobody/specialstars
     141//
     142//       SequencePath: /home/nobody/defaultsequences
     143//       DataPath:     /home/nobody/defaultstars
     144//
     145//       Sequence00035222.File: sequences/sequence035222.txt
     146//       Sequence00035222.Dir:  /data2/wuerzburg/Crab-Analyse/images/035222
     147//
     148//       35222.WobbleMode: Off
     149//       WobbleMode: On
     150//
    85151//
    86152// IMPORTANT:
     
    89155//   * Sequence filenames should also have names allowing to order them
    90156//     in time, but it is not necessary.
     157//
     158//
     159// ToDO:
     160//   * Default paths could be moved into the global .rootrc
     161//
    91162//
    92163// Class Version 2:
     
    183254// The entries are sorted by filename.
    184255//
    185 void MDataSet::ResolveSequences(TEnv &env, const TArrayI &num, TList &list) const
     256void MDataSet::ResolveSequences(const TEnv &env, const TString &prefix, const TArrayI &num, TList &list) const
    186257{
    187258    TString sequences = fPathSequences;
     
    190261    for (int i=0; i<num.GetSize(); i++)
    191262    {
    192         TString name = env.GetValue(Form("Sequence%08d.File", num[i]), "");
    193         TString dir  = env.GetValue(Form("Sequence%08d.Dir",  num[i]), "");
     263        TString name = GetEnvValue2(env, prefix, Form("Sequence%08d.File", num[i]), "");
     264        TString dir  = GetEnvValue2(env, prefix, Form("Sequence%08d.Dir",  num[i]), "");
    194265
    195266        // Set default sequence file and dir name
     
    213284}
    214285
    215 // --------------------------------------------------------------------------
    216 //
    217 // Read the file fname as setup file for the sequence.
    218 //
    219 MDataSet::MDataSet(const char *fname, TString sequences, TString data)
    220 {
     286Bool_t MDataSet::GetWobbleMode(const TEnv &env, const TString &prefix) const
     287{
     288    TString wob = GetEnvValue2(env, prefix, "WobbleMode", "auto");
     289
     290    wob.ToLower();
     291    wob=wob.Strip(TString::kBoth);
     292
     293    if (wob=="auto")
     294        return !HasOffSequences();
     295
     296    return GetEnvValue2(env, prefix, "WobbleMode", kFALSE);
     297}
     298
     299// --------------------------------------------------------------------------
     300//
     301// Read a dataset from the file fname. If num is != -1 all resources are
     302// prefixed with the number. This allows constrcutions like:
     303//
     304//   89123.SequencesOn: 1 2 3 4
     305//   89130.SequencesOn: 5 6 7 8
     306//
     307// For one dataset:
     308//
     309//   89123.DataPath: /magic/data/star
     310//
     311// For all other datasets:
     312//
     313//   DataPath: /magic/data/star
     314//
     315// For one sequence of one datasets:
     316//
     317//   89123.Sequence00000002.Dir: /magic/data/star
     318//
     319// and therefore allows storage of several datsets in one file with
     320// a defaults for non specific resources.
     321//
     322// sequences and data are the path to the sequences (/magic/sequences)
     323// and the data (/magic/data/star) respectively. Both can be overwritten
     324// be a default from the dataset file or a resource for an individual
     325// sequence.
     326//
     327void MDataSet::Init(const char *fname, const UInt_t num, TString sequences, TString &data)
     328{
     329    // Store given file name as name
    221330    fName = fname;
    222331
     332    // Delete the stored Sequences automatically at destruction
    223333    fSequencesOn.SetOwner();
    224334    fSequencesOff.SetOwner();
    225335
     336    // Determin the prefix to access this resource
     337    const TString prefix = num==(UInt_t)-1 ? "" : Form("%d", num);
     338
     339    // Expand the file name (eg $MARS or ~ are expanded)
    226340    TString expname(fname);
    227341    gSystem->ExpandPathName(expname);
    228342
     343    // Check its accessibility
    229344    const Bool_t access = !gSystem->AccessPathName(expname, kFileExists);
    230345    if (!access)
    231346        gLog << err << "ERROR - Dataset file " << expname << " not accessible!" << endl;
    232347
     348    // Open and read the file
    233349    MEnv env(expname);
    234350
    235     fNumAnalysis = env.GetValue("AnalysisNumber", -1);
    236     fTitle       = env.GetValue("Name", expname);
    237 
     351    // Get analysis number and name
     352    fNumAnalysis = GetEnvValue2(env, prefix, "AnalysisNumber", (Int_t)num);
     353    fTitle       = GetEnvValue2(env, prefix, "Name", expname);
     354
     355    // Get sequences from file
    238356    TString str;
    239     str = env.GetValue("SequencesOn",  "");
     357    str = GetEnvValue2(env, prefix, "SequencesOn",  "");
    240358    Split(str, fNumSequencesOn);
    241     str = env.GetValue("SequencesOff", "");
     359    str = GetEnvValue2(env, prefix, "SequencesOff", "");
    242360    Split(str, fNumSequencesOff);
    243361
    244     fNameSource   = env.GetValue("SourceName", "");
    245     fCatalog      = env.GetValue("Catalog",    fgCatalog);
    246     fWobbleMode   = env.GetValue("WobbleMode", kFALSE);
    247     fMonteCarlo   = env.GetValue("MonteCarlo", kFALSE);
    248     fComment      = env.GetValue("Comment",    "");
    249 
    250     const TString defpathseq  = env.GetValue("SequencePath", GetDefPathSequences());
    251     const TString defpathdata = env.GetValue("DataPath",     GetDefPathDataFiles());
     362    // Get other resources
     363    fNameSource   = GetEnvValue2(env, prefix, "SourceName", "");
     364    fCatalog      = GetEnvValue2(env, prefix, "Catalog",    fgCatalog);
     365    fMonteCarlo   = GetEnvValue2(env, prefix, "MonteCarlo", kFALSE);
     366    fComment      = GetEnvValue2(env, prefix, "Comment",    "");
     367
     368    fWobbleMode   = GetWobbleMode(env, prefix); // needs the number of off sequences
     369
     370    fNameSource = fNameSource.Strip(TString::kBoth);
     371    fCatalog    = fCatalog.Strip(TString::kBoth);
     372
     373    // Check for sequence and data path (GetDefPath needs the monte carlo flag)
     374    const TString defpathseq  = GetEnvValue2(env, prefix, "SequencePath", GetDefPathSequences());
     375    const TString defpathdata = GetEnvValue2(env, prefix, "DataPath",     GetDefPathDataFiles());
    252376
    253377    SetupDefaultPath(sequences, defpathseq);
     
    257381    fPathDataFiles = data;
    258382
    259     ResolveSequences(env, fNumSequencesOn,  fSequencesOn);
    260     ResolveSequences(env, fNumSequencesOff, fSequencesOff);
    261 
    262     fNameSource = fNameSource.Strip(TString::kBoth);
    263     fCatalog    = fCatalog.Strip(TString::kBoth);
     383    // Resolve sequences
     384    ResolveSequences(env, prefix, fNumSequencesOn,  fSequencesOn);
     385    ResolveSequences(env, prefix, fNumSequencesOff, fSequencesOff);
    264386
    265387    // --- Now "touch" resources which are not yet stored in MDataSet ---
     
    272394        env.PrintUntouched();
    273395    }
     396}
     397
     398// --------------------------------------------------------------------------
     399//
     400// Constructor. See Read for more details.
     401//
     402MDataSet::MDataSet(const char *fname, TString sequences, TString data)
     403{
     404    Init(fname, (UInt_t)-1, sequences, data);
     405}
     406
     407// --------------------------------------------------------------------------
     408//
     409// Constructor. See Read for more details.
     410//
     411MDataSet::MDataSet(const char *fname, Int_t num, TString sequences, TString data)
     412{
     413    Init(fname, num, sequences, data);
    274414}
    275415
     
    330470    gLog << "Catalog: " << fCatalog << endl;
    331471
    332     gLog << "WobbleMode: " << (fWobbleMode?"On":"Off") << endl << endl;
     472    gLog << "WobbleMode: " << (fWobbleMode?"Yes":"No") << endl << endl;
    333473    gLog << "MonteCarlo: " << (fMonteCarlo?"Yes":"No") << endl << endl;
    334474
  • trunk/MagicSoft/Mars/mjobs/MDataSet.h

    r8674 r8724  
    2424    UInt_t  fNumAnalysis;     // Analysis number (artificial)
    2525
    26     TString fPathSequences;
    27     TString fPathDataFiles;
     26    TString fPathSequences;   // Default path to the sequence files
     27    TString fPathDataFiles;   // Default path to the data files
    2828
    2929    TArrayI fNumSequencesOn;  // number of on-sequences
     
    4141    Bool_t  fMonteCarlo;      // For default paths use MC or data path
    4242
     43    // Helper functions for constrcutors
    4344    void Split(TString &runs, TArrayI &data) const;
    44     void ResolveSequences(TEnv &env, const TArrayI &num, TList &list/*, const TString &sequences, const TString &data*/) const;
     45    void ResolveSequences(const TEnv &env, const TString &prefix, const TArrayI &num, TList &list/*, const TString &sequences, const TString &data*/) const;
     46    Bool_t GetWobbleMode(const TEnv &env, const TString &prefix) const;
    4547    static void PrintFile(const MSequence &obj);
    4648
     49    // Directory and file handling
    4750    void ReplaceDir(TList &list, const TString &old, const TString &news) const;
    4851    void ReplaceFile(TList &list, const TString &old, const TString &news) const;
     
    6467    }
    6568
     69    // Initialize from constrcutors
     70    void Init(const char *fname, const UInt_t num, TString sequences, TString &data);
     71
    6672public:
    67     MDataSet(Int_t num=(UInt_t)-1) : fNumAnalysis(num) { }
     73    MDataSet() : fNumAnalysis((UInt_t)-1) { }
    6874    MDataSet(const char *fname, TString sequences="", TString data="");
     75    MDataSet(const char *fname, Int_t num, TString sequences="", TString data="");
    6976
    7077    const char *GetName() const;
     
    98105
    99106    // Getter
    100     Bool_t IsValid() const { return fNumAnalysis!=(UInt_t)-1; }
     107    Bool_t IsValid() const { return fNumAnalysis!=(UInt_t)-1 && GetNumSequencesOn()>0; }
    101108
    102109    UInt_t GetNumSequencesOn() const  { return fNumSequencesOn.GetSize(); }
  • trunk/MagicSoft/Mars/mjobs/MJCut.cc

    r8720 r8724  
    683683    MRead &readoff = set.IsMonteCarlo() ? (MRead&)readoffmc : (MRead&)readoffdata;
    684684    const Bool_t setrc = set.IsWobbleMode() ? set.AddFilesOn(readoff) : set.AddFilesOff(readoff);
    685     if (!setrc && set.HasOffSequences())
     685    if (!setrc && (set.HasOffSequences() || set.IsWobbleMode()))
    686686    {
    687687        *fLog << err << "MDataSet::AddFiles" << (set.IsWobbleMode()?"On":"Off") << " failed." << endl;
Note: See TracChangeset for help on using the changeset viewer.