[ROOT] Problem with opening and closing file

From: Perfetto Francesco (Francesco.Perfetto@na.infn.it)
Date: Fri Sep 20 2002 - 13:10:23 MEST


Hi all,
I have a problem with the following code:
I want plotting the histo hdiv2 in the canvas for any values of howbins...
...

  TF1   *f  = new TF1("myfunc",myfunction,-1,.88,0);
  TFile *f1 = new TFile("analisi_mc.root");
  TFile *f2 = new TFile("efficienza_Y.root");
  TH1D  *h1 = new TH1D("h1","daliy_rec",howbins,-1,.88);
  TH1D  *h2 = new TH1D("h2","eff_Y",howbins,-1,.88);
  TH1D  *heff = new TH1D("heff","eff_Y" ,howbins,-1,.88);
  TH1D  *hdiv = new TH1D("hdiv","hdiv" ,howbins,-1,.88);
  TH1D  *hdiv2 = new TH1D("hdiv2","FIT" ,howbins,-1,.88);

  tmc->Draw("daliy_mc_rec >> h1","isrec==1");
  tmc->Draw("daliy_mc >> h2");
  heff->Sumw2();
  heff->Divide(h1,h2,1,1,"B");

  f1->cd();
  h1 = new TH1D("h1","daliy_rec",howbins,-1,.88);
  tmc->Draw("daliy_rec >> h1","isrec==1");
  hdiv->Divide(h1,heff,1,1,"E");

  Int_t nbins = hdiv->GetNbinsX();

  for (Int_t i=1;i<=nbins;i++)
    {
      Double_t min_bin    = hdiv->GetBinLowEdge(i);
      Double_t max_bin    = min_bin + hdiv->GetBinWidth(i);
      Double_t binContent = hdiv->GetBinContent(i);
      Double_t integrale  = f->Integral(min_bin,max_bin);
      Double_t div = binContent/(2*integrale);

      hdiv2->SetBinContent(i,div);
    }

  hdiv2->Draw("E");

If I delete the files open (how in the example)
  delete f1;
  delete f2;
  delete h1;
  ...

it do:

*** Break *** illegal instruction
Root > Function myfunc() busy flag cleared

if on the other hand I close the file :
f1->Close();
f2->Close();
it don't give me any error but it don't draw the histogram hdiv2 in the
canvas.
Is there someone that can to show me where mistake (possibly wiyh an
example).

                                            ManyThanks to all
					        Francesco.



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:10 MET