示例#1
0
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()
示例#2
0
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()
示例#3
0
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()
示例#5
0
    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()
示例#6
0
 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()
示例#8
0
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()
示例#9
0
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()
示例#10
0
    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()
示例#11
0
 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()
示例#12
0
    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')
示例#13
0
 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()
示例#14
0
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()
示例#16
0
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()
示例#17
0
    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()
示例#18
0
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()
示例#20
0
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()
示例#21
0
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()
示例#22
0
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()
示例#23
0
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()
示例#24
0
    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...')
示例#25
0
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()
示例#26
0
             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')
示例#27
0
    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()
示例#28
0
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('-', '_')))
示例#29
0
             '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()
示例#30
0
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('-', '_'))))