def cmp_v2_pion(path_to_results): from pbpb2760 import V2 exp = V2() cent = ['0-5', '5-10', '10-20', '20-30'] for c in cent: if c == '0-5': label0 = r'$ALICE$' label1 = r'$CLVisc$' else: label0, label1 = None, None pt, vn, yerr0, yerr1 = exp.get_ptdiff('pion', c) plt.errorbar(pt, vn, yerr=(yerr0, yerr1), label=label0, color='r') path = os.path.join(path_to_results, c.replace('-', '_')) vn_clvisc = ebe_mean(path, kind='vn', hadron='pion') plt.plot(vn_clvisc[:, 0], vn_clvisc[:, 2], label=label1, color='k') plt.text(2, vn[9] + 0.01, c, fontsize=25) plt.xlabel(r'$p_T\ [GeV]$') plt.ylabel(r'$v_2$') smash_style.set(line_styles=False) plt.legend(loc='upper left') plt.tight_layout() plt.xlim(0, 2.5) plt.ylim(0.001, 0.3) plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=5.02\ TeV$', fontsize=30) plt.savefig('pbpb5020_pionv2.pdf') plt.show()
def cmp_dndeta(path_to_results='', cent=['0_6', '6_15', '15_25', '25_35']): '''compare ebe-mean dndeta with PHOBOS exp data''' # 1304.0347 for i, c in enumerate(cent): if i == 0: label0 = r'$PHOBOS$' label1 = r'$CLVisc$' else: label0, label1 = None, None dat = dndeta(c) plt.errorbar(dat[:, 0], dat[:, 2], yerr=(-dat[:, 4], dat[:, 3]), label=label0, color='r') path = os.path.join(path_to_results, c) hydro = ebe_mean(path) plt.plot(hydro[:, 0], hydro[:, 1], color='k', label=label1) plt.xlabel(r'$\eta$') plt.ylabel(r'$dN_{ch}/d\eta$') smash_style.set(line_styles=False) plt.legend(loc='best') plt.tight_layout() plt.xlim(-8, 8) plt.ylim(0, 1000) plt.title(r'$Au+Au\ \sqrt{s_{NN}}=200\ GeV$', fontsize=30) xcod = [-0.4, -0.5, -0.7, -0.7] ycod = [720, 550, 400, 260] text = ['0-6', '6-15', '15-25', '25-35'] for i in range(4): plt.text(xcod[i], ycod[i], text[i], size=20) plt.savefig('figs/auau200_dndeta.pdf') plt.show()
def cmp_dndeta(path_to_results='', cent=['0-5', '5-10', '10-20', '20-30']): xpos = [-0.5, -1.0, -1, -1] table = dndeta() for i, c in enumerate(cent): if c == '0-5': label0 = r'$ALICE$' label1 = r'$CLVisc$' else: label0, label1 = None, None plt.errorbar([table[c]['x']], [table[c]['y']], yerr=([table[c]['yerr0']], [table[c]['yerr1']]), label=label0, color='r') path = os.path.join(path_to_results, c.replace('-', '_')) hydro = ebe_mean(path) plt.plot(hydro[:, 0], hydro[:, 1], color='k', label=label1) neta = len(hydro[:, 0]) plt.text(xpos[i], hydro[neta / 2, 1] + 100, c, fontsize=25) plt.xlabel(r'$\eta$') plt.ylabel(r'$dN_{ch}/d\eta$') smash_style.set(line_styles=False) plt.legend(loc='best') plt.tight_layout() plt.xlim(-10, 10) plt.ylim(0, 2500) plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=5.02\ TeV$', fontsize=30) plt.savefig('pbpb5020_dndeta.pdf') plt.show()
def cmp_ptspec(path_to_results='', cent=['0-5', '5-10', '10-20'], hadron='pion'): from pbpb2760 import dNdPt exp = dNdPt() for i, c in enumerate(cent): if i == 0: label0 = r'$ALICE$' label1 = r'$CLVisc$' else: label0, label1 = None, None shift = 5**(-i) x, y, yerr0, yerr1 = exp.get(hadron, c) plt.errorbar(x, y * shift, yerr=(yerr0 * shift, yerr1 * shift), label=label0, fmt='o', color='r') path = os.path.join(path_to_results, c.replace('-', '_')) dndpt = ebe_mean(path, kind='dndpt', hadron=hadron, rap='Y') plt.semilogy(dndpt[:, 0], 2 * dndpt[:, 1] * shift, label=label1, color='k') ytxt, theta = 1.3, -20 if hadron == 'kaon': ytxt, theta = 1.8, -12 elif hadron == 'proton': ytxt, theta = 2.0, -5 plt.text(x[5], ytxt * y[5] * shift, r'$%s$' % c, rotation=theta, size=25) plt.text(x[15], ytxt * y[15] * shift, r'$\times 5^{%s}$' % (-i), rotation=theta, size=25) plt.xlim(0, 3) plt.ylim(1.0E-7, 1.0E4) plt.xlabel(r'$p_T\ [GeV]$') plt.ylabel(r'$(1/2\pi)d^2 N/dYp_Tdp_T\ [GeV]^{-2}$') smash_style.set(line_styles=False) plt.legend(loc='best') plt.tight_layout() if hadron == 'pion': plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV,\ \pi^++\pi^-$', fontsize=30) elif hadron == 'kaon': plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV,\ K^++K^-$', fontsize=30) elif hadron == 'proton': plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV,\ p+\bar{p}$', fontsize=30) plt.savefig('pbpb2760_ptspec_%s.pdf' % hadron) plt.show()
def curl_free(self): ''' A(r) = \int dr' grad \cdot v(r') / (r-r') dr' return grad A(r) ''' N = len(self.x) x, y = np.meshgrid(self.x, self.y) dxvx = self.dvx[0] dyvy = self.dvy[1] Ar = np.zeros_like(dxvx) for i in range(N): for j in range(N): delta_x = x - (i - N / 2) * self.dx delta_y = y - (j - N / 2) * self.dx delta_r = np.sqrt(delta_x * delta_x + delta_y * delta_y) delta_r[delta_r < 0.001] = 0.001 Ar[i, j] = (dxvx / delta_r + dyvy / delta_r).sum() dxdy = self.dx**2.0 Ar = -Ar * dxdy / (4 * np.pi) grad_A = np.gradient(Ar) dxA, dyA = grad_A[0], grad_A[1] plt.quiver(self.x, self.y, dxA.T, dyA.T, scale=300) plt.xlabel(r'$x\ [fm]$') plt.ylabel(r'$y\ [fm]$') plt.title(r'$-\nabla\phi(\mathbf{r})$') smash_style.set() plt.show()
def quiver(self): plt.quiver(self.x, self.y, self.vx.T, self.vy.T, scale=20) plt.xlabel(r'$x\ [fm]$') plt.ylabel(r'$y\ [fm]$') plt.title(r'$\mathbf{v}=(v_x, v_y)$') smash_style.set() plt.show()
def cmp_dndeta(path_to_results='', cent=['0-5', '5-10', '10-20', '20-30']): from pbpb2760 import dNdEta exp = dNdEta() xpos = [-0.5, -1.0, -1, -1] for i, c in enumerate(cent): if c == '0-5': label0 = r'$ALICE$' label1 = r'$CLVisc$' else: label0, label1 = None, None plt.errorbar(exp.x, exp.y[c], yerr=(exp.yerr[c], exp.yerr[c]), label=label0, color='r') path = os.path.join(path_to_results, c.replace('-', '_')) dndeta = ebe_mean(path) plt.plot(dndeta[:, 0], dndeta[:, 1], color='k', label=label1) neta = len(dndeta[:, 0]) plt.text(xpos[i], dndeta[neta / 2, 1] + 100, c, fontsize=25) plt.xlabel(r'$\eta$') plt.ylabel(r'$dN_{ch}/d\eta$') smash_style.set(line_styles=False) plt.legend(loc='best') plt.tight_layout() plt.xlim(-10, 10) plt.ylim(0, 2000) plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV$', fontsize=30) plt.savefig('pbpb2760_dndeta.pdf') plt.show()
def plot_auau200_ideal_cent(): '''auau200 polarization as a function of centrality ''' h5_ideal_cent20_25 = h5py.File('vor_int_ideal_cent20_25.hdf5', 'r') h5_ideal_cent45_50 = h5py.File('vor_int_ideal_cent45_50.hdf5', 'r') h5_ideal_cent70_75 = h5py.File('vor_int_ideal_cent70_75.hdf5', 'r') n0, Y, mean_pol_0 = int_Piy(h5_ideal_cent20_25) n1, Y, mean_pol_1 = int_Piy(h5_ideal_cent45_50) n2, Y, mean_pol_2 = int_Piy(h5_ideal_cent70_75) plt.errorbar(Y, mean_pol_0, np.sqrt(1.0 / n0) * mean_pol_0, fmt='rs-', label=r'auau200 20-25 $\eta/s=0.0$') plt.errorbar(Y, mean_pol_1, np.sqrt(1.0 / n1) * mean_pol_1, fmt='bo-', label='auau200 45-50 $\eta/s=0.0$') plt.errorbar(Y, mean_pol_2, np.sqrt(1.0 / n2) * mean_pol_2, fmt='g^-', label=r'auau200 70-75 $\eta/s=0.0$') plt.xlabel(r'$rapidity$') plt.ylabel(r'$P^y_{int}$') smash_style.set(line_styles=False) plt.legend(loc='upper center') plt.subplots_adjust(left=0.2) plt.title(r'$Au+Au\ \sqrt{s_{NN}}=200\ GeV,\ \eta/s=0$') plt.savefig('Pi_auau200.pdf') #plt.show() plt.close()
def plot_dNdEta(num_of_events=8): plot_hydro('cent0_5') plot_hydro('cent5_10') plot_hydro('cent10_20') plot_hydro('cent20_30') # 1304.0347 dat0 = np.loadtxt('dNdEta_2p76.dat') plt.errorbar(dat0[:, 0], dat0[:, 3], dat0[:, 4], fmt='ro', label=r'$ALICE\ Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV\ 0-5\%$') plt.xlabel(r'$\eta$') plt.ylabel(r'$\frac{dN_{ch}}{d\eta}$') xcod = [-0.7, -0.7, -0.7, -0.7] ycod = [2000, 1700, 1350, 950] text = ['0-5%', '5-10%', '10-20%', '20-30%'] for i in range(4): plt.text(xcod[i], ycod[i], text[i], size=20) smash_style.set(line_styles=False) plt.legend(loc='best') plt.subplots_adjust(left=0.2, bottom=0.2, right=0.95, top=0.95) plt.xlim(-8, 8) plt.ylim(0, 2800) plt.savefig('dNdEta_pbpb5020.pdf') plt.show()
def plot(self, ntskip=1): extent = (self.x[0], self.x[-1], self.y[0], self.y[-1]) eos_type = 'EOSI' if self.hydro_cfg.IEOS == 1: eos_type = 'EOSL' for n, Bold in enumerate(self.B): time = self.hydro_cfg.TAU0+n*self.dt plt.contourf(Bold[1].T, origin='lower', extent=extent) plt.xlabel(r'$x\ [fm]$') plt.ylabel(r'$y\ [fm]$') plt.title(r'$B^{y}\ [GeV^2]\ @\ t=%s\ [fm]\ %s$'%(time, eos_type)) smash_style.set() plt.colorbar() plt.savefig('%s/BY%03d.png'%(self.hydro_dir,n)) plt.close() #plt.contourf(Bold[0].T) plt.contourf(Bold[0].T, origin='lower', extent=extent) #plt.imshow(Bold[0].T, extent=extent, vmin=0, vmax=0.1) plt.xlabel(r'$x\ [fm]$') plt.ylabel(r'$y\ [fm]$') plt.title(r'$B^{x}\ [GeV^2]\ @\ t=%s\ [fm]\ %s$'%(time, eos_type)) smash_style.set() plt.colorbar() plt.savefig('%s/BX%03d.png'%(self.hydro_dir, n)) plt.close()
def quiver(self, scale=20, color='k'): vx = self.vx vy = self.vy mask = self.ed < 0.3 vx[mask] = 0.0 vy[mask] = 0.0 plt.quiver(self.x, self.y, vx.T, vy.T, scale=scale, color=color) smash_style.set()
def test_bjorken(self): ''' initialize with uniform energy density in (tau, x, y, eta) coordinates to test the Bjorken expansion: eps/eps0 = (tau/tau0)**(-4.0/3.0) ''' kernel_src = """ # include "real_type.h" //# include "eos_table.h" __kernel void init_ev(global real4 * d_ev1, // global real * d_pi1, read_only image2d_t eos_table, const int size) { int gid = (int) get_global_id(0); if ( gid < size ) { d_ev1[gid] = (real4)(30.0f, 0.0f, 0.0f, 0.0f); //real S0 = S(30.0f, eos_table); //d_pi1[10*gid+9] = -4.0/3.0*ETAOS*S0/TAU0; } } """ cwd, cwf = os.path.split(__file__) compile_options = ['-I %s' % os.path.join(cwd, '..', 'kernel')] compile_options.append('-D USE_SINGLE_PRECISION') compile_options.append('-D ETAOS=%sf' % cfg.ETAOS_YMIN) compile_options.append('-D TAU0=%sf' % cfg.TAU0) compile_options.append('-D S0=%sf' % self.visc.ideal.eos.f_S(30.0)) print(compile_options) prg = cl.Program(self.ctx, kernel_src).build(' '.join(compile_options)) prg.init_ev(self.queue, (self.visc.ideal.size, ), None, self.visc.ideal.d_ev[1], self.visc.eos_table, np.int32(self.visc.ideal.size)).wait() self.visc.evolve(max_loops=2000, save_bulk=False, save_hypersf=False) history = np.array(self.visc.ideal.history) tau, edmax = history[:, 0], history[:, 1] a = tau[0] / tau T0 = (edmax[0])**0.25 lhs = edmax**0.25 / T0 b = cfg.ETAOS_YMIN / tau[0] / 0.36 * 0.19732 * (1.0 - a**(2.0 / 3.0)) rhs = a**(1.0 / 3.0) * (1 + 2.0 / 3.0 * b) import matplotlib.pyplot as plt plt.plot(tau - tau[0], lhs, 'r-', label='CLVisc') plt.plot(tau - tau[0], rhs, 'b--', label='Bjorken') plt.text(2., 0.9, r'$\tau_0=0.6\ fm$') plt.text(2., 0.82, r'$T_0=0.36\ GeV$') plt.text(2., 0.74, r'$\eta/s=0.08$') plt.xlabel(r'$\tau - \tau_0\ [fm]$') plt.ylabel(r'$T/T_0$') smash_style.set() plt.legend(loc='best') #plt.show() plt.savefig('bjorken_visc.pdf')
def gradient_free(self): ''' nabla \times \vec{A} ''' Ax, Ay = self.int_nabla_v() dyAx = np.gradient(Ax)[1] dxAy = np.gradient(Ay)[0] plt.xlabel(r'$x\ [fm]$') plt.ylabel(r'$y\ [fm]$') plt.quiver(self.x, self.y, dyAx.T, dxAy.T, scale=2000) plt.title(r'$\nabla\times \mathbf{a}(\mathbf{r})$') smash_style.set() plt.show()
def cmp_ptspec(path_to_results='', cent=['0_5', '10_15', '20_30', '30_40'], hadron='pion'): for i, c in enumerate(cent): if c == '0_5': label0 = r'$PHENIX$' label1 = r'$CLVisc$' else: label0, label1 = None, None x, y, yerr0, yerr1 = ptspec(hadron, c) shift = 5**(-i) plt.errorbar(x, y * shift, yerr=(yerr0 * shift, yerr1 * shift), label=label0, fmt='ro') path = os.path.join(path_to_results, c.replace('-', '_')) dndpt = ebe_mean(path, kind='dndpt', hadron=hadron, rap='Y') plt.semilogy(dndpt[:, 0], dndpt[:, 1] * shift, 'k-', label=label1) k, ang = 1.3, 25 if hadron == 'kaon': k, ang = 2.0, 20 elif hadron == 'proton': k, ang = 2.5, 15 plt.text(x[8], shift * y[8] * k, c.replace('_', '-'), rotation=-ang, size=20) plt.text(x[13], shift * y[13] * k, r'$\times\ %s$' % (1 / float(5**i)), rotation=-ang, size=20) plt.xlim(0, 3) plt.ylim(1.0E-5, 1.0E3) plt.xlabel(r'$p_T\ [GeV]$') plt.ylabel(r'$(1/2\pi)d^2 N/dYp_Tdp_T\ [GeV]^{-2}$') if hadron == 'pion': plt.title(r'$Au+Au\ \sqrt{s_{NN}}=200\ GeV,\ for\ \pi^+$', fontsize=30) elif hadron == 'kaon': plt.title(r'$Au+Au\ \sqrt{s_{NN}}=200\ GeV,\ for\ K^+$', fontsize=30) elif hadron == 'proton': plt.title(r'$Au+Au\ \sqrt{s_{NN}}=200\ GeV,\ for\ proton$', fontsize=30) smash_style.set(line_styles=False) plt.legend(loc='best') plt.tight_layout() plt.savefig('figs/auau200_ptspec_%s.pdf' % hadron) plt.show()
def vorticity_vs_pxpy(self, Y=4): nx, ny = 20, 20 vor = np.zeros((nx, ny)) omg = np.zeros((nx, ny)) for ix, px in enumerate(np.linspace(-3, 3, nx)): for iy, py in enumerate(np.linspace(-3, 3, ny)): vor_y, omega_y, rho = self.Pimu_rho(Y, px, py) vor[ix, iy] = vor_y / rho omg[ix, iy] = omega_y / rho print(px, 'finished') #plt.imshow(vor.T, cmap=plt.get_cmap('bwr'), origin='lower', extent=(-3,3,-3,3), vmin=-0.01, vmax=0.01) np.savetxt('%s/pol_Y%s.dat' % (self.fpath, Y), vor) vmax = vor.max() vmin = vor.min() if vmax < -vmin: vmax = -vmin plt.imshow(vor.T, cmap=plt.get_cmap('bwr'), origin='lower', extent=(-3, 3, -3, 3), vmin=-vmax, vmax=vmax) plt.xlabel(r'$p_x\ [GeV]$') plt.ylabel(r'$p_y\ [GeV]$') plt.title(r'$\Pi^{y}\ @\ rapidity=%s$' % Y) plt.colorbar() smash_style.set() plt.savefig('%s/vor_Y%s.png' % (self.fpath, Y)) plt.close() vmax = omg.max() vmin = omg.min() if vmax < -vmin: vmax = -vmin plt.imshow(omg.T, extent=(-3, 3, -3, 3), cmap=plt.get_cmap('bwr'), origin='lower', vmin=-vmax, vmax=vmax) plt.xlabel(r'$p_x\ [GeV]$') plt.ylabel(r'$p_y\ [GeV]$') plt.title(r'$\omega^{y}\ @\ rapidity=%s$' % Y) plt.colorbar() smash_style.set() plt.savefig('%s/omg_Y%s.png' % (self.fpath, Y)) plt.close()
def plot_pol_corr(h5, withz=True, system='auau200', cent='20_30', etaos='0p08'): max0 = plot_range(h5, 0, 1, withz, system, cent, etaos, color='red') max1 = plot_range(h5, 1, 2, withz, system, cent, etaos, color='blue') max2 = plot_range(h5, 2, 3, withz, system, cent, etaos, color='green') max3 = max0 if system == 'pbpb2p76': max3 = plot_range(h5, 4, 5, withz, system, cent, etaos, color='grey') plt.gca().yaxis.set_major_formatter(mtick.FormatStrFormatter('%.2e')) plt.xlabel(r'$|\phi_1 - \phi_2|$') maxf = max(max0, max1, max2, max3) plt.ylim(-maxf, maxf) smash_style.set() plt.legend(loc='best') plt.subplots_adjust(left=0.2) system_title = '$Au+Au\ 200\ GeV$,' if system == 'pbpb2p76': system_title = '$Pb+Pb\ 2.76\ TeV$,' if system == 'auau62p4': system_title = '$Au+Au\ 62.4\ GeV$,' fname = '' if withz: plt.ylabel(r'$<\Pi_{\eta}(\phi_1) \cdot \Pi_{\eta}(\phi_2)>$') fname = 'figs/Piz_corr_vs_deltaphi_{system}_{cent}_{etaos}.pdf'.format( system=system, etaos=etaos, cent=cent.replace('_', '-')) else: plt.ylabel(r'$<\Pi_{\perp}(\phi_1) \cdot \Pi_{\perp}(\phi_2)>$') fname = 'figs/Pixy_corr_vs_deltaphi_{system}_{cent}_{etaos}.pdf'.format( system=system, etaos=etaos, cent=cent.replace('_', '-')) plt.title('{system_title} {cent}%, $\eta/s$={etaos}'.format( system_title=system_title, etaos=etaos.replace('p', '.'), cent=cent.replace('_', '-'))) plt.savefig(fname) plt.close()
def gradient_free(self, scale=20, color='k', flip=False): ''' nabla \times \vec{A} ''' Az = self.__int_nabla_v() x, y = np.meshgrid(self.x, self.y, indexing='ij') dyAz = np.gradient(Az)[1] dxAz = np.gradient(Az)[0] mask = self.ed < 0.3 dyAz[mask] = 0.0 dxAz[mask] = 0.0 if flip == True: plt.quiver(x, y, -dyAz, dxAz, scale=scale, color=color) else: plt.quiver(x, y, dyAz, -dxAz, scale=scale, color=color) smash_style.set()
def plot_visc_vs_ideal(): h5_visc = h5py.File('vor_int_visc0p08_cent20_25.hdf5', 'r') #h5_ideal= h5py.File('vor_int_ideal_cent20_25.hdf5', 'r') h5_ideal = h5py.File('vor_int_visc0p12_auau62p4_cent20_25.hdf5', 'r') h5_ideal_cent45_50 = h5py.File('vor_int_visc0p12_auau62p4_cent45_50.hdf5', 'r') h5_39 = h5py.File('vor_int_visc0p08_auau39_cent20_25.hdf5', 'r') n0, Y, mean_pol_visc = int_Piy(h5_visc) n1, Y, mean_pol_ideal = int_Piy(h5_ideal) n2, Y, mean_pol_ideal_45 = int_Piy(h5_ideal_cent45_50) n3, Y, mean_pol_3 = int_Piy(h5_39) plt.errorbar(Y, mean_pol_ideal_45, np.sqrt(1.0 / n2) * mean_pol_ideal_45, fmt='g^', label=r'auau62.4 45-50 $\eta/s=0.12$') plt.errorbar(Y, mean_pol_ideal, np.sqrt(1.0 / n1) * mean_pol_ideal, fmt='bo', label='auau62.4 20-25 $\eta/s=0.12$') plt.errorbar(Y, mean_pol_visc, np.sqrt(1.0 / n0) * mean_pol_visc, fmt='rs', label=r'auau200 20-25 $\eta/s=0.08$') plt.errorbar(Y, mean_pol_3, np.sqrt(1.0 / n3) * mean_pol_3, fmt='cd', label=r'auau39 20-25 $\eta/s=0.08$') plt.xlabel(r'$rapidity$') plt.ylabel(r'$P^y_{int}$') #smash_style.set(line_styles=False) smash_style.set() plt.ylim(0.0002, 0.005) plt.legend(loc='upper center') plt.subplots_adjust(left=0.2) plt.savefig('Pi_visc_cent.pdf') plt.show() plt.close()
def plot_vor(vor, Y, fpath='./', kind='visc'): vmax = vor.max() vmin = vor.min() if vmax < -vmin: vmax = -vmin plt.imshow(vor.T, cmap=plt.get_cmap('bwr'), origin='lower', extent=(-3, 3, -3, 3), vmin=-vmax, vmax=vmax) plt.xlabel(r'$p_x\ [GeV]$') plt.ylabel(r'$p_y\ [GeV]$') plt.title(r'$\Pi^{y}\ @\ rapidity=%s$' % Y) plt.colorbar() smash_style.set() plt.savefig('%s/vor_Y%s_%s.png' % (fpath, Y, kind)) plt.close()
def plot_dNdEta(num_of_events = 8): plot_hydro('event0_6') plot_hydro('event6_15') plot_hydro('event15_25') plot_hydro('event25_35') #ebe = np.loadtxt('dNdEta_0_6_ebe.dat') #plt.plot(ebe[:, 0], ebe[:, 1], 'r--') # 1304.0347 dat0 = np.loadtxt('dNdEta_0_6.dat') dat1 = np.loadtxt('dNdEta_6_15.dat') dat2 = np.loadtxt('dNdEta_15_25.dat') dat3 = np.loadtxt('dNdEta_25_35.dat') plt.errorbar(dat0[:,0], dat0[:,2], yerr=[-dat0[:,4], dat0[:, 3]], fmt='ro', label=r'$PHOBOS$') plt.errorbar(dat1[:,0], dat1[:,2], yerr=[-dat1[:,4], dat1[:, 3]], fmt='bo') plt.errorbar(dat2[:,0], dat2[:,2], yerr=[-dat2[:,4], dat2[:, 3]], fmt='go') plt.errorbar(dat3[:,0], dat3[:,2], yerr=[-dat3[:,4], dat3[:, 3]], fmt='mo') plt.xlabel(r'$\eta$') plt.ylabel(r'$\frac{dN_{ch}}{d\eta}$') xcod = [-0.7, -0.7, -0.7, -0.7] ycod = [720, 550, 400, 260] text = ['0-6%', '6-15%', '15-25%', '25-35%'] for i in range(4): plt.text(xcod[i], ycod[i], text[i], size=20) smash_style.set(line_styles=False) plt.legend(loc='best', title=r'$Au+Au\ 200\ GeV$') plt.subplots_adjust(left=0.2, bottom=0.2, right=0.95, top=0.95) plt.xlim(-8, 8) plt.ylim(0, 1000) plt.savefig('dNdEta_AuAu200.pdf') plt.show()
def plot_dNdEta(num_of_events=8): tau0p2 = np.loadtxt('../event2/dN_over_2pidYptdpt_mc_charged.dat') eta = tau0p2[:, 0] dat = np.loadtxt('dNdPt_2p76.dat') # 1304.0347 plt.errorbar(dat[:, 0], dat[:, 3], dat[:, 4], fmt='o', label=r'$ALICE\ 0-5\%$') plt.semilogy(eta, tau0p2[:, 1], label=r'$CLVisc$') plt.xlabel(r'$p_T\ [GeV]$') plt.ylabel(r'$\frac{dN_{ch}}{2\pi dY p_Tdp_T}\ [GeV^{-2}]$') smash_style.set() plt.legend(loc='best', title=r'$Pb+Pb\ 2760\ GeV$') plt.subplots_adjust(left=0.2, bottom=0.2, right=0.95, top=0.95) #plt.text(-6, 1650, '(b)') plt.xlim(0, 4) plt.ylim(1.0E-3, 1.0E4) plt.show()
def cmp_v2_v3_v4(path_to_results, hadron='pion', cent=['0-5'], save_fig=True, ini='ampt'): from pbpb2760 import Vn v2_exp = Vn(n=2) v3_exp = Vn(n=3) v4_exp = Vn(n=4) v5_exp = Vn(n=5) label0 = r'$ALICE$' for c in cent: pt2, v2, v2_err0, v2_err1 = v2_exp.get_ptdiff(hadron, c) pt3, v3, v3_err0, v3_err1 = v3_exp.get_ptdiff(hadron, c) pt4, v4, v4_err0, v4_err1 = v4_exp.get_ptdiff(hadron, c) pt5, v5, v5_err0, v5_err1 = v5_exp.get_ptdiff(hadron, c) plt.errorbar(pt2, v2, yerr=(v2_err0, v2_err1), label=label0, fmt='ko', ms=10) plt.errorbar(pt3, v3, yerr=(v3_err0, v3_err1), fmt='rs', ms=10) plt.errorbar(pt4, v4, yerr=(v4_err0, v4_err1), fmt='b*', ms=10) plt.errorbar(pt5, v5, yerr=(v5_err0, v5_err1), fmt='md', ms=10) path = os.path.join(path_to_results, c.replace('-', '_')) vn_clvisc = ebe_mean(path, kind='vn', hadron=hadron) colors = ['k', 'r', 'b', 'm'] for n in [2, 3, 4, 5]: label1 = None if n == 2: label1 = r'$CLVisc$' plt.plot(vn_clvisc[:, 0], vn_clvisc[:, n], label=label1, color=colors[n - 2]) plt.text(2.5, v2[10], r"$v_2$", fontsize=40, color='k') plt.text(2.5, v3[10], r"$v_3$", fontsize=40, color='r') plt.text(2.5, v4[10], r"$v_4$", fontsize=40, color='b') plt.text(2.5, v5[10], r"$v_5$", fontsize=40, color='m') plt.xlabel(r'$p_T\ [GeV]$') if hadron == 'pion': plt.ylabel(r'$v_n\ \mathrm{for}\ \pi^+$') elif hadron == 'kaon': plt.ylabel(r'$v_n\ \mathrm{for}\ K^+$') elif hadron == 'proton': plt.ylabel(r'$v_n\ \mathrm{for}\ proton$') elif hadron == 'charged': plt.ylabel(r'$v_n\ \mathrm{for}\ h^{\pm}$') smash_style.set(line_styles=False) plt.legend(loc='upper left', title=c + r'$\%$') plt.tight_layout() plt.xlim(0, 2.5) plt.ylim(0.001, 1.3 * vn_clvisc[14, 2]) plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV$', fontsize=30) plt.savefig('figs/pbpb2760_%s_%s_ini%s_vn.pdf' % (hadron, c.replace('-', '_'), ini)) plt.show()
def ptspec_identify(path, cent='0_5', data_src=1): path = os.path.join(path, cent) pion = ebe_mean(path, kind='dndpt', hadron='pion', rap='Y') kaon = ebe_mean(path, kind='dndpt', hadron='kaon', rap='Y') proton = ebe_mean(path, kind='dndpt', hadron='proton', rap='Y') proton_fix_factor = 0.7 if data_src == 0: #dat0 = np.loadtxt('dNdPt_2p76.dat', skiprows=10) dat = np.loadtxt( 'data/dNdYptdpt_Alice/dNdPt_pbpb2760_%s_pion_exp.dat' % cent, skiprows=10) dat2 = np.loadtxt( 'data/dNdYptdpt_Alice/dNdPt_pbpb2760_%s_kaon_exp.dat' % cent, skiprows=10) dat3 = np.loadtxt( 'data/dNdYptdpt_Alice/dNdPt_pbpb2760_%s_proton_exp.dat' % cent, skiprows=10) # 1304.0347 #plt.errorbar(dat0[:,0], dat0[:,3], dat0[:,6], fmt='o', label=r'$ALICE\ charged$') plt.errorbar(dat[:, 0], dat[:, 3], dat[:, 6], fmt='o', color='r', label=r'$ALICE\ \pi^+$') plt.errorbar(dat2[:, 0], dat2[:, 3], dat2[:, 6], fmt='s', color='g', label=r'$ALICE\ K^+$') plt.errorbar(dat3[:, 0], dat3[:, 3], dat3[:, 6], fmt='d', color='b', label=r'$ALICE\ p$') #plt.semilogy(charged[:, 0], charged[:, 1], label=r'$CLVisc\ \pi^+$') plt.semilogy(pion[:, 0], pion[:, 1], 'k-', label=r'$CLVisc$') plt.semilogy(kaon[:, 0], kaon[:, 1], 'k-') plt.semilogy(proton[:, 0], proton_fix_factor * proton[:, 1], 'k-') #plt.semilogy(eta, 3.5*proton[:, 1], label=r'$CLVisc$') elif data_src == 1: from pbpb2760 import dNdPt exp = dNdPt() x_pion, y_pion, yerr0_pion, yerr1_pion = exp.get( 'pion', cent.replace('_', '-')) x_kaon, y_kaon, yerr0_kaon, yerr1_kaon = exp.get( 'kaon', cent.replace('_', '-')) x_proton, y_proton, yerr0_proton, yerr1_proton = exp.get( 'proton', cent.replace('_', '-')) plt.errorbar(x_pion, y_pion, yerr=(yerr0_pion, yerr1_pion), fmt='o', color='r', label=r'$ALICE\ \pi^{+}+\pi^{-}$') plt.errorbar(x_kaon, y_kaon, yerr=(yerr0_kaon, yerr1_kaon), fmt='s', color='g', label=r'$ALICE\ K^{+}+K^{-}$') plt.errorbar(x_proton, y_proton, yerr=(yerr0_proton, yerr1_proton), fmt='d', color='b', label=r'$ALICE\ p+\bar{p}$') #plt.semilogy(charged[:, 0], charged[:, 1], label=r'$CLVisc\ \pi^+$') plt.semilogy(pion[:, 0], 2 * pion[:, 1], 'k-', label=r'$CLVisc$') plt.semilogy(kaon[:, 0], 2 * kaon[:, 1], 'k-') plt.semilogy(proton[:, 0], proton_fix_factor * 2 * proton[:, 1], 'k-') #plt.semilogy(eta, 3.5*proton[:, 1], label=r'$CLVisc$') plt.xlabel(r'$p_T\ [GeV]$') plt.ylabel(r'$\frac{dN}{2\pi dY p_Tdp_T}\ [GeV^{-2}]$') smash_style.set(line_styles=False) #plt.legend(loc='best', ncol=2, mode='expand') plt.title(r'$Pb+Pb\ 2.76\ TeV, centrality\ %s$' % cent.replace('_', '-')) plt.xlim(0, 4) plt.ylim(1.0E-2, 1.0E4) plt.tight_layout() plt.legend(loc='upper right') plt.savefig('figs/pbpb2760_ptspec_%s_identify.pdf' % cent) plt.show()
def evolve(self, nstep=20): '''time evolution of magnetic field for nstep ''' Bx = np.empty_like(self.B0[0]) By = np.empty_like(Bx) Bz = np.empty_like(Bx) Bold = np.array(self.B0) zeros = np.zeros_like(Bx) Ex = np.zeros_like(Bx) Ey = np.zeros_like(Bx) Ez = np.zeros_like(Bx) Eold = np.array([Ex, Ey, Ez]) eos_type = 'EOSI' if self.hydro_cfg.IEOS == 1: eos_type = 'EOSL' By_cent_vs_time = [] extent = (self.x[0], self.x[-1], self.y[0], self.y[-1]) sigma = self.sigma dt = self.dt for n in range(1, nstep): # predict step, get B^{n+1'} from B^n and E^n v0 = self.velocity(n-1) E0 = Eold curl_E0 = self.curl(E0) Bprim = Bold - dt * curl_E0 v1 = self.velocity(n) #E1 = self.electric_field(E0, v0, Bold, v1, Bprim, dt=self.dt, sigma=self.sigma) Eprim = (E0 + dt*(self.curl(Bprim) - sigma*self.v_cross_B(v1, Bprim)))/(1+sigma*dt) B1 = Bold - 0.5*dt*(self.curl(E0) + self.curl(Eprim)) Bold = B1 Eold = (E0 + dt*(self.curl(B1) - sigma*self.v_cross_B(v1, B1)))/(1+sigma*dt) time = self.hydro_cfg.TAU0+n*dt divB = self.check_divB(Bold) plt.contourf(divB.T, origin='lower', extent=extent) plt.xlabel(r'$x\ [fm]$') plt.ylabel(r'$y\ [fm]$') plt.title(r'$div B\ @\ t=%s\ [fm]\ %s$'%(time, eos_type)) smash_style.set() plt.colorbar() plt.savefig('%s/divB_%03d.png'%(self.hydro_dir,n)) plt.close() self.B.append(Bold) i_cent = self.hydro_cfg.NX//2 j_cent = self.hydro_cfg.NY//2 By_cent = Bold[1, i_cent, j_cent] By_cent_vs_time.append([time, By_cent]) By_cent_vs_time = np.array(By_cent_vs_time) fname = '%s/By_cent_vs_time_%s.dat'%(self.hydro_dir, eos_type) np.savetxt(fname, By_cent_vs_time, header='tau, By(x=0, y=0) GeV^2') print('evolution finished! start to plot...')
def plot_dNdEta(num_of_events=8): charged = np.loadtxt( '/lustre/nyx/hyihp/lpang/new_polarization/pbpb2p76_results/cent0_5/etas0p08/dNdPt_charged_noovers.dat' ) pion = np.loadtxt( '/lustre/nyx/hyihp/lpang/new_polarization/pbpb2p76_results/cent0_5/etas0p08/dNdPt_pion_noovers.dat' ) kaon = np.loadtxt( '/lustre/nyx/hyihp/lpang/new_polarization/pbpb2p76_results/cent0_5/etas0p08/dNdPt_kaon_noovers.dat' ) proton = np.loadtxt( '/lustre/nyx/hyihp/lpang/new_polarization/pbpb2p76_results/cent0_5/etas0p08/dNdPt_proton_noovers.dat' ) #pion = np.loadtxt('/lustre/nyx/hyihp/lpang/new_polarization/pbpb2p76_results/cent0_5/etas0p08/event5/dN_over_2pidYptdpt_mc_211.dat') #kaon = np.loadtxt('/lustre/nyx/hyihp/lpang/new_polarization/pbpb2p76_results/cent0_5/etas0p08/event5/dN_over_2pidYptdpt_mc_321.dat') #proton = np.loadtxt('/lustre/nyx/hyihp/lpang/new_polarization/pbpb2p76_results/cent0_5/etas0p08/event5/dN_over_2pidYptdpt_mc_2212.dat') eta = pion[:, 0] dat0 = np.loadtxt('dNdPt_2p76.dat', skiprows=10) dat = np.loadtxt('dNdPt_Alice/dNdPt_pbpb2760_0_5_pion_exp.dat', skiprows=10) dat2 = np.loadtxt('dNdPt_Alice/dNdPt_pbpb2760_0_5_kaon_exp.dat', skiprows=10) dat3 = np.loadtxt('dNdPt_Alice/dNdPt_pbpb2760_0_5_proton_exp.dat', skiprows=10) # 1304.0347 plt.errorbar(dat0[:, 0], dat0[:, 3], dat0[:, 6], fmt='o', label=r'$ALICE\ charged$') plt.errorbar(dat[:, 0], dat[:, 3], dat[:, 6], fmt='o', label=r'$ALICE\ \pi^+$') plt.errorbar(dat2[:, 0], dat2[:, 3], dat2[:, 6], fmt='o', label=r'$ALICE\ K^+$') plt.errorbar(dat3[:, 0], dat3[:, 3], dat3[:, 6], fmt='o', label=r'$ALICE\ p$') plt.semilogy(eta, charged[:, 1], label=r'$CLVisc\ \pi^+$') plt.semilogy(eta, pion[:, 1], label=r'$CLVisc\ \pi^+$') plt.semilogy(eta, kaon[:, 1], label=r'$CLVisc\ K^+$') plt.semilogy(eta, proton[:, 1], label=r'$CLVisc\ p$') #plt.semilogy(eta, 3.5*proton[:, 1], label=r'$CLVisc$') plt.xlabel(r'$p_T\ [GeV]$') plt.ylabel(r'$\frac{dN_{ch}}{2\pi dY p_Tdp_T}\ [GeV^{-2}]$') smash_style.set() plt.legend(loc='best', ncol=2, mode='expand') plt.title(r'$Pb+Pb\ 2.76\ TeV,\ 0-5\%$') plt.subplots_adjust(left=0.15, bottom=0.15) #plt.text(-6, 1650, '(b)') plt.xlim(0, 4) plt.ylim(1.0E-3, 1.0E5) plt.savefig('dNdPt_hydro_vs_LHC.pdf') plt.show()
y, yerr=yerr, label=version, color="darkred", linestyle='-', zorder=3) # store results save_table(OrderedDict([('x', x), ('y', y), ('yerr', yerr)]), 'multiplicity.txt', version) if args.comp_prev_version: # Compare to previous version import comp_to_prev_version as cpv cpv.plot_previous_results('FOPI_pions', 'multiplicity', '.txt') smash_style.set(line_styles=False, update_legends=True) plt.xlabel("$E_{kin}$ [AGeV]") plt.xlim(0.3, 1.6) plt.yscale('log') plt.ylim(2, 100) plt.ylabel(r"$M(\pi)=3/2\,(N_{\pi^+}+N_{\pi^-})$") plt.legend(loc="lower right") ### (3) plot ratio plt.subplot(312) if args.FOPI_ratio != '': if 'ced' not in sys.modules: import comp_to_exp_data as ced ced.plot_FOPI_data(args.FOPI_ratio, 'ratio')
def test_riemann(self): ''' initialize with step energy density in (t, x, y, z) coordinates to test the riemann solution, ''' z = np.linspace(-10, 10, cfg.NZ) edv = np.zeros((cfg.NX * cfg.NY * cfg.NZ, 4), dtype=np.float32) from gubser import Riemann analytical_solution = Riemann(z, pressure_left=1.0) #cfg.TAU0 = 1.0 self.visc = CLVisc(cfg) self.ctx = self.visc.ctx self.queue = self.visc.queue ed_ini = analytical_solution.energy_density(cfg.TAU0) vz_ini = analytical_solution.fluid_velocity(cfg.TAU0) for i in range(cfg.NX): for j in range(cfg.NY): for k in range(cfg.NZ): index = i * cfg.NY * cfg.NZ + j * cfg.NZ + k edv[index, 0] = ed_ini[k] edv[index, 3] = vz_ini[k] self.visc.ideal.load_ini(edv) self.visc.evolve(max_loops=1001, plot_bulk=True, save_hypersf=False, force_run_to_maxloop=True) bulk = self.visc.ideal.bulkinfo import matplotlib.pyplot as plt import h5py h5 = h5py.File('riemann_ideal.h5', 'w') h5.create_dataset('z', data=z) nstep = 10 tau_list = np.empty(nstep) cs2 = 1.0 / 3.0 for i in range(nstep): h5.create_dataset('clvisc/ed/%s' % i, data=bulk.ez[i]) h5.create_dataset('clvisc/pr/%s' % i, data=bulk.ez[i] * cs2) h5.create_dataset('clvisc/vz/%s' % i, data=bulk.vz[i]) h5.create_dataset('riemann/ed/%s' % i, data=analytical_solution.energy_density(i)) h5.create_dataset('riemann/pr/%s' % i, data=analytical_solution.pressure(i)) h5.create_dataset('riemann/vz/%s' % i, data=analytical_solution.fluid_velocity(i)) tau = cfg.TAU0 + i * cfg.ntskip * cfg.DT tau_list[i] = tau h5.create_dataset('tau', data=tau_list) h5.close() for i in [0, 2, 4, 8]: plt.plot(z, bulk.ez[i] / 3.0, '--') ez = analytical_solution.pressure(i) plt.plot(z, ez) plt.text(-i, 0.9, r'$\tau=%s\ [fm]$' % i) plt.ylim(-0.5, 1.5) plt.xlabel(r'$z\ [fm]$') plt.ylabel(r'$\varepsilon$') smash_style.set(line_styles=False) plt.savefig('riemann_ed.pdf') plt.close() for i in [0, 2, 4, 8]: plt.plot(z, bulk.vz[i], '--') vz = analytical_solution.fluid_velocity(i) plt.plot(z, vz) plt.text(i, 0.9, r'$\tau=%s\ [fm]$' % i) plt.ylim(-0.5, 1.5) plt.xlabel(r'$z\ [fm]$') plt.ylabel(r'$v_z$') smash_style.set(line_styles=False) plt.savefig('riemann_vz.pdf') plt.close()
def cmp_ideal_vs_visc( dir_ideal='/lustre/nyx/hyihp/lpang/trento_ebe_hydro/pbpb2p76_results_ampt/etas0p0/', dir_visc='/lustre/nyx/hyihp/lpang/trento_ebe_hydro/pbpb2p76_results_ampt/etas0p16/', centrality='0-5', num_events=200, subfig_label='A'): vn_ideal = np.empty((num_events, 20, 7)) vn_visc = np.empty((num_events, 20, 7)) vn_ideal[:] = np.NAN vn_visc[:] = np.NAN for eid in range(0, num_events): try: path_ideal = os.path.join(dir_ideal, centrality.replace('-', '_'), 'event%d' % eid, 'vn24_vs_eta.txt') vn_ideal[eid] = np.loadtxt(path_ideal) path_visc = os.path.join(dir_visc, centrality.replace('-', '_'), 'event%d' % eid, 'vn24_vs_eta.txt') vn_visc[eid] = np.loadtxt(path_visc) except BaseException as e: print("%s when load data for event %s" % (str(e), eid)) # due to statistics, sometimes vn{2} or vn{4} has nan values, skip those events vn_ideal_mean = np.nanmean(vn_ideal, axis=0) vn_visc_mean = np.nanmean(vn_visc, axis=0) pbpb = PbPb2760() exp_v22 = pbpb.get(centrality, 'v22') exp_v32 = pbpb.get(centrality, 'v32') ratio = vn_visc_mean[:, 1].sum() / vn_ideal_mean[:, 1].sum() plt.plot(vn_visc_mean[:, 0], vn_visc_mean[:, 1], 'r-', label=r'$CLVisc\ \eta/s=0.16$') plt.plot(vn_visc_mean[:, 0], vn_visc_mean[:, 2], 'b-') plt.plot(vn_ideal_mean[:, 0], ratio * vn_ideal_mean[:, 1], 'r--', label=r'$(CLVisc\ \eta/s=0)\times%.2f$' % ratio) plt.plot(vn_ideal_mean[:, 0], ratio * vn_ideal_mean[:, 2], 'b--') plt.errorbar(exp_v22[0], exp_v22[1], yerr=(exp_v22[4], exp_v22[5]), elinewidth=20, ls='', color='r', label='ALICE') plt.errorbar(exp_v32[0], exp_v32[1], yerr=(exp_v32[4], exp_v32[5]), elinewidth=20, ls='', color='b') plt.text(5.5, 1.0 * vn_visc_mean[-1, 1], r'$v_2\{2\}$', color='r') plt.text(5.5, 1.0 * vn_visc_mean[-1, 2], r'$v_3\{2\}$', color='b') plt.xlabel(r'$\eta$') plt.ylabel(r'$v_n\{2\}$') #plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV,\ 20-30\%$') plt.xlim(-6.0, 7.0) plt.ylim(0.0, 1.5 * vn_visc_mean[:, 1].max()) plt.text(0.7, 0.9, '(' + subfig_label + ') ' + centrality + r'$\%$', transform=plt.gca().transAxes) plt.subplots_adjust(left=0.15, bottom=0.15) smash_style.set(line_styles=False) plt.tight_layout() #plt.legend(ncol=2, loc="upper left", bbox_to_anchor=[0, 1]) plt.legend(loc="upper left") plt.savefig( 'figs/vn2_vs_eta_{cent}.pdf'.format(cent=centrality.replace('-', '_'))) plt.show() # save mean vn(eta) from hydro calculation to data file hydro_data_save_path = os.path.join(os.getcwd(), 'figs/hydro_pbpb2760_vn_vs_eta/') if not os.path.exists(hydro_data_save_path): os.makedirs(hydro_data_save_path) df = pd.DataFrame({ "eta": vn_ideal_mean[:, 0], "v22": vn_ideal_mean[:, 1], "v32": vn_ideal_mean[:, 2], "v42": vn_ideal_mean[:, 3] }) df.to_csv( os.path.join(hydro_data_save_path, 'etaos0p0_cent%s.csv' % centrality.replace('-', '_'))) df2 = pd.DataFrame({ "eta": vn_visc_mean[:, 0], "v22": vn_visc_mean[:, 1], "v32": vn_visc_mean[:, 2], "v42": vn_visc_mean[:, 3] }) df2.to_csv( os.path.join(hydro_data_save_path, 'etaos0p16_cent%s.csv' % centrality.replace('-', '_')))
'b--', label=r'CLVisc, $\eta/s=0.16$') #plt.plot(vn_mean[:, 0], vn_mean[:, 3], 'g:', label=r'CLVisc, n=4, $\eta/s=0.08$') plt.errorbar(exp[:, 0], exp[:, 1], yerr=exp[:, 3], elinewidth=20, ls='', color='r', label=r'ALICE, n=2') plt.errorbar(exp[:, 0], exp[:, 7], yerr=exp[:, 9], elinewidth=20, ls='', color='b', label=r'ALICE, n=3') #plt.errorbar(exp[:, 0], exp[:, 10], yerr=exp[:, 11], label=r'ALICE, n=4') plt.xlabel(r'$\eta$') plt.ylabel(r'$v_n\{2\}$') plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV,\ 0-5\%$') plt.ylim(0.0, 0.04) plt.subplots_adjust(left=0.15, bottom=0.15) smash_style.set() plt.legend(ncol=2, loc="upper left", bbox_to_anchor=[0, 1]) plt.savefig('vn2_vs_eta_0_5.pdf') plt.show()
def main(): parser = argparse.ArgumentParser() parser.add_argument("--num_events", type=int, default=200, help="num of events that will use") parser.add_argument("--input_dir", help="path to folder containing event*/") parser.add_argument( "--etaos", default='0p16', help="eta/s string 0p0 or 0p16 in the name of the output figure") parser.add_argument( "--centrality", choices=['0-5', '5-10', '10-20', '20-30', '30-40', '40-50', '50-60'], help="centrality range") args = parser.parse_args() print(args.num_events) vn = np.empty((args.num_events, 20, 7)) vn[:] = np.NAN for eid in range(0, args.num_events): try: vn_new = np.loadtxt('%s/event%d/vn24_vs_eta.txt' % (args.input_dir, eid)) vn[eid] = vn_new except: print("no data for event %s" % eid) vn_mean = np.nanmean(vn, axis=0) pbpb = PbPb2760() exp_v22 = pbpb.get(args.centrality, 'v22') exp_v32 = pbpb.get(args.centrality, 'v32') plt.plot(vn_mean[:, 0], vn_mean[:, 1], 'r-', label='CLVisc') plt.plot(vn_mean[:, 0], vn_mean[:, 2], 'b-') #plt.plot(vn_mean[:, 0], vn_mean[:, 3], 'g:', label=r'CLVisc, n=4, $\eta/s=0.08$') plt.errorbar(exp_v22[0], exp_v22[1], yerr=(exp_v22[4], exp_v22[5]), elinewidth=20, ls='', color='r', label='ALICE') plt.errorbar(exp_v32[0], exp_v32[1], yerr=(exp_v32[4], exp_v32[5]), elinewidth=20, ls='', color='b') plt.text(5.5, 1.0 * vn_mean[-1, 1], r'$v_2\{2\}$', color='r') plt.text(5.5, 1.0 * vn_mean[-1, 2], r'$v_3\{2\}$', color='b') plt.xlabel(r'$\eta$') plt.ylabel(r'$v_n\{2\}$') #plt.title(r'$Pb+Pb\ \sqrt{s_{NN}}=2.76\ TeV,\ 20-30\%$') plt.xlim(-6.0, 7.0) plt.text(0.4, 0.15, args.centrality + r'$\%$', transform=plt.gca().transAxes) plt.subplots_adjust(left=0.15, bottom=0.15) smash_style.set() plt.tight_layout() #plt.legend(ncol=2, loc="upper left", bbox_to_anchor=[0, 1]) plt.legend(loc="best") plt.savefig('figs/vn2_vs_eta_{cent}_etaos{etaos}.pdf'.format( cent=args.centrality.replace('-', '_'), etaos=args.etaos)) plt.show() # save mean vn(eta) from hydro calculation to data file hydro_data_save_path = os.path.join(os.getcwd(), 'figs/hydro_pbpb2760_vn_vs_eta/') if not os.path.exists(hydro_data_save_path): os.makedirs(hydro_data_save_path) df = pd.DataFrame({ "eta": vn_mean[:, 0], "v22": vn_mean[:, 1], "v32": vn_mean[:, 2], "v42": vn_mean[:, 3] }) df.to_csv( os.path.join( hydro_data_save_path, 'etaos%s_cent%s' % (args.etaos, args.centrality.replace('-', '_'))))