def FitMassPoint(filename, massin, massmin, massmax, rwCPS=1, nbins=50): ### take the input tree from the file inputFile = ROOT.TFile(filename); tree = inputFile.Get("WJet"); print "Lineshape Higgs mass --> n entries: ", tree.GetEntries(); # RooFitting rrv_mass = RooRealVar("rrv_mass","rrv_mass",massin,massmin,massmax); rrv_weight = RooRealVar("rrv_weight","rrv_weight",0. ,10000000.); rrv_mH1 = RooRealVar("rrv_mH1","rrv_mH1", massin, massmin, massmax ); rrv_gamma1 = RooRealVar("rrv_gamma1","rrv_gamma1",20.,0.,massmax); rrv_mH2 = RooRealVar("rrv_mH2","rrv_mH2", massin, massmin, massmax ) rrv_gamma2 = RooRealVar("rrv_gamma2","rrv_gamma2",20.,0.,massmax) rrv_mH3 = RooRealVar("rrv_mH3","rrv_mH3", massin, massmin, massmax ); rrv_gamma3 = RooRealVar("rrv_gamma3","rrv_gamma3",20.,0.,massmax); rds_raw = RooDataSet("rds_raw","rds_raw",RooArgSet(rrv_mass,rrv_weight),RooFit.WeightVar(rrv_weight)); ## created the raw dataset --> raw lineshape rds_cps = RooDataSet("rds_cps","rds_cps",RooArgSet(rrv_mass,rrv_weight),RooFit.WeightVar(rrv_weight)); ## create the cps dataset --> cps lineshape rds_cps_intf = ROOT.RooDataSet("rds_cps_intf","rds_cps_intf",RooArgSet(rrv_mass,rrv_weight),RooFit.WeightVar(rrv_weight)); ## create the cps + interference dataset model1_pdf = ROOT.RooRelBWRunningWidth("model1_pdf","model1_pdf",rrv_mass,rrv_mH1,rrv_gamma1); ## BWRunningWidth Pdf from the dedicated library model2_pdf = ROOT.RooRelBWRunningWidth("model2_pdf","model2_pdf",rrv_mass,rrv_mH2,rrv_gamma2); ## BWRunningWidth Pdf from the dedicated library model3_pdf = ROOT.RooRelBWRunningWidth("model3_pdf","model3_pdf",rrv_mass,rrv_mH3,rrv_gamma3); ## BWRunningWidth Pdf from the dedicated library ### loop on Higgs signal events for i in range(tree.GetEntries()): if i % 10000 == 0: print "reweighter, i: ", i; tree.GetEntry(i); curmass = getattr(tree,"W_H_mass_gen"); ## take the higgs generated mass inside the window; point not in the window are neglected if curmass < massmax and curmass > massmin: rrv_mass.setVal( curmass ); ## set the value of the RooRealVar tmpweight_cps = getattr(tree,"complexpolewtggH"+str(massin))*rwCPS/getattr(tree,"avecomplexpolewtggH"+str(massin)); ## take the cps weight from the tree tmpweight_cps_intf = getattr(tree,"complexpolewtggH"+str(massin))*rwCPS*getattr(tree,"interferencewtggH"+str(massin))/getattr(tree,"avecomplexpolewtggH"+str(massin)); ## cps*int rds_raw.add( RooArgSet( rrv_mass ), 1. ); rds_cps.add( RooArgSet( rrv_mass ), tmpweight_cps ); rds_cps_intf.add( RooArgSet( rrv_mass ), tmpweight_cps_intf ); print ">>>>" RooTrace.dump(ROOT.cout,ROOT.kTRUE); RooTrace.mark(); print "<<<<" #### final fit model1_pdf.fitTo(rds_raw,RooFit.Save(1), RooFit.SumW2Error(kTRUE)); model1_pdf.fitTo(rds_raw,RooFit.Save(1), RooFit.SumW2Error(kTRUE), RooFit.Minimizer("Minuit2")); model2_pdf.fitTo(rds_cps,RooFit.Save(1), RooFit.SumW2Error(kTRUE)); model2_pdf.fitTo(rds_cps,RooFit.Save(1), RooFit.SumW2Error(kTRUE), RooFit.Minimizer("Minuit2")); model3_pdf.fitTo(rds_cps_intf,RooFit.Save(1), RooFit.SumW2Error(kTRUE)); model3_pdf.fitTo(rds_cps_intf,RooFit.Save(1), RooFit.SumW2Error(kTRUE), RooFit.Minimizer("Minuit2")); ## plot of the fits mplot = rrv_mass.frame(RooFit.Title("mass plot")); rds_raw.plotOn(mplot, RooFit.MarkerColor(kBlack), RooFit.LineColor(kBlack), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); rds_cps.plotOn(mplot, RooFit.MarkerColor(kRed), RooFit.LineColor(kRed), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); rds_cps_intf.plotOn(mplot, RooFit.MarkerColor(kBlue), RooFit.LineColor(kBlue), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); model1_pdf.plotOn(mplot, RooFit.LineColor(kBlack)); model2_pdf.plotOn(mplot, RooFit.LineColor(kRed), RooFit.LineStyle(2) ); model3_pdf.plotOn(mplot, RooFit.LineColor(kBlue), RooFit.LineStyle(3) ); rds_raw.plotOn(mplot, RooFit.MarkerColor(kBlack), RooFit.LineColor(kBlack), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); rds_cps.plotOn(mplot, RooFit.MarkerColor(kRed), RooFit.LineColor(kRed), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); rds_cps_intf.plotOn(mplot, RooFit.MarkerColor(kBlue), RooFit.LineColor(kBlue), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); print "rds_raw.sumEntries() = ", rds_raw.sumEntries() print "model1_pdf: mH = ", rrv_mH1.getVal(), ", gamma = ", rrv_gamma1.getVal(); print "rds_cps.sumEntries() = ", rds_cps.sumEntries() print "model2_pdf: mH = ", rrv_mH2.getVal(), ", gamma = ", rrv_gamma2.getVal(); print "rds_cps_intf.sumEntries() = ", rds_cps_intf.sumEntries() print "model3_pdf: mH = ", rrv_mH3.getVal(), ", gamma = ", rrv_gamma3.getVal(); dummy_h1 = ROOT.TH1F("dummy_h1","dummy_h1",1,0,1); dummy_h1.SetMarkerColor( ROOT.kBlack ); dummy_h2 = ROOT.TH1F("dummy_h2","dummy_h2",1,0,1); dummy_h2.SetMarkerColor( ROOT.kRed ); dummy_h3 = ROOT.TH1F("dummy_h3","dummy_h3",1,0,1); dummy_h3.SetMarkerColor( ROOT.kBlue ); L = TLegend(0.65,0.60,0.93,0.85); L.SetFillStyle(0); L.AddEntry(dummy_h1,"Powheg","p"); L.AddEntry(dummy_h2,"w/CPS weight","p"); L.AddEntry(dummy_h3,"w/CPS,Intf weight","p"); can2 = ROOT.TCanvas("can2","can2",800,800); mplot.Draw(); L.Draw(); os.system("mkdir -p massFits"); can2.SaveAs("massFits/mass_rf_"+str(massin)+".pdf"); can2.SaveAs("massFits/mass_rf_"+str(massin)+".png"); outputpar_1 = []; outputpar_1.append( rrv_mH1.getVal() ); outputpar_1.append( rrv_gamma1.getVal() ); outputpar_2 = []; outputpar_2.append( rrv_mH2.getVal() ); outputpar_2.append( rrv_gamma2.getVal() ); outputpar_3 = []; outputpar_3.append( rrv_mH3.getVal() ); outputpar_3.append( rrv_gamma3.getVal() ); model1_pdf.Delete(); model2_pdf.Delete(); model3_pdf.Delete(); rds_raw.Delete(), rds_cps.Delete(), rds_cps_intf.Delete(); rrv_mH1.Delete(), rrv_gamma1.Delete(); rrv_mH2.Delete(), rrv_gamma2.Delete(); rrv_mH3.Delete(), rrv_gamma3.Delete(); rrv_mass.Delete(); return outputpar_2
def FitMassPoint(filename, massin, massmin, massmax, nbins=50): inputFile = ROOT.TFile(filename); tree = inputFile.Get("WJet"); print "n entries: ", tree.GetEntries(); # RooFitting rrv_mass = ROOT.RooRealVar("rrv_mass","rrv_mass",massmin,massmax) rrv_weight = RooRealVar("rrv_weight","rrv_weight",0. ,10000000.) rrv_mH2 = ROOT.RooRealVar("rrv_mH2","rrv_mH2", massin, massmin, massmax ) rrv_gamma2 = ROOT.RooRealVar("rrv_gamma2","rrv_gamma2",20.,massmax) rds_raw = ROOT.RooDataSet("rds_raw","rds_raw",RooArgSet(rrv_mass,rrv_weight),RooFit.WeightVar(rrv_weight)); ## created the raw dataset rds_cps = ROOT.RooDataSet("rds_cps","rds_cps",RooArgSet(rrv_mass,rrv_weight),RooFit.WeightVar(rrv_weight)); ## create the cps dataset rds_cps_intf = ROOT.RooDataSet("rds_cps_intf","rds_cps_intf",RooArgSet(rrv_mass,rrv_weight),RooFit.WeightVar(rrv_weight)); ## create the cps + interference dataset model2_pdf = ROOT.RooRelBWRunningWidth("model2_pdf","model2_pdf",rrv_mass,rrv_mH2,rrv_gamma2); ## BWRunningWidth Pdf ### loop on Higgs signal events for i in range(tree.GetEntries()): if i % 10000 == 0: print "reweighter, i: ", i; tree.GetEntry(i); curmass = getattr(tree,"W_H_mass_gen"); ## take the higgs generated mass inside the window if curmass < massmax and curmass > massmin: rrv_mass.setVal( curmass ); tmpweight_cps = getattr(tree,"complexpolewtggH"+str(massin))/getattr(tree,"avecomplexpolewtggH"+str(massin)); tmpweight_cps_intf = getattr(tree,"complexpolewtggH"+str(massin))*getattr(tree,"interferencewtggH"+str(massin))/getattr(tree,"avecomplexpolewtggH"+str(massin)); rds_raw.add( RooArgSet( rrv_mass ), 1. ); rds_cps.add( RooArgSet( rrv_mass ), tmpweight_cps ); rds_cps_intf.add( RooArgSet( rrv_mass ), tmpweight_cps_intf ); print ">>>>" RooTrace.dump(ROOT.cout,ROOT.kTRUE); RooTrace.mark(); print "<<<<" model2_pdf.fitTo(rds_cps,RooFit.Save(0), RooFit.SumW2Error(kTRUE) ); # mplot = rrv_mass.frame(RooFit.Title("mass plot")); # rds_raw.plotOn(mplot, RooFit.MarkerColor(kBlack), RooFit.LineColor(kBlack), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); # rds_cps_intf.plotOn(mplot, RooFit.MarkerColor(kBlue), RooFit.LineColor(kBlue), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); # rds_cps.plotOn(mplot, RooFit.MarkerColor(kRed), RooFit.LineColor(kRed), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); # model_pdf.plotOn(mplot, RooFit.LineColor(kRed)); # model2_pdf.plotOn(mplot, RooFit.LineColor(kRed), RooFit.LineStyle(2) ); # model3_pdf.plotOn(mplot, RooFit.LineColor(ROOT.kGreen+2), RooFit.LineStyle(2) ); # model4_pdf.plotOn(mplot, RooFit.LineColor(ROOT.kGreen+2), RooFit.LineStyle(3) ); print "rds_cps_intf.sumEntries() = ", rds_cps_intf.sumEntries() print "model2_pdf: mH = ", rrv_mH2.getVal(), ", gamma = ", rrv_gamma2.getVal(); # # dummy_h1 = ROOT.TH1F("dummy_h1","dummy_h1",1,0,1); # dummy_h1.SetMarkerColor( ROOT.kBlack ); # dummy_h2 = ROOT.TH1F("dummy_h2","dummy_h2",1,0,1); # dummy_h2.SetMarkerColor( ROOT.kRed ); # dummy_h3 = ROOT.TH1F("dummy_h3","dummy_h3",1,0,1); # dummy_h3.SetMarkerColor( ROOT.kBlue ); # dummy_h5 = ROOT.TH1F("dummy_h5","dummy_h5",1,0,1); # dummy_h5.SetLineColor( ROOT.kRed ); dummy_h5.SetLineStyle( 2 ); # # L = TLegend(0.65,0.60,0.93,0.85); # L.SetFillStyle(0); # L.AddEntry(dummy_h1,"Powheg","p"); # L.AddEntry(dummy_h2,"w/CPS weight","p"); # L.AddEntry(dummy_h3,"w/CPS,Intf weight","p"); # L.AddEntry(dummy_h5,"Fit, BW (running)","l"); # # can2 = ROOT.TCanvas("can2","can2",800,800); # mplot.Draw(); # L.Draw(); # can2.SaveAs("massFits/mass_rf_"+str(massin)+".eps"); # can2.SaveAs("massFits/mass_rf_"+str(massin)+".png"); outputpar = []; outputpar.append( rrv_mH2.getVal() ); outputpar.append( rrv_gamma2.getVal() ); model2_pdf.Delete(); rds_raw.Delete(), rds_cps.Delete(), rds_cps_intf.Delete(); rrv_mH2.Delete(), rrv_gamma2.Delete(); rrv_mass.Delete(); return outputpar
def FitMassPoint(filename, massin, massmin, massmax, nbins=50): # massin = 800; # massmin = 400; # massmax = 1400; # nbins = 50; # massin = 600; # massmin = 200; # massmax = 1000; # nbins = 40; inputFile = ROOT.TFile(filename) tree = inputFile.Get("WJet") # tree.Print(); print "n entries: ", tree.GetEntries() ############################################################ # RooFitting rrv_mass = ROOT.RooRealVar("rrv_mass", "rrv_mass", massmin, massmax) rrv_weight = RooRealVar("rrv_weight", "rrv_weight", 0., 10000000.) # rrv_mH = ROOT.RooRealVar("rrv_mH","rrv_mH", massin, massmin, massmax ) # rrv_gamma = ROOT.RooRealVar("rrv_gamma","rrv_gamma",20.,massmax) rrv_mH2 = ROOT.RooRealVar("rrv_mH2", "rrv_mH2", massin, massmin, massmax) rrv_gamma2 = ROOT.RooRealVar("rrv_gamma2", "rrv_gamma2", 20., massmax) # rrv_mH3 = ROOT.RooRealVar("rrv_mH3","rrv_mH3", massin, massmin, massmax ) # rrv_gamma3 = ROOT.RooRealVar("rrv_gamma3","rrv_gamma3",20.,massmax) # rrv_mH4 = ROOT.RooRealVar("rrv_mH4","rrv_mH4", massin, massmin, massmax ) # rrv_gamma4 = ROOT.RooRealVar("rrv_gamma4","rrv_gamma4",20.,massmax) rds_raw = ROOT.RooDataSet("rds_raw", "rds_raw", RooArgSet(rrv_mass, rrv_weight), RooFit.WeightVar(rrv_weight)) rds_cps = ROOT.RooDataSet("rds_cps", "rds_cps", RooArgSet(rrv_mass, rrv_weight), RooFit.WeightVar(rrv_weight)) rds_cps_intf = ROOT.RooDataSet("rds_cps_intf", "rds_cps_intf", RooArgSet(rrv_mass, rrv_weight), RooFit.WeightVar(rrv_weight)) model2_pdf = ROOT.RooRelBWRunningWidth("model2_pdf", "model2_pdf", rrv_mass, rrv_mH2, rrv_gamma2) for i in range(tree.GetEntries()): if i % 10000 == 0: print "reweighter, i: ", i tree.GetEntry(i) curmass = getattr(tree, "W_H_mass_gen") if curmass < massmax and curmass > massmin: rrv_mass.setVal(curmass) tmpweight_cps = getattr( tree, "complexpolewtggH" + str(massin)) / getattr( tree, "avecomplexpolewtggH" + str(massin)) tmpweight_cps_intf = getattr( tree, "complexpolewtggH" + str(massin)) * getattr( tree, "interferencewtggH" + str(massin)) / getattr( tree, "avecomplexpolewtggH" + str(massin)) rds_raw.add(RooArgSet(rrv_mass), 1.) rds_cps.add(RooArgSet(rrv_mass), tmpweight_cps) rds_cps_intf.add(RooArgSet(rrv_mass), tmpweight_cps_intf) ############################################################ print ">>>>" RooTrace.dump(ROOT.cout, ROOT.kTRUE) RooTrace.mark() print "<<<<" # rfresult2 = model2_pdf.fitTo(rds_cps,RooFit.Save(1), RooFit.SumW2Error(kTRUE) ); model2_pdf.fitTo(rds_cps, RooFit.Save(0), RooFit.SumW2Error(kTRUE)) print ">>>>2" RooTrace.dump(ROOT.cout, ROOT.kTRUE) RooTrace.mark() print "<<<<2" # mplot = rrv_mass.frame(RooFit.Title("mass plot")); # rds_raw.plotOn(mplot, RooFit.MarkerColor(kBlack), RooFit.LineColor(kBlack), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); # rds_cps_intf.plotOn(mplot, RooFit.MarkerColor(kBlue), RooFit.LineColor(kBlue), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); # rds_cps.plotOn(mplot, RooFit.MarkerColor(kRed), RooFit.LineColor(kRed), RooFit.Binning(nbins,massmin,massmax), RooFit.DataError(RooAbsData.SumW2) ); ## model_pdf.plotOn(mplot, RooFit.LineColor(kRed)); # model2_pdf.plotOn(mplot, RooFit.LineColor(kRed), RooFit.LineStyle(2) ); ## model3_pdf.plotOn(mplot, RooFit.LineColor(ROOT.kGreen+2), RooFit.LineStyle(2) ); ## model4_pdf.plotOn(mplot, RooFit.LineColor(ROOT.kGreen+2), RooFit.LineStyle(3) ); # ## print "rds_cps_intf.sumEntries() = ", rds_cps_intf.sumEntries() ## print "model_pdf: mH = ", rrv_mH.getVal(), ", gamma = ", rrv_gamma.getVal(); ## print "model2_pdf: mH = ", rrv_mH2.getVal(), ", gamma = ", rrv_gamma2.getVal(); # # dummy_h1 = ROOT.TH1F("dummy_h1","dummy_h1",1,0,1); # dummy_h1.SetMarkerColor( ROOT.kBlack ); # dummy_h2 = ROOT.TH1F("dummy_h2","dummy_h2",1,0,1); # dummy_h2.SetMarkerColor( ROOT.kRed ); # dummy_h3 = ROOT.TH1F("dummy_h3","dummy_h3",1,0,1); # dummy_h3.SetMarkerColor( ROOT.kBlue ); # dummy_h5 = ROOT.TH1F("dummy_h5","dummy_h5",1,0,1); # dummy_h5.SetLineColor( ROOT.kRed ); dummy_h5.SetLineStyle( 2 ); # # L = TLegend(0.65,0.60,0.93,0.85); # L.SetFillStyle(0); # L.AddEntry(dummy_h1,"Powheg","p"); # L.AddEntry(dummy_h2,"w/CPS weight","p"); # L.AddEntry(dummy_h3,"w/CPS,Intf weight","p"); # L.AddEntry(dummy_h5,"Fit, BW (running)","l"); # # can2 = ROOT.TCanvas("can2","can2",800,800); # mplot.Draw(); # L.Draw(); # can2.SaveAs("massFits/mass_rf_"+str(massin)+".eps"); # can2.SaveAs("massFits/mass_rf_"+str(massin)+".png"); outputpar = [] outputpar.append(rrv_mH2.getVal()) outputpar.append(rrv_gamma2.getVal()) print ">>>>2.5" RooTrace.dump(ROOT.cout, ROOT.kTRUE) RooTrace.mark() print "<<<<2.5" # mplot.Delete(); # rfresult2.Delete(); model2_pdf.Delete() rds_raw.Delete(), rds_cps.Delete(), rds_cps_intf.Delete() rrv_mH2.Delete(), rrv_gamma2.Delete() rrv_mass.Delete() # del model2_pdf; # del rds_raw, rds_cps, rds_cps_intf; # del rrv_mH2, rrv_gamma2; print ">>>>2.9" RooTrace.dump(ROOT.cout, ROOT.kTRUE) RooTrace.mark() print "<<<<2.9" return outputpar