def plot_pt_gg(): #pT of gamma-gamma below and above J/psi ptbin = 0.02 #ptbin = 0.03 ptmin = 0. ptmax = 1.1 mmin = 2.1 mmax = 2.6 #mmin = 3.4 #mmax = 5. strsel = "jRecM>{0:.3f} && jRecM<{1:.3f}".format(mmin, mmax) can = ut.box_canvas() hPt = ut.prepare_TH1D("hPt", ptbin, ptmin, ptmax) hPtGG = ut.prepare_TH1D("hPtGG", ptbin, ptmin, ptmax) #ut.put_yx_tit(hPt, "Events / ({0:.3f}".format(ptbin)+" GeV)", "#it{p}_{T} (GeV})") ytit = "#gamma#gamma#rightarrow e^{+}e^{-} candidates / " + "({0:.3f}".format( ptbin) + " GeV)" ut.put_yx_tit(hPt, ytit, "Dielectron #it{p}_{T} (GeV)", 1.5, 1.2) ut.set_margin_lbtr(gPad, 0.11, 0.09, 0.01, 0.02) draw = "jRecPt" tree.Draw(draw + " >> hPt", strsel) tree_gg.Draw(draw + " >> hPtGG", strsel) ut.norm_to_data(hPtGG, hPt, rt.kGreen, 0., 0.3) #ut.norm_to_data(hPtGG, hPt, rt.kGreen, 0., 0.18) hPt.Draw() hPtGG.Draw("same") leg = ut.prepare_leg(0.67, 0.78, 0.14, 0.18, 0.03) leg.AddEntry(None, "#bf{|#kern[0.3]{#it{y}}| < 1}", "") ut.add_leg_mass(leg, mmin, mmax) leg.AddEntry(hPt, "Data") leg.AddEntry(hPtGG, "#gamma#gamma#rightarrow e^{+}e^{-}", "l") leg.Draw("same") pleg = ut.prepare_leg(0.33, 0.8, 0.01, 0.14, 0.035) pleg.AddEntry(None, "STAR Preliminary", "") pleg.AddEntry(None, "AuAu@200 GeV", "") pleg.AddEntry(None, "UPC sample", "") pleg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def evt_Log10_Q2_ecal_compare(): #compare log_10(Q^2) from ecal for two separate inputs infile1 = "../data/ir6/lmon_pythia_5M_beff2_5Mevt_v2.root" #infile2 = "../data/ir6_close/lmon_pythia_5M_beff2_close_5Mevt.root" #infile2 = "../data/ir6/lmon_pythia_5M_beff2_1p5T_5Mevt.root" infile2 = "../data/ir6/lmon_pythia_5M_beff2_1p5T_5Mevt_v2.root" lqbin = 5e-2 lqmin = -2.5 lqmax = 2.5 inp1 = TFile.Open(infile1) inp2 = TFile.Open(infile2) tree1 = inp1.Get("DetectorTree") tree2 = inp2.Get("DetectorTree") hQ2ecal = ut.prepare_TH1D("hQ2ecal", lqbin, lqmin, lqmax) hQ2ecal_close = ut.prepare_TH1D("hQ2ecal_close", lqbin, lqmin, lqmax) tree1.Draw(gL10Q2 + " >> hQ2ecal", "ecal_IsHit==1") tree2.Draw(gL10Q2 + " >> hQ2ecal_close", "ecal_IsHit==1") print "All events:", hQ2ecal.GetEntries() #print "Selected :", hLog10Q2Tag.GetEntries() can = ut.box_canvas() frame = gPad.DrawFrame(lqmin, 10, lqmax, 1e5) frame.Draw() ytit = "Events / {0:.3f}".format(lqbin) ut.put_yx_tit(frame, ytit, "log_{10}(#it{Q}^{2})", 1.4, 1.2) ut.set_margin_lbtr(gPad, 0.1, 0.1, 0.03, 0.02) ut.line_h1(hQ2ecal, rt.kBlue, 3) ut.line_h1(hQ2ecal_close, rt.kRed, 3) #hQ2ecal.SetMinimum(10) gPad.SetLogy() gPad.SetGrid() hQ2ecal.Draw("e1same") hQ2ecal_close.Draw("e1same") #hLog10Q2.SetMaximum(2e5) # for qr leg = ut.prepare_leg(0.6, 0.83, 0.2, 0.1, 0.035) #leg.AddEntry(hLog10Q2, "All electrons from quasi-real photoproduction", "l") #leg.AddEntry(hLog10Q2, "All Pythia6 scattered electrons", "l") #leg.AddEntry(hLog10Q2Tag, "Electrons hitting the tagger", "l") leg.AddEntry(hQ2ecal, "Default geometry", "l") #leg.AddEntry(hQ2ecal_close, "Magnets in central det", "l") leg.AddEntry(hQ2ecal_close, "1.5T solenoid", "l") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_dSigDtheta(): # dSigma / dTheta according to ZEUS parametrization Ee = 18 gen = gen_zeus(Ee, 275) # Ee, Ep, GeV sig = gen.dSigDtheta can = ut.box_canvas() sig.SetLineWidth(3) sig.SetNpx(1000) sig.SetTitle("") sig.Draw() sig.GetXaxis().SetTitle("#theta_{#gamma} (rad)") sig.GetYaxis().SetTitle("a. u.") sig.GetYaxis().SetTitleOffset(1.5) sig.GetXaxis().SetTitleOffset(1.3) gPad.SetTopMargin(0.01) gPad.SetRightMargin(0.08) leg = ut.prepare_leg(0.58, 0.78, 0.24, 0.15, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(sig, "#frac{d#sigma}{d#theta_{#gamma}}", "l") leg.AddEntry(None, "E_{e} = 18 GeV", "") leg.Draw("same") gPad.SetLogy() ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def make_both(): lqmin = -11 lqmax = 5 ymax = 8.5 gQr = make_qr() gPy = make_py() gQr10x100 = make_qr_10x100() gQr5x41 = make_qr_5x41() can = ut.box_canvas() frame = gPad.DrawFrame(lqmin, 0, lqmax, ymax) frame.Draw() xtit = "log_{10}(#it{Q}^{2})" ytit = "#frac{d#it{#sigma}}{d(" + xtit + ")} (#mub/GeV^{2})" ut.put_yx_tit(frame, ytit, xtit, 1.6, 1.3) ut.set_margin_lbtr(gPad, 0.14, 0.1, 0.03, 0.02) gQr.Draw("lsame") gPy.Draw("lsame") gQr10x100.Draw("lsame") gQr5x41.Draw("lsame") leg = ut.prepare_leg(0.53, 0.83, 0.2, 0.1, 0.035) leg.AddEntry(gPy, "Pythia6", "l") leg.AddEntry(gQr, "Quasi-real photoproduction", "l") leg.AddEntry(gQr10x100, "Quasi-real 10x100", "l") leg.Draw("same") ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_theta(): #polar angle of generated photons tbin = 0.01 tmax = 3 can = ut.box_canvas() ht = ut.prepare_TH1D("ht", tbin, 0, tmax) tree.Draw("(TMath::Pi()-phot_theta)*1000 >> ht") ht.SetYTitle("Events / ({0:.3f}".format(tbin) + " mrad)") ht.SetXTitle("#vartheta (mrad)") ht.SetTitleOffset(1.5, "Y") ht.SetTitleOffset(1.3, "X") gPad.SetTopMargin(0.02) gPad.SetRightMargin(0.025) gPad.SetBottomMargin(0.1) gPad.SetLeftMargin(0.11) ht.Draw() leg = ut.prepare_leg(0.2, 0.87, 0.18, 0.08, 0.035) leg.AddEntry(None, "Angular distribution of Bethe-Heitler photons", "") #leg.Draw("same") gPad.SetLogy() ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def acc_both(): #acceptance for quasi-real photoproduction and for Pythia #selection mode, 1 - s1, 2 - s2, 3 - s1 or s2, 4 - ecal, 5 - any #acc_qr = acc_quasi_real(False) acc_py_s1 = acc_pythia(False, 1) acc_py_s2 = acc_pythia(False, 2) #acc_py_s12 = acc_pythia(False, 3) acc_py_ecal = acc_pythia(False, 4) acc_py_all = acc_pythia(False, 5) #acc_py = acc_gap("../data/ir6_close/lmon_pythia_5M_beff2_close_5Mevt.root") #make the plot can = ut.box_canvas() #ut.set_graph(acc_qr, rt.kRed) #ut.set_graph(acc_py, rt.kBlue, rt.kFullTriangleUp) ut.set_graph(acc_py_s1, rt.kYellow+1) ut.set_graph(acc_py_s2, rt.kGreen+1) #ut.set_graph(acc_py_s12, rt.kBlack) ut.set_graph(acc_py_ecal, rt.kBlue) ut.set_graph(acc_py_all, rt.kBlack) frame = gPad.DrawFrame(-10, 0, 5, 1.1) # 0.3 frame.Draw() #ytit = "Acceptance / {0:.1f} %".format(prec*100) ut.put_yx_tit(frame, "Acceptance", "log_{10}(#it{Q}^{2})", 1.6, 1.2) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) gPad.SetGrid() #acc_py.Draw("psame") #acc_qr.Draw("psame") acc_py_s1.Draw("psame") acc_py_s2.Draw("psame") #acc_py_s12.Draw("psame") acc_py_all.Draw("psame") acc_py_ecal.Draw("psame") #leg = ut.prepare_leg(0.2, 0.82, 0.2, 0.12, 0.035) leg = ut.prepare_leg(0.15, 0.78, 0.2, 0.16, 0.035) #leg.AddEntry(acc_qr, "Quasi-real photoproduction", "lp") #leg.AddEntry(acc_py, "Pythia6", "lp") leg.AddEntry(acc_py_s1, "Tagger 1", "lp") leg.AddEntry(acc_py_s2, "Tagger 2", "lp") #leg.AddEntry(acc_py_s12, "Tagger 1 #bf{or} Tagger 2", "lp") leg.AddEntry(acc_py_ecal, "ecal", "lp") leg.AddEntry(acc_py_all, "Tagger 1 #bf{or} Tagger 2 #bf{or} ecal", "lp") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def make_E_theta(): #energy and angle tmin = 0 tmax = 4 # 5 tbin = 0.03 ebin = 0.15 emin = 0.5 emax = 10.5 #gdir = "/home/jaroslav/sim/GETaLM_data/lumi/" #inp = "lumi_18x275_Lif_emin0p5_d200_beff3_5Mevt.root" #gdir = "/home/jaroslav/sim/lattice/gen/" #inp = "lgen_Lif_10g.root" gdir = "/home/jaroslav/sim/GETaLM/cards/" inp = "bg.root" infile = TFile.Open(gdir + inp) tree = infile.Get("ltree") #tree.Print() #return can = ut.box_canvas() hEnT = ut.prepare_TH2D("hEnT", ebin, emin, emax, tbin, tmin, tmax) plot = "((TMath::Pi()-true_phot_theta)*1000)" + ":" + "(true_phot_E)" #plot = "((TMath::Pi()-phot_theta)*1000)" + ":" + "(phot_en)" tree.Draw(plot + " >> hEnT") hEnT.SetXTitle("#it{E}_{#gamma} (GeV)") hEnT.SetYTitle("#it{#theta}_{#gamma} (mrad)") hEnT.SetTitleOffset(1.6, "Y") hEnT.SetTitleOffset(1.3, "X") ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.02, 0.13) hEnT.SetMinimum(0.98) hEnT.SetContour(300) leg = ut.prepare_leg(0.43, 0.84, 0.24, 0.12, 0.05) # x, y, dx, dy, tsiz #leg.AddEntry(None, "No divergence", "") #leg.AddEntry("", "#it{ep}, 18 #times 275 GeV", "") leg.AddEntry("", "#it{E}_{e} = 10 GeV", "") #leg.SetTextColor(rt.kRed) leg.Draw("same") gPad.SetGrid() gPad.SetLogz() ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def energy(): #acceptance in electron energy i1 = "/home/jaroslav/sim/lmon/data/taggers/tag1a/hits_tag.root" i2 = "/home/jaroslav/sim/lmon/data/taggers/tag1ax1/hits_tag.root" #tag = ["s1_IsHit", "Tagger 1", 2] tag = ["s2_IsHit", "Tagger 2", 11] in1 = TFile.Open(i1) t1 = in1.Get("event") in2 = TFile.Open(i2) t2 = in2.Get("event") #mrad xmin = tag[2] xmax = 19 amax = 0.9 a1 = rt.acc_Q2_kine(t1, "true_el_E", tag[0]) a1.prec = 0.05 a1.bmin = 0.1 #a1.nev = int(1e5) g1 = a1.get() a2 = rt.acc_Q2_kine(t2, "true_el_E", tag[0]) a2.prec = 0.05 a2.bmin = 0.1 #a2.nev = int(1e5) g2 = a2.get() can = ut.box_canvas() frame = gPad.DrawFrame(xmin, 0, xmax, amax) ut.put_yx_tit(frame, "Tagger acceptance", "Electron energy #it{E} (GeV)", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) ut.set_graph(g1, rt.kRed) g1.Draw("psame") ut.set_graph(g2, rt.kBlue) g2.Draw("psame") gPad.SetGrid() leg = ut.prepare_leg(0.15, 0.8, 0.24, 0.14, 0.035) # x, y, dx, dy, tsiz leg.AddEntry("", tag[1], "") leg.AddEntry(g1, "Quasi-real photoproduction", "lp") leg.AddEntry(g2, "Pythia 6", "lp") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def eta(): #acceptance in electron polar angle as pi - theta in mrad i1 = "/home/jaroslav/sim/lmon/data/taggers/tag1a/hits_tag.root" i2 = "/home/jaroslav/sim/lmon/data/taggers/tag1ax1/hits_tag.root" #tag = ["s1_IsHit", "Tagger 1", 0.15] tag = ["s2_IsHit", "Tagger 2", 0.3] in1 = TFile.Open(i1) t1 = in1.Get("event") in2 = TFile.Open(i2) t2 = in2.Get("event") #eta xmin = -17 xmax = -3 a1 = rt.acc_Q2_kine(t1, "true_el_theta", tag[0]) a1.modif = 0 # eta from theta a1.prec = 0.01 a1.bmin = 0.1 #a1.nev = int(1e5) g1 = a1.get() a2 = rt.acc_Q2_kine(t2, "true_el_theta", tag[0]) a2.modif = 0 # eta from theta a2.prec = 0.01 a2.bmin = 0.1 #a2.nev = int(1e5) g2 = a2.get() can = ut.box_canvas() frame = gPad.DrawFrame(xmin, 0, xmax, tag[2]) ut.put_yx_tit(frame, "Tagger acceptance", "Electron pseudorapidity #it{#eta}", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) ut.set_graph(g1, rt.kRed) g1.Draw("psame") ut.set_graph(g2, rt.kBlue) g2.Draw("psame") gPad.SetGrid() leg = ut.prepare_leg(0.15, 0.8, 0.24, 0.14, 0.035) # x, y, dx, dy, tsiz leg.AddEntry("", tag[1], "") leg.AddEntry(g1, "Quasi-real photoproduction", "lp") leg.AddEntry(g2, "Pythia 6", "lp") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_pt2(): #pT^2 with coherent incoherent and gamma-gamma components ptbin = 0.002 ptmin = 0. ptmax = 0.2 # 0.3 mmin = 2.8 mmax = 3.2 #mmin = 1.5 #mmax = 2.6 strsel = "jRecM>{0:.3f} && jRecM<{1:.3f}".format(mmin, mmax) can = ut.box_canvas() hPt = ut.prepare_TH1D("hPt", ptbin, ptmin, ptmax) hPtCoh = ut.prepare_TH1D("hPtCoh", ptbin / 3., ptmin, ptmax) hPtIncoh = ut.prepare_TH1D("hPtIncoh", ptbin, ptmin, ptmax) hPtGG = ut.prepare_TH1D("hPtGG", ptbin, ptmin, ptmax) ut.put_yx_tit(hPt, "Events / ({0:.3f}".format(ptbin) + " GeV^{2})", "#it{p}_{T}^{2} (GeV^{2})") ut.set_margin_lbtr(gPad, 0.11, 0.09, 0.01, 0.02) draw = "jRecPt*jRecPt" tree.Draw(draw + " >> hPt", strsel) tree_coh.Draw(draw + " >> hPtCoh", strsel) tree_incoh.Draw(draw + " >> hPtIncoh", strsel) tree_gg.Draw(draw + " >> hPtGG", strsel) ut.norm_to_data(hPtCoh, hPt, rt.kBlue, 0., 0.015) ut.norm_to_data(hPtIncoh, hPt, rt.kRed, 0.05, 0.16) # 0.3 ut.norm_to_data(hPtGG, hPt, rt.kGreen, 0., 0.001) hPt.Draw() hPtCoh.Draw("same") hPtIncoh.Draw("same") hPtGG.Draw("same") leg = ut.prepare_leg(0.67, 0.78, 0.14, 0.18, 0.03) ut.add_leg_mass(leg, mmin, mmax) leg.AddEntry(hPt, "Data") leg.AddEntry(hPtCoh, "Coherent MC", "l") leg.AddEntry(hPtIncoh, "Incoherent MC", "l") leg.AddEntry(hPtGG, "#gamma#gamma#rightarrow e^{+}e^{-} MC", "l") leg.Draw("same") uoleg = ut.make_uo_leg(hPt, 0.14, 0.9, 0.01, 0.1) uoleg.Draw("same") gPad.SetLogy() ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def evt_true_lQ2_ly_separate(): #generator true log_10(Q^2) and y, separate for each detector lqbin = 0.2 lqmin = -10 lqmax = 3 ybin = 0.1 ymin = -5 ymax = 0 lQ2form = "TMath::Log10(true_Q2)" lyform = "TMath::Log10(true_y)" hLQ2yAll = ut.prepare_TH2D("hLQ2yAll", ybin * 0.2, ymin, ymax, lqbin * 0.2, lqmin, lqmax) #hLQ2yAll = ut.prepare_TH2D("hLQ2yAll", ybin, ymin, ymax, lqbin, lqmin, lqmax) hLQ2yS1 = ut.prepare_TH2D("hLQ2yS1", ybin, ymin, ymax, lqbin, lqmin, lqmax) hLQ2yS2 = ut.prepare_TH2D("hLQ2yS2", ybin, ymin, ymax, lqbin, lqmin, lqmax) hLQ2yEcal = ut.prepare_TH2D("hLQ2yEcal", ybin, ymin, ymax, lqbin, lqmin, lqmax) can = ut.box_canvas() tree.Draw(lQ2form + ":" + lyform + " >> hLQ2yAll") tree.Draw(lQ2form + ":" + lyform + " >> hLQ2yS1", "lowQ2s1_IsHit==1") tree.Draw(lQ2form + ":" + lyform + " >> hLQ2yS2", "lowQ2s2_IsHit==1") tree.Draw(lQ2form + ":" + lyform + " >> hLQ2yEcal", "ecal_IsHit==1") ytit = "log_{10}(#it{Q}^{2})" #+" / {0:.3f}".format(lqbin)+" GeV^{2}" xtit = "log_{10}(#it{y})" #+" / {0:.1f}".format(xbin) ut.put_yx_tit(hLQ2yAll, ytit, xtit, 1.3, 1.3) ut.set_margin_lbtr(gPad, 0.1, 0.1, 0.01, 0.01) gPad.SetGrid() hLQ2yAll.SetFillColor(rt.kRed - 3) hLQ2yS1.SetFillColor(rt.kYellow) hLQ2yS2.SetFillColor(rt.kGreen) hLQ2yEcal.SetFillColor(rt.kBlue) hLQ2yAll.Draw("box") hLQ2yEcal.Draw("box same") hLQ2yS2.Draw("box same") hLQ2yS1.Draw("box same") leg = ut.prepare_leg(0.12, 0.78, 0.2, 0.18, 0.035) leg.AddEntry(hLQ2yAll, "All quasi-real electrons", "f") leg.AddEntry(hLQ2yS1, "Tagger 1", "f") leg.AddEntry(hLQ2yS2, "Tagger 2", "f") leg.AddEntry(hLQ2yEcal, "ECAL", "f") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def fit_pt2_incoh(): #fit to incoherent MC pT^2 ptbin = 0.008 ptmin = 0. ptmax = 1. mmin = 2.8 mmax = 3.2 strsel = "jRecM>{0:.3f} && jRecM<{1:.3f}".format(mmin, mmax) can = ut.box_canvas() hPtIncoh = ut.prepare_TH1D("hPtIncoh", ptbin, ptmin, ptmax) ut.put_yx_tit(hPtIncoh, "Events / ({0:.3f}".format(ptbin) + " GeV^{2})", "#it{p}_{T}^{2} (GeV^{2})") tree_incoh.Draw("jRecPt*jRecPt >> hPtIncoh", strsel) #hPtIncoh.Sumw2() #hPtIncoh.Scale(1./hPtIncoh.Integral("width")) ut.set_margin_lbtr(gPad, 0.11, 0.09, 0.01, 0.01) func_incoh_pt2 = TF1("func_incoh", "[0]*exp(-[1]*x)", 0., 10.) func_incoh_pt2.SetParName(0, "A") func_incoh_pt2.SetParName(1, "b") func_incoh_pt2.SetNpx(1000) func_incoh_pt2.SetLineColor(rt.kRed) func_incoh_pt2.SetParameters(3000., 5.) r1 = (hPtIncoh.Fit(func_incoh_pt2, "RS")).Get() hPtIncoh.Draw() func_incoh_pt2.Draw("same") leg = ut.prepare_leg(0.67, 0.84, 0.14, 0.12, 0.03) ut.add_leg_mass(leg, mmin, mmax) leg.AddEntry(hPtIncoh, "Incoherent MC") leg.AddEntry(func_incoh_pt2, "#it{A}*exp(-#it{b}*#it{p}_{T}^{2})", "l") leg.Draw("same") desc = pdesc(hPtIncoh, 0.72, 0.84, 0.057) desc.set_text_size(0.03) desc.itemD("#chi^{2}/ndf", r1.Chi2() / r1.Ndf(), -1, rt.kRed) desc.itemRes("#it{A}", r1, 0, rt.kRed) desc.itemRes("#it{b}", r1, 1, rt.kRed) desc.draw() #gPad.SetLogy() ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def acc_gap_both(): #acceptance in gap between taggers and ecal lqmin = -2.9 lqmax = -0.2 #lqmin = -8 #lqmax = 3 acc_py = acc_gap("../data/ir6/lmon_pythia_5M_beff2_5Mevt_v2.root", lqmin, lqmax) #acc_py = acc_gap("../data/ir6/lmon_pythia_5M_beff2_NoSol_5Mevt.root", lqmin, lqmax) #acc_py_close = acc_gap("../data/ir6_close/lmon_pythia_5M_beff2_close_5Mevt.root", -2.4, 0) #acc_py_close = acc_gap("../data/ir6/lmon_pythia_5M_beff2_1p5T_5Mevt.root", -2.9, -0.2) acc_py_close = acc_gap("../data/ir6/lmon_pythia_5M_beff2_1p5T_5Mevt_v2.root", lqmin, lqmax) #acc_py_close = acc_gap("../data/ir6/lmon_pythia_5M_beff2_5Mevt_v2.root", lqmin, lqmax) #acc_py_close = acc_gap("../data/ir6/lmon_pythia_5M_beff2_NoSol_5Mevt_v2.root", lqmin, lqmax) #acc_py_3 = acc_gap("../data/ir6/lmon_pythia_5M_beff2_NoSol_5Mevt.root", lqmin, lqmax) #make the plot can = ut.box_canvas() ut.set_graph(acc_py, rt.kBlue) ut.set_graph(acc_py_close, rt.kRed) #ut.set_graph(acc_py_3, rt.kGreen) #frame = gPad.DrawFrame(-3, 0, 0.1, 1.1) frame = gPad.DrawFrame(-3, 0.03, 0.1, 1.4) # for log scale #frame = gPad.DrawFrame(-10, 0, 4, 1.1) frame.Draw() #ytit = "Acceptance / {0:.1f} %".format(prec*100) ut.put_yx_tit(frame, "Acceptance", "log_{10}(#it{Q}^{2})", 1.6, 1.2) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) gPad.SetGrid() gPad.SetLogy() frame.GetYaxis().SetMoreLogLabels() acc_py.Draw("psame") acc_py_close.Draw("psame") #acc_py_3.Draw("psame") leg = ut.prepare_leg(0.2, 0.84, 0.2, 0.1, 0.035) #leg.AddEntry(acc_qr, "Quasi-real photoproduction", "lp") #leg.AddEntry(acc_py, "Pythia6", "lp") leg.AddEntry(acc_py, "Default geometry", "lp") #leg.AddEntry(acc_py_close, "Magnets in central det", "lp") leg.AddEntry(acc_py_close, "1.5T solenoid", "lp") #leg.AddEntry(acc_py_3, "No solenoid", "lp") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_theta_SigTheta(): #distribution in theta and parametrization tbin = 1e-5 tmax = 1.5e-3 #tbin = 1e-2 #tmax = 1.5 can = ut.box_canvas() ht = ut.prepare_TH1D("ht", tbin, 0, tmax) tree.Draw("(TMath::Pi()-phot_theta) >> ht") #tree.Draw("(TMath::Pi()-phot_theta)*1e3 >> ht") #theta parametrization parse = ConfigParser.RawConfigParser() parse.add_section("main") parse.set("main", "emin", "0.5") parse.set("main", "Ee", "18") parse.set("main", "Ep", "275") gen = gen_zeus(parse) tpar = gen.dSigDtheta tpar.SetNpx(600) tpar.SetLineWidth(3) #scale the parametrization to the plot norm = tbin * ht.Integral() / tpar.Integral(0, tmax) print("norm:", norm) gen.theta_const = norm * gen.theta_const ht.SetYTitle("Events / ({0:.3f}".format(tbin * 1e3) + " mrad)") ht.SetXTitle("#theta_{\gamma} (rad)") ht.SetTitleOffset(1.5, "Y") ht.SetTitleOffset(1.2, "X") ut.set_margin_lbtr(gPad, 0.11, 0.09, 0.02, 0.08) ht.Draw() ht.SetMaximum(5e6) tpar.Draw("same") leg = ut.prepare_leg(0.37, 0.84, 0.2, 0.08, 0.035) leg.AddEntry(tpar, "Bethe-Heitler parametrization", "l") leg.AddEntry(ht, "Angular divergence applied", "lp") leg.Draw("same") gPad.SetLogy() ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_jpsi_logPt2(): # log_10(pT^2) ptbin = 0.12 ptmin = -5. ptmax = 1. mmin = 2.8 mmax = 3.2 strsel = "jRecM>{0:.3f} && jRecM<{1:.3f}".format(mmin, mmax) can = ut.box_canvas() hPt = ut.prepare_TH1D("hPt", ptbin, ptmin, ptmax) hPtCoh = ut.prepare_TH1D("hPtCoh", ptbin / 3., ptmin, ptmax) hPtIncoh = ut.prepare_TH1D("hPtIncoh", ptbin / 3., ptmin, ptmax) hPtGG = ut.prepare_TH1D("hPtGG", ptbin, ptmin, ptmax) ut.put_yx_tit(hPt, "Events / ({0:.3f}".format(ptbin) + " GeV^{2})", "log_{10}( #it{p}_{T}^{2} ) (GeV^{2})") ut.set_margin_lbtr(gPad, 0.11, 0.09, 0.01, 0.01) draw = "TMath::Log10(jRecPt*jRecPt)" tree.Draw(draw + " >> hPt", strsel) tree_coh.Draw(draw + " >> hPtCoh", strsel) tree_incoh.Draw(draw + " >> hPtIncoh", strsel) tree_gg.Draw(draw + " >> hPtGG", strsel) ut.norm_to_data(hPtCoh, hPt, rt.kBlue, -5., -1.8) # norm for coh ut.norm_to_data(hPtIncoh, hPt, rt.kRed, -1.1, 1.) # for incoh ut.norm_to_data(hPtGG, hPt, rt.kGreen, -5., -2.9) # for ggel hPt.Draw() hPtCoh.Draw("same") hPtIncoh.Draw("same") hPtGG.Draw("same") leg = ut.prepare_leg(0.67, 0.79, 0.14, 0.17, 0.03) ut.add_leg_mass(leg, mmin, mmax) leg.AddEntry(hPt, "Data") leg.AddEntry(hPtCoh, "Coherent MC", "l") leg.AddEntry(hPtIncoh, "Incoherent MC", "l") leg.AddEntry(hPtGG, "#gamma#gamma#rightarrow e^{+}e^{-} MC", "l") leg.Draw("same") uoleg = ut.make_uo_leg(hPt, 0.14, 0.9, 0.01, 0.1) uoleg.Draw("same") #gPad.SetLogy() ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_dSigDe_all(): # dSigma / dEgamma over all energies, ZEUS parametrization parse = ConfigParser.RawConfigParser() parse.add_section("main") parse.set("main", "emin", "0.1") # GeV parse.set("main", "Ee", "18") parse.set("main", "Ep", "275") sig_top = gen_zeus(parse).dSigDe parse.set("main", "Ee", "10") parse.set("main", "Ep", "110") sig_mid = gen_zeus(parse).dSigDe parse.set("main", "Ee", "5") parse.set("main", "Ep", "41") sig_low = gen_zeus(parse).dSigDe gStyle.SetPadTickY(1) can = ut.box_canvas() frame = gPad.DrawFrame(0.1, 1, 19, 80) frame.Draw() ut.set_F1(sig_top) ut.set_F1(sig_mid, rt.kYellow + 1) ut.set_F1(sig_low, rt.kBlue) sig_top.Draw("same") sig_mid.Draw("same") sig_low.Draw("same") ytit = "d#sigma / d#it{E}_{#gamma} (mb/GeV)" xtit = "#it{E}_{#gamma} (GeV)" ut.put_yx_tit(frame, ytit, xtit, 1.6, 1.4) ut.set_margin_lbtr(gPad, 0.12, 0.1, 0.01, 0.01) frame.GetYaxis().SetMoreLogLabels() leg = ut.prepare_leg(0.65, 0.77, 0.24, 0.16, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(sig_top, "18 #times 275 GeV", "l") leg.AddEntry(sig_mid, "10 #times 100 GeV", "l") leg.AddEntry(sig_low, "5 #times 41 GeV", "l") leg.Draw("same") gPad.SetLogy() gPad.SetGrid() ut.invert_col(gPad) can.SaveAs("01fig.pdf")
def acc_eta_s2(): #Tagger 2 pseudorapidity emin = -17 emax = -3 amax = 0.3 acc_qr = rt.acc_Q2_kine(tree_qr, "true_el_theta", "lowQ2s2_IsHit") acc_qr.modif = 0 # eta from theta acc_qr.prec = 0.01 acc_qr.bmin = 0.1 #acc_qr.nev = int(1e5) gEtaQr = acc_qr.get() #gprint(gPtQr) acc_py = rt.acc_Q2_kine(tree_py, "true_el_theta", "lowQ2s2_IsHit") acc_py.modif = 0 acc_py.prec = 0.01 acc_py.bmin = 0.1 #acc_py.nev = int(1e5) gEtaPy = acc_py.get() can = ut.box_canvas() frame = gPad.DrawFrame(emin, 0, emax, amax) #ytit = "Acceptance / {0:.1f} %".format(acc_qr.prec*100) ut.put_yx_tit(frame, "Acceptance", "Electron pseudorapidity #eta", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) ut.set_graph(gEtaQr, rt.kRed) gEtaQr.Draw("psame") ut.set_graph(gEtaPy, rt.kBlue) gEtaPy.Draw("psame") gPad.SetGrid() leg = ut.prepare_leg(0.15, 0.78, 0.24, 0.16, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(None, "Tagger 2", "") leg.AddEntry(gEtaPy, "Pythia6", "l") leg.AddEntry(gEtaQr, "QR", "l") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def el_eta_beff(): #electron pseudorapidity eta and angular divergence xbin = 0.1 xmin = -20 xmax = 10 qrpy = 0 if qrpy == 0: tree = tree_qr lab_data = "QR" col = rt.kBlue else: tree = tree_py lab_data = "Pythia6" col = rt.kRed can = ut.box_canvas() hE = ut.prepare_TH1D("hE", xbin, xmin, xmax) hB = ut.prepare_TH1D("hB", xbin, xmin, xmax) form = "-TMath::Log(TMath::Tan(true_el_theta/2.))" form2 = "-TMath::Log(TMath::Tan(el_theta/2.))" tree.Draw(form + " >> hE") tree.Draw(form2 + " >> hB") ut.line_h1(hE, col) ut.line_h1(hB, rt.kViolet) vmax = hB.GetMaximum() + 0.1 * hB.GetMaximum() frame = gPad.DrawFrame(xmin, 0.5, xmax, vmax) ut.put_yx_tit(frame, "Counts", "Electron #eta", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.05, 0.02) gPad.SetGrid() #gPad.SetLogy() hB.Draw("same") hE.Draw("same") leg = ut.prepare_leg(0.56, 0.8, 0.24, 0.12, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(hE, lab_data + ", no divergence", "l") leg.AddEntry(hB, "Divergence included", "l") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_dphi_bemc(): #tracks opening angle at BEMC phibin = 0.01 phimin = 2.4 phimax = 3.1 mmin = 1.5 mmax = 5 #mmin = 2.8 #mmax = 3.2 ptmax = 0.17 strsel = "jRecM>{0:.3f} && jRecM<{1:.3f} && jRecPt<{2:.3f}".format( mmin, mmax, ptmax) can = ut.box_canvas() hDphi = ut.prepare_TH1D("hDphi", phibin, phimin, phimax) hDphiMC = ut.prepare_TH1D("hDphiMC", phibin, phimin, phimax) ut.put_yx_tit(hDphi, "Events / {0:.2f}".format(phibin), "Tracks #Delta#phi at BEMC") ut.put_yx_tit(hDphiMC, "Events / {0:.2f}".format(phibin), "Tracks #Delta#phi at BEMC") ut.set_margin_lbtr(gPad, 0.1, 0.08, 0.014, 0.01) tree.Draw("jDeltaPhiBemc >> hDphi", strsel) mctree.Draw("jDeltaPhiBemc >> hDphiMC", strsel) ut.norm_to_data(hDphiMC, hDphi, rt.kBlue) hDphiMC.Draw() hDphi.Draw("e1same") #hDphi.Draw() hDphiMC.Draw("same") lin = ut.cut_line(2.618, 0.5, hDphi) lin.Draw("same") leg = ut.prepare_leg(0.14, 0.71, 0.14, 0.21, 0.03) ut.add_leg_pt_mass(leg, ptmax, mmin, mmax) leg.AddEntry(hDphi, "Data") leg.AddEntry(hDphiMC, "MC", "l") leg.AddEntry(lin, "Cut at 2.618", "l") leg.Draw("same") uoleg = ut.make_uo_leg(hDphi, 0.14, 0.9, 0.01, 0.1) uoleg.Draw("same") ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def el_theta_beff(): #electron polar angle theta and effect of angular divergence xbin = 5e-5 #xmin = TMath.Pi() - 2.2e-2 xmin = 3.13 xmax = TMath.Pi() + 0.2e-2 qrpy = 0 if qrpy == 0: tree = tree_qr lab_data = "QR" col = rt.kBlue else: tree = tree_py lab_data = "Pythia6" col = rt.kRed can = ut.box_canvas() hT = ut.prepare_TH1D("hT", xbin, xmin, xmax) hB = ut.prepare_TH1D("hB", xbin, xmin, xmax) tree.Draw("true_el_theta >> hT") tree.Draw("el_theta >> hB") ut.line_h1(hT, col) ut.line_h1(hB, rt.kViolet) vmax = hT.GetMaximum() + 0.4 * hT.GetMaximum() frame = gPad.DrawFrame(xmin, 1e3, xmax, vmax) ut.put_yx_tit(frame, "Counts", "Electron #theta (rad)", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) gPad.SetGrid() gPad.SetLogy() hB.Draw("same") hT.Draw("same") leg = ut.prepare_leg(0.14, 0.8, 0.24, 0.12, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(hT, lab_data + ", no divergence", "l") leg.AddEntry(hB, "Divergence included", "l") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def acc_theta_s12(): #acceptance in electron polar angle for tagger 1 and tagger 2 inp = "/home/jaroslav/sim/lmon/data/taggers/tag1a/hits_tag.root" #inp = "/home/jaroslav/sim/lmon/data/taggers/tag1ax1/hits_tag.root" infile = TFile.Open(inp) tree = infile.Get("event") tmin = TMath.Pi() - 1.1e-2 tmax = TMath.Pi() + 1e-3 #amax = 0.25 amax = 0.4 as1 = rt.acc_Q2_kine(tree, "true_el_theta", "s1_IsHit") as1.prec = 0.1 as1.bmin = 2e-4 #as1.nev = int(1e5) gs1 = as1.get() as2 = rt.acc_Q2_kine(tree, "true_el_theta", "s2_IsHit") as2.prec = 0.1 as2.bmin = 2e-4 #as2.nev = int(1e5) gs2 = as2.get() can = ut.box_canvas() frame = gPad.DrawFrame(tmin, 0, tmax, amax) ut.put_yx_tit(frame, "Tagger acceptance", "Electron polar angle #it{#theta} (rad)", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) ut.set_graph(gs1, rt.kRed) gs1.Draw("psame") ut.set_graph(gs2, rt.kBlue) gs2.Draw("psame") gPad.SetGrid() leg = ut.prepare_leg(0.15, 0.82, 0.24, 0.12, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(gs1, "Tagger 1", "lp") leg.AddEntry(gs2, "Tagger 2", "lp") leg.Draw("same") ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def conv_theta(): #conversion probablity as a function of polar angle theta tbin = 2e-4 tmin = 0 tmax = 2.5e-3 prec = 0.01 delt = 1e-6 gROOT.LoadMacro("get_ew_conv.C") #hEffV1 = rt.get_ew_conv(tree_v1, "phot_theta", "ew_conv", prec, delt, -1., TMath.Pi()) hEffV2 = rt.get_ew_conv(tree_v2, "phot_theta", "ew_conv", prec, delt, -1., TMath.Pi()) #hEffV1 = get_eff(tree_v1, "TMath::Pi()-phot_theta", "ew_conv", tbin, tmin, tmax) #hEffV2 = get_eff(tree_v2, "TMath::Pi()-phot_theta", "ew_conv", tbin, tmin, tmax) #ut.set_graph(hEffV1, rt.kBlue) #ut.set_graph(hEffV2, rt.kRed, rt.kFullTriangleUp) #hEffV2.SetMarkerSize(1.5) ut.set_graph(hEffV2) #plot the probability can = ut.box_canvas() frame = gPad.DrawFrame(tmin, 0.065, tmax, 0.095) frame.SetXTitle("Generated #vartheta (rad)") frame.SetYTitle("Conversion probability") frame.SetTitleOffset(2.1, "Y") frame.SetTitleOffset(1.5, "X") ut.set_margin_lbtr(gPad, 0.14, 0.11, 0.02, 0.01) frame.Draw() #hEffV1.Draw("psame") hEffV2.Draw("psame") leg = ut.prepare_leg(0.2, 0.84, 0.2, 0.1, 0.035) #leg.AddEntry(hEffV1, "Tilted plane", "lp") leg.AddEntry(hEffV2, "Half-cylinder", "lp") #leg.Draw("same") gPad.SetLogx() #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def acc_phi_s2(): #Tagger 2 phi pmin = -TMath.Pi() - 0.3 pmax = TMath.Pi() + 0.3 amax = 0.3 acc_qr = rt.acc_Q2_kine(tree_qr, "true_el_phi", "lowQ2s2_IsHit") acc_qr.prec = 0.01 #acc_qr.bmin = 2e-4 #acc_qr.nev = int(1e5) gPhiQr = acc_qr.get() #gprint(gPtQr) acc_py = rt.acc_Q2_kine(tree_py, "true_el_phi", "lowQ2s2_IsHit") acc_py.prec = 0.01 #acc_py.bmin = 2e-4 #acc_py.nev = int(1e4) gPhiPy = acc_py.get() can = ut.box_canvas() frame = gPad.DrawFrame(pmin, 0, pmax, amax) #ytit = "Acceptance / {0:.1f} %".format(acc_qr.prec*100) ut.put_yx_tit(frame, "Acceptance", "Electron azimuthal angle #phi (rad)", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) ut.set_graph(gPhiQr, rt.kRed) gPhiQr.Draw("psame") ut.set_graph(gPhiPy, rt.kBlue) gPhiPy.Draw("psame") gPad.SetGrid() leg = ut.prepare_leg(0.72, 0.78, 0.24, 0.16, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(None, "Tagger 2", "") leg.AddEntry(gPhiPy, "Pythia6", "l") leg.AddEntry(gPhiQr, "QR", "l") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def el_phi_beff(): #electron azimuthal angle phi xbin = 3e-2 xmin = -TMath.Pi() - 0.3 xmax = TMath.Pi() + 0.3 qrpy = 0 if qrpy == 0: tree = tree_qr lab_data = "QR" col = rt.kBlue else: tree = tree_py lab_data = "Pythia6" col = rt.kRed can = ut.box_canvas() hP = ut.prepare_TH1D("hP", xbin, xmin, xmax) hB = ut.prepare_TH1D("hB", xbin, xmin, xmax) tree.Draw("true_el_phi >> hP") tree.Draw("el_phi >> hB") ut.line_h1(hP, col) ut.line_h1(hB, rt.kViolet) vmax = hP.GetMaximum() + 0.5 * hP.GetMaximum() frame = gPad.DrawFrame(xmin, 0.5, xmax, vmax) ut.put_yx_tit(frame, "Counts", "Electron #phi (rad)", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.05, 0.02) gPad.SetGrid() #gPad.SetLogy() hB.Draw("same") hP.Draw("same") leg = ut.prepare_leg(0.55, 0.8, 0.24, 0.12, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(hP, lab_data + ", no divergence", "l") leg.AddEntry(hB, "Divergence included", "l") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def acc_en_s1(): #Tagger 1 energy emin = 0 emax = 15 amax = 1 acc_qr = rt.acc_Q2_kine(tree_qr, "true_el_E", "lowQ2s1_IsHit") acc_qr.prec = 0.05 acc_qr.bmin = 0.1 #acc_qr.nev = int(1e5) gEnQr = acc_qr.get() #gprint(gPtQr) acc_py = rt.acc_Q2_kine(tree_py, "true_el_E", "lowQ2s1_IsHit") acc_py.prec = 0.05 acc_py.bmin = 0.1 #acc_py.nev = int(1e5) gEnPy = acc_py.get() can = ut.box_canvas() frame = gPad.DrawFrame(emin, 0, emax, amax) #ytit = "Acceptance / {0:.1f} %".format(acc_qr.prec*100) ut.put_yx_tit(frame, "Acceptance", "Electron energy #it{E} (GeV)", 1.6, 1.3) frame.Draw() ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.03, 0.02) ut.set_graph(gEnQr, rt.kRed) gEnQr.Draw("psame") ut.set_graph(gEnPy, rt.kBlue) gEnPy.Draw("psame") gPad.SetGrid() leg = ut.prepare_leg(0.15, 0.78, 0.24, 0.16, 0.035) # x, y, dx, dy, tsiz leg.AddEntry(None, "Tagger 1", "") leg.AddEntry(gEnPy, "Pythia6", "l") leg.AddEntry(gEnQr, "QR", "l") leg.Draw("same") ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_zdc_vtx(): #ZDC vertex from selected events and from all triggered events vbin = 0.1 vmin = -5. vmax = 7. mmin = 1.5 mmax = 5. can = ut.box_canvas() #selection string strsel = "jRecM>{0:.3f} && jRecM<{1:.3f}".format(mmin, mmax) #make the histograms hZdcVtx = ut.prepare_TH1D("hZdcVtx", vbin, vmin, vmax) hZdcVtxAll = ut.prepare_TH1D("hZdcVtxAll", vbin / 10., vmin, vmax) #convert to meters for plot tree.Draw("jZDCVtxZ/100. >> hZdcVtx", strsel) treeAll = inp.Get("jAllTree") treeAll.Draw("jZDCVtxZ/100. >> hZdcVtxAll") ut.norm_to_data(hZdcVtxAll, hZdcVtx, rt.kRed) hZdcVtx.SetYTitle("Events / {0:.0f} cm".format(vbin * 100.)) hZdcVtx.SetXTitle("ZDC vertex along #it{z} (meters)") hZdcVtx.SetTitleOffset(1.5, "Y") hZdcVtx.SetTitleOffset(1.1, "X") gPad.SetTopMargin(0.01) gPad.SetRightMargin(0.04) gPad.SetBottomMargin(0.08) gPad.SetLeftMargin(0.1) leg = ut.prepare_leg(0.67, 0.8, 0.28, 0.14, 0.025) leg.SetMargin(0.17) ut.add_leg_mass(leg, mmin, mmax) leg.AddEntry(hZdcVtx, "Selected events") leg.AddEntry(hZdcVtxAll, "All UPC-JpsiB triggers", "l") #gPad.SetLogy() hZdcVtx.Draw() hZdcVtxAll.Draw("same") leg.Draw("same") ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_vtx_z(): #primary vertex position along z from data and MC vbin = 4. vmax = 120. mmin = 1.5 mmax = 5 strsel = "jRecM>{0:.3f} && jRecM<{1:.3f}".format(mmin, mmax) can = ut.box_canvas() hVtx = ut.prepare_TH1D("hVtx", vbin, -vmax, vmax) hVtxMC = ut.prepare_TH1D("hVtxMC", vbin/2., -vmax, vmax) tree.Draw("jVtxZ >> hVtx", strsel) mctree.Draw("jVtxZ >> hVtxMC", strsel) ut.norm_to_data(hVtxMC, hVtx, rt.kBlue, -40, 40) hVtx.SetYTitle("Counts / {0:.0f} cm".format(vbin)); hVtx.SetXTitle("#it{z} of primary vertex (cm)"); hVtx.SetTitleOffset(1.5, "Y") hVtx.SetTitleOffset(1.3, "X") gPad.SetTopMargin(0.02) gPad.SetRightMargin(0.02) gPad.SetBottomMargin(0.1) gPad.SetLeftMargin(0.11) cut_lo = ut.cut_line(-30, 0.8, hVtx) cut_hi = ut.cut_line(30, 0.8, hVtx) leg = ut.prepare_leg(0.16, 0.82, 0.26, 0.12, 0.025) #leg.SetMargin(0.15) #leg.SetBorderSize(1) ut.add_leg_mass(leg, mmin, mmax) leg.AddEntry(hVtx, "Data") #leg.AddEntry(hVtxMC, "MC, coherent J/#it{#psi}", "l") leg.AddEntry(hVtxMC, "MC, #it{#gamma}#it{#gamma} #rightarrow e^{+}e^{-}", "l") leg.AddEntry(cut_lo, "Cut at #pm30 cm", "l") hVtx.Draw() hVtxMC.Draw("same") leg.Draw("same") cut_lo.Draw("same") cut_hi.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def plot_zdc(): #ZDC ADC counts east or west 1D ew = 0 zbin = 10. zmin = 0. zmax = 1300. znam = ["jZDCUnAttEast", "jZDCUnAttWest"] xtit = ["ZDC East ADC", "ZDC West ADC"] lhead = ["East ZDC", "West ZDC"] #global gPad can = ut.box_canvas() hZdc = ut.prepare_TH1D("hZdc", zbin, zmin, zmax) hZdcAll = ut.prepare_TH1D("hZdcAll", zbin, zmin, zmax) tree.Draw(znam[ew] + " >> hZdc") treeAll = inp.Get("jAllTree") treeAll.Draw(znam[ew] + " >> hZdcAll") ut.norm_to_data(hZdcAll, hZdc, rt.kRed) hZdc.SetYTitle("Events / {0:.1f}".format(zbin)) hZdc.SetXTitle(xtit[ew]) hZdc.SetTitleOffset(1.5, "Y") hZdc.SetTitleOffset(1.1, "X") gPad.SetTopMargin(0.01) gPad.SetRightMargin(0.08) gPad.SetBottomMargin(0.08) gPad.SetLeftMargin(0.1) leg = ut.prepare_leg(0.5, 0.76, 0.39, 0.16, 0.035) leg.SetMargin(0.17) leg.AddEntry(None, lhead[ew], "") leg.AddEntry(hZdc, "Selected events") leg.AddEntry(hZdcAll, "All UPC-JpsiB triggers", "l") hZdc.Draw() hZdcAll.Draw("same") leg.Draw("same") #ut.print_pad(rt.gPad) ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def el_en(): #electron energy for all events and for electrons hitting the tagger ebin = 0.1 emin = 0 emax = 20 can = ut.box_canvas() #all generated electrons hEnAll = ut.prepare_TH1D("hEnAll", ebin, emin, emax) #electrons hitting the tagger hEnTag = ut.prepare_TH1D("hEnTag", ebin, emin, emax) tree.Draw("el_gen >> hEnAll") tree.Draw("el_gen >> hEnTag", "lowQ2s1_IsHit == 1") #tree.Draw("el_gen >> hEnTag", "lowQ2s2_IsHit == 1") #tree.Draw("lowQ2s2_en >> hEnTag", "lowQ2s2_IsHit == 1") #tree.Draw("lowQ2s1_en >> hEnTag", "lowQ2s1_IsHit == 1") #tree.Draw("lowQ2_en/1e3 >> hEnTag", "lowQ2_IsHit == 1") #tree.Draw("lowQ2_EnPrim/1e3 >> hEnTag", "lowQ2_IsHit == 1") ut.line_h1(hEnAll) # , rt.kBlack ut.set_H1D_col(hEnTag, rt.kRed) hEnAll.SetYTitle("Events / ({0:.3f}".format(ebin) + " GeV)") hEnAll.SetXTitle("#it{E}_{e^{-}} (GeV)") hEnAll.SetTitleOffset(1.5, "Y") hEnAll.SetTitleOffset(1.3, "X") ut.set_margin_lbtr(gPad, 0.11, 0.1, 0.05, 0.02) hEnAll.Draw() hEnTag.Draw("same") #hEnTag.Draw() gPad.SetLogy() leg = ut.prepare_leg(0.2, 0.8, 0.2, 0.1, 0.035) #leg.AddEntry(hEnAll, "All electrons", "l") #leg.AddEntry(hEnAll, "All quasi-real electrons", "l") leg.AddEntry(hEnAll, "All bremsstrahlung electrons", "l") #leg.AddEntry(hEnTag, "Electrons hitting the tagger", "l") #leg.Draw("same") ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")
def theta_both(): #inp = "/home/jaroslav/sim/bhgen/data/g18x275_emin0p5/evt.root" inp = "/home/jaroslav/sim/bhgen/data/g18x275_emin0p5_100Mevt/evt.root" #inp = "/home/jaroslav/sim/bhgen/data/g10x100_emin0p5_100Mevt/evt.root" #photon scattering angle as pi - theta, mrad xbin = 0.2 xmin = 0 xmax = 12 #electron scattering angle as pi - theta_e, mrad ybin = 0.6 ymin = 0 ymax = 30 infile = TFile.Open(inp) tree = infile.Get("bhgen_tree") can = ut.box_canvas() hXY = ut.prepare_TH2D("hXY", xbin, xmin, xmax, ybin, ymin, ymax) sel = "(p_pt*1e3>50)&&(el_en>8)&&(el_en<16)&&(phot_en>5)" tree.Draw("((TMath::Pi()-el_theta)*1000):((TMath::Pi()-phot_theta)*1000) >> hXY", sel) ytit = "Electron scattering angle #it{#pi}-#it{#theta}_{e} (mrad)" xtit = "Photon scattering angle #it{#pi}-#it{#theta}_{#gamma} (mrad)" ut.put_yx_tit(hXY, ytit, xtit, 1.3, 1.3) ut.set_margin_lbtr(gPad, 0.1, 0.1, 0.015, 0.11) gPad.SetGrid() gPad.SetLogz() hXY.SetMinimum(0.98) hXY.SetContour(300) hXY.Draw("colz") leg = ut.prepare_leg(0.45, 0.75, 0.24, 0.2, 0.035) # x, y, dx, dy, tsiz leg.AddEntry("", "18x275 GeV", "") #leg.AddEntry("", "10x100 GeV", "") leg.AddEntry("", "Proton #it{p}_{T} > 50 MeV", "") leg.AddEntry("", "Electron 8 < #it{E}_{e} < 16 GeV", "") leg.AddEntry("", "Photon #it{E}_{#gamma} > 5 GeV", "") leg.Draw("same") #ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf")