Esempio n. 1
0
arfullSpectrum = np.zeros(len(E_R))
pbrecoilDict = {}
pbfullSpectrum = np.zeros(len(E_R))
alrecoilDict = {}
alfullSpectrum = np.zeros(len(E_R))
birecoilDict = {}

bifullSpectrum = np.zeros(len(E_R))

for A in xedetector.isotopes:
    xerecoilSpectrum = np.zeros(len(E_R))

    for i in range(0, len(E_R)):
        energy = E_R[i]

        xecs[A] = dSigdEr(int(A), int(A) - 54, energy, E_nu * 1000)

        xemask[A] = (E_nu * 1000 > np.sqrt(
            float(A) * 1.e6 * energy / 2.)) * (xecs[A] > 0.)
        if len(E_nu[xemask[A]]) == 0: continue

        isotopeFraction = xedetector.isotopes[A]
        kgPerMole = float(A) / 1000.
        atomsPerMole = 6.022e23
        secondsPerDay = 86400

        xerecoilSpectrum[i] = np.sum( reactor.fullSpectrum[xemask[A]] * xecs[A][xemask[A]]) * dE_nu *\
                                     xedetector.fluxFactor  * isotopeFraction *\
                                     atomsPerMole / kgPerMole * secondsPerDay
        xefullSpectrum[i] += xerecoilSpectrum[i]
Esempio n. 2
0
# P239, P241, and U235, using the expoential 5th-order polynomial
# parameterization
plt.figure(1)
plt.plot(E_nu, reactor.fullSpectrum, '-k')
plt.axis([0.01, 10., 1.e14, 1.e22])
plt.yscale('log')
plt.xlabel('Neutrino energy (MeV)')
plt.ylabel('Neutrinos/MeV')

##################################################################
# Plot the calculated cross sections of the various isotopes
plt.figure(2)
cs = {}
mask = {}
for A in detector.isotopes:
    cs[A] = dSigdEr(int(A), int(A) - 18, E_R, 10000)
    mask[A] = cs[A] > 0.
    plt.plot(E_R[mask[A]], cs[A][mask[A]], label=('Ar' + A))
plt.axis([0., 8., 0., 0.5e-40])
plt.xlabel('Recoil energy (keV)')
plt.ylabel('CENNS cross section (cm2)')
legend = plt.gca().legend(loc='upper right')

##################################################################
# Calculate recoil spectrum by summing over isotopes in their
# natural abundances, then integrating the reactor spectrum
# times the cross-section
recoilDict = {}
fullSpectrum = np.zeros(len(E_R))

for A in detector.isotopes:
Esempio n. 3
0
secondsPerDay = 86400
#########################################################################
# Show total cross sections vs. energy
xerecoilDict = {}
xeTotalCS = np.zeros(len(E_nu))

xecs = {}
xemask = {}

for A in xedetector.isotopes:
    xePartialCS = np.zeros(len(E_nu))

    for i in range(0, len(E_nu)):
        energy = E_nu[i]

        xecs[A] = dSigdEr(int(A), int(A) - 18, E_R, energy * 1000)

        #    xemask[A] = (xecs[A] > 0.)*(E_R > 0.)
        xemask[A] = (E_R < 2. * (energy * 1000.)**2 /
                     (float(A) * 1.e6)) * (E_R > 0.)

        isotopeFraction = xedetector.isotopes[A]
        kgPerMole = float(A) / 1000.

        if (np.sum(xemask[A]) > 0.):
            xePartialCS[i] = np.sum( xecs[A][xemask[A]] ) * dE_R *\
                             isotopeFraction
        else:
            xePartialCS[i] = 0.
        xeTotalCS[i] += xePartialCS[i]
Esempio n. 4
0
plt.ylabel('Neutrinos/MeV')
#plt.savefig('input_spectrum.png',dpi=600)

##################################################################
# Plot the calculated cross sections of the various isotopes
print('Plotting cross sections from various isotopes')
plt.figure(2)
xecs = {}
xecs_yo = {}
gecs = {}
arcs = {}
xemask = {}
gemask = {}
armask = {}
for A in xedetector.isotopes:
    xecs_yo[A] = dSigdEr(int(A), int(A) - 54, E_R, 10000)
    xemask[A] = xecs_yo[A] > 0.
    plt.plot(E_R[xemask[A]], xecs_yo[A][xemask[A]], label=('Xe' + A))

plt.axis([0., 2., 0., 5e-39])
plt.xlabel('Recoil energy (keV)')
plt.ylabel('CENNS cross section (cm^2)')
legend = plt.gca().legend(loc='upper right')
#plt.savefig('cross_sections.png',dpi=600)

##################################################################
# Calculate recoil spectrum by summing over isotopes in their
# natural abundances, then integrating the reactor spectrum
# times the cross-section
print('Plotting recoil spectrum from reactor neutrinos')
xerecoilDict = {}
Esempio n. 5
0
#########################################################################
# Show total cross sections vs. energy
E_nu_temp = np.linspace(0.01, 50., 500)
xerecoilDict = {}
xeTotalCS = np.zeros(len(E_nu_temp))

xecs = {}
xemask = {}

for A in xedetector.isotopes:
    xePartialCS = np.zeros(len(E_nu_temp))

    for i in range(0, len(E_nu_temp)):
        energy = E_nu_temp[i]

        xecs[A] = dSigdEr(int(A), int(A) - 54, E_R, energy * 1000)
        #    print(E_R[i])
        #    print(xecs[A])

        xemask[A] = (xecs[A] > 0.) * (E_R > 0.)
        #    print(mask[A])

        isotopeFraction = xedetector.isotopes[A]
        kgPerMole = float(A) / 1000.
        atomsPerMole = 6.022e23
        secondsPerDay = 86400

        if (np.sum(xemask[A]) > 0.):
            xePartialCS[i] = np.sum( xecs[A][xemask[A]] ) * dE_R *\
                             isotopeFraction
        else: