|
@ -20,6 +20,8 @@ python scripts/CompareEfficiency.py |
|
|
--trackers Match --label new old --outfile data/compare_effs.root |
|
|
--trackers Match --label new old --outfile data/compare_effs.root |
|
|
|
|
|
|
|
|
python scripts/CompareEfficiency.py --filename data/resolutions_and_effs_D_default_weights.root data/resolutions_and_effs_D_with_electron_weights_as_residual.root --trackers BestLong Seed --label default new --outfile data_results/CompareEfficiencyDDefaultResidual.root |
|
|
python scripts/CompareEfficiency.py --filename data/resolutions_and_effs_D_default_weights.root data/resolutions_and_effs_D_with_electron_weights_as_residual.root --trackers BestLong Seed --label default new --outfile data_results/CompareEfficiencyDDefaultResidual.root |
|
|
|
|
|
|
|
|
|
|
|
recreate: defaultresidual, electronresidual, residual |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
import os, sys |
|
|
import os, sys |
|
@ -68,6 +70,7 @@ def getOriginFolders(): |
|
|
"Forward": {}, |
|
|
"Forward": {}, |
|
|
"Match": {}, |
|
|
"Match": {}, |
|
|
"MergedMatch": {}, |
|
|
"MergedMatch": {}, |
|
|
|
|
|
"DefaultMatch": {}, |
|
|
"BestLong": {}, |
|
|
"BestLong": {}, |
|
|
"Seed": {}, |
|
|
"Seed": {}, |
|
|
} |
|
|
} |
|
@ -79,6 +82,9 @@ def getOriginFolders(): |
|
|
basedict["MergedMatch"]["folder"] = ( |
|
|
basedict["MergedMatch"]["folder"] = ( |
|
|
"MergedMatchTrackChecker" + unique_name_ext_re() + "/" |
|
|
"MergedMatchTrackChecker" + unique_name_ext_re() + "/" |
|
|
) |
|
|
) |
|
|
|
|
|
basedict["DefaultMatch"]["folder"] = ( |
|
|
|
|
|
"DefaultMatchTrackChecker" + unique_name_ext_re() + "/" |
|
|
|
|
|
) |
|
|
basedict["BestLong"]["folder"] = "BestLongTrackChecker" + unique_name_ext_re() + "/" |
|
|
basedict["BestLong"]["folder"] = "BestLongTrackChecker" + unique_name_ext_re() + "/" |
|
|
basedict["Seed"]["folder"] = "SeedTrackChecker" + unique_name_ext_re() + "/" |
|
|
basedict["Seed"]["folder"] = "SeedTrackChecker" + unique_name_ext_re() + "/" |
|
|
|
|
|
|
|
@ -97,6 +103,7 @@ def getTrackNames(): |
|
|
"Forward": {}, |
|
|
"Forward": {}, |
|
|
"Match": {}, |
|
|
"Match": {}, |
|
|
"MergedMatch": {}, |
|
|
"MergedMatch": {}, |
|
|
|
|
|
"DefaultMatch": {}, |
|
|
"BestLong": {}, |
|
|
"BestLong": {}, |
|
|
"Seed": {}, |
|
|
"Seed": {}, |
|
|
} |
|
|
} |
|
@ -106,6 +113,7 @@ def getTrackNames(): |
|
|
basedict["Forward"] = "Forward" |
|
|
basedict["Forward"] = "Forward" |
|
|
basedict["Match"] = "Match" |
|
|
basedict["Match"] = "Match" |
|
|
basedict["MergedMatch"] = "MergedMatch" |
|
|
basedict["MergedMatch"] = "MergedMatch" |
|
|
|
|
|
basedict["DefaultMatch"] = "DefaultMatch" |
|
|
basedict["BestLong"] = "BestLong" |
|
|
basedict["BestLong"] = "BestLong" |
|
|
basedict["Seed"] = "Seed" |
|
|
basedict["Seed"] = "Seed" |
|
|
return basedict |
|
|
return basedict |
|
@ -122,7 +130,7 @@ def get_elec_colors(): |
|
|
kRed + 1, |
|
|
kRed + 1, |
|
|
kGreen + 1, |
|
|
kGreen + 1, |
|
|
kViolet, |
|
|
kViolet, |
|
|
kOrange - 3, |
|
|
|
|
|
|
|
|
kOrange - 8, |
|
|
kTeal - 1, |
|
|
kTeal - 1, |
|
|
kGray + 1, |
|
|
kGray + 1, |
|
|
] |
|
|
] |
|
@ -138,11 +146,12 @@ def get_fillstyles(): |
|
|
|
|
|
|
|
|
def getGhostHistoNames(): |
|
|
def getGhostHistoNames(): |
|
|
basedict = { |
|
|
basedict = { |
|
|
"Velo": {}, |
|
|
|
|
|
"Upstream": {}, |
|
|
|
|
|
|
|
|
# "Velo": {}, |
|
|
|
|
|
# "Upstream": {}, |
|
|
"Forward": {}, |
|
|
"Forward": {}, |
|
|
"Match": {}, |
|
|
"Match": {}, |
|
|
"MergedMatch": {}, |
|
|
"MergedMatch": {}, |
|
|
|
|
|
"DefaultMatch": {}, |
|
|
"BestLong": {}, |
|
|
"BestLong": {}, |
|
|
"Seed": {}, |
|
|
"Seed": {}, |
|
|
} |
|
|
} |
|
@ -152,6 +161,7 @@ def getGhostHistoNames(): |
|
|
basedict["Forward"] = ["eta", "p", "pt", "nPV"] |
|
|
basedict["Forward"] = ["eta", "p", "pt", "nPV"] |
|
|
basedict["Match"] = ["eta", "p", "pt", "nPV"] |
|
|
basedict["Match"] = ["eta", "p", "pt", "nPV"] |
|
|
basedict["MergedMatch"] = basedict["Match"] |
|
|
basedict["MergedMatch"] = basedict["Match"] |
|
|
|
|
|
basedict["DefaultMatch"] = basedict["Match"] |
|
|
basedict["BestLong"] = ["eta", "p", "pt", "nPV"] |
|
|
basedict["BestLong"] = ["eta", "p", "pt", "nPV"] |
|
|
basedict["Seed"] = ["eta", "p", "pt", "nPV"] |
|
|
basedict["Seed"] = ["eta", "p", "pt", "nPV"] |
|
|
|
|
|
|
|
@ -177,7 +187,7 @@ def argument_parser(): |
|
|
"--trackers", |
|
|
"--trackers", |
|
|
type=str, |
|
|
type=str, |
|
|
nargs="+", |
|
|
nargs="+", |
|
|
default=["Forward", "Match", "BestLong", "Seed"], # --- |
|
|
|
|
|
|
|
|
default=["Match", "BestLong", "Seed"], # Forward |
|
|
help="Trackers to plot.", |
|
|
help="Trackers to plot.", |
|
|
) |
|
|
) |
|
|
parser.add_argument( |
|
|
parser.add_argument( |
|
@ -259,6 +269,11 @@ def get_eff(eff, hist, tf, histoName, label, var): |
|
|
eff[lab].SetTitle(lab + " MergedMatch, e^{-}") |
|
|
eff[lab].SetTitle(lab + " MergedMatch, e^{-}") |
|
|
else: |
|
|
else: |
|
|
eff[lab].SetTitle(lab + " MergedMatch") |
|
|
eff[lab].SetTitle(lab + " MergedMatch") |
|
|
|
|
|
elif histoName.find("DefaultMatch") != -1: |
|
|
|
|
|
if histoName.find("electron") != -1: |
|
|
|
|
|
eff[lab].SetTitle(lab + " DefaultMatch, e^{-}") |
|
|
|
|
|
else: |
|
|
|
|
|
eff[lab].SetTitle(lab + " DefaultMatch") |
|
|
elif histoName.find("Match") != -1: |
|
|
elif histoName.find("Match") != -1: |
|
|
if histoName.find("electron") != -1: |
|
|
if histoName.find("electron") != -1: |
|
|
eff[lab].SetTitle(lab + " Match, e^{-}") |
|
|
eff[lab].SetTitle(lab + " Match, e^{-}") |
|
@ -310,6 +325,36 @@ def get_ghost(eff, hist, tf, histoName, label): |
|
|
return ghost |
|
|
return ghost |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_compare_ghost(eff, hist, tf, histoName, label): |
|
|
|
|
|
ghost = {} |
|
|
|
|
|
for i, lab in enumerate(label): |
|
|
|
|
|
numeratorName = histoName + "_Ghosts" |
|
|
|
|
|
denominatorName = histoName + "_Total" |
|
|
|
|
|
numerator = findRootObjByName(tf[lab], numeratorName) |
|
|
|
|
|
denominator = findRootObjByName(tf[lab], denominatorName) |
|
|
|
|
|
print("Numerator = " + numeratorName.replace(unique_name_ext_re(), "")) |
|
|
|
|
|
print("Denominator = " + denominatorName.replace(unique_name_ext_re(), "")) |
|
|
|
|
|
teff = TEfficiency(numerator, denominator) |
|
|
|
|
|
teff.SetStatisticOption(7) |
|
|
|
|
|
ghost[lab] = teff.CreateGraph() |
|
|
|
|
|
print(lab) |
|
|
|
|
|
ghost[lab].SetName(lab) |
|
|
|
|
|
if histoName.find("Forward") != -1: |
|
|
|
|
|
ghost[lab].SetName(lab + " Ghosts, Forward") |
|
|
|
|
|
if histoName.find("Merged") != -1: |
|
|
|
|
|
ghost[lab].SetName(lab + " Ghosts, MergedMatch") |
|
|
|
|
|
elif histoName.find("DefaultMatch") != -1: |
|
|
|
|
|
ghost[lab].SetName(lab + " Ghosts, DefaultMatch") |
|
|
|
|
|
elif histoName.find("Match") != -1: |
|
|
|
|
|
ghost[lab].SetName(lab + " Ghosts, Match") |
|
|
|
|
|
if histoName.find("Seed") != -1: |
|
|
|
|
|
ghost[lab].SetName(lab + " Ghosts, Seed") |
|
|
|
|
|
if histoName.find("BestLong") != -1: |
|
|
|
|
|
ghost[lab].SetName(lab + " Ghosts, BestLong") |
|
|
|
|
|
|
|
|
|
|
|
return ghost |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def PrCheckerEfficiency( |
|
|
def PrCheckerEfficiency( |
|
|
filename, |
|
|
filename, |
|
|
outfile, |
|
|
outfile, |
|
@ -355,6 +400,7 @@ def PrCheckerEfficiency( |
|
|
compareDict = getCompare() |
|
|
compareDict = getCompare() |
|
|
compareCuts = getCompCuts(compare_cuts) |
|
|
compareCuts = getCompCuts(compare_cuts) |
|
|
compareColors = getCompColors() |
|
|
compareColors = getCompColors() |
|
|
|
|
|
compareGhostHisto = ["eta", "p", "pt", "nPV"] |
|
|
trackers = getTrackers(trackers) |
|
|
trackers = getTrackers(trackers) |
|
|
folders = getOriginFolders() |
|
|
folders = getOriginFolders() |
|
|
|
|
|
|
|
@ -833,13 +879,85 @@ def PrCheckerEfficiency( |
|
|
# canvas.SetRightMargin(0.05) |
|
|
# canvas.SetRightMargin(0.05) |
|
|
canvas.Write() |
|
|
canvas.Write() |
|
|
|
|
|
|
|
|
# # calculate ghost rate |
|
|
|
|
|
# for histo in ghostHistos: # [p, pt, eta, nPV] |
|
|
|
|
|
# canvastitle = "ghost_rate_vs_" + histo + "_" + jcut |
|
|
|
|
|
# name = "ghost_rate_vs_" + histo + "_" + jcut |
|
|
|
|
|
# canvas = TCanvas(name, canvastitle) |
|
|
|
|
|
# canvas.SetRightMargin(0.1) |
|
|
|
|
|
# mg = TMultiGraph() |
|
|
|
|
|
|
|
|
# calculate ghost rate |
|
|
|
|
|
print("\ncalculate ghost rate: ") |
|
|
|
|
|
for histo in compareGhostHisto: # [Match, Seed, ...] |
|
|
|
|
|
cut = compareDict[jcut][tracker] |
|
|
|
|
|
|
|
|
|
|
|
canvastitle = "ghost_rate_vs_" + histo + "_" + jcut |
|
|
|
|
|
name = "ghost_rate_vs_" + histo + "_" + jcut |
|
|
|
|
|
canvas = TCanvas(name, canvastitle) |
|
|
|
|
|
canvas.SetRightMargin(0.1) |
|
|
|
|
|
mg = TMultiGraph() |
|
|
|
|
|
jitr = 0 |
|
|
|
|
|
for tracker in trackers: |
|
|
|
|
|
if tracker == "Seed": |
|
|
|
|
|
continue |
|
|
|
|
|
folder = folders[tracker]["folder"] |
|
|
|
|
|
jcolor = compareColors[tracker] |
|
|
|
|
|
gPad.SetTicks() |
|
|
|
|
|
histoName = ( |
|
|
|
|
|
"Track/" |
|
|
|
|
|
+ folder |
|
|
|
|
|
+ tracker |
|
|
|
|
|
+ "/" |
|
|
|
|
|
+ ghostHistoDict[histo]["variable"] |
|
|
|
|
|
) |
|
|
|
|
|
ghost = {} |
|
|
|
|
|
hist_den = {} |
|
|
|
|
|
ghost = get_compare_ghost(ghost, hist_den, tf, histoName, label) |
|
|
|
|
|
for i, lab in enumerate(label): |
|
|
|
|
|
mg.Add(ghost[lab]) |
|
|
|
|
|
set_style( |
|
|
|
|
|
ghost[lab], colors[jcolor + jitr], markers[2 * i], styles[i] |
|
|
|
|
|
) |
|
|
|
|
|
jitr += 1 |
|
|
|
|
|
|
|
|
|
|
|
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() |
|
|
|
|
|
|
|
|
outputfile.cd() |
|
|
outputfile.cd() |
|
|
|
|
|
|
|
|
outputfile.Write() |
|
|
outputfile.Write() |
|
|