Sebastien, Why don't you save the pad or canvas in the file? Assuming a TCanvas *c1, you can do: TFile *f = new TFile("c1.root","recreate"); c1->Write(); delete f; In a new session TFile f("c1.root"); TCanvas *c1 = (TCanvas*)f.Get("c1"); c1->Draw(); Rene Brun Sebastien Greder wrote: > > Hello Rene, > > In fact it's what I've done through the following method I wrote and which > is called in my analysis code while a file is opened (i.e is the current > dir). > > Plot2in1(hJetStudy109,hJetStudy116,1,0,0,"",111111,5,2) ; // in the ana. > code , and : > > void Plot2in1(TH1* hist1, TH1* hist2, > Bool_t logy = 0, Bool_t logx = 0, Bool_t grid = 0, > TString fit = "", > Int_t stati = 111111,Int_t histo1color =0 ,Int_t histo2color > = 0) > { > TCanvas *c1 = (TCanvas*)gROOT->FindObject("c1"); > if (c1) {c1->Clear();} > else {c1 = new TCanvas("c1");} > > sebstyle(); // this method sets my default canvas, pad, texts ,etc .. style > TPad* pad1 = new TPad("pad1","pad",0.03,0.03,0.98,0.98); > pad1->Draw(); > if (logy) pad1->SetLogy(); > if (logx) pad1->SetLogx(); > > pad1->cd(); > // pad1->SetGrid(); > > if(stati != 111111) gStyle->SetOptStat(stati); > if(histo1color !=0 ) hist1->SetFillColor(histo1color); > if(histo2color !=0 ) hist2->SetFillColor(histo2color); > if (fit != "") { > hist1->Fit(fit); > hist2->Fit(fit);} > > TString name1 = hist1->GetName(); > TString name2 = hist2->GetName(); > TString newname = name1+"and"+name2; > > hist1->Draw(); > // hist1->Write(); // is in fact here not neede here since I also wrote a > quite similar method for one histo > hist2->Draw("SAME"); > hist2->Write(newname); > > c1->Update(); > } > > > Moreover, when I set the log scale (by putting the 3rd argument to 1 when > calling the method, this is not retained in the root file, I guess it's > due to the TPad ownership of SetLogy as you already told me and which is > not retained when the command histo->Write() is called, but this is not > the important point here) > > I don't do f->Write() since I only want some specified histos to be > written in the root file. > > Cheers, > > seb. > > (I'm using 3.02.07 on Linux RedHat) > > On Fri, 26 Apr 2002, Rene Brun wrote: > > > It could be that I misunderstand your question, but why not simply do: > > > > TFile *f = new TFile("myfile.root","recreate"); > > ... > > h1->Draw(); > > h1->Write(); > > h2->Draw("SAME"); > > h2->Write(); > > h3->Draw("SAME"); > > h3->Write(); > > ... > > > > doing f->Write(); > > will write all histograms created with f being the current dir to the file. > > See Users Guide for more details. > > > > Rene Brun > > > > Sebastien Greder wrote: > > > > > > Hello Rooters, > > > > > > I just have a short question ; I'm running some code to fill histos and > > > want them to be then stored in a root file. > > > To store one histo is obvious but I'd like to superpose several histos and > > > store the final superposed histo in the root file (it would be more > > > practical than superposing after having stored all the histos in > > > the root file). > > > To sum up, I would like to do the same operation like : > > > > > > h1->Draw(); > > > h2->Draw("SAME"); > > > h3->Draw("SAME"); > > > ... > > > > > > but while writing the histo in a root file. > > > I can't find out how. > > > Could someone give me some advices about this ?? > > > > > > Thanks in advance, > > > > > > seb. > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:51 MET