[ROOT] TTree question

From: Anton Fokin (anton.fokin@smartquant.com)
Date: Sat Jan 27 2001 - 12:40:37 MET


Hi,

I am trying to improve I/O in my package and I have a number of questions
about TTree performance.

I store objects of THistoricalData class (see below) in a tree. One of
THistoricalData fields is of TDate class (see below). TDate holds number of
days from day zero, fNDays, which is UInt_t. Before it was ULong_t and it
cused warning in the split mode (see Eddy Offerman mail/Rene reply). Now I
have changed it to UInt_t but I still get a warning:

Loading data for COMPX (Nasdaq Combined Composite Index)
Warning in <TTree::Branch>: Cannot process member:fDate

1. Could you please explain this.

2. If I use non-split mode and set file compression level to 0, I see that
the file is filled up with "THistoricalData" strings, I suppose for every
entry in the tree. This makes 5 MB file out of ~800KB binary data I am
loading into the tree. Do you really write class label for every entry, not
only for the branch???

PS. in the split mode I get 12Mb !!!! file out of the same 800KB but this I
would not blame before I clarify my question about warning message for
fNDays field.

Regards,
Anton

class THistoricalData : public TObject {
public:
enum EDataOption {
  kOK,
  kNotAvailable,
  kInterpolated
};
protected:
  TDate   fDate;       // Date
  Float_t fBid;        // Bid
  Float_t fAsk;        // Ask
  Float_t fHigh;       // High
  Float_t fLow;        // Low
  Float_t fClose;      // Close
  UInt_t  fVolume;     // Volume
   Int_t  fOption;     // Option
public:
          THistoricalData();
          THistoricalData(TDate Date, Float_t Bid, Float_t Ask, UInt_t
Volume, Int_t Option = kOK);
          THistoricalData(TDate Date, Float_t High, Float_t Low, Float_t
Close, UInt_t Volume, Int_t Option = kOK);

    TDate GetDate()   { return fDate;   }
  Float_t GetBid()    { return fBid;    }
  Float_t GetAsk()    { return fAsk;    }
  Float_t GetHigh()   { return fHigh;   }
  Float_t GetLow()    { return fLow;    }
  Float_t GetClose()  { return fClose;  }
   UInt_t GetVolume() { return fVolume; }
    Int_t GetOption() { return fOption; }

  Float_t GetPrice(Int_t Option = TFinObject::kTypicalPrice);

     void Set(TDate Date, Float_t Bid, Float_t Ask, UInt_t Volume, Int_t
Option = kOK);
     void Set(TDate Date, Float_t High, Float_t Low, Float_t Close, UInt_t
Volume, Int_t Option = kOK);

     void SetDate(TDate Date)       { fDate   = Date;   }
     void SetBid(Float_t Bid)       { fBid    = Bid;    }
     void SetAsk(Float_t Ask)       { fAsk    = Ask;    }
     void SetHigh(Float_t High)     { fHigh   = High;   }
     void SetLow(Float_t Low)       { fLow    = Low;    }
     void SetClose(Float_t Close)   { fClose  = Close;  }
     void SetVolume(UInt_t Volume)  { fVolume = Volume; }
     void SetOption(Int_t Option)   { fOption = Option; }

     void Print(const char* Option = "");

  ClassDef(THistoricalData, 100) // Daily historical data
};

#endif


class TDate : public TObject {
 public:
                          TDate();
                          TDate(TMonth Month, Int_t Day, Int_t Year);
                          TDate(Int_t DayOfYear, Int_t Year);
                          TDate(const TDate &Date);
                          TDate(UInt_t DayNumber);
                          TDate(const char* Date, const char* Pattern =
"yymmdd");
                          TDate(UInt_t Date, const char* Pattern);
                          TDate(const struct tm *Date);

        TDate             AddMonths(Int_t MonthNumber);
        TDate             AddWeeks(Int_t WeekNumber);
        TDate             AddYears(Int_t YearNumber);
        TDate             BeginDST();
        static TDate      BeginDST(Int_t Year);
        Int_t             Day();
        UInt_t           DayNumber();
        TWeekDay          DayOfWeek();
        Int_t             DayOfYear();
        Int_t             DaysInMonth();
        static Int_t      DaysInMonth(TMonth Month, Int_t Year);
        Int_t             DaysInYear();
        static Int_t      DaysInYear(Int_t Year);
        TDate             EndDST();
        static TDate      EndDST(Int_t Year);
        Bool_t            IsDST();
        static Bool_t     IsDST(TDate &Date);
        Bool_t            IsLeapYear();
        static Bool_t     IsLeapYear(Int_t year);
        Bool_t            IsValid();
        static Bool_t     IsValid(TMonth Month, Int_t Day, Int_t Year);
        TMonth            Month();

        Bool_t            operator!=(const TDate &Date) const;
        TDate             operator+(Int_t DayNumber) const;
        TDate             operator+(long DayNumber) const;
        TDate             operator++();
        TDate             operator++(int);
        TDate&            operator+=(Int_t DayNumber);
        TDate&            operator+=(long DayNumber);
        long              operator-(const TDate &Date) const;
        TDate             operator-(Int_t DayNumber) const;
        TDate             operator-(long DayNumber) const;
        TDate             operator--();
        TDate             operator--(int);
        TDate&            operator-=(Int_t DayNumber);
        TDate&            operator-=(long DayNumber);
        Bool_t            operator<(const TDate &Date) const;
        Bool_t            operator<=(const TDate &Date) const;
        TDate&            operator=(const TDate &Date);
        Bool_t            operator==(const TDate &Date) const;
        Bool_t            operator>(const TDate &Date) const;
        Bool_t            operator>=(const TDate &Date) const;

//        TDate&            operator=(const UInt_t DayNumber);
        Bool_t            operator==(const UInt_t DayNumber) const;
        Bool_t            operator!=(const UInt_t DayNumber) const;

//        static void       SetBeginDST(TMonth Month, TWeekDay WeekDay);
//        static void       SetEndDST(TMonth Month, TWeekDay WeekDay);
        static TDate      Today();
        Int_t             WeekOfMonth();
        Int_t             WeekOfYear();
        Int_t             WeeksInYear();
        static Int_t      WeeksInYear(Int_t Year);
        Int_t             Year();

        UInt_t            Convert();
        TString           AsString();
        void              Print(const char* Option = "");

        // Pope Gregor XIII's reform cancelled 10 days:
        // the day after Oct 4 1582 was Oct 15 1582
        static const Int_t    ReformYear;
        static const TMonth   ReformMonth;
        static const UInt_t  ReformDayNumber;

protected:
        // Daylight Savings Time Month and Day of Week
        static TMonth   BeginDSTMonth;
        static TWeekDay BeginDSTDay;
        static TMonth   EndDSTMonth;
        static TWeekDay EndDSTDay;

protected:
             TDate  Set(TMonth Month, Int_t Day, Int_t Year);
           UInt_t  MakeDayNumber(TDateEntry *DateEntry);
        TDateEntry* FromDayNumber(UInt_t DayNumber);

private:
        UInt_t fDayNumber;


  ClassDef(TDate, 100) // Date manipulation
};



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:34 MET