53 R.gROOT.SetStyle(
"Plain")
57 R.gStyle.SetFrameBorderMode(icol)
58 R.gStyle.SetFrameFillColor(icol)
59 R.gStyle.SetCanvasBorderMode(icol)
60 R.gStyle.SetCanvasColor(icol)
61 R.gStyle.SetPadBorderMode(icol)
62 R.gStyle.SetPadColor(icol)
63 R.gStyle.SetStatColor(icol)
65 R.gStyle.SetLineColor(R.kBlack)
68 R.gStyle.SetPaperSize(20,26)
71 R.gStyle.SetPadTopMargin(0.05)
72 R.gStyle.SetPadRightMargin(0.05)
73 R.gStyle.SetPadBottomMargin(0.16)
74 R.gStyle.SetPadLeftMargin(0.16)
77 R.gStyle.SetTitleXOffset(1.4)
78 R.gStyle.SetTitleYOffset(1.4)
83 R.gStyle.SetTextFont(font)
84 R.gStyle.SetTextSize(tsize)
85 R.gStyle.SetLegendFont(font)
86 R.gStyle.SetLabelFont(font,
"xyz")
87 R.gStyle.SetTitleFont(font,
"xyz")
89 R.gStyle.SetLabelSize(tsize,
"xyz")
90 R.gStyle.SetTitleSize(tsize,
"xyz")
93 R.gStyle.SetMarkerStyle(20)
94 R.gStyle.SetMarkerSize(1.2)
95 R.gStyle.SetLineStyleString(2,
"[12 12]")
97 R.gStyle.SetEndErrorSize(0.)
100 R.gStyle.SetOptTitle(0)
101 R.gStyle.SetOptStat(0)
102 R.gStyle.SetOptFit(0)
105 R.gStyle.SetPadTickX(1)
106 R.gStyle.SetPadTickY(1)
113 l.SetTextColor(color)
115 delx = 0.115*696*R.gPad.GetWh()/(472*R.gPad.GetWw())
117 l.DrawLatex(x,y,
"ATLAS")
122 p.SetTextColor(color)
123 p.DrawLatex(x+delx,y,text)
135 vec_y =
array(
'd', [yval] * (len(vec_in) + 2))
136 vec_x =
array(
'd', sorted(vec_in))
137 err_y =
array(
'd', [stdev] * (len(vec_in) + 2))
140 vec_x.append(9999999999)
142 line = R.TGraphErrors(len(vec_x), vec_x, vec_y, R.nullptr, err_y)
143 line.SetFillColorAlpha(8, 0.35)
144 line.SetFillStyle(4050)
170def get_dfz(basedir, year, run, channel, standardcuts = True):
172 Standard retrieval of Z counting Panda dataframe from CSV
174 if year==
"run3" or len(year.split(
"_")) > 1:
175 mydir = basedir +
"data"+
get_year(run)+
"_13p6TeV/physics_Main/"
177 mydir = basedir +
"data"+
get_year(run)+
"_13TeV/physics_Main/"
178 elif int(year) >= 22:
179 mydir = basedir +
"data" + year +
"_13p6TeV/physics_Main/"
181 mydir = basedir +
"data" + year +
"_13TeV/physics_Main/"
184 dfz = pd.read_csv(mydir +
"run_" + run +
".csv")
185 except FileNotFoundError:
186 print(
"WARNING: CVS for run", run,
"not found, will skip.")
187 return -1., 0., 0., 0., 0.,
None
191 if channel
is not None:
193 dfz_small[
'ZLumi'] = dfz_small[channel +
'Lumi']
194 dfz_small[
'ZLumiErr'] = dfz_small[channel +
'LumiErr']
196 dfz_small = dfz_small.drop(dfz_small[dfz_small.ZLumi == 0].index)
197 dfz_small = dfz_small.drop(dfz_small[(dfz_small[
'LBLive']<lblivetimecut) | (dfz_small[
'PassGRL']==0)].index)
199 dfz_small[
'ZLumi'] *= dfz_small[
'LBLive']
200 dfz_small[
'ZLumiErr'] *= dfz_small[
'LBLive']
201 zlumi = dfz_small[
'ZLumi'].sum()
203 dfz_small[
'ZLumiErr'] *= dfz_small[
'ZLumiErr']
204 zerr = math.sqrt(dfz_small[
'ZLumiErr'].sum())
208 dfz_small = dfz_small.drop(dfz_small[(dfz_small.ZeeLumi == 0) | (dfz_small.ZmumuLumi == 0)].index)
209 dfz_small = dfz_small.drop(dfz_small[(dfz_small[
'LBLive']<lblivetimecut) | (dfz_small[
'PassGRL']==0)].index)
210 dfz_small[
'ZeeLumi'] *= dfz_small[
'LBLive']
211 dfz_small[
'ZeeLumiErr'] *= dfz_small[
'LBLive']
212 dfz_small[
'ZeeLumiErr'] *= dfz_small[
'ZeeLumiErr']
213 dfz_small[
'ZmumuLumi'] *= dfz_small[
'LBLive']
214 dfz_small[
'ZmumuLumiErr'] *= dfz_small[
'LBLive']
215 dfz_small[
'ZmumuLumiErr'] *= dfz_small[
'ZmumuLumiErr']
218 livetime = dfz_small[
'LBLive'].sum()
221 dfz_small[
'OffLumi'] *= dfz_small[
'LBLive']
222 olumi = dfz_small[
'OffLumi'].sum()
226 run_start = dfz_small[
'LBStart'].iloc[0]
227 timestamp = time.gmtime(run_start)
228 timestamp = R.TDatime(timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4], timestamp[5])
229 timestamp = timestamp.Convert()
233 return livetime, zlumi, zerr, olumi, timestamp, dfz_small