Hamiltonian for spin-independent interaction>>> print(WD.SI) Hamiltonian name:Spin-independent Hamiltonian:c_tau_SI(sigma_p, mchi, cn_over_cp=1)* O_1 Squared amplitude contributions: O_1*O_1 In the printout above O_1 stands for the effective operator \( {\cal O}_1 \) in the convention of Anand et al. In the pre-defined WD.SI Hamiltonian, the Wilson coefficients (in GeV\(^{-2}\)) are parameterized in terms of the WIMP-proton cross section \(\sigma_p= \frac{(c_1^p\mu_{\chi,N})^2}{\pi}\) in cm\(^2\) (with \(\mu_{\chi,N}\) the WIMP-nucleon reduced mass), of the WIMP mass \(m_\chi\) in GeV and of the ratio \(r=\frac{c_1^n}{c_1^p}\): \[{\cal H}=\sum_{\tau=0,1} c_1^{\tau}(\sigma_p,r) {\cal O}_{1}^{\tau} \] The Hamiltonian contains only the \({\cal O}_1\) coupling, so is implemented by passing to the eft_hamiltonian class a dictionary {key:value} with a single entry: key=1 and value a valid python function returning the corresponding coefficients \(c_1^0\), \(c_1^1\) as a function of the input parameters. def c_tau_SI(sigma_p,mchi,cn_over_cp=1): hbarc2=0.389e-27 #(hbar*c)^2 in GeV^2 * cm^2 mn=0.931 mu=mchi*mn/(mchi+mn) return np.sqrt(np.pi*sigma_p/hbarc2)/mu*np.array([1+cn_over_cp,1-cn_over_cp]) So: >>> wc_SI={1: c_tau_SI} >>> SI=WD.eft_hamiltonian('Spin-independent',wc_SI) Main attributes>>> print(WD.SI.name) Spin-independent >>> print(WD.SI.couplings) [1] >>> print(WD.SI.coeff_squared_list) [(1, 1)] >>> print(WD.SI.hamiltonian) c_1*O_1 >>> print(WD.SI.wilson_coefficients[1](sigma_p=1e-40,mchi=100,cn_over_cp=1)) [1.94852071e-06 0.00000000e+00] >>> print(WD.SI.wilson_coefficients[1](sigma_p=1e-40,mchi=100,cn_over_cp=0)) [9.74260356e-07 9.74260356e-07] >>> print(WD.SI.coeff_squared(1,1,sigma_p=1e-40,mchi=100,cn_over_cp=1)) [[3.79673297e-12 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] >>> print(WD.SI.arguments) {1: ['sigma_p', 'mchi', 'cn_over_cp']} >>> print([(key,value.__name__) for key,value in WD.SI.wilson_coefficients.items()]) [(1, 'c_tau_SI')] Hamiltonian for spin-dependent interaction>>> print(WD.SD) Hamiltonian name:Spin-dependent Hamiltonian:c_tau_SD(sigma_p, mchi, cn_over_cp=1)* O_4 Squared amplitude contributions:O_4*O_4 In the printout above O_4 stands for the effective operator \( {\cal O}_4 \) in the convention of Anand et al. In the pre-defined WD.SD Hamiltonian, the Wilson coefficients (in GeV\(^{-2}\)) are parameterized in terms of the WIMP-proton cross section \(\sigma_p= \frac{3}{16}\frac{(c_4^p\mu_{\chi,N})^2}{\pi}\) in cm\(^2\) (with \(\mu_{\chi,N}\) the WIMP-nucleon reduced mass), of the WIMP mass \(m_\chi\) in GeV and of the ratio \(r=\frac{c_1^n}{c_1^p}\): \[{\cal H}=\sum_{\tau=0,1} c_4^{\tau}(\sigma_p,r) {\cal O}_{4}^{\tau} \] The Hamiltonian contains only the \({\cal O}_4\) coupling, so is implemented by passing to the eft_hamiltonian class a dictionary {key:value} with a single entry: key=4 and value a valid python function returning the corresponding coefficients \(c_4^0\), \(c_4^1\) as a function of the input parameters. def c_tau_SD(sigma_p,mchi,cn_over_cp=1): hbarc2=0.389e-27 #(hbar*c)^2 in GeV^2 * cm^2 mn=0.931 mu=mchi*mn/(mchi+mn) return np.sqrt(16/3*np.pi*sigma_p/hbarc2)/mu*np.array([1+cn_over_cp,1-cn_over_cp]) So: >>> wc_SD={4: c_tau_SD} >>> SD=WD.eft_hamiltonian('Spin-dependent',wc_SD) Main attributes>>> print(WD.SD.name) Spin-dependent >>> print(WD.SD.couplings) [4] >>> print(WD.SD.coeff_squared_list) [(4, 4)] >>> print(WD.SD.hamiltonian) c_4*O_4 >>> print(WD.SD.wilson_coefficients[4](sigma_p=1e-40,mchi=100,cn_over_cp=1)) [4.49991583e-06 0.00000000e+00] >>> print(WD.SD.wilson_coefficients[4](sigma_p=1e-40,mchi=100,cn_over_cp=0)) [2.24995792e-06 2.24995792e-06] >>> print(WD.SD.coeff_squared(4,4,sigma_p=1e-40,mchi=100,cn_over_cp=1)) [[3.79673297e-12 0.00000000e+00] [0.00000000e+00 0.00000000e+00]] >>> print(WD.SD.arguments) {4: ['sigma_p', 'mchi', 'cn_over_cp']} >>> print([(key,value.__name__) for key,value in WD.SD.wilson_coefficients.items()]) [(4, 'c_tau_SD')] |