Alpha and helion particle charge radius difference by spectroscopy of quantum-degenerate helium
Data files
Apr 15, 2025 version files 151.94 MB
-
alpha_helion_charge_radius_spectroscopy_data.zip
151.93 MB
-
README.md
12.16 KB
Abstract
Accurate spectroscopic measurements of calculable systems provide a powerful method for testing the Standard Model and extracting fundamental constants. Recently, spectroscopic measurements of finite nuclear size effects in normal and muonic hydrogen resulted in unexpectedly large adjustments of the proton charge radius and the Rydberg constant. We measured the 2 3S → 2 1S transition frequency in a Fermi gas of 3He with an order of magnitude higher accuracy than before. Together with a previous measurement in a 4He Bose-Einstein condensate, a squared charge radius difference r2h − r2α = 1.0757(12)exp(9)theo fm2 is determined between the helion and alpha particle. This measurement provides a benchmark with unprecedented accuracy for nuclear structure calculations. A deviation of 3.6 sigma is found with a determination based on spectroscopy of muonic helium ions.
This .zip folder contains the data and analysis of the 2021/2022 measurement campaign of 3He spectroscopy in a magic wavelength optical dipole trap. Contains data of atom loss spectra of degenerate Fermi gases of metastable 3He resulting from excitation along a doubly-forbidden transition at 1557nm. See main article for context and detailed explanation.\
Short summary of the contents:
- raw data for individual spectra are saved per date under analysed/Spectro. individual loss spectra can be reconstructed by plotting the remaining number of atoms in a degenerate fermi gas (DFG) as a function of the DDS frequency which is used to scan the spectroscopy laser
- using counter data in the folder analysed/Counter and correcting the times of different PCs with data from te folder analysed/Timestamps, the DDS frequencies can be converted into absolute laser frequencies.
- with the data in the csclock_gps folder, these absolute frequencies can be corrected for small deviations of the local reference clock to the SI second.
- the analysis script
Analyze_spectra.py
performs a fit to each spectrum to extract the absolute frequency of the transition, saving the results in a file named AllScanresults.csv. - Finally, the script
mult_regress_analysis_fullset.py
runs the multiple regression analysis of the determined transition frequencies to correct for ac Stark shifts and arrive at a single number for the unshifted transition frequency as presented in the main article.
Detailed description of the data and file structure
The main folder contains 5 subfolders, several python (python 2.7) analysis scripts, and a few .csv files with analysis results.
analysed
Raw data from the spectroscopy on a 3He degenerate Fermi gas (DFG) are in the folder analysed:
The folder analysed/Spectro contains all the scans where loss spectroscopy was performed, grouped into folders by measurements date and with a .csv file for each scan, named by the index of the starting and ending ‘shot’ (generation of a DFG and subsequent measurement of loss of atoms resulting from laser excitation).
Each row of the .csv represents a ‘shot’, labeled by runid, where every first and third shot have spectroscopy light applied and every second and fourth shot have the laser shutter closed in order to perform intermittent background measurements (see main article).
Listed are:
- dc_offset: a constant voltage offset in V of the MCP trace
- Tf_s: Fermi temperature (in K) as inferred from the trap parameters. not consistent throughout
- XParam: placeholder for an X parameter for non-spectroscopy scans
- DDS: the DDS frequency that is scanned to record a spectrum, in MHz
- sum: The integrated area (in V*s) under the MCP TOF trace.
- rho0: density of the DFG (in m-3), inferred from trap parameters and DFG parameters.
- DMM: placeholder for measurements with a digital multimeter
- T: Temperature (K) of the DFG resulting from the TOF trace fit
- N_th: number of thermal atoms in the gas
- mu: chemical potential (K) of the DFG
- MCP_count: placeholder for ion counting measurements
- axial: the axial trap frequency (Hz) inferred from the trap power
- runid: the unique number used to identify individual ‘shots’ of the experiment
- radial: the radial trap frequency (Hz) inferred from the trap power
- Tf: Fermi temperature (K) of the DFG
- dt: oscilloscope delay time (s) for the arrival of the TOF trace after release of the ODT
- N: number of atoms in the DFG
- crtime: placeholder for creation times of individual shots.
- fugacity: fugacity of the DFG resulting from the TOF trace fit
- T_Tf: degeneracy of the DFG, the ratio of temperature to Fermi temperature T/Tf
- ZS: applied Zeeman shift (MHz) to the DDS frequency when recording spectra for two Zeeman states
- probe: power of the spectroscopy probe laser (in mW)
- ODT: power of the optical dipole trap laser (in mW)
- N_ref: placeholder for a reference measurement of number of atoms, not used in spectroscopy
- T_ref: placeholder for a reference measurement of temperature, not used in spectroscopy
- mu_ref: placeholder for a reference measurement of chemical potential, not used in spectroscopy
- t_spectro: exposure time of the spectroscopy light. not written
From the data in this .csv, a loss spectrum with the mj=+3/2 and mj=-3/2 lines is reconstructed by a plot of the number of atoms in the DFG N versus the applied DDS frequency DDS. Together with these spectra, the probe and ODT powers are used for the ac Stark shift regression.
the folder analysed/Counter contains data from the zero-deadtime counters monitoring different beatnotes (in MHz) relevant to the frequency comb lock. There is a plot_combdata.py
script to plot these counter data for a specific date.
- #logtime is the timestamp for the measurement which is taken every second. (add #system time to get a timestamp expressed in epoch time, python datetime package)
- #counter0 is the beatnote of the downmixed repetition rate of the comb in MHz. for actual repetition rate, close to 250 MHz, calculate
(980000000. + #counter0)/4
. - #counter1 is the measured carrier-envelope offset of the comb
- #counter2 is the beatnote of the spectroscopy laser with the comb, downmixed by the DDS frequency set for scanning the spectroscopy laser frequency
- #counter3 is the beatnote of the ultrastable 1542nm reference laser to the comb. With the virtual beatnote laser lock (see main article) engaged the difference between this value and #counter2 is phase-locked to 10MHz
The folder analysed/Timestamps contains a comparison for every measurement day comparing the internal clock of:
the windows PC (where measurements are performed and the DDS frequency is set for scanning),
the Linux PC (where fitting the DFG TOF traces is performed leading to the data in the ‘Spectro’ folder)
the comb PC, where the beatnotes of he frequency comb are monitored.
These data are used to correct small differences between the data collection time and the frequency comb monitoring time.
- The data to use for the analysis are named by date along the convention:
yyymmdd_1.csv
. any files with attached labels are original copies of these files and are not used for the analysis. - files labeled with _original have a copy in which extra timestamps were added based on interpolation of the time delays, because the original did not contain a recorded timestamp for each runid of the spectgroscopy measurements.
- files labeled with _synthesized have been made by interpolation of the timestamp data from adjacent dates because the timestamp recording did not run that day.
- files with any other labels attached contain incomplete data. A new file was generated for that day.
- the
plot_timestamps.py
script can be used to plot the timestamps for a specific date.
csclock_gps
csclock_gps is a last folder containing raw data.
These files contain a comparison of pulse-per-second (PPS) signals from a GPS antenna and the local Cs clock to which the frequency comb is referenced. This is done for post-correction from the locally-defined time in seconds to the SI second as decimated by the GPS pulse-per-second signal. Data are sorted by date and the monitoring ran over the full measurement campaign.
summaries
summaries contains hand-written excel files organised in the same way as the data in the analysed/Spectro folder. Apart from that photos of the physical labbook are included for several measurement days, which were later translated into summary files. The tables in the summary files, sorted by measurement date, contain the identifying ‘runids’ of all the scans performed, along with parameter values set by the experimentors:
- f_c, f_Zmn, f_step are the frequency scan center, Zeeman splitting2, and step size, respectively in MHz.
- P_ODT and P_probe are the measured beam powers of the dipole trap and spectroscopy laser. P_ODT_end and P_probe_end are the powers of the same beams measured after the scan finished, to keep track of drifts.
- f_1086 and f_1086_end are the optical frequency of the 1086nm fiber laser (measured before and after the scan, respectively) used for making the dipole trap light. the values are monitored on a wavelength meter. the optical frequency of the UV dipole trap can be found by adding this value to the absolute frequency of the 1557nm spectroscopy laser (sum-frequency generation), and multiplying the result by 2 (second-harmonic generation). See the main article for details.
- ‘mode’ sigma implies the scanning over the both of the two spin-stretched Zeeman states mj=+/-3/2
- V_MCP is the applied bias voltage on the micro-channel plate (MCP) detector,
- amp1086 and amp1557 are the currents in Ampère driving the fiber amplifiers for the 1086 and 1557 nm laser respectively, which together make the UV diple trap light.
- any remarks and flags for manual checking of fits are in the last columns of the table.
results and stats
The folder results and stats contains a folder with AnalysisPlots where the plots of individual scans, as
generated by the analysis script, are saved.
Finally, the file AllScanResults_field.csv contains the absolute transition frequency determined in each spectroscopy scan together with all the relevant parameters for systematics analysis. This file has been generated by the analysis script as explained below.
Analysis
In order to reach the graphs of the data represented in the main article, two steps are needed:
- First, each spectroscopy scan in the analysed/Spectro folder is analysed to produce a loss spectrum with loss features on both the m=+3/2 and m=-3/2 transitions. Using the frequency comb counter data in the analysed/Counter folder and correcting these for the time difference between the different PCs as found in the analysed/Timestamps folder, the absolute laser frequency of the spectroscopy laser at every point of the spectroscopy scan is determined. A fit to each spectrum is then performed to determine the absolute optical frequency of the transition, averaging between the mj=+/-3/2 lines to immediatly extract the Zeeman-free transition frequency.
- This analysis is performed by the
Analyze_spectra.py
script. For each scan, the transition frequency together with relevant scan parameters is saved into the AllScanresults.csv file. If a scan or fit doesn’t fulfill certain criteria the scan has a ‘USE’ flag 0 indicating to dismiss this scan in the final analysis. Any remarks from the experimentors are transferred to this file. The value of the absolute transition frequency is saved as a small value transition which has an uncertainty in kHz, which is to be added to a constant value f_offset in kHz to retrieve the absolute optical frequency, in order to preserve number precision. - Second, with all transition frequencies determined, the script
mult_regress_analysis_fullset.py
takes the AllscanResults_field.csv and does the multiple regression analysis that results in the various plots shown in Figure 2 in the main article.
Sharing/Access information
Any additional information about the dataset may be provided upon reasonable request.
Code/Software
Analysis was performed using python2.7 scripts written by the authors. As described above the main scripts and their functions are:
Analyze_spectra.py
: Constructing a loss spectrum as a function of absolute frequency for each measurement and extracting the Zeeman-corrected transition frequency from a fit to this spectrum. The result is saved in AllScanresults.csvmult_regress_analysis_fullset.py
: extrapolates the measured transition frequencies to zero laser power to correct for ac Stark shifts. The resulting transition frequency is used to calculate the 3He-4He squared charge radius difference in the main article.