[ROOT] Cannot process: fUPC

From: Mike Beddo (meb@DataVentures.com)
Date: Thu Apr 19 2001 - 20:39:49 MEST


Hi all,

I am trying to construct two classes for analyzing items in shopping
baskets (non-physics application - but I used to be a physicist,
really!) These are below (I'm not a native C++ programmer, my world
revolves around C):

class TLogItem : public TObject {

private:
  TObjString	*fUPC;
  Int_t		fSales;

public:
  TLogItem();
  TLogItem(char *upc, Int_t sales);
  virtual ~TLogItem();

  const char *Upc() const {return fUPC->GetName();}
  Int_t Sales() const {return fSales;}

  ClassDef(TLogItem,1)  //TLogItem structure
};

class TLog : public TObject {

private:
  Int_t		fKey;
  Int_t		fDateTime;
  Bool_t	fValid;
  Int_t		fGrossPos;
  Int_t		fGrossNeg;
  Int_t		fNitem;
  TClonesArray	*fItems;

  static TClonesArray	*fgItems;

public:
  TLog();
  virtual ~TLog();
  void SetHeader(Int_t key, Int_t time, Int_t gross_pos, Int_t
gross_neg);
  void AddItem(char *upc, Int_t sales);
  void Clear(Option_t *option = "");
  Bool_t IsValid() const {return fValid;}
  TClonesArray *Items() const {return fItems;}

  Int_t TLogId() const {return fKey;}
  Int_t	DateTime() const {return fDateTime;}

  ClassDef(TLog,1)  //TLog structure
};

Notice the use of TObjArray in the first class, and TClonesArray in the
second class. The constructor for TLogItem initializes member fUPC, if
it doesn't exist.

The problem is when I write to a root file (after defining a tree, ...)
I get the following error message after the first bucket is written to
disk:

Warning in <TBranchClones::BranchClones>: Cannot process: TLogItem::fUPC

When I read back from the root file, the member fSales is correct, but
fUPC is always ''. I think this has something to do with being unable to
stream the TObjString to file. What am I doing wrong?

- Mike Beddo



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