I modified your macro so it works properly now :
----------------------------------------------
{
gROOT->Reset();
Float_t adc[16];
TFile *file=new TFile("adc.root","RECREATE");
TTree *tree=new TTree("tree","Testing still");
tree->Branch("adc",&adc,"adc[16]/F");
for(Int_t j=0;j<100;j++) {
for(Int_t i=0;i<16;i++) adc[i]=i;
tree->Fill();
}
tree->Write();
tree->Print();
file->Close();
}
---------------------------------------------
Note that tree->Draw("adc") is equivalent to tree->Draw("adc[0]")
Regards, Pasha.
--------------------------------------------------------------------------------
Tadeusz Pytlos writes:
> Hello Rooters,
> I cannot understand what wrong with arrays written in the tree.
> According to an article "Re: Newbie question..." I used simple macro arr.C
> to generate adc.root.
> {
> gROOT->Reset();
> Float_t adc[16];
> TFile *file=new TFile("adc.root","RECREATE");
> TTree *tree=new TTree("tree","Testing still");
> tree->Branch("adc",adc,"adc[nadc]/F");
> for(Int_t j=0;j<100;j++) {
> for(Int_t i=0;i<16;i++) adc[i]=5.0;
> tree->Fill();
> }
> tree->Print();
> tree->Write();
> file->Close();
> }
> Now while I'm trying to read the array
> f=new TFile("adc.root")
> f.ls()
> tree.Print()
> tree.Draw("adc")
> I see 100 events of value 5.0 but I ecpected 100*16=1600 events!!
> tree.Draw("adc[0])
> I see 100 events of 5.0. It's OK.
> tree.Draw("adc[1])
> I see 100 events of 0.0 !!
> Next are similar. Sometimes even stranger
> tree.Draw("adc[15])
> I see 100 events of 3.3 !!
> What is also
> tree.Draw("adc[16]) and next?
> It seems that the array is write only into adc[0]. Why? The same with
> the standalone program.
> Would you tell me what I'm going wrong? I found a similar description in
> the Thomas Hadig's article "Problem writing arrays", but I couldn't find
> any answer.
> Best wishes
> Tadeusz Pytlos
>
> --
> Tadeusz Pytlos
> mailto:pytlos@fizwe5.fic.uni.lodz.pl
> Lodz, Poland