239 Plot normalised comparison of Z-counting luminosity to ATLAS luminosity.
240 This can be done as a function of time and pileup.
243 print(
"------------------------------------------")
244 print(
"Begin Yearwise ", channel,
" Lumi ATLAS comparison vs Time")
245 print(
"------------------------------------------")
254 print(
"year = ", year)
257 maindir = args.indir + dir_2023
258 grl = pt.get_grl(year)
259 print(
"2023 grl = ", grl)
262 maindir = args.indir + dir_2022
263 grl = pt.get_grl(year)
264 print(
"2022 grl = ", grl)
267 grl = pt.get_grl(year)
268 print(
"other grl = ", grl)
272 dfz = pd.read_csv(maindir +
"run_" + run +
".csv")
274 dfz_small[
'ZLumi'] = dfz_small[channel +
'Lumi']
275 dfz_small[
'ZLumiErr'] = dfz_small[channel +
'LumiErr']
276 dfz_small[
'LBLive'] = dfz_small[
'LBLive']
277 dfz_small = dfz_small.drop(dfz_small[dfz_small.ZLumi == 0].index)
278 dfz_small = dfz_small.drop(dfz_small[(dfz_small[
'LBLive']<10) | (dfz_small[
'PassGRL']==0)].index)
281 if dfz_small[
'LBLive'].
sum()/60 < 40:
282 print(
"Skip Run", run,
"because of live time", dfz_small[
'LBLive'].
sum()/60,
"min")
286 run_start = dfz_small[
'LBStart'].iloc[0]
287 timestamp = time.gmtime(run_start)
288 timestamp = R.TDatime(timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4], timestamp[5])
289 timestamp = timestamp.Convert()
292 dfz_small[
'OffLumi'] *= dfz_small[
'LBLive']
293 olumi = dfz_small[
'OffLumi'].
sum()
296 dfz_small[
'ZLumi'] *= dfz_small[
'LBLive']
297 zlumi = dfz_small[
'ZLumi'].
sum()
300 dfz_small[
'ZLumiErr'] *= dfz_small[
'LBLive']
301 dfz_small[
'ZLumiErr'] *= dfz_small[
'ZLumiErr']
302 zerr = math.sqrt(dfz_small[
'ZLumiErr'].
sum())
305 arr_date.append(timestamp)
306 arr_olumi.append(olumi)
307 arr_zlumi.append(zlumi)
308 arr_zerr.append(zerr)
312 arr_date =
array(
'd', arr_date)
314 arr_olumi = np.array(arr_olumi)
315 arr_zlumi = np.array(arr_zlumi)
316 arr_zerr = np.array(arr_zerr)
317 total_zlumi = arr_zlumi.sum()/1000000
318 total_zlumi_string =
"Official Data Quality, " +
str(
round(total_zlumi, 2)) +
" fb^-1"
326 normalisation = np.sum(arr_zlumi) / np.sum(arr_olumi)
328 arr_zlumi /= normalisation
329 arr_zerr /= normalisation
332 arr_zlumi_ratio = arr_zlumi/arr_olumi
333 arr_zerr_ratio = arr_zerr/arr_olumi
337 tg = R.TGraphErrors(len(arr_date), arr_date,
array(
'd',arr_zlumi_ratio), R.nullptr,
array(
'd',arr_zerr_ratio))
340 plot_title =
"Ratio of absolute "+ zstring +
" Luminosity to ATLAS Luminosity across " + norm_type
342 plot_title =
"Ratio of normalised "+ zstring +
" Luminosity to ATLAS Luminosity across " + norm_type
343 tg.SetTitle(plot_title+
";"+xtitle+
";"+ytitle)
346 if out_tag ==
"_run3":
347 c1 = R.TCanvas(
"c1",
"c1", 2000, 1200)
350 c1 = R.TCanvas(
"c1",
"c1", 1000, 750)
354 tg.GetYaxis().SetRangeUser(ymin, ymax)
357 stdev = np.percentile(abs(arr_zlumi_ratio - np.median(arr_zlumi_ratio)), 68)
358 print(
"68% band =", stdev)
360 mean = tg.GetFunction(
'pol0').GetParameter(0)
361 print(
"const of pol0 fit", mean)
362 print(
"median", np.median(arr_zlumi_ratio))
363 print(
"mean", np.mean(arr_zlumi_ratio))
365 line1 = pt.make_bands(arr_date, stdev, mean)
369 leg = R.TLegend(0.55, 0.20, 0.69, 0.45)
371 leg.SetTextSize(0.045)
372 leg.AddEntry(tg, leg_entry,
"ep")
373 leg.AddEntry(line1,
"68% band",
"f")
377 pt.drawAtlasLabel(xval, yval-0.47,
"Internal")
378 pt.drawText(xval, yval-0.53, date_tag, set_size)
379 pt.drawText(xval, yval-0.59, zstring, set_size)
380 pt.drawText(xval, yval-0.65,
"OflLumi-Run3-003", set_size)
382 pt.drawAtlasLabel(xval, yval-0.47,
"Internal")
383 pt.drawText(xval, yval-0.53, date_tag, set_size)
384 pt.drawText(xval, yval-0.59, zstring, set_size)
385 pt.drawText(xval, yval-0.65,
"OflLumi-Run3-003", set_size)
386 pt.drawText(xval, yval-0.02, total_zlumi_string, set_size)
388 pt.drawText(xval-0.12, 0.95, plot_title, set_size)
390 tg.GetYaxis().SetRangeUser(ymin, ymax)
391 tg.GetXaxis().SetTimeDisplay(2)
392 tg.GetXaxis().SetLabelSize(0.04)
393 tg.GetYaxis().SetLabelSize(0.04)
394 tg.GetXaxis().SetNdivisions(9,R.kFALSE)
395 tg.GetXaxis().SetTimeFormat(time_format)
396 tg.GetXaxis().SetTimeOffset(0,
"gmt")
402 c1.SaveAs(outdir + channel +
"_counting_data"+out_tag+
"_abs.pdf")
403 outfile = R.TFile(outdir + channel +
"_counting_data"+out_tag+
"_abs.root",
"RECREATE")
405 c1.SaveAs(outdir + channel +
"_counting_data"+out_tag+
".pdf")
406 outfile = R.TFile(outdir + channel +
"_counting_data"+out_tag+
".root",
"RECREATE")
409 line1.SetName(
"Line")