DOI: 10.5061/dryad.4j0zpc8m3
title: Alpha and helion particle charge radius difference by spectroscopy of quantum-degenerate helium

description: 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.
description: # Dataset: Alpha and helion particle charge radius difference by
 spectroscopy of quantum-degenerate helium [Access this dataset on
 Dryad](https://doi.org/10.5061/dryad.4j0zpc8m3) This .zip folder contains
 the data and analysis of the 2021/2022 measurement campaign of
 <sup>3</sup>He spectroscopy in a magic wavelength optical
 dipole trap. Contains data of atom loss spectra of degenerate Fermi gases
 of metastable <sup>3</sup>He 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<sup>-3</sup>), 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.csv* *
 `mult_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
 <sup>3</sup>He-<sup>4</sup>He squared charge
 radius difference in the main article.