BookHistos.py
Go to the documentation of this file.
import ROOT,os,sys,getopt
import rootUtils as ut
import shipunit as u
import RecoSettings
def SetGrid(pad):
pad.SetGridx()
pad.SetGridy()
def SetAxis(histo):
histo.GetXaxis().SetTitleSize(.06)
histo.GetYaxis().SetTitleSize(.06)
histo.GetXaxis().SetTitleOffset(1.3)
histo.GetYaxis().SetTitleOffset(1.3)
histo.GetXaxis().SetNdivisions(5)
histo.GetYaxis().SetNdivisions(5)
###################################################################################
###################################################################################
###################################################################################
def bookMFieldHistos(h):
#ax0 = ';#chi^{2}/ndf;(P_{MCthuth}-P_{RECO})/P_{MCtruth}'
#ax = ';P_{MCthuth} [GeV];(P_{MCthuth}-P_{RECO})/P_{MCtruth}'
colour = {"fit":2, "sim":1}
for fall in ["fit", "sim"] :
ut.bookHist(h,'magZ' +fall, 'Field.Mag() vs Z at (0,0)'+fall+';z [cm];|B| [T]', 3000, 1000, 4000,200,0,2)
h['magZ'+fall].SetLineColor(colour[fall])
h['magZ'+fall].SetMarkerColor(colour[fall])
ut.bookHist(h,'magXY1'+fall, 'Field.Mag() vs (X,Y) at Z=2500 cm, '+fall+';x [cm];y [cm]', 60, -300.,300.,60,-300,300)
ut.bookHist(h,'magXY2'+fall, 'Field.Mag() vs (X,Y) at Z=2800 cm, '+fall+';x [cm];y [cm]', 60, -300.,300.,60,-300,300)
ut.bookHist(h,'magXY3'+fall, 'Field.Mag() vs (X,Y) at Z=3000 cm, '+fall+';x [cm];y [cm]', 60, -300.,300.,60,-300,300)
for histo in h:
SetAxis(h[histo])
h[histo].SetLineColor(1)
h[histo].SetMarkerStyle(20)
###################################################################################
def plotMFieldHistos(h):
ROOT.gStyle.SetStatY(0.9)
ROOT.gStyle.SetStatX(0.9)
ROOT.gStyle.SetStatW(0.3)
ROOT.gStyle.SetStatH(0.2)
ROOT.gStyle.SetPadBottomMargin(0.2)
ROOT.gStyle.SetPadLeftMargin(0.2)
ROOT.gStyle.SetPadRightMargin(0.2)
ROOT.gStyle.SetOptStat(0)
ut.bookCanvas(h,"mfield1","mfield1",nx=600,ny=600,cx=1,cy=1)
cv = h['mfield1'].cd(1)
h['magZsim'].Draw("")
h['magZfit'].Draw("sames")
h['mfield1'].Print('mfield1.gif')
ut.bookCanvas(h,"mfield2","mfield2",nx=1200,ny=800,cx=3,cy=2)
pad = 0
for fall in ["fit", "sim"] :
for ci in range (1,4):
pad+=1
cv = h['mfield2'].cd(pad)
h['magXY'+str(ci)+fall].Draw("colz")
h['mfield2'].Print('mfield2.gif')
###################################################################################
###################################################################################
###################################################################################
def bookMomentumHistos(h,prefix=""):
ax0 = ';#chi^{2}/ndf;(P_{MCthuth}-P_{RECO})/P_{MCtruth}'
ax = ';P_{MCthuth} [GeV];(P_{MCthuth}-P_{RECO})/P_{MCtruth}'
ut.bookHist(h,'delPOverP0'+prefix, 'dP/P vs #chi^{2}/ndf'+prefix+ax0, 500,0.,50.,100,-0.5,0.5)
ut.bookHist(h,'delPOverP1'+prefix, 'dP/P'+prefix+ax,100,0.,50.,100,-0.5,0.5)
ut.bookHist(h,'delPOverP2'+prefix, 'dP/P ndf>'+str(RecoSettings.trackMinNofHits)+prefix+ax,100,0.,50.,100,-0.5,0.5)
ut.bookHist(h,'delPOverP3'+prefix, 'dP/P cleaned #chi^{2}/ndf<'+str(RecoSettings.chi2CutOff)+prefix+ax,100,0.,50.,100,-0.5,0.5)
ut.bookHist(h,'MomRes'+prefix, 'MomRes'+prefix+';P_{MCthuth} [GeV];#sigma_{Gauss}(#DeltaP/P)',5,0.,50.)
for i in range (1,6):
hhname='delPOverP3_'+str(i)+prefix
cond ='P_{MCtruth} < '+str(i*10)+" GeV"
ut.bookHist(h, hhname, cond+';(P_{MCthuth}-P_{RECO})/P_{MCtruth}', 200, -.2, .2)
h[hhname].StatOverflows(True) # to include overflow/underflow in mean/sigma (range independence)
for histo in h:
h[histo].Sumw2()
h[histo].SetLineColor(1)
h[histo].SetMarkerStyle(20)
###################################################################################
def plotMomentumHistos(h,prefix=""):
ROOT.gStyle.SetStatY(0.9)
ROOT.gStyle.SetStatX(0.9)
ROOT.gStyle.SetStatW(0.3)
ROOT.gStyle.SetStatH(0.2)
ROOT.gStyle.SetPadBottomMargin(0.2)
ROOT.gStyle.SetPadLeftMargin(0.2)
ROOT.gStyle.SetOptStat(10)
ut.bookCanvas(h,key='momentum1'+prefix,title='momentum1'+prefix,nx=1000,ny=800,cx=2,cy=2)
for cid in range (1,5):
cv = h['momentum1'+prefix].cd(cid)
hname = 'delPOverP'+str(cid-1)+prefix
h[hname].Draw("box")
SetAxis(h[hname])
if(cid==1):
cv.SetLogx()
h[hname].GetXaxis().SetRangeUser(.01,50)
h['momentum1'+prefix].Print('momentum1'+prefix+'.gif')
ROOT.gStyle.SetStatY(0.93)
ROOT.gStyle.SetStatX(0.99)
ROOT.gStyle.SetStatW(0.4)
ROOT.gStyle.SetStatH(0.35)
f={}
key='momentum2'+prefix
ut.bookCanvas(h,key,title=key,nx=1200,ny=1200,cx=3,cy=2)
rname = 'MomRes'+prefix
for cvn in range (1,6):
hname='delPOverP3_'+str(cvn)+prefix
cv = h[key].cd(cvn)
h[hname].Draw("E")
SetAxis(h[hname])
ROOT.gStyle.SetOptFit(11111)
f[hname] = ROOT.TF1(hname,'gaus',-.05, .05)
f[hname].SetParameter(1,0.)
f[hname].SetNpx(1000)
h[hname].Fit(f[hname],"R")
print "fit", f[hname].GetParameter(2), f[hname].GetParError(2)
h[rname].SetBinContent(cvn, f[hname].GetParameter(2))
h[rname].SetBinError (cvn, f[hname].GetParError(2))
h[key].Print(key+'.gif')
ROOT.gStyle.SetOptStat(0)
ROOT.gStyle.SetOptTitle(0)
ut.bookCanvas(h,'momentum3'+prefix,title='momentum3'+prefix,nx=600,ny=600,cx=1,cy=1)
h[rname].Draw('E')
SetAxis(h[rname])
h[hname].GetYaxis().SetTitleOffset(1.5)
h['momentum3'+prefix].Print('momentum3'+prefix+'.gif')
###################################################################################
###################################################################################
###################################################################################
def bookCompareFitHistos(h):
ut.bookHist(h,'dNFoldFNnew', 'Number of fitted tracks;N(old);N(new)',
10, -1, 9, 10, -1, 9)
h['dNFoldFNnew'].SetMarkerSize(1.8)
ut.bookHist(h,'FitCorrespondence', 'CorrespondenceBins: 0,5-ok',
10, -1, 9)
ut.bookHist(h,'NDFold', 'NDF old Fit;NDF', 140, 0, 70)
ut.bookHist(h,'NDFnew', 'NDF new Fit;NDF', 140, 0, 70)
ut.bookHist(h,'Chi2NDFold', '#chi^{2}/NDF old Fit;#chi^{2}/NDF', 200, 0, 20)
ut.bookHist(h,'Chi2NDFnew', '#chi^{2}.NDF old Fit;#chi^{2}/NDF', 200, 0, 20)
style={'old':0,'new':1}
for name in ('NDF','Chi2NDF'):
for st in style:
h[name+st].SetLineColor(1+style[st])
h[name+st].SetMarkerColor(1+style[st])
h[name+st].SetMarkerStyle(22+style[st])
for histo in h:
h[histo].Sumw2()
h[histo].SetLineWidth(2)
###################################################################################
def plotCompareFitHistos(h):
ROOT.gStyle.SetStatY(0.9)
ROOT.gStyle.SetStatX(0.9)
ROOT.gStyle.SetStatW(0.3)
ROOT.gStyle.SetStatH(0.2)
ROOT.gStyle.SetOptStat(11)
ut.bookCanvas(h,key='FitCompare',title='FitCompare',nx=800,ny=800,cx=2,cy=2)
cv = h['FitCompare'].cd(1)
cv.SetLogz()
h['dNFoldFNnew'].Draw('coltext')
cv = h['FitCompare'].cd(2)
cv.SetLogy()
h['FitCorrespondence'].Draw()
cv = h['FitCompare'].cd(3)
cv.SetLogy()
h['NDFold'].Draw()
h['NDFnew'].Draw("sames")
cv = h['FitCompare'].cd(4)
cv.SetLogx()
cv.SetLogy()
h['Chi2NDFold'].Draw()
h['Chi2NDFnew'].Draw("sames")
h['FitCompare'].Print('FitCompare.gif')
###################################################################################
###################################################################################
###################################################################################
def bookTrackingHistos(h):
ut.bookHist(h,'dxdyALLTrHm', 'dxdy(MCtr,firstHit)@firstHitZ - all-;dx [cm];dy [cm]',
2000, -100, 100, 2000, -100, 100)
ut.bookHist(h,'dxdyALLTrHp', 'dxdy(MCtr,firstHit)@firstHitZ - all+;dx [cm];dy [cm]',
2000, -100, 100, 2000, -100, 100)
ut.bookHist(h,'dxdyHNLTrHm', 'dxdy(MCtr,firstHit)@firstHitZ - HNL-;dx [cm];dy [cm]',
2000, -100, 100, 2000, -100, 100)
ut.bookHist(h,'dxdyHNLTrHp', 'dxdy(MCtr,firstHit)@firstHitZ - HNL+;dx [cm];dy [cm]',
2000, -100, 100, 2000, -100, 100)
ut.bookHist(h,'dRvsPz', 'dR(MCtr,firstHit)@firstHitZ vs Pz;Pz_{MC} [GeV];dR [cm]',
1000, 0, 50, 1000, 0, 100)
ut.bookHist(h,'dRvsZhit', 'dR(MCtr,firstHit)@firstHitZ vs firstHitZ;Z_{Hit0} [cm];dR [cm]',
2400, 2500, 3700, 1000, 0, 100)
ut.bookHist(h,'YMC2dZMCVer', 'abs(YMCprop)/dZMCVer - HNL', 2000, 0,10)
for histo in h:
h[histo].Sumw2()
h[histo].SetLineColor(1)
###################################################################################
def plotMCTrackHitCorrelation(h):
ROOT.gStyle.SetStatY(0.9)
ROOT.gStyle.SetStatX(0.9)
ROOT.gStyle.SetStatW(0.3)
ROOT.gStyle.SetStatH(0.2)
ROOT.gStyle.SetOptStat(11)
ut.bookCanvas(h,key='dRCanvas',title='dRCanvas',nx=1200,ny=600,cx=2,cy=1)
ROOT.gStyle.SetOptStat(1)
cv = h['dRCanvas'].cd(1)
h['dRvsPz'].Draw('colzbox')
cv = h['dRCanvas'].cd(2)
h['dRvsZhit'].Draw('colzbox')
h['dRCanvas'].Print('dRCanvas.gif')
ROOT.gStyle.SetOptStat(11)
ut.bookCanvas(h,key='ratioYZ',title='ratioYZ',nx=600,ny=600,cx=1,cy=1)
ROOT.gStyle.SetOptStat(1)
cv = h['ratioYZ'].cd(1)
h['YMC2dZMCVer'].Draw()
h['ratioYZ'].Print('ratioYZ.gif')
for x in ['ALL','HNL']:
ut.bookCanvas(h,key='MCTrackHit'+x,title='MCTrackHit'+x,nx=800,ny=800,cx=2,cy=2)
ROOT.gStyle.SetOptStat(1)
cv = h['MCTrackHit'+x].cd(1)
h['dxdy'+x+'TrHp'].Draw('colz')
cv = h['MCTrackHit'+x].cd(2)
h['dxdy'+x+'TrHm'].Draw('colz')
cv = h['MCTrackHit'+x].cd(3)
SetGrid(cv)
hh=h['dxdy'+x+'TrHp'].DrawCopy('colz')
for ax in [hh.GetXaxis(), hh.GetYaxis()]:
ax.SetRangeUser(-5,5)
cv = h['MCTrackHit'+x].cd(4)
SetGrid(cv)
hh=h['dxdy'+x+'TrHm'].DrawCopy('colz')
for ax in [hh.GetXaxis(), hh.GetYaxis()]:
ax.SetRangeUser(-5,5)
h['MCTrackHit'+x].Print('MCTrackHit'+x+'.gif')
###################################################################################
###################################################################################
###################################################################################
def bookVertexHistos(h, prefix=""):
if prefix=="NEW":
ut.bookHist(h,'docaRel'+prefix, 'docaRel'+prefix+";step;doca/doca0", 5, 0, 5, 2000, 0., 2.)
ut.bookHist(h,'doca' +prefix, 'doca' +prefix+";doca [cm]", 500, 0., 100.)
h['doca'+prefix].SetLineColor(2)
ut.bookHist(h,'doca0' +prefix, 'doca0' +prefix+";doca0 [cm]", 500, 0., 100.)
ut.bookHist(h,'vdx2'+prefix, 'vdx2'+prefix, 500, 0, 5000, 400, -20., 20.)
ut.bookHist(h,'vdy2'+prefix, 'vdy2'+prefix, 500, 0, 5000, 400, -20., 20.)
ut.bookHist(h,'vdz2'+prefix, 'vdz2'+prefix, 500, 0, 5000, 4000, -400., 400.)
ut.bookHist(h,'vdx2ndf'+prefix, 'vdx2ndf'+prefix, 500, 0, 5000, 400, -20., 20.)
ut.bookHist(h,'vdy2ndf'+prefix, 'vdy2ndf'+prefix, 500, 0, 5000, 400, -20., 20.)
ut.bookHist(h,'vdz2ndf'+prefix, 'vdz2ndf'+prefix, 500, 0, 5000, 4000, -400., 400.)
if ( (prefix=="mUP") or (prefix=="mDN") ) : return
for i in range (1,11):
hhname='vdx2_'+str(i)+prefix
ut.bookHist(h, hhname, hhname, 100, -20., 20.)
h[hhname].StatOverflows(True) # to include overflow/underflow in mean/sigma (range independence)
hhname='vdy2_'+str(i)+prefix
ut.bookHist(h, hhname, hhname, 100, -20., 20.)
h[hhname].StatOverflows(True)
hhname='vdz2_'+str(i)+prefix
ut.bookHist(h, hhname, hhname, 200, -400., 400.)
h[hhname].StatOverflows(True)
for coord in ('x','y','z') :
hname = "vres"+coord+prefix
ut.bookHist(h, hname, hname+"z_{0}-z_{truth} [cm];", 10, 0., 5000.)
for histo in h:
h[histo].Sumw2()
h[histo].SetLineColor(1)
###################################################################################
def plotVertexHistos(h,prefix=""):
ROOT.gStyle.SetStatY(0.9)
ROOT.gStyle.SetStatX(0.9)
ROOT.gStyle.SetStatW(0.3)
ROOT.gStyle.SetStatH(0.1)
ROOT.gStyle.SetOptStat(1)
coordTitle = {1:'x',2:'y',3:'z'}
cut = {0:'',1:'ndf'}
ut.bookCanvas(h,key='vertex2'+prefix,title='vertex2'+prefix,nx=600,ny=1200,cx=2,cy=3)
for fall in cut:
for cid in coordTitle.keys():
cv = h['vertex2'+prefix].cd(cid*2-1+fall)
cv.SetBottomMargin(0.2)
cv.SetLeftMargin(0.2)
hname = 'vd'+coordTitle[cid]+'2'+cut[fall]+prefix
h[hname].Draw("box")
h[hname].GetXaxis().SetTitle("z_{0}-z_{truth} [cm]")
ytitle = coordTitle[cid]+"_{truth}-v"+coordTitle[cid]+"_{reco} [cm]"
h[hname].GetXaxis().SetTitleSize(.06)
h[hname].GetYaxis().SetTitleSize(.06)
h[hname].GetYaxis().SetTitleOffset(1.3)
h[hname].GetYaxis().SetNdivisions(5)
h['vertex2'+prefix].Print('vertex2'+prefix+'.gif')
if ( (prefix=="mUP") or (prefix=="mDN") ) : return
f={}
for ct in coordTitle.values():
key =ct+prefix
ut.bookCanvas(h,key,title=key,nx=1600,ny=1200,cx=5,cy=2)
f[key]={}
for cvn in range (1,11):
hname='vd'+ct+'2_'+str(cvn)+prefix
cv = h[key].cd(cvn)
cv.SetBottomMargin(0.2)
h[hname].Draw("E")
xtitle = "v"+ct+"_{truth}-v"+ct+"_{reco} [cm]"
h[hname].GetXaxis().SetTitle(xtitle)
h[hname].GetXaxis().SetTitleSize(.06)
ROOT.gStyle.SetOptFit(11111)
f[key][hname] = ROOT.TF1(hname,'gaus')
f[key][hname].SetNpx(1000)
f[key][hname].SetParameter(1,0.)
f[key][hname].SetParameter(2,0.2*cvn)
h[hname].Fit(f[key][hname])
rmsht='vres'+key
#h[rmsht].SetBinContent(cvn, h[hname].GetRMS())
#h[rmsht].SetBinError (cvn, h[hname].GetRMSError())
h[rmsht].SetBinContent(cvn, f[key][hname].GetParameter(2))
h[rmsht].SetBinError (cvn, f[key][hname].GetParError(2))
h[key].Print(ct+prefix+'.gif')
key='vRes'+prefix
ut.bookCanvas(h,key,title='vRes'+prefix,nx=800,ny=800,cx=2,cy=2)
for cti in coordTitle :
cv = h[key].cd(cti)
rmsht ="vres"+coordTitle[cti]+prefix
h[rmsht].SetTitle("vertex "+coordTitle[cti]+" resolution;z_{0}-z_{truth} [cm];#sigma_{Gauss}(#Delta"+coordTitle[cti]+") [cm]")
h[rmsht].Draw("E")
h[key].Print(key+'.gif')
if ( prefix=='NEW' ) :
key='docaPlots'+prefix
ut.bookCanvas(h,key,key,nx=1200,ny=600,cx=2,cy=1)
cv = h[key].cd(1)
h['doca'+prefix].Draw()
h['doca0'+prefix].Draw("sames")
cv = h[key].cd(2)
h['docaRel'+prefix].Draw()
h[key].Print(key+'.gif')
BookHistos.plotCompareFitHistos
def plotCompareFitHistos
Definition: BookHistos.py:171
BookHistos.plotMomentumHistos
def plotMomentumHistos
Definition: BookHistos.py:87
BookHistos.plotMCTrackHitCorrelation
def plotMCTrackHitCorrelation
Definition: BookHistos.py:229
BookHistos.plotVertexHistos
def plotVertexHistos
Definition: BookHistos.py:312
BookHistos.SetAxis
def SetAxis
Definition: BookHistos.py:9
BookHistos.SetGrid
def SetGrid
Definition: BookHistos.py:5
BookHistos.bookVertexHistos
def bookVertexHistos
Definition: BookHistos.py:280
BookHistos.plotMFieldHistos
def plotMFieldHistos
Definition: BookHistos.py:38
BookHistos.bookMFieldHistos
def bookMFieldHistos
Definition: BookHistos.py:21
BookHistos.bookTrackingHistos
def bookTrackingHistos
Definition: BookHistos.py:206
BookHistos.bookCompareFitHistos
def bookCompareFitHistos
Definition: BookHistos.py:149
BookHistos.bookMomentumHistos
def bookMomentumHistos
Definition: BookHistos.py:67