#!/usr/bin/env python
# coding: utf-8
#
# # CMS Open Data Example #6: Fitting the J/$\psi$ fit
#
# ## Import required modules
# In[4]:
from ROOT import TFile, TCanvas, TH1F, TLorentzVector
get_ipython().run_line_magic('jsroot', 'on')
# ## Read in Data from Input File
# In[5]:
file = TFile("../data/Dimuons.root","READ");
# ## Declare Histograms
# In[6]:
Jpsi = TH1F("Jpsi","#mu#mu mass;#mu#mu mass [GeV];Events", 1000, 2, 3.5)
# # Compute Invariant Mass of J/$\psi$
# In[7]:
for dimu in file.Dimuons:
if dimu.Muon1_Global and dimu.Muon2_Global:
muon1 = TLorentzVector(dimu.Muon1_Px, dimu.Muon1_Py, dimu.Muon1_Pz, dimu.Muon1_Energy)
muon2 = TLorentzVector(dimu.Muon2_Px, dimu.Muon2_Py, dimu.Muon2_Pz, dimu.Muon2_Energy)
InvariantMass = (muon1 + muon2).M()
if InvariantMass > 2.0 and InvariantMass < 4.0:
Jpsi.Fill(InvariantMass)
# ## Fitting the J/$\psi$ Peak
# In[8]:
from ROOT import TF1, kGreen, kRed
Canvas = TCanvas()
# Possible fitting options:
# "gaus" gaussian
# "pol1" 1st order polynomial
# In[9]:
Gaussian = TF1("Gaussian","gaus", 3.03, 3.16)
Background = TF1("Background","pol1", 2, 3.5)
Gaussian.SetLineColor(kRed)
Background.SetLineColor(kGreen)
Jpsi.Fit(Gaussian,"R")
Jpsi.Fit(Background,"R+")
Canvas.Draw()
# In[3]:
from ROOT import TFile, TCanvas, TH1F, TLorentzVector
get_ipython().run_line_magic('jsroot', 'on')
file = TFile("../data/Dimuons.root","READ");
z_boson = TH1F("zboson","#mu#mu mass;#mu#mu mass [GeV];Events", 1000, 70, 120)
for dimu in file.Dimuons:
if dimu.Muon1_Global and dimu.Muon2_Global:
muon1 = TLorentzVector(dimu.Muon1_Px, dimu.Muon1_Py, dimu.Muon1_Pz, dimu.Muon1_Energy)
muon2 = TLorentzVector(dimu.Muon2_Px, dimu.Muon2_Py, dimu.Muon2_Pz, dimu.Muon2_Energy)
InvariantMass = (muon1 + muon2).M()
if InvariantMass > 70.0 and InvariantMass < 120.0:
z_boson.Fill(InvariantMass)
from ROOT import TF1, kGreen, kRed
Canvas = TCanvas()
Gaussian = TF1("Gaussian","gaus", 87, 95)
Background = TF1("Background","pol1", 70, 120)
Gaussian.SetLineColor(kRed)
Background.SetLineColor(kGreen)
z_boson.Fit(Gaussian,"R")
z_boson.Fit(Background,"R+")
Canvas.Draw()
# In[1]:
from ROOT import TFile, TCanvas, TH1F, TLorentzVector
get_ipython().run_line_magic('jsroot', 'on')
file = TFile("../data/Dimuons.root","READ");
upsilon = TH1F("upsilon","#mu#mu mass;#mu#mu mass [GeV];Events", 1000, 8.0, 12.0)
for dimu in file.Dimuons:
if dimu.Muon1_Global and dimu.Muon2_Global:
muon1 = TLorentzVector(dimu.Muon1_Px, dimu.Muon1_Py, dimu.Muon1_Pz, dimu.Muon1_Energy)
muon2 = TLorentzVector(dimu.Muon2_Px, dimu.Muon2_Py, dimu.Muon2_Pz, dimu.Muon2_Energy)
InvariantMass = (muon1 + muon2).M()
if InvariantMass > 8.0 and InvariantMass < 12.0:
upsilon.Fill(InvariantMass)
# In[2]:
from ROOT import TF1, kGreen, kRed
Canvas = TCanvas()
Gaussian = TF1("Gaussian","gaus", 9.3, 9.6)
Gaussian2 = TF1("Gaussian2","gaus", 9.84, 10.16)
Gaussian3 = TF1("Gaussian3","gaus", 10.2, 10.5)
Background = TF1("Background","pol1", 8, 12)
Gaussian.SetLineColor(kRed)
Gaussian2.SetLineColor(kRed)
Gaussian3.SetLineColor(kRed)
Background.SetLineColor(kGreen)
upsilon.Fit(Gaussian,"R")
upsilon.Fit(Gaussian2,"R2+")
upsilon.Fit(Gaussian3,"R3+")
upsilon.Fit(Background,"R+")
Canvas.Draw()
# In[ ]: