11 from array
import array
13 from ConfigParser
import SafeConfigParser
24 fullExpression=
"%s>>h" %classifierExpression
25 h=TH1F(
"h",
"h",nBins,binLo,binHi)
26 t.Draw(fullExpression,cut)
28 totIntegral=h.Integral()
30 return array(
'f', [h.Integral(iBin,nBins)/totIntegral
for iBin
in range(1,nBins)] )
34 parser = argparse.ArgumentParser(prog=prog, description=
'Make dataset definitions page')
37 parser.add_argument(
"cfgFile",help=
"Configuration file",type=str)
38 args=parser.parse_args()
41 mainDefaults[
"classifierExpression"]=
"nueqe+nuedis+nueres+nueother" 42 mainDefaults[
"title"]=
"#nu_{e} Classifier" 43 mainDefaults[
"trueSignalCut"]=
"truelabel >=4 && truelabel <=7" 45 mainDefaults[
"legendX"]=0.5
46 mainDefaults[
"legendY"]=0.5
47 mainDefaults[
"legendW"]=0.4
48 mainDefaults[
"legendH"]=0.4
50 mainDefaults[
"signalEffRange"]=
"0.0 1.0" 51 mainDefaults[
"backgroundEffRange"]=
"0.0 1.0" 53 cfg=SafeConfigParser(mainDefaults)
54 cfg.readfp(
open(args.cfgFile))
57 classifierExpression=cfg.get(
"main",
"classifierExpression")
58 title=cfg.get(
"main",
"title")
59 trueSignalCut=cfg.get(
"main",
"trueSignalCut")
61 instancesNames=cfg.get(
"main",
"instances").
split()
63 outFile=cfg.get(
"main",
"outFile")
65 legendX=
float(cfg.get(
"main",
"legendX"))
66 legendY=
float(cfg.get(
"main",
"legendY"))
67 legendW=
float(cfg.get(
"main",
"legendW"))
68 legendH=
float(cfg.get(
"main",
"legendH"))
70 (sgnlMin,sgnlMax)=tuple([
float(x)
for x
in cfg.get(
"main",
"signalEffRange").
split()])
71 (bkgdMin,bkgdMax)=tuple([
float(x)
for x
in cfg.get(
"main",
"backgroundEffRange").
split()])
77 for instanceName
in instancesNames:
78 fileName=cfg.get(instanceName,
"fileName")
79 iFile=TFile(fileName,
"read")
84 trueBackgroundCut=
"! (%s)" %trueSignalCut
87 rocTitle=cfg.get(instanceName,
"title")
88 nPoints=len(bkgdEfficiencies)
89 rocCurve=TGraph(nPoints,bkgdEfficiencies,sgnlEfficiencies)
90 rocCurve.SetTitle(title)
91 rocCurves.append((rocCurve,rocTitle))
93 rocCan=TCanvas(
"rocCan",
"rocCan")
94 rocCan.SetLeftMargin(0.1)
95 rocCan.SetBottomMargin(0.12)
97 leg=TLegend(legendX, legendY-legendH, legendX+legendW, legendY)
100 for i, (rocCurve,rocTitle)
in enumerate(rocCurves):
101 rocCurve.SetFillColor(0)
102 rocCurve.SetLineColor(i+1)
103 rocCurve.SetLineWidth(3)
104 leg.AddEntry(rocCurve, rocTitle)
107 rocCurve.GetXaxis().
SetTitle(
"Background Efficiency")
108 rocCurve.GetXaxis().SetRangeUser(bkgdMin, bkgdMax)
109 rocCurve.GetXaxis().SetLabelSize(fontSize)
110 rocCurve.GetXaxis().SetTitleSize(fontSize)
112 rocCurve.GetYaxis().
SetTitle(
"Signal Efficiency")
113 rocCurve.GetYaxis().SetRangeUser(sgnlMin,sgnlMax)
114 rocCurve.GetYaxis().SetLabelSize(fontSize)
115 rocCurve.GetYaxis().SetTitleSize(fontSize)
122 rocCan.Print(outFile)
void split(double tt, double *fr)
gargamelle SetTitle("Gargamelle #nu_{e} CC data")
def getEfficiencies(t, classifierExpression, cut)
procfile open("FD_BRL_v0.txt")