Angular analysis of B+->K*+(K+pi0)mumu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

89 lines
3.3 KiB

# Renata Kopecna
import uproot
import numpy as np
import matplotlib.pyplot as plt
import sys
sys.path.insert(0,'/home/lhcb/kopecna/B2KstarMuMu_clean/Code/Selection/ComparisonTool')
#import Utils
from Utils3 import getTreeList
def plotMultiple(year, Run, Reference, PHSP, verbose):
#Check if 2015
is2015 = (year == 2015 and Run == 0)
#Load the branch
dataTM = uproot.lazyarray(getTreeList(2016 if (is2015) else year, Run, True, True, Reference, PHSP, verbose),"DecayTreeTruthMatched","IsAloneAt_TMed_rndGamma")
dataMC = uproot.lazyarray(getTreeList(2016 if (is2015) else year, Run, True, True, Reference, PHSP, verbose),"DecayTreeTruthMatched","IsAloneAtNotTM")
data = uproot.lazyarray(getTreeList(year, Run, False, True, Reference, PHSP, verbose),"DecayTree","IsAloneAt")
#Switch to numpy array (check if neded)
arr_MLPresponse = np.array(data, dtype=float)
arr_MLPresponseMC = np.array(dataMC, dtype=float)
arr_MLPresponseTM = np.array(dataTM, dtype=float)
nEvts = arr_MLPresponse.size
nMCEvts = arr_MLPresponseMC.size
nTMEvts = arr_MLPresponseTM[arr_MLPresponseTM!=2].size
if (verbose):
print ("nEvts: ", nEvts)
print ("nMCEvts: ", nMCEvts)
print ("nTMEvts: ", nTMEvts)
#Define a figure
fig = plt.figure()
#Define steps in x-axis
arr_steps = np.arange(0.9,1.0,0.001)
multiple_fraction = []
multiple_fraction_MC = []
multiple_fraction_TM = []
if (verbose): print("Steps in MLP:",arr_steps)
#Get the fractions
for m in arr_steps:
multiple_fraction.append(1-arr_MLPresponse[arr_MLPresponse<=m].size / float(nEvts))
multiple_fraction_MC.append(1-arr_MLPresponseMC[arr_MLPresponseMC<=m].size / float(nMCEvts))
multiple_fraction_TM.append(1-arr_MLPresponseTM[arr_MLPresponseTM<=m].size / float(nTMEvts))
plt.plot(arr_steps,multiple_fraction,marker=".",label = "Data")
plt.plot(arr_steps,multiple_fraction_MC,marker=".",label = "MC")
plt.plot(arr_steps,multiple_fraction_TM,marker=".",label = "TM MC")
plt.ylim(0.0,0.21)
plt.legend(loc="upper right", prop={'size': 14})
tag = "Run " + str(Run) if (Run != 0) else "Year " + str(year)
plt.text(0.905,0.175,tag, fontsize=24)
plt.xlabel('MVA response cut',fontsize=14)
plt.ylabel('Multiple candidates fraction',fontsize=14)
name = "Run_" + str(Run) if (Run != 0) else "year_" + str(year)
fig.savefig(name,dpi = fig.dpi, bbox_inches='tight')
return
def plotKplusmumu(year,Run,MC,Reference,PHSP,verbose):
#Check if 2015
is2015 = (year == 2015 and Run == 0)
if (Reference or PHSP): MC = True
treeName = "DecayTreeTruthMatched" if (MC) else "DecayTree"
#Load the branch
branch_list = ["PX", "PY", "PZ", "PE"]
particle_list = ["K_plus", "mu_plus", "mu_minus"]
array_list = []
for part in particle_list:
for branch in branch_list:
branchName = part+"_"+branch+"_DTF"
array_list.append(np.array(uproot.lazyarray(getTreeList(2016 if (is2015) else year, Run, MC, MC, Reference, PHSP, verbose),treeName,branchName)),dtype=float)
nEvts = array_list[0].size
#plotMultiple(2011,1,False, False,True)
#plotMultiple(2016,2,False, False,True)
for yr in [2011,2012,2015,2016,2017,2018]:
plotMultiple(yr,0,False,False,True)