Re: [ROOT] Saving a canvas

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Jul 30 2002 - 23:47:31 MEST


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