Hi Jonathan,
a small example showing how to create an ntuple (ntwrite) and appending
new data to an existing ntuple (ntappend, ntappend2). see comments in code
Rene Brun
void ntwrite()
{
TFile *file = new TFile("ntuple.root","RECREATE");
TNtuple *ntuple = new TNtuple("ntuple","Demo ntuple","px:py:pz:random:i");
Float_t px, py, pz;
for (Int_t i = 0; i < 25000; i++) {
gRandom->Rannor(px,py);
pz = px*px + py*py;
Float_t random = gRandom->Rndm(1);
ntuple->Fill(px,py,pz,random,i);
}
ntuple->Write();
file->Close();
delete file;
}
void ntappend()
{
TFile *file = new TFile("ntuple.root","UPDATE");
TNtuple *ntuple = (TNtuple*)file->Get("ntuple");
Float_t px, py, pz;
for (Int_t i = 0; i < 25000; i++) {
gRandom->Rannor(px,py);
pz = px*px + py*py;
Float_t random = gRandom->Rndm(1);
ntuple->Fill(px,py,pz,random,i);
}
//each ntuple->Write saves a new ntuple header. You will get the
// keys ntuple1;1 ntuple;2 ntuple;3 ,etc
// Assuming 3 cycles (1 call to ntwrite and 2 calls to ntappend),
// in an interactive session, you can do:
// TNtuple *ntuple1 = (TNtuple*) file.Get("ntuple;1");
// ntuple1->Draw("px>>hpx1"); // hpx1 will have 25000 entries
// TNtuple *ntuple2 = (TNtuple*) file.Get("ntuple;2");
// ntuple2->Draw("px>>hpx2"); // hpx2 will have 50000 entries
// TNtuple *ntuple3 = (TNtuple*) file.Get("ntuple;3");
// ntuple3->Draw("px>>hpx3"); // hpx3 will have 75000 entries
ntuple->Write();
file->Close();
delete file;
}
void ntappend2()
{
TFile *file = new TFile("ntuple.root","UPDATE");
TNtuple *ntuple = (TNtuple*)file->Get("ntuple");
Float_t px, py, pz;
for (Int_t i = 0; i < 25000; i++) {
gRandom->Rannor(px,py);
pz = px*px + py*py;
Float_t random = gRandom->Rndm(1);
ntuple->Fill(px,py,pz,random,i);
}
// keep the latest ntuple header only
ntuple->Write("",TObject::kOverwrite);
file->Close();
delete file;
}
Jon Gans wrote:
>
> Dear Rooters...
>
> I want to append to a saved NTuple in a TFile. However doing a
> file->write() merely adds another entry to the current file with the same
> name. How can I get it to append?
> Thanks
> jon
>
> ______________________________________________________________________________
>
> Jonathan Gans
> Yale University
> Physics Department
> PO BOX 208120
> New Haven, CT 06520-8120 http://www.jongans.com
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:29 MET