Exemple #1
0
def plot_flux_stage(flux_nmh,flux_imh,save=False,title='',dpi=150,outdir=""):
    '''
    Plots flux maps templates for NMH/IMH
    '''

    flav_title = {'nue':r'$\nu_e$',
                  'nue_bar':r'$\overline{\nu}_e$',
                  'numu':r'$\nu_\mu$',
                  'numu_bar':r'$\overline{\nu}_\mu$'}
    description = ' Flux [m$^{-2}$ s$^{-1}$]'
    for flav in ['nue','numu']:
        plt.figure(figsize=(8,8))

        flav_bar = flav+'_bar'
        plt.subplot(2,2,1)
        show_map(flux_nmh[flav])
        plt.title(r'NMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(2,2,2)
        show_map(flux_nmh[flav_bar])
        plt.title(r'NMH '+flav_title[flav_bar]+description,fontsize='large')
        plt.subplot(2,2,3)
        show_map(flux_imh[flav])
        plt.title(r'IMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(2,2,4)
        show_map(flux_imh[flav_bar])
        plt.title(r'IMH '+flav_title[flav_bar]+description,fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 1: nue Flux maps..."
            filename = os.path.join(outdir,title+'_flux_maps_'+flav+'.png')
            plt.savefig(filename,dpi=dpi)

    return
Exemple #2
0
def plot_pid_stage(nmh, imh, title='', save=False, dpi=150, outdir=""):
    '''
    Plots templates and asymmetry for only the final level stage
    '''

    h_asym = get_asymmetry(nmh, imh, ['trck', 'cscd'])

    logging.info("  Total trck events (NMH): %d" % np.sum(nmh['trck']['map']))
    logging.info("  Total trck events (IMH): %d" % np.sum(imh['trck']['map']))
    logging.info("  Total cscd events (NMH): %d" % np.sum(nmh['cscd']['map']))
    logging.info("  Total cscd events (IMH): %d" % np.sum(imh['cscd']['map']))

    for chan in ['trck', 'cscd']:
        plt.figure(figsize=(16, 5))

        plt.subplot(1, 3, 1)
        show_map(nmh[chan])
        plt.title(title + ' NMH, ' + chan + ' counts', fontsize='large')

        plt.subplot(1, 3, 2)
        show_map(imh[chan])
        plt.title(title + ' IMH, ' + chan + ' counts', fontsize='large')

        plt.subplot(1, 3, 3)
        sigma = np.sqrt(np.sum(h_asym[chan]['map']**2))
        show_map(h_asym[chan], cmap='RdBu_r')
        plt.title(title + ' ' + chan + r' asymmetry, $\sigma$ = %.3f' % sigma,
                  fontsize='large')

        if save:
            print "Saving %s chan..." % chan
            filename = os.path.join(outdir, title + '_asym_' + chan + '.png')
            plt.savefig(filename, dpi=dpi)

    return
Exemple #3
0
def plot_reco_event_rate(reco_rate_nmh,reco_rate_imh,save=False,title='',dpi=150,
                         outdir=''):
    '''
    Plots reco event rate maps for NMH/IMH
    '''

    flav_title = {'nue_cc':r'$\nu_e^{cc}$',
                  'numu_cc':r'$\nu_\mu^{cc}$',
                  'nutau_cc':r'$\nu_\tau^{cc}$',
                  'nuall_nc':r'$\nu$ all NC'}
    all_flavs = list(flav_title.keys())
    h_asym = get_asymmetry(reco_rate_nmh,reco_rate_imh,all_flavs)
    description=' Reco Event Rate [#/yr]'
    for flav in all_flavs:
        plt.figure(figsize=(16,5))

        plt.subplot(1,3,1)
        show_map(reco_rate_nmh[flav])
        plt.title(r'NMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(1,3,2)
        show_map(reco_rate_imh[flav])
        plt.title(r'IMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(1,3,3)
        show_map(h_asym[flav],cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav]['map']**2))
        plt.title(r'Hierarchy Asymmetry: '+flav_title[flav]+', $\sigma$ = %.3f'%sigma,
                  fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 4: "+flav+" reco event rate  maps..."
            filename = os.path.join(outdir,title+'_reco_event_rate_'+flav+'.png')
            plt.savefig(filename,dpi=dpi)

    return
Exemple #4
0
def plot_pid_stage(nmh, imh, title='', save=False, dpi=150, outdir=""):
    '''
    Plots templates and asymmetry for only the final level stage
    '''

    h_asym = get_asymmetry(nmh, imh, ['trck','cscd'])

    logging.info("  Total trck events (NMH): %d"%np.sum(nmh['trck']['map']))
    logging.info("  Total trck events (IMH): %d"%np.sum(imh['trck']['map']))
    logging.info("  Total cscd events (NMH): %d"%np.sum(nmh['cscd']['map']))
    logging.info("  Total cscd events (IMH): %d"%np.sum(imh['cscd']['map']))

    for chan in ['trck','cscd']:
        plt.figure(figsize=(16,5))

        plt.subplot(1,3,1)
        show_map(nmh[chan])
        plt.title(title+' NMH, '+chan+' counts',fontsize='large')

        plt.subplot(1,3,2)
        show_map(imh[chan])
        plt.title(title+' IMH, '+chan +' counts',fontsize='large')

        plt.subplot(1,3,3)
        sigma = np.sqrt(np.sum(h_asym[chan]['map']**2))
        show_map(h_asym[chan],cmap='RdBu_r')
        plt.title(title+' '+chan+r' asymmetry, $\sigma$ = %.3f'%sigma,
                  fontsize='large')

        if save:
            print "Saving %s chan..."%chan
            filename = os.path.join(outdir,title+'_asym_'+chan+'.png')
            plt.savefig(filename,dpi=dpi)

    return
Exemple #5
0
def plot_flux_stage(flux_nmh,
                    flux_imh,
                    save=False,
                    title='',
                    dpi=150,
                    outdir=""):
    '''
    Plots flux maps templates for NMH/IMH
    '''

    flav_title = {
        'nue': r'$\nu_e$',
        'nue_bar': r'$\overline{\nu}_e$',
        'numu': r'$\nu_\mu$',
        'numu_bar': r'$\overline{\nu}_\mu$'
    }
    description = ' Flux [m$^{-2}$ s$^{-1}$]'
    for flav in ['nue', 'numu']:
        plt.figure(figsize=(8, 8))

        flav_bar = flav + '_bar'
        plt.subplot(2, 2, 1)
        show_map(flux_nmh[flav])
        plt.title(r'NMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(2, 2, 2)
        show_map(flux_nmh[flav_bar])
        plt.title(r'NMH ' + flav_title[flav_bar] + description,
                  fontsize='large')
        plt.subplot(2, 2, 3)
        show_map(flux_imh[flav])
        plt.title(r'IMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(2, 2, 4)
        show_map(flux_imh[flav_bar])
        plt.title(r'IMH ' + flav_title[flav_bar] + description,
                  fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 1: nue Flux maps..."
            filename = os.path.join(outdir,
                                    title + '_flux_maps_' + flav + '.png')
            plt.savefig(filename, dpi=dpi)

    return
Exemple #6
0
def plot_reco_event_rate(reco_rate_nmh,
                         reco_rate_imh,
                         save=False,
                         title='',
                         dpi=150,
                         outdir=''):
    '''
    Plots reco event rate maps for NMH/IMH
    '''

    flav_title = {
        'nue_cc': r'$\nu_e^{cc}$',
        'numu_cc': r'$\nu_\mu^{cc}$',
        'nutau_cc': r'$\nu_\tau^{cc}$',
        'nuall_nc': r'$\nu$ all NC'
    }
    all_flavs = list(flav_title.keys())
    h_asym = get_asymmetry(reco_rate_nmh, reco_rate_imh, all_flavs)
    description = ' Reco Event Rate [#/yr]'
    for flav in all_flavs:
        plt.figure(figsize=(16, 5))

        plt.subplot(1, 3, 1)
        show_map(reco_rate_nmh[flav])
        plt.title(r'NMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(1, 3, 2)
        show_map(reco_rate_imh[flav])
        plt.title(r'IMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(1, 3, 3)
        show_map(h_asym[flav], cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav]['map']**2))
        plt.title(r'Hierarchy Asymmetry: ' + flav_title[flav] +
                  ', $\sigma$ = %.3f' % sigma,
                  fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 4: " + flav + " reco event rate  maps..."
            filename = os.path.join(
                outdir, title + '_reco_event_rate_' + flav + '.png')
            plt.savefig(filename, dpi=dpi)

    return
Exemple #7
0
def plot_true_event_rate(event_rate_nmh,
                         event_rate_imh,
                         title='',
                         save=False,
                         dpi=150,
                         outdir=''):
    '''
    Plots true event rate maps
    '''
    flav_title = {
        'nue': r'$\nu_e^{cc}$',
        'nue_bar': r'$\overline{\nu}_e^{cc}$',
        'numu': r'$\nu_\mu^{cc}$',
        'numu_bar': r'$\overline{\nu}_\mu^{cc}$',
        'nutau': r'$\nu_\tau^{cc}$',
        'nutau_bar': r'$\overline{\nu}_\tau^{cc}$'
    }
    all_flavs = list(flav_title.keys())
    h_asym = get_asymmetry(event_rate_nmh,
                           event_rate_imh,
                           all_flavs,
                           iType='cc')
    description = ' True Event Rate [#/yr]'
    for flav in ['nue', 'numu', 'nutau']:
        plt.figure(figsize=(16, 8))

        plt.subplot(2, 3, 1)
        show_map(event_rate_nmh[flav]['cc'], vmin=0.0)
        plt.title(r'NMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(2, 3, 2)
        show_map(event_rate_imh[flav]['cc'], vmin=0.0)
        plt.title(r'IMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(2, 3, 3)
        show_map(h_asym[flav], cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav]['map']**2))
        plt.title(r'Hierarchy Asymmetry: ' + flav_title[flav] +
                  ', $\sigma$ = %.3f' % sigma,
                  fontsize='large')

        flav_bar = flav + '_bar'
        plt.subplot(2, 3, 4)
        show_map(event_rate_nmh[flav_bar]['cc'], vmin=0.0)
        plt.title(r'NMH ' + flav_title[flav_bar] + description,
                  fontsize='large')
        plt.subplot(2, 3, 5)
        show_map(event_rate_imh[flav_bar]['cc'], vmin=0.0)
        plt.title(r'IMH ' + flav_title[flav_bar] + description,
                  fontsize='large')
        plt.subplot(2, 3, 6)
        show_map(h_asym[flav_bar], cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav_bar]['map']**2))
        plt.title(r'Hierarchy Asymmetry: ' + flav_title[flav_bar] +
                  ', $\sigma$ = %.3f' % sigma,
                  fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 3: " + flav + " true event rate  maps..."
            filename = os.path.join(
                outdir, title + '_true_event_rate_' + flav + '.png')
            plt.savefig(filename, dpi=dpi)

    return
Exemple #8
0
def plot_osc_flux_stage(osc_flux_nmh,
                        osc_flux_imh,
                        save=False,
                        title='',
                        dpi=150,
                        outdir=""):
    '''
    Plots osc flux maps templates for NMH/IMH
    '''

    flav_title = {
        'nue': r'$\nu_e$',
        'nue_bar': r'$\overline{\nu}_e$',
        'numu': r'$\nu_\mu$',
        'numu_bar': r'$\overline{\nu}_\mu$',
        'nutau': r'$\nu_\tau$',
        'nutau_bar': r'$\overline{\nu}_\tau$'
    }
    all_flavs = list(flav_title.keys())
    h_asym = get_asymmetry(osc_flux_nmh, osc_flux_imh, all_flavs)
    description = r' Oscillated Flux [m$^{-2}$ s$^{-1}$]'
    for flav in ['nue', 'numu', 'nutau']:
        plt.figure(figsize=(16, 8))

        plt.subplot(2, 3, 1)
        show_map(osc_flux_nmh[flav])
        plt.title(r'NMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(2, 3, 2)
        show_map(osc_flux_imh[flav])
        plt.title(r'IMH ' + flav_title[flav] + description, fontsize='large')
        plt.subplot(2, 3, 3)
        show_map(h_asym[flav], cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav]['map']**2))
        plt.title(r'Hierarchy Asymmetry: ' + flav_title[flav] +
                  ', $\sigma$ = %.3f' % sigma,
                  fontsize='large')

        flav_bar = flav + '_bar'
        plt.subplot(2, 3, 4)
        show_map(osc_flux_nmh[flav_bar])
        plt.title(r'NMH ' + flav_title[flav_bar] + description,
                  fontsize='large')
        plt.subplot(2, 3, 5)
        show_map(osc_flux_imh[flav_bar])
        plt.title(r'IMH ' + flav_title[flav_bar] + description,
                  fontsize='large')
        plt.subplot(2, 3, 6)
        show_map(h_asym[flav_bar], cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav_bar]['map']**2))
        plt.title(r'Hierarchy Asymmetry: ' + flav_title[flav_bar] +
                  ', $\sigma$ = %.3f' % sigma,
                  fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 2: " + flav + " osc flux maps..."
            filename = os.path.join(outdir,
                                    title + '_osc_flux_maps_' + flav + '.png')
            plt.savefig(filename, dpi=dpi)

    return
                if final_map_key == 'nue_bar':
                    finaltitle = r'$\bar{\nu}_e$'
                if final_map_key == 'numu':
                    finaltitle = r'$\nu_{\mu}$'
                if final_map_key == 'numu_bar':
                    finaltitle = r'$\bar{\nu}_{\mu}$'
                if final_map_key == 'nutau':
                    finaltitle = r'$\nu_{\tau}$'
                if final_map_key == 'nutau_bar':
                    finaltitle = r'$\bar{\nu}_{\tau}$'

                plottitle = '%s to %s NH Oscillogram'%(inittitle,finaltitle)

                plt.figure(figsize = (16,5))
                plt.subplot(1,4,1)
                show_map(bestmapobj)
                plt.xlabel(r'$\cos\theta_Z$')
                plt.ylabel(r'Energy [GeV]')
                plt.title('Oversampling = 1000')

                plt.subplot(1,4,2)
                show_map(currentmapobj)
                plt.xlabel(r'$\cos\theta_Z$')
                plt.ylabel(r'Energy [GeV]')
                plt.title('Oversampling = %s'%oversample)

                plt.subplot(1,4,3)
                show_map(diffmapobj)
                plt.xlabel(r'$\cos\theta_Z$')
                plt.ylabel(r'Energy [GeV]')
                plt.title('Difference between maps')
            cake_map['ebins'] = binning['bin_edges']
        if binning['name'] == 'true_coszen':
            cake_map['czbins'] = binning['bin_edges']
        if binning['name'] == 'reco_energy':
            cake_map['ebins'] = binning['bin_edges']
        if binning['name'] == 'reco_coszen':
            cake_map['czbins'] = binning['bin_edges']
            
    RatioMapObj = ratio_map(cake_map, pisa_map)
    DiffMapObj = delta_map(pisa_map, cake_map)
    DiffRatioMapObj = ratio_map(DiffMapObj, pisa_map)

    plt.figure(figsize = (20,5))

    plt.subplot(1,5,1)
    show_map(pisa_map)
    plt.xlabel(r'$\cos\theta_Z$')
    plt.ylabel(r'Energy [GeV]')
    plt.title('%s %s PISA V2'%(titles[cake_dict['name']],args.stage))

    plt.subplot(1,5,2)
    show_map(cake_map)
    plt.xlabel(r'$\cos\theta_Z$')
    plt.ylabel(r'Energy [GeV]')
    plt.title('%s %s PISA V3'%(titles[cake_dict['name']],args.stage))

    plt.subplot(1,5,3)
    show_map(RatioMapObj)
    plt.xlabel(r'$\cos\theta_Z$')
    plt.ylabel(r'Energy [GeV]')
    plt.title('%s %s PISA V3/V2'%(titles[cake_dict['name']],args.stage))
                
        # Second for anti-neutrinos:
        kNuBar = -1
        barger_prop.SetMNS(sin2th12Sq,sin2th13Sq,sin2th23Sq,args.deltam21,mAtm,
                           args.deltacp,energy,kSquared,kNuBar)
        barger_prop.DefinePath(coszen, args.prod_height)
        barger_prop.propagate(kNuBar)
        
        for nu in ['nue_bar','numu_bar']:
            nu_i = nu_barger[nu]
            for to_nu in anti_neutrinos:
                nu_f = nu_barger[to_nu]
                osc_prob_dict[nu+'_maps'][to_nu][ie][icz]=barger_prop.GetProb(nu_i, nu_f)


logging.info("Saving to file: %s"%args.outfile)
to_json(osc_prob_dict,args.outfile)

logging.info("Finished in %s seconds!"%(datetime.now() - start_time))

if args.plot:
    from matplotlib import pyplot as plt
    from pisa.utils.plot import show_map
    pmap = {'map':osc_prob_dict['numu_maps']['numu'],
            'ebins':osc_prob_dict['ebins'],
            'czbins': osc_prob_dict['czbins']}
    show_map(pmap)
    plt.show()
    
    
Exemple #12
0
def plot_true_event_rate(event_rate_nmh,event_rate_imh,title='',save=False,
                         dpi=150,outdir=''):
    '''
    Plots true event rate maps
    '''
    flav_title = {'nue':r'$\nu_e^{cc}$',
                  'nue_bar':r'$\overline{\nu}_e^{cc}$',
                  'numu':r'$\nu_\mu^{cc}$',
                  'numu_bar':r'$\overline{\nu}_\mu^{cc}$',
                  'nutau':r'$\nu_\tau^{cc}$',
                  'nutau_bar':r'$\overline{\nu}_\tau^{cc}$'}
    all_flavs = list(flav_title.keys())
    h_asym = get_asymmetry(event_rate_nmh,event_rate_imh,all_flavs,iType='cc')
    description=' True Event Rate [#/yr]'
    for flav in ['nue','numu','nutau']:
        plt.figure(figsize=(16,8))

        plt.subplot(2,3,1)
        show_map(event_rate_nmh[flav]['cc'],vmin=0.0)
        plt.title(r'NMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(2,3,2)
        show_map(event_rate_imh[flav]['cc'],vmin=0.0)
        plt.title(r'IMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(2,3,3)
        show_map(h_asym[flav],cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav]['map']**2))
        plt.title(r'Hierarchy Asymmetry: '+flav_title[flav]+', $\sigma$ = %.3f'%sigma,
                  fontsize='large')

        flav_bar = flav+'_bar'
        plt.subplot(2,3,4)
        show_map(event_rate_nmh[flav_bar]['cc'],vmin=0.0)
        plt.title(r'NMH '+flav_title[flav_bar]+description,fontsize='large')
        plt.subplot(2,3,5)
        show_map(event_rate_imh[flav_bar]['cc'],vmin=0.0)
        plt.title(r'IMH '+flav_title[flav_bar]+description,fontsize='large')
        plt.subplot(2,3,6)
        show_map(h_asym[flav_bar],cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav_bar]['map']**2))
        plt.title(r'Hierarchy Asymmetry: '+flav_title[flav_bar]+
                  ', $\sigma$ = %.3f'%sigma,fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 3: "+flav+" true event rate  maps..."
            filename = os.path.join(outdir,title+'_true_event_rate_'+flav+'.png')
            plt.savefig(filename,dpi=dpi)

    return
Exemple #13
0
def plot_osc_flux_stage(osc_flux_nmh,osc_flux_imh,save=False,title='',
                        dpi=150,outdir=""):
    '''
    Plots osc flux maps templates for NMH/IMH
    '''

    flav_title = {'nue':r'$\nu_e$',
                  'nue_bar':r'$\overline{\nu}_e$',
                  'numu':r'$\nu_\mu$',
                  'numu_bar':r'$\overline{\nu}_\mu$',
                  'nutau':r'$\nu_\tau$',
                  'nutau_bar':r'$\overline{\nu}_\tau$'}
    all_flavs = list(flav_title.keys())
    h_asym = get_asymmetry(osc_flux_nmh,osc_flux_imh,all_flavs)
    description = r' Oscillated Flux [m$^{-2}$ s$^{-1}$]'
    for flav in ['nue','numu','nutau']:
        plt.figure(figsize=(16,8))

        plt.subplot(2,3,1)
        show_map(osc_flux_nmh[flav])
        plt.title(r'NMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(2,3,2)
        show_map(osc_flux_imh[flav])
        plt.title(r'IMH '+flav_title[flav]+description,fontsize='large')
        plt.subplot(2,3,3)
        show_map(h_asym[flav],cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav]['map']**2))
        plt.title(r'Hierarchy Asymmetry: '+flav_title[flav]+', $\sigma$ = %.3f'%sigma,
                  fontsize='large')

        flav_bar = flav+'_bar'
        plt.subplot(2,3,4)
        show_map(osc_flux_nmh[flav_bar])
        plt.title(r'NMH '+flav_title[flav_bar]+description,fontsize='large')
        plt.subplot(2,3,5)
        show_map(osc_flux_imh[flav_bar])
        plt.title(r'IMH '+flav_title[flav_bar]+description,fontsize='large')
        plt.subplot(2,3,6)
        show_map(h_asym[flav_bar],cmap='RdBu_r')
        sigma = np.sqrt(np.sum(h_asym[flav_bar]['map']**2))
        plt.title(r'Hierarchy Asymmetry: '+flav_title[flav_bar]+
                  ', $\sigma$ = %.3f'%sigma,fontsize='large')

        plt.tight_layout()
        if save:
            print "Saving Stage 2: "+flav+" osc flux maps..."
            filename = os.path.join(outdir,title+'_osc_flux_maps_'+flav+'.png')
            plt.savefig(filename,dpi=dpi)

    return
    plottitle = 'Honda South Pole 2015 (SolMax)'
    
    Hondamapobj = {}
    Hondamapobj['ebins'] = flux_dict['ebins']
    Hondamapobj['czbins'] = flux_dict['czbins']
    Hondamapobj['map'] = flux_dict[prim]

    Hondalogmapobj = {}
    Hondalogmapobj['ebins'] = flux_dict['ebins']
    Hondalogmapobj['czbins'] = flux_dict['czbins']
    Hondalogmapobj['map'] = np.log10(Hondamapobj['map'])

    plt.figure(figsize = (8,5))

    plt.subplot(1,2,1)
    show_map(Hondamapobj)
    plt.xlabel(r'$\cos\theta_Z$')
    plt.ylabel(r'Energy [GeV]')
    plt.title('%s Flux'%titles[prim])

    plt.subplot(1,2,2)
    show_map(Hondalogmapobj)
    plt.xlabel(r'$\cos\theta_Z$')
    plt.ylabel(r'Energy [GeV]')
    plt.title('%s Log Flux'%titles[prim])

    plt.tight_layout()
    plt.subplots_adjust(top=0.8)

    plt.suptitle(plottitle, fontsize=18)
        # Second for anti-neutrinos:
        kNuBar = -1
        barger_prop.SetMNS(sin2th12Sq, sin2th13Sq, sin2th23Sq, args.deltam21,
                           mAtm, args.deltacp, energy, kSquared, kNuBar)
        barger_prop.DefinePath(coszen, args.prod_height)
        barger_prop.propagate(kNuBar)

        for nu in ['nue_bar', 'numu_bar']:
            nu_i = nu_barger[nu]
            for to_nu in anti_neutrinos:
                nu_f = nu_barger[to_nu]
                osc_prob_dict[nu +
                              '_maps'][to_nu][ie][icz] = barger_prop.GetProb(
                                  nu_i, nu_f)

logging.info("Saving to file: %s" % args.outfile)
to_json(osc_prob_dict, args.outfile)

logging.info("Finished in %s seconds!" % (datetime.now() - start_time))

if args.plot:
    from matplotlib import pyplot as plt
    from pisa.utils.plot import show_map
    pmap = {
        'map': osc_prob_dict['numu_maps']['numu'],
        'ebins': osc_prob_dict['ebins'],
        'czbins': osc_prob_dict['czbins']
    }
    show_map(pmap)
    plt.show()
            cake_map2["ebins"] = binning["bin_edges"]
        if binning["name"] == "true_coszen":
            cake_map2["czbins"] = binning["bin_edges"]
        if binning["name"] == "reco_energy":
            cake_map2["ebins"] = binning["bin_edges"]
        if binning["name"] == "reco_coszen":
            cake_map2["czbins"] = binning["bin_edges"]

    RatioMapObj = ratio_map(cake_map1, cake_map2)
    DiffMapObj = delta_map(cake_map1, cake_map2)
    DiffRatioMapObj = ratio_map(DiffMapObj, cake_map1)

    plt.figure(figsize=(20, 5))

    plt.subplot(1, 5, 1)
    show_map(cake_map1)
    plt.xlabel(r"$\cos\theta_Z$")
    plt.ylabel(r"Energy [GeV]")
    plt.title("%s %s PISA V3(1)" % (titles[cake_dict1["name"]], args.description1))

    plt.subplot(1, 5, 2)
    show_map(cake_map2)
    plt.xlabel(r"$\cos\theta_Z$")
    plt.ylabel(r"Energy [GeV]")
    plt.title("%s %s PISA V3(2)" % (titles[cake_dict1["name"]], args.description2))

    plt.subplot(1, 5, 3)
    show_map(RatioMapObj)
    plt.xlabel(r"$\cos\theta_Z$")
    plt.ylabel(r"Energy [GeV]")
    plt.title("%s PISA V3(1)/V3(2)" % (titles[cake_dict1["name"]]))