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