Exemple #1
0
def ttbarcheck():
    indir = "input/21Aug_newsf"

    acc = acc_from_dir(indir)
    outdir = f'./output/{os.path.basename(indir)}/ttbar/fxfx_vs_mlm'
    for year in [2017, 2018]:
        data = re.compile(f'TTJets.*FXFX.*{year}')
        mc = re.compile(f'TTJets.*MLM.*{year}')
        region = 'cr_2m_j'
        for distribution in ['recoil', 'ak4_pt0']:
            make_plot(acc,
                      region=region,
                      distribution=distribution,
                      year=year,
                      data=data,
                      mc=mc,
                      ylim=(1e-3, 1e3),
                      outdir=outdir)

    outdir = f'./output/{os.path.basename(indir)}/ttbar/fxfx_vs_pow'
    for year in [2017, 2018]:
        data = re.compile(f'TTJets.*FXFX.*{year}')
        mc = re.compile(f'TT.*pow.*{year}')
        region = 'cr_2m_j'
        for distribution in ['recoil', 'ak4_pt0']:
            make_plot(acc,
                      region=region,
                      distribution=distribution,
                      year=year,
                      data=data,
                      mc=mc,
                      ylim=(1e-3, 1e3),
                      outdir=outdir)
Exemple #2
0
def data_mc_after_kfac():
    indir = "input/21Aug_newsf"

    acc = acc_from_dir(indir)
    outdir = f'./output/{os.path.basename(indir)}'
    for year in [2017, 2018]:
        data = re.compile(f'MET_{year}')
        mc = re.compile(
            f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*){year}'
        )
        region = 'cr_2m_j'
        for distribution in ['recoil', 'ak4_pt0']:
            make_plot(acc,
                      region=region,
                      distribution=distribution,
                      year=year,
                      data=data,
                      mc=mc,
                      ylim=(1e-3, 1e3),
                      outdir=outdir)

        data = re.compile(f'MET_{year}')
        mc = re.compile(
            f'(TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*|W.*HT.*).*{year}'
        )
        region = 'cr_1m_j'
        for distribution in ['recoil', 'ak4_pt0']:
            make_plot(acc,
                      region=region,
                      distribution=distribution,
                      year=year,
                      data=data,
                      mc=mc,
                      ylim=(1e-3, 1e5),
                      outdir=outdir)
Exemple #3
0
def main():

    indir = "input/2019-09-06_hem/"

    acc = acc_from_dir(indir)

    # for year in [2018]:
    #     data = re.compile(f'EGamma_{year}')
    #     mc = re.compile(f'(EW.*|TTJets.*|ZZ.*|ST.*|QCD_HT.*|WW.*|WZ.*|.*DYJetsToLL_M-50_HT_MLM.*|WJet.*HT.*){year}')

    #     for region in ['cr_1e_j','cr_1e_j_nohem', 'cr_2e_j','cr_1e_j_nohem']:
    #         for distribution in ['recoil','ak4_phi','electron_phi','ak4_pt0']:
    #             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, outdir=f'./output/{os.path.basename(indir)}')

    for year in [2018]:
        data = re.compile(f'MET_{year}')
        mc = re.compile(
            f'(EW.*|TTJets.*|ZZ.*|ST.*|QCD_HT.*|WW.*|WZ.*|.*DYJetsToLL_M-50_HT_MLM.*|WJet.*HT.*){year}'
        )
        for region in ['cr_1m_j', 'cr_1m_j_nohem']:
            for distribution in ['ak4_phi', 'recoil', 'ak4_pt0']:
                make_plot(acc,
                          region=region,
                          distribution=distribution,
                          year=year,
                          data=data,
                          mc=mc,
                          outdir=f'./output/{os.path.basename(indir)}')
Exemple #4
0
def cr_ratio():
        indir=os.path.abspath('input/2019-09-09_gen_dilep_sf/')
        acc = acc_from_dir(indir)
        

        
        for year in [2017,2018]:
            data = {
                'cr_1m_j' : f'MET_{year}',
                'cr_2m_j' : f'MET_{year}',
                'cr_1e_j' : f'EGamma_{year}',
                'cr_2e_j' : f'EGamma_{year}',
                'cr_g_j' : f'EGamma_{year}',
            }
            mc_lo = {
                'cr_1m_j' : re.compile(f'(TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*|W.*HT.*).*{year}'),
                'cr_1e_j' : re.compile(f'(TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*|W.*HT.*).*{year}'),
                'cr_2m_j' : re.compile(f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*).*{year}'),
                'cr_2e_j' : re.compile(f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*).*{year}'),
                'cr_g_j' : re.compile(f'(GJets.*|QCD_HT.*|W.*HT.*).*{year}'),
            }
            mc_nlo = {
                    'cr_1m_j' : re.compile(f'(TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*|W.*FXFX.*).*{year}'),
                    'cr_1e_j' : re.compile(f'(TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*|W.*FXFX.*).*{year}'),
                    'cr_2m_j' : re.compile(f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*).*{year}'),
                    'cr_2e_j' : re.compile(f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*).*{year}'),
                    'cr_g_j' : re.compile(f'(GJets.*|QCD_HT.*|W.*FXFX.*).*{year}'),
            }
            outdir = f'./output/{os.path.basename(indir)}/ratios'
            cr_ratio_plot(acc, year=year,tag='losf',outdir=outdir, mc=mc_lo)
            cr_ratio_plot(acc, year=year,tag='nlo',outdir=outdir, mc=mc_nlo)


            for region in mc_lo.keys():
                outdir = f'./output/{os.path.basename(indir)}/{region}'
                plotset = plot_settings[region]
                for distribution in plotset.keys():
                    make_plot(acc, 
                            region=region,
                            distribution=distribution, 
                            year=year, 
                            data=data[region], 
                            mc=mc_lo[region], 
                            ylim=plot_settings['ylim'], 
                            tag = 'losf',
                            outdir=f'./output/{os.path.basename(indir)}/{region}')
                    make_plot(acc, 
                            region=region,
                            distribution=distribution, 
                            year=year, 
                            data=data[region], 
                            mc=mc_nlo[region], 
                            ylim=plot_settings['ylim'], 
                            tag = 'nlo',
                            outdir=f'./output/{os.path.basename(indir)}/{region}')
Exemple #5
0
 def single_electron_plots():
     for year in [2017, 2018]:
         data = re.compile(f'EGamma_{year}')
         mc = re.compile(f'(TTJets.*FXFX.*|ST.*|QCD_HT.*|Diboson.*|W.*HT.*).*{year}')
         region='cr_1e_j'
         for distribution in ['recoil','ak4_pt0','electron_pt','met']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, ylim=(1e-3,1e5), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_phi0','electron_phi']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, ylim=(1e4,1e5), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_eta0', 'electron_eta']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, xlim=(-3,3),ylim=(1e4,1e6), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_chf0','ak4_nhf0']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, xlim=(0,1),ylim=(1e3,1e8), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['electron_mt']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, xlim=(0,180),ylim=(1e1,1e5), outdir=f'./output/{os.path.basename(indir)}/{region}')
def main():

    # indir = "../input/21Aug19_v4_pdfwgt"

    # acc = acc_from_dir(indir)

    # for year in [2017]:
    #     data = re.compile(f'MET_{year}')
    #     mc = re.compile(f'(EW.*|TTJets.*|ZZ.*|ST.*|QCD_HT.*|WW.*|WZ.*|.*DYJetsToLL_M-50_HT_MLM.*){year}')
    #     region='cr_2m_j'
    #     for distribution in ['recoil']:
    #         make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, ylim=(1e-3,1e3), outdir=f'./output/{os.path.basename(indir)}')

    indir = "../../input/21Aug19_v2_newpu"

    acc = acc_from_dir(indir)

    for year in [2017]:
        data = re.compile(f'MET_{year}')
        mc = re.compile(
            f'(EW.*|TTJets.*|ZZ.*|ST.*|QCD_HT.*|WW.*|WZ.*|.*DYJetsToLL_M-50_HT_MLM.*){year}'
        )
        region = 'cr_2m_j'
        for distribution in ['recoil', 'ak4_pt0']:
            make_plot(acc,
                      region=region,
                      distribution=distribution,
                      year=year,
                      data=data,
                      mc=mc,
                      ylim=(1e-3, 1e3),
                      outdir=f'./output/{os.path.basename(indir)}')

    for year in [2017]:
        data = re.compile(f'MET_{year}')
        mc = re.compile(
            f'(EW.*|TTJets.*|ZZ.*|ST.*|QCD_HT.*|WW.*|WZ.*|.*DYJetsToLL_M-50_HT_MLM.*){year}'
        )
        region = 'cr_2m_j'
        for distribution in ['recoil', 'ak4_pt0']:
            make_plot(acc,
                      region=region,
                      distribution=distribution,
                      year=year,
                      data=data,
                      mc=mc,
                      ylim=(1e-3, 1e3),
                      outdir=f'./output/{os.path.basename(indir)}/ttbarcheck')
Exemple #7
0
 def photon_plots():
     for year in [2017, 2018]:
         data = re.compile(f'EGamma_{year}')
         mc = re.compile(f'(GJets.*|QCD_HT.*|W.*HT.*).*{year}')
         region='cr_g_j'
         for distribution in ['recoil','ak4_pt0','photon_pt0','met']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, ylim=(1e-3,1e5), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_phi0','photon_phi0']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, ylim=(4e4,5e5), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_eta0', 'photon_eta0']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, xlim=(-3,3),ylim=(1e4,1e6), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_chf0','ak4_nhf0']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, xlim=(0,1),ylim=(1e3,1e8), outdir=f'./output/{os.path.basename(indir)}/{region}')
Exemple #8
0
 def dielectron_plots():
     for year in [2017,2018]:
         data = re.compile(f'EGamma_{year}')
         mc = re.compile(f'(EW.*|TTJets.*FXFX.*|ST.*|QCD_HT.*|Diboson.*|.*DYJetsToLL_M-50_HT_MLM.*){year}')
         region='cr_2e_j'
         for distribution in ['recoil','ak4_pt0','dielectron_mass','electron_pt', 'dielectron_pt','met']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, ylim=(1e-3,1e3), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_phi0','electron_phi','dielectron_mass']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, ylim=(1e1,1e5), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_eta0', 'electron_eta','dielectron_eta']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, xlim=(-3,3),ylim=(1e3,1e5), outdir=f'./output/{os.path.basename(indir)}/{region}')
         for distribution in ['ak4_chf0','ak4_nhf0']:
             make_plot(acc, region=region,distribution=distribution, year=year, data=data, mc=mc, xlim=(0,1),ylim=(1e2,1e6), outdir=f'./output/{os.path.basename(indir)}/{region}')
Exemple #9
0
def plot(args):
    indir = os.path.abspath(args.inpath)

    # The processor output is stored in an
    # 'accumulator', which in our case is
    # just a dictionary holding all the histograms
    # Put all your *coffea files into 'indir' and
    # pass the directory as an argument here.
    # All input files in the directory will
    # automatically be found, merged and read.
    # The merging only happens the first time
    # you run over a specific set of inputs.
    acc = dir_archive(args.inpath, serialized=True, compression=0, memsize=1e3)
    # Get a settings dictionary that details
    # which plots to make for each region,
    # what the axis limits are, etc
    # Can add plots by extending the dictionary
    # Or modify axes ranges, etc
    settings = plot_settings()

    merged = set()

    # Separate plots per year
    for year in [2017, 2018]:
        # The data to be used for each region
        # Muon regions use MET,
        # electron+photon regions use EGamma
        # ( EGamma = SingleElectron+SinglePhoton for 2017)
        data = {
            'sr_vbf': f'MET_{year}',
            'cr_1m_vbf': f'MET_{year}',
            'cr_2m_vbf': f'MET_{year}',
            'cr_1e_vbf': f'EGamma_{year}',
            'cr_2e_vbf': f'EGamma_{year}',
            'cr_g_vbf': f'EGamma_{year}',
        }

        # Same for MC selection
        # Match datasets by regular expressions
        # Here for LO V samples (HT binned)
        mc_lo = {
            'sr_vbf':
            re.compile(
                f'(ZJetsToNuNu.*|EW.*|Top_FXFX.*|Diboson.*|.*DYJetsToLL_M-50_HT_MLM.*|.*WJetsToLNu.*HT.*).*{year}'
            ),
            'cr_1m_vbf':
            re.compile(
                f'(EWKW.*|Top_FXFX.*|Diboson.*|.*DYJetsToLL_M-50_HT_MLM.*|.*WJetsToLNu.*HT.*).*{year}'
            ),
            'cr_1e_vbf':
            re.compile(
                f'(EWKW.*|Top_FXFX.*|Diboson.*|.*DYJetsToLL_M-50_HT_MLM.*|.*WJetsToLNu.*HT.*).*{year}'
            ),
            'cr_2m_vbf':
            re.compile(
                f'(EWKZ.*ZToLL.*|Top_FXFX.*|Diboson.*|.*DYJetsToLL_M-50_HT_MLM.*).*{year}'
            ),
            'cr_2e_vbf':
            re.compile(
                f'(EWKZ.*ZToLL.*|Top_FXFX.*|Diboson.*|.*DYJetsToLL_M-50_HT_MLM.*).*{year}'
            ),
            'cr_g_vbf':
            re.compile(
                f'(GJets_(DR-0p4|SM).*|QCD_data.*|WJetsToLNu.*HT.*).*{year}'),
        }

        # Load ingredients from cache
        acc.load('sumw')
        acc.load('sumw_pileup')
        acc.load('nevents')

        # Data / MC plots are made here
        # Loop over all regions
        for region in mc_lo.keys():
            if not re.match(args.region, region):
                continue
            # Plot ratio pads for all regions (now that we're unblinded)
            ratio = True
            # Make separate output direcotry for each region
            outdir = f'./output/{os.path.basename(indir)}/{region}'
            # Settings for this region
            plotset = settings[region]

            # Loop over the distributions
            for distribution in plotset.keys():
                if not re.match(args.distribution, distribution):
                    continue
                # Load from cache
                if not distribution in merged:
                    acc.load(distribution)

                    if not distribution in acc.keys():
                        print(
                            f"WARNING: Distribution {distribution} not found in input files."
                        )
                        continue
                    acc[distribution] = merge_extensions(
                        acc[distribution],
                        acc,
                        reweight_pu=not ('nopu' in distribution))
                    scale_xs_lumi(acc[distribution])
                    acc[distribution] = merge_datasets(acc[distribution])
                    acc[distribution].axis('dataset').sorting = 'integral'
                    merged.add(distribution)
                try:
                    # The heavy lifting of making a plot is hidden
                    # in make_plot. We call it once using the LO MC
                    imc = mc_lo[region]
                    if "cr_g" in region and distribution != "recoil":
                        imc = re.compile(
                            imc.pattern.replace('QCD_data', 'QCD.*HT'))
                    make_plot(
                        acc,
                        region=region,
                        distribution=distribution,
                        year=year,
                        data=data[region],
                        mc=imc,
                        ylim=plotset[distribution].get('ylim', None),
                        xlim=plotset[distribution].get('xlim', None),
                        tag='losf',
                        outdir=f'./output/{os.path.basename(indir)}/{region}',
                        output_format='pdf',
                        ratio=ratio)
                except KeyError:
                    continue
Exemple #10
0
def plot(inpath):
    indir = os.path.abspath(inpath)

    # The processor output is stored in an
    # 'accumulator', which in our case is
    # just a dictionary holding all the histograms
    # Put all your *coffea files into 'indir' and
    # pass the directory as an argument here.
    # All input files in the directory will
    # automatically be found, merged and read.
    # The merging only happens the first time
    # you run over a specific set of inputs.
    acc = dir_archive(inpath, serialized=True, compression=0, memsize=1e3)
    # Get a settings dictionary that details
    # which plots to make for each region,
    # what the axis limits are, etc
    # Can add plots by extending the dictionary
    # Or modify axes ranges, etc
    settings = plot_settings()

    merged = set()

    # Separate plots per year
    for year in [2017, 2018]:
        # The data to be used for each region
        # Muon regions use MET,
        # electron+photon regions use EGamma
        # ( EGamma = SingleElectron+SinglePhoton for 2017)
        data = {
            'sr_vbf': None,
            'cr_1m_vbf': f'MET_{year}',
            'cr_2m_vbf': f'MET_{year}',
            'cr_1e_vbf': f'EGamma_{year}',
            'cr_2e_vbf': f'EGamma_{year}',
            'cr_g_vbf': f'EGamma_{year}',
        }

        # Same for MC selection
        # Match datasets by regular expressions
        # Here for LO V samples (HT binned)
        mc_lo = {
            'sr_vbf':
            re.compile(
                f'(ZJetsToNuNu.*|EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*|.*WJetsToLNu.*HT.*).*{year}'
            ),
            'cr_1m_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*|.*WJetsToLNu.*HT.*).*{year}'
            ),
            'cr_1e_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*|.*WJetsToLNu.*HT.*).*{year}'
            ),
            'cr_2m_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*).*{year}'
            ),
            'cr_2e_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*).*{year}'
            ),
            'cr_g_vbf':
            re.compile(f'(GJets_(HT|SM).*|QCD_HT.*|WJetsToLNu.*HT.*).*{year}'),
        }

        # Want to compare LO and NLO,
        # so do same thing for NLO V samples
        # All non-V samples remain the same
        mc_nlo = {
            'sr_vbf':
            re.compile(
                f'(ZJetsToNuNu.*|EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DYJetsToLL_M-50_HT_MLM.*|.*WJetsToLNu.*FXFX.*).*{year}'
            ),
            'cr_1m_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*|.*WJetsToLNu.*FXFX.*).*{year}'
            ),
            'cr_1e_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*|.*WJetsToLNu.*FXFX.*).*{year}'
            ),
            'cr_2m_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*).*{year}'
            ),
            'cr_2e_vbf':
            re.compile(
                f'(EW.*|TTJets.*FXFX.*|Diboson.*|ST.*|QCD_HT.*|.*DY.*FXFX.*).*{year}'
            ),
            'cr_g_vbf':
            re.compile(f'(GJets_(HT|SM).*|QCD_HT.*|W.*FXFX.*).*{year}'),
        }

        regions = list(mc_lo.keys())
        # Remove signal region, no need in ratio plots
        regions.remove('sr_vbf')

        # Make control region ratio plots for both
        # LO and NLO. Can be skipped if you only
        # want data / MC agreement plots.
        outdir = f'./output/{os.path.basename(indir)}/ratios'

        # Load ingredients from cache
        acc.load('mjj')
        acc.load('sumw')
        acc.load('sumw_pileup')
        acc.load('nevents')
        cr_ratio_plot(acc,
                      year=year,
                      tag='losf',
                      outdir=outdir,
                      mc=mc_lo,
                      regions=regions,
                      distribution='mjj')
        cr_ratio_plot(acc,
                      year=year,
                      tag='nlo',
                      outdir=outdir,
                      mc=mc_nlo,
                      regions=regions,
                      distribution='mjj')

        # Data / MC plots are made here
        # Loop over all regions
        for region in mc_lo.keys():
            ratio = True if region != 'sr_vbf' else False
            # Make separate output direcotry for each region
            outdir = f'./output/{os.path.basename(indir)}/{region}'
            # Settings for this region
            plotset = settings[region]

            # Loop over the distributions
            for distribution in plotset.keys():
                # Load from cache
                if not distribution in merged:
                    acc.load(distribution)

                    if not distribution in acc.keys():
                        print(
                            f"WARNING: Distribution {distribution} not found in input files."
                        )
                        continue
                    acc[distribution] = merge_extensions(
                        acc[distribution],
                        acc,
                        reweight_pu=not ('nopu' in distribution))
                    scale_xs_lumi(acc[distribution])
                    acc[distribution] = merge_datasets(acc[distribution])
                    acc[distribution].axis('dataset').sorting = 'integral'
                    merged.add(distribution)
                try:
                    # The heavy lifting of making a plot is hidden
                    # in make_plot. We call it once using the LO MC
                    make_plot(
                        acc,
                        region=region,
                        distribution=distribution,
                        year=year,
                        data=data[region],
                        mc=mc_lo[region],
                        ylim=plotset[distribution].get('ylim', None),
                        xlim=plotset[distribution].get('xlim', None),
                        tag='losf',
                        outdir=f'./output/{os.path.basename(indir)}/{region}',
                        output_format='pdf',
                        ratio=ratio)

                    # And then we also call it for the NLO MC
                    # The output files will be named according to the 'tag'
                    # argument, so we  will be able to tell them apart.
                    make_plot(
                        acc,
                        region=region,
                        distribution=distribution,
                        year=year,
                        data=data[region],
                        mc=mc_nlo[region],
                        ylim=plotset[distribution].get('ylim', None),
                        xlim=plotset[distribution].get('xlim', None),
                        tag='nlo',
                        outdir=f'./output/{os.path.basename(indir)}/{region}',
                        output_format='pdf',
                        ratio=ratio)

                except KeyError:
                    continue