90 lines
3.3 KiB
Python
90 lines
3.3 KiB
Python
|
# 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)
|