{ TH1F num("num","",10,0,10); TH1F den("den","",10,0,10); TH1F eff("eff","",10,0,10); TH1F eff2("eff2","",10,0,10); num.Sumw2(); den.Sumw2(); eff.Sumw2(); eff2.Sumw2(); TRandom r; for(int i=0;i<1000;i++) num.Fill(r.Rndm()*10); for(int i=0;i<1500;i++) den.Fill(r.Rndm()*10); cout << "***** Un-scaled case" << endl; eff.Divide(&num,&den,1,1,"B"); for(int i=1;i<=10;i++) { double e = num.GetBinContent(i)/den.GetBinContent(i); double N = den.GetBinContent(i); cout << "error bin " << i << " = " << eff.GetBinError(i) << endl; cout << "error calc " << i << " = " << sqrt(e*(1-e)/N) << endl; } num.Scale(100); den.Scale(100); cout << "***** Scaled case" << endl; eff2.Divide(&num,&den,1,1,"B"); for(int i=1;i<=10;i++) { double e = num.GetBinContent(i)/den.GetBinContent(i); double N = den.GetBinContent(i); cout << "scaled error bin " << i << " = " << eff2.GetBinError(i) << endl; cout << "scaled error calc " << i << " = " << sqrt(e*(1-e)/N) << endl; } }