Hi Rene,
that's fine but I do not see what's wrong with UInt_t fDayNumber and TDate
class. The manual says
----
If a data member is a basic type, it becomes one basic branch of class
TBranch.
If a data member is an object of a class derived from TObject, the data
members of this object are also split into branches (one level only).
----
Is TTree mechanism trying to split static members?
/Anton
----- Original Message -----
From: Rene Brun <brun@pcbrun.cern.ch>
To: Anton Fokin <anton.fokin@smartquant.com>
Cc: roottalk <roottalk@pcroot.cern.ch>; Rene Brun <Rene.Brun@cern.ch>
Sent: Saturday, January 27, 2001 11:04 PM
Subject: Re: TTree question
> Hi Anton,
> In split mode a branch cannot contain basic type such as strings.
> See the list of limitations at:
> http://root.cern.ch/root/HowtoWriteTree.html
>
> This limitation is about to be removed with the new TTree split
> mechanism that I am currently testing. Your class will be easily
> split by the new algorithm.
>
> Rene Brun
>
>
> On Sat, 27 Jan 2001, Anton Fokin wrote:
>
> > 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