Ignore:
Timestamp:
02/11/09 17:35:54 (16 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/mbase
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mbase/MLut.cc

    r9257 r9318  
    5757}
    5858
     59void MLut::Delete(Option_t *option)
     60{
     61    TObjArray::Delete(option);
     62
     63    fMaxEntries = 0;
     64    fMinEntries = 0;
     65
     66    fMaxIndex = -1;
     67}
     68
     69// --------------------------------------------------------------------------
     70//
     71// Check if it is a default lut which would just map every entry to itself
     72// An empty Lut is a default lut
     73//
     74Bool_t MLut::IsDefault() const
     75{
     76    if (IsEmpty())
     77        return kTRUE;
     78
     79    if (!HasConstantLength() || fMaxEntries!=1)
     80        return kFALSE;
     81
     82    // Loop over all rows
     83    for (Int_t y=0; y<GetEntriesFast(); y++)
     84        if (GetRow(y)[0]!=y)
     85            return kFALSE;
     86
     87    return kTRUE;
     88}
     89
     90// --------------------------------------------------------------------------
     91//
     92// Setup a default lut which just maps n-entris to themself
     93//
     94void MLut::SetDefault(UInt_t n)
     95{
     96    Delete();
     97
     98    for (UInt_t y=0; y<n; y++)
     99    {
     100
     101        MArrayI &idx = *new MArrayI(1);
     102        idx[0] = y;
     103        Add(&idx);
     104    }
     105
     106    fMinEntries = 1;
     107    fMaxEntries = 1;
     108
     109    fMaxIndex = n;
     110}
     111
    59112// --------------------------------------------------------------------------
    60113//
     
    165218    MLut *lut = GetInverse(uniq);
    166219
    167     Delete();
     220    // Keep fMaxIndex
     221    TObjArray::Delete();
    168222
    169223    for (Int_t i=0; i<=fMaxIndex; i++)
     
    188242{
    189243    Delete();
    190 
    191     fMaxIndex   = -1;
    192     fMaxEntries =  0;
    193     fMinEntries =  0;
    194244
    195245    while (1)
  • trunk/MagicSoft/Mars/mbase/MLut.h

    r9255 r9318  
    1313{
    1414private:
    15     UInt_t fMinEntries;
    16     UInt_t fMaxEntries;
     15    UInt_t fMinEntries;   // The minimum entries per row
     16    UInt_t fMaxEntries;   // The maximum entries per row
    1717
    18     Int_t  fMaxIndex;
     18    Int_t  fMaxIndex;     // The maximum index fount in the lut
    1919
    2020    MLut *GetInverse(Bool_t uniq=kTRUE) const;
    2121
    2222public:
    23     MLut() : fMinEntries(0), fMaxEntries(0) { SetOwner(); }
     23    MLut() : fMinEntries(0), fMaxEntries(0), fMaxIndex(0) { SetOwner(); }
     24
     25    // TObjArry
     26    void Delete(Option_t *option="");
    2427
    2528    // MLut Getter
    2629    const MArrayI &GetRow(UInt_t i) const;
     30
     31     Int_t GetNumRows() const { return GetEntriesFast(); }
    2732
    2833    UInt_t GetMaxEntries() const { return fMaxEntries; }
     
    3136    Bool_t HasConstantLength() const { return fMinEntries==fMaxEntries; }
    3237    Bool_t IsEmpty() const { return fMaxEntries==0; }
     38    Bool_t IsDefault() const;
    3339
    34     // MLut convertions
     40    // MLut conversions
    3541    void SetInverse(const MLut &lut, Bool_t uniq=kTRUE);
    3642    void Invert(Bool_t uniq=kTRUE);
     43
     44    // Setter
     45    void SetDefault(UInt_t n);
    3746
    3847    // MLut I/O
Note: See TracChangeset for help on using the changeset viewer.