import matplotlib import matplotlib.pyplot as plt from SecondaryValue import SecondaryValue from scipy.constants import hbar, c, electron_volt import numpy as np ############################################################################### # Utility # ############################################################################### def gev_to_pb(xs): """Converts a cross section from 1/GeV^2 to pb.""" return xs/(electron_volt**2)*(hbar*c)**2*1e22 def tex_value(val, unit='', prefix='', prec=10, err=None): """Generates LaTeX output of a value with units and error.""" val = np.round(val, prec) return fr'\({prefix}\SI{{{val}}}{{{unit}}}\)' ############################################################################### # Plot Porn # ############################################################################### matplotlib.rcParams.update({ 'font.family': 'serif', 'text.usetex': False, 'pgf.rcfonts': False, }) def pinmp_ticks(axis, ticks): axis.set_major_locator(ticker.MaxNLocator(ticks)) axis.set_minor_locator(ticker.MaxNLocator(ticks*10)) return axis def set_up_plot(ticks=10, pimp_top=True, subplot=111, fig=None): if fig is None: fig = plt.figure() ax = fig.add_subplot(subplot) pinmp_ticks(ax.xaxis, ticks) pinmp_ticks(ax.yaxis, ticks) ax.grid(which='minor', alpha=.3) ax.grid(which='major', alpha=.5) if pimp_top: ax.tick_params(right=True, top=True, which='both') else: ax.tick_params(right=True, which='both') return fig, ax def save_fig(fig, title, folder='unsorted', size=(5, 4)): fig.set_size_inches(*size) fig.tight_layout() try: os.makedirs(f'./figs/{folder}/') except OSError as exc: pass fig.savefig(f'./figs/{folder}/{title}.pdf') fig.savefig(f'./figs/{folder}/{title}.pgf') with open('./out/figlist.txt', 'a') as f: f.write(r''' \begin{figure}[H]\centering \input{../auswertung/figs/''' + f'{folder}/{title}.pgf' + r'''} \caption{} \label{fig:''' + folder + '-' + title + r'''} \end{figure} ''')