pvalues = array('f', []) n_iterations = array('f', []) y_error = array('f', []) x_error = array('f', []) c_refoldeds = [] refolded_hists = [] c_sanitys = [] sanity_hists = [] for i in range(1, 20, 1): print '--------- i = ', i unfoldreco = RooUnfoldBayes(response, reco, i) reco_unfolded = unfoldreco.Vreco() reco_asvector = unfoldreco.Vmeasured() m = response.Mresponse() print 'response : ', m.GetNrows(), ' x ', m.GetNcols() refolded = ROOT.TVectorD(reco_unfolded) refolded *= m #TMatrixD(m,TMatrixD.kMult,reco_unfolded) print 'refolded : ', refolded.GetNrows() refolded_hist = ROOT.TH1D("refolded_hist_" + str(i), "refolded_hist_" + str(i), reco.GetNbinsX() * reco.GetNbinsY(), 0, reco.GetNbinsX() * reco.GetNbinsY()) sanity_hist = ROOT.TH1D("sanity_hist_" + str(i), "sanity_hist_" + str(i), reco.GetNbinsX() * reco.GetNbinsY(), 0, reco.GetNbinsX() * reco.GetNbinsY()) for ibin in xrange(0, refolded.GetNrows()): refolded_hist.SetBinContent(ibin + 1, refolded[ibin]) for ibin in xrange(0, reco_asvector.GetNrows()):
if rel_err_reco > 0: err_ratio = rel_err_unfold / rel_err_reco if rel_err_recoUp > 0: err_ratioUp = rel_err_unfoldUp / rel_err_recoUp if rel_err_recoDn > 0: err_ratioDn = rel_err_unfoldDn / rel_err_recoDn hErrorRatio[i_iter-1].SetBinContent(ibin+1, err_ratio) hErrorRatioUp[i_iter-1].SetBinContent(ibin+1, err_ratioUp) hErrorRatioDn[i_iter-1].SetBinContent(ibin+1, err_ratioDn) # unfolded & measured (vectors) vReco = unfold.Vreco() vMeas = unfold.Vmeasured() vRecoUp = unfoldUp.Vreco() vRecoDn = unfoldDn.Vreco() vMeasUp = unfoldUp.Vmeasured() vMeasDn = unfoldDn.Vmeasured() # response matrix as matrix instead of 2D histogram: (row,column)=(measured,truth) mResponse = response.Mresponse() # refolded (vector) vRefold = TVectorD(vReco) vRefold *= mResponse vRefoldUp = TVectorD(vRecoUp) vRefoldDn = TVectorD(vRecoDn)