[ROOT] Splitting TClonesArray

From: Carla Bleve (Carla.Bleve@le.infn.it)
Date: Fri Feb 22 2002 - 10:53:22 MET


Hi rooters ,

 I create a TTree Branch of MyEvent  objects.
MyEvent class contains a TClonesArray of
MyTracks objects (tracks)  and MyTrack
contains a TClonesArray of MyPoint objects (points).
Setting split level = 99 doesn't work: I can't access directly
(trough TTree::Draw()) to MyPoint data members.
Any idea?

I list below  a simplfied version of .h files.


******************************** MyEvent.h

class MyEvent :public TObject {
private:
   int nevent;
   TClonesArray * tracks;
public:
   MyEvent();
   void Add(MyTrack &thistrack, int i);
   .....
   TClonesArray *GetTracks()  {return tracks;};
   MyTrack * GetTrackPtr(int index) {
     MyTrack * tmp = new MyTrack(*(dynamic_cast<MyTrack *>((*tracks)[index])));
     return tmp;
   };

};

******************************** MyTrack.h

class MyTrack : public TObject {
private:
   int ntrack;
   TClonesArray * points;
public:
   MyTrack() {points=0;} ;
    .....
   void operator=( const MyTrack & h);
   virtual ~MyTrack() {
   if (points!= NULL )
     if (points->GetEntries() > 0) points->Clear();

   void Add(MyPoint  &thispoint, int i);
   TClonesArray *GetPoints()  {return points;};
   MyPoint * GetPointPtr(int index) {
     MyPoint * tmp = new MyPoint(*(dynamic_cast<MyPoint *>((*points)[index])));
     return tmp; }
   };


********************************* MyPoint.h
class MyPoint : public TObject {
private:
   int npoint;
   double x;
   double y;
   double z;
public:
   MyPoint(int i=0, double _x=0.,double _y=0., double _z=0.)
   {    npoint = i;
        x = _x;
        y = _y;
        z = _z;     };

   virtual ~MyPoint() {};

   MyPoint( const MyPoint & h);
   void operator=( const MyPoint & h);

   double GetX()  { return x;};
   double GetY()  { return y;};
   double GetZ()  { return z;};
   int GetNpoint()  { return npoint;};

};

--------------------------------------------------
       Carla Bleve

       Dipartimento di Fisica & INFN Sez. Lecce
       via per Arnesano
       I-73100 Lecce (Italy)
       Tel:    +39-(0)832-320-459
       Fax:    +39-(0)832-325-128
       e-mail:   bleve@le.infn.it



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:42 MET