Hi Gerco,
TPolyLine3D is one of the few ROOT classes still with a hand-written Streamer.
Classes with a hand-written Streamer cannot be used in split mode in a branch.
You can force the branch to not use the split mode and call the Streamer
function by using split=-1. We expect this to be automatic in the next release.
So, in your example, change the line:
TBranch *b = tree->Branch("tracks", "TPolyLine3D", &l, 64000,kTRUE);
to
TBranch *b = tree->Branch("tracks", "TPolyLine3D", &l, 64000,-1);
Note that your argument kTRUE was not correct.
Rene Brun
Gerco Onderwater wrote:
>
> Hi Rooters,
>
> I thought I was making a trivial program to write a series of TPolyLine3D
> objects to a file. To my surprise it didn't work. The problem seems to be
> that the actual points of the polyline line aren't written (or maybe at
> the wrong place?).
>
> Here is a little test macro that shows what happens:
>
> void doit()
> {
> TFile* file= new TFile("/tmp/ppp.root","recreate");
> TTree* tree = new TTree("tree","a tree");
> TPolyLine3D* l = new TPolyLine3D();
> TBranch *b = tree->Branch("tracks", "TPolyLine3D", &l, 64000,kTRUE);
> l->SetNextPoint(1,1,1);
> l->SetNextPoint(3,3,3);
> tree->Fill();
> file->Write();
> }
>
> void didit()
> {
> TFile* file= new TFile("/tmp/ppp.root");
> TTree* tree = (TTree*)file->Get("tree");
> TBranch* b = tree->GetBranch("tracks");
> TPolyLine3D* l = new TPolyLine3D();
> b->SetAddress(&l);
> tree->GetEntry(0,0);
> printf("Number of points: %d\n",l->GetN());
> printf("Location of fP: 0x%x\n",l->GetP());
> }
>
> Its output:
>
> root [0] .L test.c
> root [1] doit()
> root [2] didit()
> Number of points: 2
> Location of fP: 0x0
>
> I get similar results for a TPolyLine. I'm using the ancient Root version
> 2.25/03, but don't see any (obviously relevant) changes between it and
> version 3.01 as far as it concerns TPolyLine3D.
>
> Something I did notice was that when I open a browser, it shows the
> peculiar field "fOption.*fData" (see attached gif).
>
> If you have a simple solution or if I made a mistake somewhere, please let
> me know.
>
> Thanks,
>
> -- Gerco
>
> Dr. C.J.G. Onderwater
> Nuclear Physics Laboratory
> 401B Loomis Laboratory of Physics
> University of Illinois at Urbana-Champaign
> 1110 West Green Street
> Urbana, IL 61801-3080
> Phone : (217) 244-7363
> Fax : (217) 333-1215
> E-mail: onderwat@uiuc.edu
>
> --------------------------------------------------------------------------------
>
> Name: browser.gif
> browser.gif Type: GIF Image (IMAGE/gif)
> Encoding: BASE64
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:52 MET