|
|
@ -120,7 +120,7 @@ def getTrackNames(): |
|
|
|
|
|
|
|
|
|
|
|
def get_colors(): |
|
|
|
return [kBlack, kAzure, kGreen + 2, kMagenta + 2, kRed, kCyan + 2, kGray + 3] |
|
|
|
return [kBlack, kAzure, kGreen + 2, kMagenta + 2, kRed, kCyan + 2, kGray + 1] |
|
|
|
|
|
|
|
|
|
|
|
def get_elec_colors(): |
|
|
@ -129,10 +129,10 @@ def get_elec_colors(): |
|
|
|
kBlue - 3, |
|
|
|
kRed + 1, |
|
|
|
kGreen + 1, |
|
|
|
kGray + 3, # kTeal - 1, |
|
|
|
kBlue - 7, |
|
|
|
kTeal - 1, |
|
|
|
kOrange + 8, |
|
|
|
kGray + 3, |
|
|
|
kGray + 1, |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
@ -261,11 +261,14 @@ def get_eff(eff, hist, tf, histoName, label, var): |
|
|
|
for i, lab in enumerate(label): |
|
|
|
numeratorName = histoName + "_reconstructed" |
|
|
|
denominatorName = histoName + "_reconstructible" |
|
|
|
denominator = findRootObjByName(tf[lab], denominatorName) |
|
|
|
try: |
|
|
|
numerator = findRootObjByName(tf[lab], numeratorName) |
|
|
|
denominator = findRootObjByName(tf[lab], denominatorName) |
|
|
|
try: |
|
|
|
numerator = findRootObjByName(tf[lab], numeratorName) |
|
|
|
except: |
|
|
|
numerator = denominator |
|
|
|
except: |
|
|
|
numerator = denominator |
|
|
|
continue |
|
|
|
|
|
|
|
if numerator.GetEntries() == 0 or denominator.GetEntries() == 0: |
|
|
|
continue |
|
|
@ -297,9 +300,9 @@ def get_eff(eff, hist, tf, histoName, label, var): |
|
|
|
eff[lab].SetTitle(lab + " Match") |
|
|
|
if histoName.find("Seed") != -1: |
|
|
|
if histoName.find("electron") != -1: |
|
|
|
eff[lab].SetTitle(lab + " Seed, e^{-}") |
|
|
|
eff[lab].SetTitle("particle Seed, e^{-}") |
|
|
|
else: |
|
|
|
eff[lab].SetTitle(lab + " Seed") |
|
|
|
eff[lab].SetTitle("particle Seed") |
|
|
|
if histoName.find("BestLong") != -1: |
|
|
|
if histoName.find("electron") != -1: |
|
|
|
eff[lab].SetTitle(lab + " BestLong, e^{-}") |
|
|
@ -326,8 +329,11 @@ def get_ghost(eff, hist, tf, histoName, label): |
|
|
|
for i, lab in enumerate(label): |
|
|
|
numeratorName = histoName + "_Ghosts" |
|
|
|
denominatorName = histoName + "_Total" |
|
|
|
numerator = findRootObjByName(tf[lab], numeratorName) |
|
|
|
denominator = findRootObjByName(tf[lab], denominatorName) |
|
|
|
try: |
|
|
|
numerator = findRootObjByName(tf[lab], numeratorName) |
|
|
|
denominator = findRootObjByName(tf[lab], denominatorName) |
|
|
|
except: |
|
|
|
continue |
|
|
|
print("Numerator = " + numeratorName.replace(unique_name_ext_re(), "")) |
|
|
|
print("Denominator = " + denominatorName.replace(unique_name_ext_re(), "")) |
|
|
|
teff = TEfficiency(numerator, denominator) |
|
|
@ -395,303 +401,304 @@ def PrCheckerEfficiency( |
|
|
|
for f in checks_files: |
|
|
|
os.remove(f) |
|
|
|
|
|
|
|
for tracker in trackers: |
|
|
|
outputfile.cd() |
|
|
|
trackerDir = outputfile.mkdir(tracker) |
|
|
|
trackerDir.cd() |
|
|
|
|
|
|
|
for cut in cuts[tracker]: |
|
|
|
cutDir = trackerDir.mkdir(cut) |
|
|
|
cutDir.cd() |
|
|
|
folder = folders[tracker]["folder"] |
|
|
|
print("folder: " + folder.replace(unique_name_ext_re(), "")) |
|
|
|
histoBaseName = "Track/" + folder + tracker + "/" + cut + "_" |
|
|
|
|
|
|
|
# calculate efficiency |
|
|
|
for histo in efficiencyHistos: |
|
|
|
canvastitle = ( |
|
|
|
"efficiency_" + histo + ", " + categories[tracker][cut]["title"] |
|
|
|
) |
|
|
|
# get efficiency for not electrons category |
|
|
|
histoName = histoBaseName + "" + efficiencyHistoDict[histo]["variable"] |
|
|
|
print("not electrons: " + histoName.replace(unique_name_ext_re(), "")) |
|
|
|
eff = {} |
|
|
|
hist_den = {} |
|
|
|
eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) |
|
|
|
if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
histoNameElec = ( |
|
|
|
"Track/" |
|
|
|
+ folder |
|
|
|
+ tracker |
|
|
|
+ "/" |
|
|
|
+ categories[tracker][cut]["Electrons"] |
|
|
|
) |
|
|
|
histoName_e = ( |
|
|
|
histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] |
|
|
|
) |
|
|
|
print("electrons: " + histoName_e.replace(unique_name_ext_re(), "")) |
|
|
|
eff_elec = {} |
|
|
|
hist_elec = {} |
|
|
|
eff_elec, hist_elec = get_eff( |
|
|
|
eff_elec, |
|
|
|
hist_elec, |
|
|
|
tf, |
|
|
|
histoName_e, |
|
|
|
label, |
|
|
|
histo, |
|
|
|
) |
|
|
|
if ( |
|
|
|
categories[tracker][cut]["plotEndVelo"] |
|
|
|
and plot_velo |
|
|
|
and (histo == "p" or histo == "pt") |
|
|
|
): |
|
|
|
histoNameEndVelo = ( |
|
|
|
"Track/" |
|
|
|
+ folder |
|
|
|
+ tracker |
|
|
|
+ "/" |
|
|
|
+ categories[tracker][cut]["EndVelo"] |
|
|
|
) |
|
|
|
histoName_v = ( |
|
|
|
histoNameEndVelo |
|
|
|
+ "_" |
|
|
|
+ efficiencyHistoDict[histo]["variable"] |
|
|
|
) |
|
|
|
print( |
|
|
|
"EndVelo: " + histoName_v.replace(unique_name_ext_re(), "") |
|
|
|
) |
|
|
|
eff_velo = {} |
|
|
|
hist_velo = {} |
|
|
|
eff_velo, hist_velo = get_eff( |
|
|
|
eff_velo, |
|
|
|
hist_velo, |
|
|
|
tf, |
|
|
|
histoName_v, |
|
|
|
label, |
|
|
|
histo, |
|
|
|
) |
|
|
|
name = "efficiency_" + histo |
|
|
|
canvas = TCanvas(name, canvastitle) |
|
|
|
canvas.SetRightMargin(0.1) |
|
|
|
mg = TMultiGraph() |
|
|
|
for i, lab in enumerate(label): |
|
|
|
if not plot_electrons_only: # and not plot_velo_only: |
|
|
|
mg.Add(eff[lab]) |
|
|
|
set_style(eff[lab], colors[i], markers[i], styles[i]) |
|
|
|
if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
if not plot_velo_only or ( |
|
|
|
histo == "phi" or histo == "eta" or histo == "nPV" |
|
|
|
): |
|
|
|
mg.Add(eff_elec[lab]) |
|
|
|
set_style( |
|
|
|
eff_elec[lab], elec_colors[i], markers[i], styles[i] |
|
|
|
) |
|
|
|
if ( |
|
|
|
categories[tracker][cut]["plotEndVelo"] |
|
|
|
and plot_velo |
|
|
|
and (histo == "p" or histo == "pt") |
|
|
|
): |
|
|
|
mg.Add(eff_velo[lab]) |
|
|
|
set_style(eff_velo[lab], kBlue - 7, markers[i], styles[i]) |
|
|
|
|
|
|
|
mg.Draw("AP") |
|
|
|
mg.GetYaxis().SetRangeUser(0, 1.05) |
|
|
|
xtitle = efficiencyHistoDict[histo]["xTitle"] |
|
|
|
unit_l = xtitle.split("[") |
|
|
|
if "]" in unit_l[-1]: |
|
|
|
unit = unit_l[-1].replace("]", "") |
|
|
|
else: |
|
|
|
unit = "a.u." |
|
|
|
print(unit) |
|
|
|
mg.GetXaxis().SetTitle(xtitle) |
|
|
|
mg.GetXaxis().SetTitleSize(0.06) |
|
|
|
mg.GetYaxis().SetTitle( |
|
|
|
"Efficiency of Long Tracks", |
|
|
|
) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") |
|
|
|
mg.GetYaxis().SetTitleSize(0.06) |
|
|
|
mg.GetYaxis().SetTitleOffset(1.1) |
|
|
|
mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) |
|
|
|
mg.GetXaxis().SetNdivisions(10, 5, 0) |
|
|
|
mygray = 18 |
|
|
|
myblue = kBlue - 10 |
|
|
|
mypurple = kMagenta - 10 |
|
|
|
for i, lab in enumerate(label): |
|
|
|
rightmax = 1.05 * hist_den[lab].GetMaximum() |
|
|
|
scale = gPad.GetUymax() / rightmax |
|
|
|
hist_den[lab].Scale(scale) |
|
|
|
if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
rightmax = 1.05 * hist_elec[lab].GetMaximum() |
|
|
|
scale = gPad.GetUymax() / rightmax |
|
|
|
hist_elec[lab].Scale(scale) |
|
|
|
if ( |
|
|
|
categories[tracker][cut]["plotEndVelo"] |
|
|
|
and plot_velo |
|
|
|
and (histo == "p" or histo == "pt") |
|
|
|
): |
|
|
|
rightmax = 1.05 * hist_velo[lab].GetMaximum() |
|
|
|
scale = gPad.GetUymax() / rightmax |
|
|
|
hist_velo[lab].Scale(scale) |
|
|
|
# for tracker in trackers: |
|
|
|
# outputfile.cd() |
|
|
|
# trackerDir = outputfile.mkdir(tracker) |
|
|
|
# trackerDir.cd() |
|
|
|
|
|
|
|
# for cut in cuts[tracker]: |
|
|
|
# cutDir = trackerDir.mkdir(cut) |
|
|
|
# cutDir.cd() |
|
|
|
# folder = folders[tracker]["folder"] |
|
|
|
# print("folder: " + folder.replace(unique_name_ext_re(), "")) |
|
|
|
# histoBaseName = "Track/" + folder + tracker + "/" + cut + "_" |
|
|
|
|
|
|
|
# # calculate efficiency |
|
|
|
# for histo in efficiencyHistos: |
|
|
|
# canvastitle = ( |
|
|
|
# "efficiency_" + histo + ", " + categories[tracker][cut]["title"] |
|
|
|
# ) |
|
|
|
# # get efficiency for not electrons category |
|
|
|
# histoName = histoBaseName + "" + efficiencyHistoDict[histo]["variable"] |
|
|
|
# print("not electrons: " + histoName.replace(unique_name_ext_re(), "")) |
|
|
|
# eff = {} |
|
|
|
# hist_den = {} |
|
|
|
# eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) |
|
|
|
# if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
# histoNameElec = ( |
|
|
|
# "Track/" |
|
|
|
# + folder |
|
|
|
# + tracker |
|
|
|
# + "/" |
|
|
|
# + categories[tracker][cut]["Electrons"] |
|
|
|
# ) |
|
|
|
# histoName_e = ( |
|
|
|
# histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] |
|
|
|
# ) |
|
|
|
# print("electrons: " + histoName_e.replace(unique_name_ext_re(), "")) |
|
|
|
# eff_elec = {} |
|
|
|
# hist_elec = {} |
|
|
|
# eff_elec, hist_elec = get_eff( |
|
|
|
# eff_elec, |
|
|
|
# hist_elec, |
|
|
|
# tf, |
|
|
|
# histoName_e, |
|
|
|
# label, |
|
|
|
# histo, |
|
|
|
# ) |
|
|
|
# if ( |
|
|
|
# categories[tracker][cut]["plotEndVelo"] |
|
|
|
# and plot_velo |
|
|
|
# and (histo == "p" or histo == "pt") |
|
|
|
# ): |
|
|
|
# histoNameEndVelo = ( |
|
|
|
# "Track/" |
|
|
|
# + folder |
|
|
|
# + tracker |
|
|
|
# + "/" |
|
|
|
# + categories[tracker][cut]["EndVelo"] |
|
|
|
# ) |
|
|
|
# histoName_v = ( |
|
|
|
# histoNameEndVelo |
|
|
|
# + "_" |
|
|
|
# + efficiencyHistoDict[histo]["variable"] |
|
|
|
# ) |
|
|
|
# print( |
|
|
|
# "EndVelo: " + histoName_v.replace(unique_name_ext_re(), "") |
|
|
|
# ) |
|
|
|
# eff_velo = {} |
|
|
|
# hist_velo = {} |
|
|
|
# eff_velo, hist_velo = get_eff( |
|
|
|
# eff_velo, |
|
|
|
# hist_velo, |
|
|
|
# tf, |
|
|
|
# histoName_v, |
|
|
|
# label, |
|
|
|
# histo, |
|
|
|
# ) |
|
|
|
# name = "efficiency_" + histo |
|
|
|
# canvas = TCanvas(name, canvastitle) |
|
|
|
# canvas.SetRightMargin(0.1) |
|
|
|
# mg = TMultiGraph() |
|
|
|
# for i, lab in enumerate(label): |
|
|
|
# if not plot_electrons_only: # and not plot_velo_only: |
|
|
|
# mg.Add(eff[lab]) |
|
|
|
# set_style(eff[lab], colors[i], markers[i], styles[i]) |
|
|
|
# if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
# if not plot_velo_only or ( |
|
|
|
# histo == "phi" or histo == "eta" or histo == "nPV" |
|
|
|
# ): |
|
|
|
# mg.Add(eff_elec[lab]) |
|
|
|
# set_style( |
|
|
|
# eff_elec[lab], elec_colors[i], markers[i], styles[i] |
|
|
|
# ) |
|
|
|
# if ( |
|
|
|
# categories[tracker][cut]["plotEndVelo"] |
|
|
|
# and plot_velo |
|
|
|
# and (histo == "p" or histo == "pt") |
|
|
|
# ): |
|
|
|
# mg.Add(eff_velo[lab]) |
|
|
|
# set_style(eff_velo[lab], kBlue - 7, markers[i], styles[i]) |
|
|
|
|
|
|
|
# mg.Draw("AP") |
|
|
|
# mg.GetYaxis().SetRangeUser(0, 1.05) |
|
|
|
# xtitle = efficiencyHistoDict[histo]["xTitle"] |
|
|
|
# unit_l = xtitle.split("[") |
|
|
|
# if "]" in unit_l[-1]: |
|
|
|
# unit = unit_l[-1].replace("]", "") |
|
|
|
# else: |
|
|
|
# unit = "a.u." |
|
|
|
# print(unit) |
|
|
|
# mg.GetXaxis().SetTitle(xtitle) |
|
|
|
# mg.GetXaxis().SetTitleSize(0.06) |
|
|
|
# mg.GetYaxis().SetTitle( |
|
|
|
# "Efficiency of Long Tracks", |
|
|
|
# ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") |
|
|
|
# mg.GetYaxis().SetTitleSize(0.06) |
|
|
|
# mg.GetYaxis().SetTitleOffset(1.1) |
|
|
|
# mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) |
|
|
|
# mg.GetXaxis().SetNdivisions(10, 5, 0) |
|
|
|
# mygray = 18 |
|
|
|
# myblue = kBlue - 10 |
|
|
|
# mypurple = kMagenta - 10 |
|
|
|
# for i, lab in enumerate(label): |
|
|
|
# rightmax = 1.05 * hist_den[lab].GetMaximum() |
|
|
|
# scale = gPad.GetUymax() / rightmax |
|
|
|
# hist_den[lab].Scale(scale) |
|
|
|
# if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
# rightmax = 1.05 * hist_elec[lab].GetMaximum() |
|
|
|
# scale = gPad.GetUymax() / rightmax |
|
|
|
# hist_elec[lab].Scale(scale) |
|
|
|
# if ( |
|
|
|
# categories[tracker][cut]["plotEndVelo"] |
|
|
|
# and plot_velo |
|
|
|
# and (histo == "p" or histo == "pt") |
|
|
|
# ): |
|
|
|
# rightmax = 1.05 * hist_velo[lab].GetMaximum() |
|
|
|
# scale = gPad.GetUymax() / rightmax |
|
|
|
# hist_velo[lab].Scale(scale) |
|
|
|
|
|
|
|
# if i == 0: |
|
|
|
# if not plot_electrons_only: # and not plot_velo_only: |
|
|
|
# set_style(hist_den[lab], mygray, markers[i], styles[i]) |
|
|
|
# gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) |
|
|
|
# hist_den[lab].Draw("HIST PLC SAME") |
|
|
|
# if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
# if not plot_velo_only or ( |
|
|
|
# histo == "phi" or histo == "eta" or histo == "nPV" |
|
|
|
# ): |
|
|
|
# set_style(hist_elec[lab], myblue, markers[i], styles[i]) |
|
|
|
# hist_elec[lab].SetFillColorAlpha(myblue, 0.5) |
|
|
|
# hist_elec[lab].Draw("HIST PLC SAME") |
|
|
|
# if ( |
|
|
|
# categories[tracker][cut]["plotEndVelo"] |
|
|
|
# and plot_velo |
|
|
|
# and (histo == "p" or histo == "pt") |
|
|
|
# ): |
|
|
|
# set_style(hist_velo[lab], myblue, markers[i], styles[i]) |
|
|
|
# hist_velo[lab].SetFillColorAlpha(myblue, 0.5) |
|
|
|
# hist_velo[lab].Draw("HIST PLC SAME") |
|
|
|
# # else: |
|
|
|
# # print( |
|
|
|
# # "No distribution plotted for other labels.", |
|
|
|
# # "Can be added by uncommenting the code below this print statement.", |
|
|
|
# # ) |
|
|
|
# # set_style(hist_den[lab], mygray, markers[i], styles[i]) |
|
|
|
# # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) |
|
|
|
# # hist_den[lab].Draw("HIST PLC SAME") |
|
|
|
|
|
|
|
# if histo == "p": |
|
|
|
# pos = [0.5, 0.3, 1.0, 0.5] # [0.53, 0.4, 1.01, 0.71] |
|
|
|
# elif histo == "pt": |
|
|
|
# pos = [0.5, 0.3, 0.99, 0.5] # [0.5, 0.4, 0.98, 0.71] |
|
|
|
# elif histo == "phi": |
|
|
|
# pos = [0.4, 0.3, 0.9, 0.5] |
|
|
|
# elif histo == "eta": |
|
|
|
# pos = [0.5, 0.25, 1.0, 0.45] |
|
|
|
# else: |
|
|
|
# pos = [0.35, 0.25, 0.85, 0.45] |
|
|
|
# legend = place_legend( |
|
|
|
# canvas, *pos, header="LHCb Simulation", option="LPE" |
|
|
|
# ) |
|
|
|
# for le in legend.GetListOfPrimitives(): |
|
|
|
# if "distribution" in le.GetLabel(): |
|
|
|
# le.SetOption("LF") |
|
|
|
# legend.SetTextFont(132) |
|
|
|
# legend.SetTextSize(0.04) |
|
|
|
# legend.Draw() |
|
|
|
# for lab in label: |
|
|
|
# if not plot_electrons_only: # and not plot_velo_only: |
|
|
|
# eff[lab].Draw("P SAME") |
|
|
|
# if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
# if not plot_velo_only or ( |
|
|
|
# histo == "phi" or histo == "eta" or histo == "nPV" |
|
|
|
# ): |
|
|
|
# eff_elec[lab].Draw("P SAME") |
|
|
|
# if ( |
|
|
|
# categories[tracker][cut]["plotEndVelo"] |
|
|
|
# and plot_velo |
|
|
|
# and (histo == "p" or histo == "pt") |
|
|
|
# ): |
|
|
|
# eff_velo[lab].Draw("P SAME") |
|
|
|
# cutName = categories[tracker][cut]["title"] |
|
|
|
# latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) |
|
|
|
# low = 0 |
|
|
|
# high = 1.05 |
|
|
|
# gPad.Update() |
|
|
|
# axis = TGaxis( |
|
|
|
# gPad.GetUxmax(), |
|
|
|
# gPad.GetUymin(), |
|
|
|
# gPad.GetUxmax(), |
|
|
|
# gPad.GetUymax(), |
|
|
|
# low, |
|
|
|
# high, |
|
|
|
# 510, |
|
|
|
# "+U", |
|
|
|
# ) |
|
|
|
# axis.SetTitleFont(132) |
|
|
|
# axis.SetTitleSize(0.06) |
|
|
|
# axis.SetTitleOffset(0.55) |
|
|
|
# axis.SetTitle( |
|
|
|
# "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", |
|
|
|
# ) |
|
|
|
# axis.SetLabelSize(0) |
|
|
|
# axis.Draw() |
|
|
|
# canvas.RedrawAxis() |
|
|
|
# if savepdf and False: |
|
|
|
# filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] |
|
|
|
# for ftype in filestypes: |
|
|
|
# if not plot_electrons_only: |
|
|
|
# canvasName = tracker + "_" + cut + "_" + histo + "." + ftype |
|
|
|
# else: |
|
|
|
# canvasName = ( |
|
|
|
# tracker + "Electrons_" + cut + "_" + histo + "." + ftype |
|
|
|
# ) |
|
|
|
# canvas.SaveAs("checks/" + canvasName) |
|
|
|
# # canvas.SetRightMargin(0.05) |
|
|
|
# canvas.Write() |
|
|
|
|
|
|
|
# # calculate ghost rate |
|
|
|
# print("\ncalculate ghost rate: ") |
|
|
|
# histoBaseName = "Track/" + folder + tracker + "/" |
|
|
|
# for histo in ghostHistos[tracker]: |
|
|
|
# trackerDir.cd() |
|
|
|
# title = "ghost_rate_vs_" + histo |
|
|
|
|
|
|
|
# gPad.SetTicks() |
|
|
|
# histoName = histoBaseName + ghostHistoDict[histo]["variable"] |
|
|
|
|
|
|
|
# ghost = {} |
|
|
|
# hist_den = {} |
|
|
|
# ghost = get_ghost(ghost, hist_den, tf, histoName, label) |
|
|
|
# canvas = TCanvas(title, title) |
|
|
|
# mg = TMultiGraph() |
|
|
|
# for i, lab in enumerate(label): |
|
|
|
# mg.Add(ghost[lab]) |
|
|
|
# set_style(ghost[lab], colors[i], markers[2 * i], styles[i]) |
|
|
|
|
|
|
|
# xtitle = ghostHistoDict[histo]["xTitle"] |
|
|
|
# mg.GetXaxis().SetTitle(xtitle) |
|
|
|
# mg.GetYaxis().SetTitle("Fraction of fake tracks") |
|
|
|
# mg.Draw("ap") |
|
|
|
# mg.GetXaxis().SetTitleSize(0.06) |
|
|
|
# mg.GetYaxis().SetTitleSize(0.06) |
|
|
|
# mg.GetYaxis().SetTitleOffset(1.1) |
|
|
|
# mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) |
|
|
|
# mg.GetXaxis().SetNdivisions(10, 5, 0) |
|
|
|
# # for lab in label: |
|
|
|
# # ghost[lab].Draw("P SAME") |
|
|
|
# if histo == "p": |
|
|
|
# pos = [0.53, 0.4, 1.00, 0.71] |
|
|
|
# elif histo == "pt": |
|
|
|
# pos = [0.5, 0.4, 0.98, 0.71] |
|
|
|
# elif histo == "eta": |
|
|
|
# pos = [0.35, 0.6, 0.85, 0.9] |
|
|
|
# elif histo == "phi": |
|
|
|
# pos = [0.3, 0.3, 0.9, 0.6] |
|
|
|
# else: |
|
|
|
# pos = [0.4, 0.37, 0.80, 0.68] |
|
|
|
# legend = place_legend(canvas, *pos, header="LHCb Simulation", option="LPE") |
|
|
|
# legend.SetTextFont(132) |
|
|
|
# legend.SetTextSize(0.04) |
|
|
|
# legend.Draw() |
|
|
|
# # if histo != "nPV": |
|
|
|
# # latex.DrawLatex(0.7, 0.85, "LHCb simulation") |
|
|
|
# # else: |
|
|
|
# # latex.DrawLatex(0.2, 0.85, "LHCb simulation") |
|
|
|
# # mg.GetYaxis().SetRangeUser(0, 0.4) |
|
|
|
# if histo == "eta": |
|
|
|
# mg.GetYaxis().SetRangeUser(0, 0.4) |
|
|
|
# # track_name = names[tracker] + " tracks" |
|
|
|
# # latex.DrawLatex(0.7, 0.75, track_name) |
|
|
|
# # canvas.PlaceLegend() |
|
|
|
# if savepdf: |
|
|
|
# filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] |
|
|
|
# for ftype in filestypes: |
|
|
|
# canvas.SaveAs( |
|
|
|
# "checks/" + tracker + "ghost_rate_" + histo + "." + ftype, |
|
|
|
# ) |
|
|
|
# canvas.Write() |
|
|
|
|
|
|
|
if i == 0: |
|
|
|
if not plot_electrons_only: # and not plot_velo_only: |
|
|
|
set_style(hist_den[lab], mygray, markers[i], styles[i]) |
|
|
|
gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) |
|
|
|
hist_den[lab].Draw("HIST PLC SAME") |
|
|
|
if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
if not plot_velo_only or ( |
|
|
|
histo == "phi" or histo == "eta" or histo == "nPV" |
|
|
|
): |
|
|
|
set_style(hist_elec[lab], myblue, markers[i], styles[i]) |
|
|
|
hist_elec[lab].SetFillColorAlpha(myblue, 0.5) |
|
|
|
hist_elec[lab].Draw("HIST PLC SAME") |
|
|
|
if ( |
|
|
|
categories[tracker][cut]["plotEndVelo"] |
|
|
|
and plot_velo |
|
|
|
and (histo == "p" or histo == "pt") |
|
|
|
): |
|
|
|
set_style(hist_velo[lab], myblue, markers[i], styles[i]) |
|
|
|
hist_velo[lab].SetFillColorAlpha(myblue, 0.5) |
|
|
|
hist_velo[lab].Draw("HIST PLC SAME") |
|
|
|
# else: |
|
|
|
# print( |
|
|
|
# "No distribution plotted for other labels.", |
|
|
|
# "Can be added by uncommenting the code below this print statement.", |
|
|
|
# ) |
|
|
|
# set_style(hist_den[lab], mygray, markers[i], styles[i]) |
|
|
|
# gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) |
|
|
|
# hist_den[lab].Draw("HIST PLC SAME") |
|
|
|
|
|
|
|
if histo == "p": |
|
|
|
pos = [0.5, 0.3, 1.0, 0.5] # [0.53, 0.4, 1.01, 0.71] |
|
|
|
elif histo == "pt": |
|
|
|
pos = [0.5, 0.3, 0.99, 0.5] # [0.5, 0.4, 0.98, 0.71] |
|
|
|
elif histo == "phi": |
|
|
|
pos = [0.4, 0.3, 0.9, 0.5] |
|
|
|
elif histo == "eta": |
|
|
|
pos = [0.5, 0.25, 1.0, 0.45] |
|
|
|
else: |
|
|
|
pos = [0.35, 0.25, 0.85, 0.45] |
|
|
|
legend = place_legend( |
|
|
|
canvas, *pos, header="LHCb Simulation", option="LPE" |
|
|
|
) |
|
|
|
for le in legend.GetListOfPrimitives(): |
|
|
|
if "distribution" in le.GetLabel(): |
|
|
|
le.SetOption("LF") |
|
|
|
legend.SetTextFont(132) |
|
|
|
legend.SetTextSize(0.04) |
|
|
|
legend.Draw() |
|
|
|
for lab in label: |
|
|
|
if not plot_electrons_only: # and not plot_velo_only: |
|
|
|
eff[lab].Draw("P SAME") |
|
|
|
if categories[tracker][cut]["plotElectrons"] and plot_electrons: |
|
|
|
if not plot_velo_only or ( |
|
|
|
histo == "phi" or histo == "eta" or histo == "nPV" |
|
|
|
): |
|
|
|
eff_elec[lab].Draw("P SAME") |
|
|
|
if ( |
|
|
|
categories[tracker][cut]["plotEndVelo"] |
|
|
|
and plot_velo |
|
|
|
and (histo == "p" or histo == "pt") |
|
|
|
): |
|
|
|
eff_velo[lab].Draw("P SAME") |
|
|
|
cutName = categories[tracker][cut]["title"] |
|
|
|
latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) |
|
|
|
low = 0 |
|
|
|
high = 1.05 |
|
|
|
gPad.Update() |
|
|
|
axis = TGaxis( |
|
|
|
gPad.GetUxmax(), |
|
|
|
gPad.GetUymin(), |
|
|
|
gPad.GetUxmax(), |
|
|
|
gPad.GetUymax(), |
|
|
|
low, |
|
|
|
high, |
|
|
|
510, |
|
|
|
"+U", |
|
|
|
) |
|
|
|
axis.SetTitleFont(132) |
|
|
|
axis.SetTitleSize(0.06) |
|
|
|
axis.SetTitleOffset(0.55) |
|
|
|
axis.SetTitle( |
|
|
|
"# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", |
|
|
|
) |
|
|
|
axis.SetLabelSize(0) |
|
|
|
axis.Draw() |
|
|
|
canvas.RedrawAxis() |
|
|
|
if savepdf and False: |
|
|
|
filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] |
|
|
|
for ftype in filestypes: |
|
|
|
if not plot_electrons_only: |
|
|
|
canvasName = tracker + "_" + cut + "_" + histo + "." + ftype |
|
|
|
else: |
|
|
|
canvasName = ( |
|
|
|
tracker + "Electrons_" + cut + "_" + histo + "." + ftype |
|
|
|
) |
|
|
|
canvas.SaveAs("checks/" + canvasName) |
|
|
|
# canvas.SetRightMargin(0.05) |
|
|
|
canvas.Write() |
|
|
|
|
|
|
|
# calculate ghost rate |
|
|
|
print("\ncalculate ghost rate: ") |
|
|
|
histoBaseName = "Track/" + folder + tracker + "/" |
|
|
|
for histo in ghostHistos[tracker]: |
|
|
|
trackerDir.cd() |
|
|
|
title = "ghost_rate_vs_" + histo |
|
|
|
|
|
|
|
gPad.SetTicks() |
|
|
|
histoName = histoBaseName + ghostHistoDict[histo]["variable"] |
|
|
|
|
|
|
|
ghost = {} |
|
|
|
hist_den = {} |
|
|
|
ghost = get_ghost(ghost, hist_den, tf, histoName, label) |
|
|
|
canvas = TCanvas(title, title) |
|
|
|
mg = TMultiGraph() |
|
|
|
for i, lab in enumerate(label): |
|
|
|
mg.Add(ghost[lab]) |
|
|
|
set_style(ghost[lab], colors[i], markers[2 * i], styles[i]) |
|
|
|
|
|
|
|
xtitle = ghostHistoDict[histo]["xTitle"] |
|
|
|
mg.GetXaxis().SetTitle(xtitle) |
|
|
|
mg.GetYaxis().SetTitle("Fraction of fake tracks") |
|
|
|
mg.Draw("ap") |
|
|
|
mg.GetXaxis().SetTitleSize(0.06) |
|
|
|
mg.GetYaxis().SetTitleSize(0.06) |
|
|
|
mg.GetYaxis().SetTitleOffset(1.1) |
|
|
|
mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) |
|
|
|
mg.GetXaxis().SetNdivisions(10, 5, 0) |
|
|
|
# for lab in label: |
|
|
|
# ghost[lab].Draw("P SAME") |
|
|
|
if histo == "p": |
|
|
|
pos = [0.53, 0.4, 1.00, 0.71] |
|
|
|
elif histo == "pt": |
|
|
|
pos = [0.5, 0.4, 0.98, 0.71] |
|
|
|
elif histo == "eta": |
|
|
|
pos = [0.35, 0.6, 0.85, 0.9] |
|
|
|
elif histo == "phi": |
|
|
|
pos = [0.3, 0.3, 0.9, 0.6] |
|
|
|
else: |
|
|
|
pos = [0.4, 0.37, 0.80, 0.68] |
|
|
|
legend = place_legend(canvas, *pos, header="LHCb Simulation", option="LPE") |
|
|
|
legend.SetTextFont(132) |
|
|
|
legend.SetTextSize(0.04) |
|
|
|
legend.Draw() |
|
|
|
# if histo != "nPV": |
|
|
|
# latex.DrawLatex(0.7, 0.85, "LHCb simulation") |
|
|
|
# else: |
|
|
|
# latex.DrawLatex(0.2, 0.85, "LHCb simulation") |
|
|
|
# mg.GetYaxis().SetRangeUser(0, 0.4) |
|
|
|
if histo == "eta": |
|
|
|
mg.GetYaxis().SetRangeUser(0, 0.4) |
|
|
|
# track_name = names[tracker] + " tracks" |
|
|
|
# latex.DrawLatex(0.7, 0.75, track_name) |
|
|
|
# canvas.PlaceLegend() |
|
|
|
if savepdf: |
|
|
|
filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] |
|
|
|
for ftype in filestypes: |
|
|
|
canvas.SaveAs( |
|
|
|
"checks/" + tracker + "ghost_rate_" + histo + "." + ftype, |
|
|
|
) |
|
|
|
canvas.Write() |
|
|
|
# |
|
|
|
# Compare electron efficiencies of different trackers |
|
|
|
# |
|
|
@ -832,7 +839,7 @@ def PrCheckerEfficiency( |
|
|
|
set_style( |
|
|
|
eff_elec[lab], |
|
|
|
colors[jcolor], |
|
|
|
markers[i + markeritr], |
|
|
|
22, # markers[i + markeritr], |
|
|
|
styles[i], |
|
|
|
) |
|
|
|
else: |
|
|
@ -857,7 +864,7 @@ def PrCheckerEfficiency( |
|
|
|
set_style( |
|
|
|
eff_elec[lab], |
|
|
|
colors[jcolor], |
|
|
|
markers[i + markeritr], |
|
|
|
22, # markers[i + markeritr], |
|
|
|
styles[i], |
|
|
|
) |
|
|
|
else: |
|
|
|