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()