#!/usr/bin/env python
# coding: utf-8

# In[ ]:


import ROOT as r


# In[ ]:


wsigZ = r.RooWorkspace("wsigZ")

wsigZ.factory('Hm[70.,120.]') 
wsigZ.factory('tlumiwt[7.7498647e-09,5.9192273e-05]') 

Hm = wsigZ.var('Hm')
tlumiwt= wsigZ.var('tlumiwt')

sig_file = r.TFile.Open("Signal.root")
sig_tree = sig_file.Get("T")

ds_sig = r.RooDataSet("ds_sig", "ds_sig", r.RooArgSet(Hm,tlumiwt),r.RooFit.WeightVar(tlumiwt),r.RooFit.Import(sig_tree))
getattr(wsigZ,'import')(ds_sig)


# In[ ]:


m = r.RooRealVar("m", "m", 91,85.,100.)
s = r.RooRealVar("s", "s" ,4.,0.1, 10.)
nL = r.RooRealVar("nL","nL", 6.0,0.1,10.0)
nR = r.RooRealVar("nR","nR", 1,0.,10.0)
alphaL = r.RooRealVar("alphaL","alphaL", 5.0,0.1,10.0)
alphaR = r.RooRealVar("alphaR","alphaR", 5.,0.,10.0)
sig = r.RooDoubleCrystalBall("sig","sig",Hm,m,s,alphaL,nL,alphaR,nR) # when using combine tool
#sig = r.RooCrystalBall("sig","sig",Hm,m,s,alphaL,nL,alphaR,nR) #when using ROOT > 6.24

getattr(wsigZ,'import')(sig)

fitresult=sig.fitTo(ds_sig,r.RooFit.SumW2Error(r.kTRUE),r.RooFit.Save())
fitresult.Print()

c=r.TCanvas()
xframe = Hm.frame(r.RooFit.Title("weights in range [7.7498647e-09,5.9192273e-05]")) 
ds_sig.plotOn(xframe,r.RooFit.MarkerColor(1))
sig.plotOn(xframe)
chi=xframe.chiSquare(6)
legend = r.TLegend(0.47,0.79,0.89,0.89)
legend.SetTextSize(0.04)
legend.SetBorderSize(0)  # no border
legend.SetFillStyle(0)  # make transparent
legend.AddEntry(None,"Double Sided Crystal Ball", '')
legend.AddEntry(None,'#chi^{2}' + ' / ndf = {:.3f}'.format(chi), '')
sig.paramOn(xframe,r.RooFit.Layout(0.55,0.89,0.75),r.RooFit.Format("NEU",r.RooFit.AutoPrecision(4)))
xframe.getAttText().SetTextSize(0.04) ;
xframe.Draw()
legend.Draw()
c.Draw()


# In[ ]:





# In[ ]:




