diff --git a/DataQuality/ZLumiScripts/scripts/Pandas_scripts/README.md b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/README.md index eaeb7a6404131b6a9c864f538bbb5e3f0dfbf363..59cfb0b0d98ecaa1d810411574d306f0fd9f4d7c 100644 --- a/DataQuality/ZLumiScripts/scripts/Pandas_scripts/README.md +++ b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/README.md @@ -29,17 +29,28 @@ python plotting/luminosity.py --infile ~/public/Zcounting/CSVOutputs/HighMu/data ``` for year in 15 16 17 18 do + # Yearwise L(ee) / L(mumu) comparison vs. time and pileup + python -u plotting/yearwise_luminosity.py --year $year --comp + python -u plotting/yearwise_luminosity_vs_mu.py --year $year --comp for channel in Zee Zmumu Zll do - python plotting/yearwise_luminosity.py --year $year --channel $channel + # Yearwise L_Z / L_ATLAS comparison vs. time and pileup + python -u plotting/yearwise_luminosity.py --channel $channel --year $year + python -u plotting/yearwise_luminosity_vs_mu.py --channel $channel --year $year done done + ``` # Making full Run-2 "super plots" ``` +# Full Run-2 L_Z / L_ATLAS plots vs. time for channel in Zee Zmumu Zll do python plotting/yearwise_luminosity.py --year all --channel $channel done + +# Full Run-2 L(ee) / L(mumu) plot vs. time and pileup +python -u plotting/yearwise_luminosity.py --year all --comp +python -u plotting/yearwise_luminosity_vs_mu.py --year run2 --comp ``` diff --git a/DataQuality/ZLumiScripts/scripts/Pandas_scripts/dqt_zlumi_pandas.py b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/dqt_zlumi_pandas.py index 7c6718a55d1a0fa682e56cd221d880245edd00d1..6be890ae2228c541b3a0d820cb9e6e3f3ca0e019 100755 --- a/DataQuality/ZLumiScripts/scripts/Pandas_scripts/dqt_zlumi_pandas.py +++ b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/dqt_zlumi_pandas.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration import numpy as np import csv diff --git a/DataQuality/ZLumiScripts/scripts/Pandas_scripts/make_benedetto_files.py b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/make_benedetto_files.py new file mode 100755 index 0000000000000000000000000000000000000000..4fb96f084492795160050478e4626f3ffbf9e7c9 --- /dev/null +++ b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/make_benedetto_files.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +import os +import argparse +import pandas as pd + +parser = argparse.ArgumentParser() +parser.add_argument('--year', type=str, help='15-18') +args = parser.parse_args() +year = args.year + +indir = "/afs/cern.ch/user/m/miokeefe/public/Zcounting/CSVOutputs/HighMu/" +outdir = "/eos/user/m/miokeefe/public/ZC_BenedettoFiles/" +indir = os.path.join(indir, "data" + year + "_13TeV") +outdir = os.path.join(outdir, "data" + year + "_13TeV") + +os.system("mkdir -p " + outdir) + +def main(): + for file in os.listdir(indir): + if "run" not in file: + continue + + df = pd.read_csv(os.path.join(indir, file)) + df = df.drop(df[df.ZllLumi == 0].index) + df = df.drop(df[df.PassGRL == 0].index) + + df['InstZllLumi'] = df['ZllLumi'] + df['InstZllLumiErr'] = df['ZllLumiErr'] + df['IntZllLumi'] = df['ZllLumi'] * df['LBLive'] + df['IntZllLumiErr'] = df['ZllLumiErr'] * df['LBLive'] + + df = df[['LBNum','LBLive','InstZllLumi','InstZllLumiErr','IntZllLumi','IntZllLumiErr']] + df.to_csv(os.path.join(outdir, file), index = False) + +if __name__ == "__main__": + main() diff --git a/DataQuality/ZLumiScripts/scripts/Pandas_scripts/make_lhc_files.py b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/make_lhc_files.py new file mode 100755 index 0000000000000000000000000000000000000000..d424249119affd597b6fbedb2cfc1e2364f8eca0 --- /dev/null +++ b/DataQuality/ZLumiScripts/scripts/Pandas_scripts/make_lhc_files.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +import numpy as np +import pandas as pd +import ROOT as R +import argparse +from array import array +from math import sqrt +import python_tools as pt +import time +import csv + +parser = argparse.ArgumentParser() +parser.add_argument('--infile', type=str, help='input file obvs') + +args = parser.parse_args() +infilename = args.infile + +def main(): + dfz = pd.read_csv(infilename, delimiter=",") + dict_eff = {} + for index, event in dfz.iterrows(): + lbzero = (event.LBNum // 20)*20 + + if event.ZeeErrComb != 0.0: + weight_zee = 1/pow(event.ZeeErrComb, 2) + else: + weight_zee = 0.0 + + if event.ZmumuErrComb != 0.0: + weight_zmumu = 1/pow(event.ZmumuErrComb, 2) + else: + weight_zmumu = 0.0 + + if lbzero not in sorted([key[0] for key in dict_eff.keys() if "ZeeEff" in key]): + dict_eff[lbzero, "ZeeEff"] = weight_zee * event.ZeeEffComb + dict_eff[lbzero, "ZeeErr"] = weight_zee + dict_eff[lbzero, "ZeeRaw"] = event.ZeeRaw + dict_eff[lbzero, "ZmumuEff"] = weight_zmumu * event.ZmumuEffComb + dict_eff[lbzero, "ZmumuErr"] = weight_zmumu + dict_eff[lbzero, "ZmumuRaw"] = event.ZmumuRaw + dict_eff[lbzero, "lbstart"] = event.LBStart + dict_eff[lbzero, "lbend"] = event.LBEnd + dict_eff[lbzero, "lblive"] = event.LBLive + dict_eff[lbzero, "offlumi"] = event.OffLumi + dict_eff[lbzero, "lhcfill"] = int(event.FillNum) + else: + dict_eff[lbzero, "ZeeEff"] += weight_zee * event.ZeeEffComb + dict_eff[lbzero, "ZeeErr"] += weight_zee + dict_eff[lbzero, "ZeeRaw"] += event.ZeeRaw + dict_eff[lbzero, "ZmumuEff"] += weight_zmumu * event.ZmumuEffComb + dict_eff[lbzero, "ZmumuErr"] += weight_zmumu + dict_eff[lbzero, "ZmumuRaw"] += event.ZmumuRaw + dict_eff[lbzero, "lblive"] += event.LBLive + dict_eff[lbzero, "lbend"] = event.LBEnd + dict_eff[lbzero, "offlumi"] += event.OffLumi + dict_eff[lbzero, "lhcfill"] = int(event.FillNum) + + print("Making merged file for run", infilename) + outfile = infilename.replace("run", "merged") + csvfile = open(outfile, 'w') + csvwriter = csv.writer(csvfile, delimiter=',') + csvwriter.writerow(['ZeeRate', 'ZmumuRate', 'LBStart','LBEnd','FillNum','LBLive','OffLumi']) + timeformat = '%y/%m/%d %H:%M:%S' + for lbzero in sorted([key[0] for key in dict_eff.keys() if "ZeeEff" in key]): + if dict_eff[lbzero, "ZeeErr"] != 0: + eff_zee = dict_eff[lbzero, "ZeeEff"]/dict_eff[lbzero, "ZeeErr"] + err_zee = sqrt(1/dict_eff[lbzero, "ZeeErr"]) + zeerate = dict_eff[lbzero, "ZeeRaw"]/eff_zee/dict_eff[lbzero, "lblive"] + else: + zeerate = 0.0 + + if dict_eff[lbzero, "ZmumuErr"] != 0: + eff_zmumu = dict_eff[lbzero, "ZmumuEff"]/dict_eff[lbzero, "ZmumuErr"] + err_zmumu = sqrt(1/dict_eff[lbzero, "ZmumuErr"]) + zmumurate = dict_eff[lbzero, "ZmumuRaw"]/eff_zmumu/dict_eff[lbzero, "lblive"] + else: + zmumurate = 0.0 + + lblive = dict_eff[lbzero, "lblive"] + lbstart = time.strftime(timeformat, time.gmtime(dict_eff[lbzero, "lbstart"])) + lbend = time.strftime(timeformat, time.gmtime(dict_eff[lbzero, "lbend"])) + offlumi = dict_eff[lbzero, "offlumi"] + lhcfill = dict_eff[lbzero, "lhcfill"] + + csvwriter.writerow([zeerate, zmumurate, lbstart, lbend, lhcfill, lblive, offlumi]) + + csvfile.close() + + +if __name__ == "__main__": + R.gROOT.SetBatch(R.kTRUE) + main()