Skip to content
Snippets Groups Projects

Separation update

Merged Steffen Korn requested to merge Separation_Update into master
2 files
+ 48
4
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -85,11 +85,13 @@ def Separation2D(df_X, output_path, basename, ALabel="", CMLabel="", MyLabel="")
df_X = df_X[df_X["Sample_Type"]!="Data"]
N = np.unique(df_X["Sample_Name"].values)
norm = {Sample_Name: np.sum(df_X[df_X["Sample_Name"]==Sample_Name]["Weight"].values) for Sample_Name in N}
Separation_dict = {}
for var in df_X.columns:
ConverterMessage("Plotting Separation for "+var)
Canvas = TCanvas("c1"+var,"c1",800,600)
if(var in ["eventNumber","Weight","Label","Sample_Name","Sample_Type"]):
continue
Separation_dict[var]={}
Canvas = TCanvas("c1"+var,"c1",800,600)
ConverterMessage("Plotting Separation for "+var)
binning = Hists.get_Binning(var)
if(len(binning)==2):
Hist2D = TH2D(var+"_hist","",binning[0],binning[1],len(N),0,len(N))
@@ -108,15 +110,54 @@ def Separation2D(df_X, output_path, basename, ALabel="", CMLabel="", MyLabel="")
Hist2D.GetZaxis().SetTitle("Percentage of Events")
if(ALabel.lower()!="none"):
ATLASLabel(0.2,0.85, ALabel)
CustomLabel(0.2,0.8, CMLabel)
CustomLabel(0.2,0.80, CMLabel)
if(MyLabel!=""):
CustomLabel(0.2,0.75, MyLabel)
Canvas.SaveAs(ensure_trailing_slash(output_path)+basename+"_"+var+".pdf")
Canvas.SaveAs(ensure_trailing_slash(output_path)+basename+"_"+var+".png")
Canvas.SaveAs(ensure_trailing_slash(output_path)+basename+"_"+var+".eps")
Canvas.Clear()
ConverterMessage("Plotting separation summary for "+var)
gStyle.SetPaintTextFormat(".2f")
Separation_Hist = TH2D("Separation_Hist","",len(N),0,len(N),len(N),0,len(N))
for i, Sample_Name_i in enumerate(N):
for j, Sample_Name_j in enumerate(N):
if(i<=j):
Separation_Hist.SetBinContent(i+1,j+1,0)
else:
hist_a = Hist2D.ProjectionX("hist_a",i,i+1)
hist_b = Hist2D.ProjectionX("hist_b",j,j+1)
s = Separation(hist_a, hist_b)*100
Separation_Hist.SetBinContent(i+1,j+1,s)
Separation_dict[var][Sample_Name_i+"_vs_"+Sample_Name_j]=s
gROOT.FindObject("hist_a").Delete()
gROOT.FindObject("hist_b").Delete()
Yaxis = Separation_Hist.GetYaxis()
Xaxis = Separation_Hist.GetXaxis()
for i,Sample_Name in enumerate(N):
Yaxis.SetBinLabel(i+1,Sample_Name)
Xaxis.SetBinLabel(i+1,Sample_Name)
Separation_Hist.Draw("colz text")
Separation_Hist.SetMaximum(50)
Separation_Hist.SetMinimum(0)
if(ALabel.lower()!="none"):
ATLASLabel(0.2,0.85, ALabel)
CustomLabel(0.2,0.80, CMLabel)
if(MyLabel!=""):
CustomLabel(0.2,0.75, MyLabel)
CustomLabel(0.2,0.70, Hists.get_Label(var).replace("[GeV]",""))
Separation_Hist.GetZaxis().SetTitle("S [%]")
Canvas.SaveAs(ensure_trailing_slash(output_path)+basename+"_Summary_"+var+".pdf")
Canvas.SaveAs(ensure_trailing_slash(output_path)+basename+"_Summary_"+var+".png")
Canvas.SaveAs(ensure_trailing_slash(output_path)+basename+"_Summary_"+var+".eps")
gROOT.FindObject("Separation_Hist").Delete()
Canvas.Close()
del Canvas
df = pd.DataFrame(data=Separation_dict)
df.to_latex(buf=ensure_trailing_slash(output_path)+basename+"_Summary.tex",index=False)
def Stackplot_Binary(Samples, Predictions, N, T, W, output_path, basename, ALabel="", CMLabel="", MyLabel="", LogInt=0, DoSeparation=False):
"""Generate a simple stacked Signal/Background histogram
Loading