Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
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")
Ejemplo n.º 3
0
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")
Ejemplo n.º 4
0
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")
Ejemplo n.º 5
0
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")
Ejemplo n.º 6
0
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")
Ejemplo n.º 7
0
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")
Ejemplo n.º 8
0
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")
Ejemplo n.º 9
0
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")
Ejemplo n.º 10
0
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")
Ejemplo n.º 11
0
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")
Ejemplo n.º 12
0
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")
Ejemplo n.º 13
0
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")
Ejemplo n.º 14
0
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")
Ejemplo n.º 15
0
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")
Ejemplo n.º 16
0
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")
Ejemplo n.º 17
0
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")
Ejemplo n.º 18
0
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")
Ejemplo n.º 19
0
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")
Ejemplo n.º 20
0
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")
Ejemplo n.º 21
0
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")
Ejemplo n.º 22
0
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")
Ejemplo n.º 23
0
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")
Ejemplo n.º 24
0
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")
Ejemplo n.º 25
0
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")
Ejemplo n.º 26
0
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")
Ejemplo n.º 27
0
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")
Ejemplo n.º 28
0
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")
Ejemplo n.º 29
0
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")
Ejemplo n.º 30
0
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")