Hi Rustam, I have modified the formula computing the Binomial errors when dividing two histograms with coefficients not equal to 1. With this mod, your script produces the following result: x=9.95 y=0.5 er=0.0238095 relative error 0.047619 x=9.95 y=0.5 er=0.0238095 relative error 0.047619 The fix is now in CVS. I would appreciate if my fix could be checked by an expert. see http://root.cern.ch/root/htmldoc/src/TH1.cxx.html#TH1:Divide Let me know Rene Brun On Tue, 30 Apr 2002, Rustam Niyazov wrote: > Dear Rooters, > > I've tried to investigate binomial error calculations > described in the message > http://root.cern.ch/root/roottalk/roottalk00/2894.html > So, I modified code a little bit checking the relative errors > after I divided out correlated histograms with TH1::Divide(const TH1 > *h1, const TH1 *h2, Double_t c1, Double_t c2, Option_t *option) ) > I was expecting that if I increase factors c1 and c2 by the same value, > the > relative errors are going to be the same. But I see that they are > decreasing. > Did I do anything wrong? > > Thanks, > > Rustam > > Here is my code > > { > gROOT->Reset(); > c1 = new TCanvas("c1","The FillRandom example",200,10,700,900); > c1->Divide(1,2); > gaus1 = new TFormula("gaus1","gaus"); > gaus1->SetParameters(1000,10,1); > h1f = new TH1F("h1f","h1f",200,0,20); > h1f->FillRandom("gaus1",10000); > h1f->Sumw2(); > > TH1F *bindistr = new TH1F("binomial","Test binomial",200,0,20); > TH1F *bindistr1 = new TH1F("binomial1","Test binomial1",200,0,20); > bindistr->Divide(h1f,h1f,1.0,2.0,"B"); > bindistr1->Divide(h1f,h1f,10.0,20.0,"B"); > > Int_t nbinsx = h1f->GetNbinsX(); > Double_t value,error; > Double_t value1,error1; > for (Int_t binx=0; binx<=nbinsx+1; binx++){ > value=bindistr->GetBinContent(binx); > error=bindistr->GetBinError(binx); > value1=bindistr1->GetBinContent(binx); > error1=bindistr1->GetBinError(binx); > if(binx==100){ > cout<<"x="<<bindistr->GetBinCenter(binx)<<" y="<<value<<" > er="<<error<<" relative error "<<error/value<<endl; > cout<<"x="<<bindistr1->GetBinCenter(binx)<<" y="<<value1<<" > er="<<error1<<" relative error "<<error1/value1<<endl; > } > } > > gStyle->SetOptStat(0); > c1->cd(1);bindistr->Draw("E"); > c1->cd(2);bindistr1->Draw("E"); > c1->Update(); > } >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:51 MET