Hi Rajat, To write a canvas to a file, simply do: mycanvas.SaveAs("myfile.root"); To read the canvas from the file, do: TFile f("myfile.root"); TCanvas *c = (TCanvas*)f.Get("mycanvas"); c->Draw(); Rene Brun On Tue, 30 Jul 2002, Rajat Bhatnagar wrote: > Hi, > > I've been writing a macro that saves the canvas pointed to by gPad and all > objects on it. I've run into two problems. > > 1. When histogram color is changed through hist->SetLineColor(kRed) this > change isn't saved when you do hist->Write(); Are there any ways to get > around this? > > 2. The draw options for histograms (like col or lego) as well as the > canvas options (like logy) are not saved either when you use Write(). How > would one extract and save this information? > > I'm running v.3.02/07 on red hat 6.2. The code I've been using is pasted > below: > > Thanks, > Rajat Bhatnagar > > #include <iostream.h> > #include "TH1.h" > #include "TPaveLabel.h" > #include "TCanvas.h" > #include "TFile.h" > #include "TKey.h" > #include "TROOT.h" > #include "TStyle.h" > > void SaveCanvas(TFile* f) > { > TList* t0 = gPad->GetListOfPrimitives(); > TObject* obj; > > if (!f->IsWritable()) > cout << "Error: file not writeable.\n"; > > if (t0) { > TListIter next(t0); > while ((obj=next())) { > cout << "Saving: " << obj->GetName() << endl; > obj->Write(); > } > } > } > > > void ReadCanvas(TFile* f) > { > TList* t0 = f->GetListOfKeys(); > TObject *key, *obj; > int firsttime = 1; > > if (t0) { > TListIter next(t0); > while ((key=next())) { > obj = ((TKey*) key)->ReadObj(); > cout << "Reading: " << obj->GetName() << endl; > if (obj->InheritsFrom("TH1") && firsttime) { > obj->Draw(); > firsttime = 0; > } > else if (obj->InheritsFrom("TH1")) > obj->Draw("same"); > else > obj->Draw(); > } > } > > } >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:02 MET