Hi Christopher,
When using structs one has to be very careful with the alignment of
members
in the struct. In your case the Double_t is following Int_t and Float_t
and may be at an odd address.
Two solutions:
1- specify Double_t as the first element
2- Create a separate branch for temperature.
Rene Brun
Christopher A. Stevens wrote:
>
> Redhat 6.0 Linux with SMP kernel with ROOT 2.22/10.
> I've been having problems moving from simple TNtuples to TTrees.
> I took the "simple example" from the TTree Class Description,
> made it into an macro, and simplified it to:
> {
> TFile hfile("htree.root","RECREATE","Demo ROOT file with histograms &
> trees")
>
> typedef struct {
> Int_t ntrack,nseg,nvertex;
> UInt_t flag;
> Float_t temperature;
> // Double_t temperature;
> } EVENTN;
> static EVENTN eventn;
>
> TTree *tree = new TTree("T","An example of ROOT tree with a few
> branches");
>
> tree->Branch("eventn",&eventn,"ntrack/I:nseg:nvertex:flag/i:temperature/F");
> //
> tree->Branch("eventn",&eventn,"ntrack/I:nseg:nvertex:flag/i:temperature/D")
>
> for ( Int_t i=0; i<1000; i++) {
> Float_t random = gRandom->Rndm(1);
>
> eventn.ntrack = Int_t(100*random);
> eventn.nseg = Int_t(2*eventn.ntrack);
> eventn.nvertex = 1;
> eventn.flag = Int_t(random+0.5);
> eventn.temperature = Float_t(20+random);
> // eventn.temperature = Double_t (20+random);
>
> tree->Fill();
> }
>
> hfile.Write();
>
> hfile.Close();
>
> }
> I get what looks like a good histogram with the Float_t lines,
> but when I use the Double_t lines I get a histogram with a
> single spike at zero.
> What am I doing wrong?
>
> Chris Stevens
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:38 MET