def crossSection(element, m_A, E_R):  # returns 1/GeV^3
    '''
	crossSection(element, m_A, E_R)
    
    Returns the differntial scattering cross section for a massive dark photon

    [m_A] = GeV
    [E_R] = GeV
    '''

    m_N = amu2GeV(atomicNumbers[element])
    FN2 = formFactor2(element, E_R)
    function = (FN2) / ((2 * m_N * E_R + m_A**2)**2)
    return function
def eMax(element, m_X, rIndex, u):
    '''
	eMax(element, m_X, rIndex, u)

	Returns the maximum kinetic energy allowed by the kinematics

	[m_X] = GeV

	rIndex specifies the index in the escape velocity array escVel2_List[rIndex]
	'''

    m_N = amu2GeV(atomicNumbers[element])
    mu = m_N * m_X / (m_N + m_X)
    vCross2 = (escVel2_List[rIndex])
    function = 2 * mu**2 * (u**2 + vCross2) / m_N
    #     assert (function >= 0), '(element, m_X, rIndex, u): (%s, %e, %i, %e) result in negative eMax' %(element, m_X, rIndex, u)
    return function
示例#3
0
def singleElementCap(element, m_X, m_A, epsilon, alpha, alpha_X):
	'''
	singleElementCap(element, m_X, m_A, epsilon, alpha, alpha_X)

	Returns the capture rate due to a single element for the specified parameters

	[m_X] = GeV
	[m_A] = GeV
	'''
	Z_N = nProtons[element]
	m_N = amu2GeV(atomicNumbers[element])
	n_X = 0.3/m_X # GeV/cm^3

	conversion = (5.06e13)**-3 * (1.52e24) # (cm^-3)(GeV^-2) -> s^-1
	prefactors = (4*np.pi)**2
	crossSectionFactors = 2 * (4*np.pi) * epsilon**2 * alpha_X * alpha * Z_N**2 * m_N
	function = n_X * conversion* crossSectionFactors* prefactors * sumOverR(element, m_X, m_A)
	return function
def EminEmaxIntersection(element, m_X, rIndex):
    '''
	EminEmaxIntersection(element, m_X, rIndex):

	Returns the velocity uInt when eMin = eMax.

	[m_X] = GeV

	'''
    m_N = amu2GeV(atomicNumbers[element])
    mu = (m_N * m_X) / (m_N + m_X)

    sqrtvCross2 = np.sqrt(escVel2_List[rIndex])
    # Calculate the intersection uInt of eMin and eMax given a specific rIndex
    A = m_X / 2.
    B = 2. * mu**2 / m_N
    uInt = np.sqrt((B) / (A - B)) * sqrtvCross2

    return uInt
示例#5
0
def singleElementCapKappa0(element, m_X, alpha):
	'''
	singleElementCapKappa0(element, m_X, alpha):

	Returns a single kappa0 value for 'element' and the specified parameters

	[m_X] = GeV
	'''
	Z_N = nProtons[element]
	m_N = amu2GeV(atomicNumbers[element])
	n_X = 0.3/m_X # 1/cm^3

	conversion = (5.06e13)**-3 * (1.52e24) # cm^-3 GeV^-2 -> s^-1
	crossSectionFactors = 2 * (4*np.pi) * alpha * Z_N**2 * m_N

	prefactor = (4*np.pi)**2  

	function = n_X * conversion * prefactor * crossSectionFactors * sumOverRKappa0(element, m_X)
	return function