Пример #1
0
def plot_density(name,targets,xlims=None,nstep=100):
    """
    """
    fig = plt.figure()
    ax = fig.add_subplot(111)

    if xlims is None:
        xmin = Units.convert_to(targets[0].density.rmin,'kpc')
        xmax = Units.convert_to(targets[0].density.rmax,'kpc')
    else:
        xmin = xlims[0]
        xmax = xlims[1]

    if np.isinf(xmax):
        xmax = 10.* Units.convert_to(targets[0].density.rs,'kpc')

    fig = plt.figure()
    ax = fig.add_subplot(111)

    ax.set_xlim((xmin,xmax))
    ax.set_yscale('log')
    ax.set_xlabel('Distance [kpc]')
    ax.set_ylabel(r'Density [GeV / cm$^3$]')
    
    xvals = np.linspace(xmin,xmax,nstep)
    for target in targets:
        density = target.density
        yvals = Units.convert_to(density(Units.convert_from(xvals,'kpc')),'gev_cm3')
        ax.plot(xvals,yvals,color=target.color,label=target.name)
    
    leg = ax.legend(loc="upper right",fontsize=10,ncol=2)

    return fig,ax,leg
Пример #2
0
def plot_density(name, targets, xlims=None, nstep=100):
    """Make a plot of the density as a function of distance from
    the target center.

    Parameters
    ----------

    name : str
        Name for the plot

    targets : list
        List of targets to include in the plot

    xlims : tuple
        Range for the x-axis of the plot

    nteps : int
        Number of points to include in the plot

    Returns
    -------

    fig : `matplotlib.Figure`

    ax : `matplotlib.Axes`

    leg : `matplotlib.Legend`

    """
    fig = plt.figure(name)
    ax = fig.add_subplot(111)

    if xlims is None:
        xmin = Units.convert_to(targets[0].density.rmin, 'kpc')
        xmax = Units.convert_to(targets[0].density.rmax, 'kpc')
    else:
        xmin = xlims[0]
        xmax = xlims[1]

    if np.isinf(xmax):
        xmax = 10. * Units.convert_to(targets[0].density.rs, 'kpc')

    fig = plt.figure(name)
    ax = fig.add_subplot(111)

    ax.set_xlim((xmin, xmax))
    ax.set_yscale('log')
    ax.set_xlabel('Distance [kpc]')
    ax.set_ylabel(r'Density [GeV / cm$^3$]')

    xvals = np.linspace(xmin, xmax, nstep)
    for target in targets:
        density = target.density
        yvals = Units.convert_to(density(Units.convert_from(xvals, 'kpc')), 'gev_cm3')
        ax.plot(xvals, yvals, color=target.color, label=target.name)

    leg = ax.legend(loc="upper right", fontsize=10, ncol=2)

    return fig, ax, leg
Пример #3
0
def plot_j_integ(name,targets,xlims=None,nstep=100,ylims=None):
    """
    """
    fig = plt.figure()
    ax = fig.add_subplot(111)

    if xlims is None:
        xmin = 0.
        xmax = targets[0].psi_max
    else:
        xmin = xlims[0]
        xmax = xlims[1]        

    fig = plt.figure()
    ax = fig.add_subplot(111)

    ax.set_xlim((xmin,xmax))
    if ylims is not None:
        ax.set_ylim((ylims[0],ylims[1]))

    ax.set_yscale('log')
    ax.set_xlabel('Angular Separation [deg]')
    ax.set_ylabel(r'$J$ [GeV$^2$ / cm$^5$]')
    
    xvals = np.linspace(xmin,xmax,nstep)[1:]
    for target in targets:
        j_profile = target.j_profile
        yvals = Units.convert_to(j_profile.angularIntegral(xvals),'gev2_cm5')
        ax.plot(xvals,yvals,color=target.color,label=target.name)
    
    leg = ax.legend(loc="lower right",fontsize=10,ncol=2)

    return fig,ax,leg
Пример #4
0
 def _rad_max(self):
     units = self.getp("rad_max").unit
     return Units.convert_to(self.density.rmax, units)
Пример #5
0
 def _d_integ(self):
     dprof = self.d_profile
     units = self.getp("j_integ").unit
     return Units.convert_to(dprof.angularIntegral(self.psi_max)[0], units)
Пример #6
0
def plot_j_profile(name, targets, xlims=None, nstep=100, ylims=None):
    """Make a plot of the J-factor as a function of the angle from
    the target center.

    Parameters
    ----------

    name : str
        Name for the plot

    targets : list
        List of targets to include in the plot

    xlims : tuple
        Range for the x-axis of the plot

    nteps : int
        Number of points to include in the plot

    ylims : tuple
        Range for the y-axis of the plot

    Returns
    -------

    fig : `matplotlib.Figure`

    ax : `matplotlib.Axes`

    leg : `matplotlib.Legend`

    """
    fig = plt.figure(name)
    ax = fig.add_subplot(111)

    if xlims is None:
        xmin = 0.
        xmax = targets[0].psi_max
    else:
        xmin = xlims[0]
        xmax = xlims[1]

    fig = plt.figure()
    ax = fig.add_subplot(111)

    ax.set_xlim((xmin, xmax))
    if ylims is not None:
        ax.set_ylim((ylims[0], ylims[1]))

    ax.set_yscale('log')
    ax.set_xlabel('Angular Separation [deg]')
    ax.set_ylabel(r'$dJ/d\Omega$ [GeV$^2$ / cm$^5$ sr]')

    xvals = np.linspace(xmin, xmax, nstep)[1:]
    for target in targets:
        j_profile = target.j_profile
        yvals = Units.convert_to(j_profile(xvals, degrees=True), 'gev2_cm5')
        ax.plot(xvals, yvals, color=target.color, label=target.name)

    leg = ax.legend(loc="upper right", fontsize=10, ncol=2)

    return fig, ax, leg
Пример #7
0
 def _d_integ(self):
     """Compute the integrated D-factor
     """
     dprof = self.d_profile
     units = self.getp('d_integ').unit
     return Units.convert_to(dprof.angularIntegral(self.psi_max)[0], units)
Пример #8
0
 def _j_integ(self):
     """Compute the integrated J-factor
     """
     jprof = self.j_profile
     units = self.getp('j_integ').unit
     return Units.convert_to(jprof.angularIntegral(self.psi_max)[0], units)
Пример #9
0
 def _rad_max(self):
     """Return the maximum integration radius"""
     units = self.getp('rad_max').unit
     return Units.convert_to(self.density.rmax, units)