One more input is that this issue happens only when the histograms are read from a file. The following macro have no problem to run:
{
TH1F* h = new TH1F("h", "", 1, 0, 1); h->Fill(0.5); h->Sumw2(); TH1F* h0 = new TH1F("h0", "", 1, 0, 1); h0->Sumw2(); h0->Fill(0.5); TH1F* h1 = new TH1F("h1", "", 1, 0, 1); h1->Sumw2(); h1->Fill(0.5); h->Divide(h0); h->Divide(h1);
On 1/5/2012 5:40 PM, wxie wrote:
> I run the following macro producing a file "oo.root".
>
> {
> TFile f("oo.root", "recreate");
> TH1F* h = new TH1F("h", "", 1, 0, 1);
> h->Fill(0.5);
> h->Sumw2();
>
> TH1F* h0 = new TH1F("h0", "", 1, 0, 1);
> h0->Sumw2();
> h0->Fill(0.5);
>
> TH1F* h1 = new TH1F("h1", "", 1, 0, 1);
> h1->Sumw2();
> h1->Fill(0.5);
>
> h->Write();
> h0->Write();
> h1->Write();
> f.Close();
> }
>
> then I run the following macro:
> {
> TFile f("oo.root");
> h->Divide(h0);
> h->Divide(h1);
> }
>
> and got an error message:
>
> root.exe [1] h->Divide(h0);
> root.exe [2] h->Divide(h1);
> Error: Symbol h1 is not defined in current scope (tmpfile):1:
> *** Interpreter error recovered ***
>
> People usually bypass it by defining another pointer, e.g. the
> following macro:
> {
> TFile f("oo.root");
> h->Divide(h0);
> TH1F* h2 = h1;
> h->Divide(h2);
> }
>
> Is there a way not to redefine this new pointer?
>
> Thanks
> --Wei
>
>
>
>
>
>
>
Received on Fri Jan 06 2012 - 00:19:04 CET
This archive was generated by hypermail 2.2.0 : Tue Jan 10 2012 - 17:50:01 CET