Re: [ROOT] tree with identical branches

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Oct 30 2001 - 15:21:53 MET


Hi Bernhard,

The doc of TTree::Branch says:
//
//      IMPORTANT NOTE about branch names
//    In case two or more master branches contain subbranches with
//    identical names, one must add a "." (dot) character at the end
//    of the master branch name. This will force the name of the subbranch
//    to be master.subbranch instead of simply subbranch.
//    This situation happens when the top level object (say event)
//    has two or more members referencing the same class.
//    For example, if a Tree has two branches B1 and B2 corresponding
//    to objects of the same class MyClass, one can do:
//       tree.Branch("B1.","MyClass",&b1,8000,1);
//       tree.Branch("B2.","MyClass",&b2,8000,1);
//    if MyClass has 3 members a,b,c, the two instructions above will generate
//    subbranches called B1.a, B1.b ,B1.c, B2.a, B2.b, B2.c

In your example, replace:
  TBranch *branch1 = tree->Branch("event1", "Event", &event1, bufsize,split);
  TBranch *branch2 = tree->Branch("event2", "Event", &event2,bufsize,split);
by
  TBranch *branch1 = tree->Branch("event1.", "Event", &event1,bufsize,split);
  TBranch *branch2 = tree->Branch("event2.", "Event", &event2,bufsize,split);


Rene Brun

Bernhard KETZER wrote:
> 
> Hi Rooters,
> 
> I am trying to create a tree with several branches containing objects of
> the same class (e.g. Event), but the data in the tree seem to be
> completely corrupted. Here is what I would like to do (I attach the full
> modified MainEvent.cxx at the end).
> 
> // Create two Event objects
>   Event *event1 = new Event();
>   Event *event2 = new Event();
> 
> // Create two branches
>   TBranch *branch1 = tree->Branch("event1", "Event", &event1,
> bufsize,split);
>   TBranch *branch2 = tree->Branch("event2", "Event", &event2,
> bufsize,split);
> 
> // Fill the tree
>   event1->SetType(1);
>   event2->SetType(2);
> ...
> 
> // Create and fill track objects
>    event1->AddTrack(random1);
>    event2->AddTrack(random2);
> 
> The tree is filled, but when I look at it, the Track data are screwed
> up. I also tried to add a dot to the branch name, but it didn't improve
> things.
> 
> What am I missing?
> 
> Best regards,
> 
>         Bernhard
> 
>   --------------------------------------------------------------------------------
> 
>                        Name: MainEvent.cxx
>    MainEvent.cxx       Type: Plain Text (text/plain)
>                    Encoding: 7bit
> 
>                                 Name: Bernhard.Ketzer.vcf
>    Bernhard.Ketzer.vcf          Type: VCard (text/x-vcard)
>                             Encoding: 7bit
>                          Description: Card for Bernhard KETZER



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