-
Notifications
You must be signed in to change notification settings - Fork 1
megan-russell/dfmux_calc
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The goal of this code is to easily estimate readout noise contributions from DfMUX. A PySpice installation is highly recommended for proper current sharing estimation. EXAMPLES SA13 = squid(650,750,3e-12,70e-9) #SA13 Zt, Zdyn, NEI, and Lin wire = wire(30, 40e-12, 1e-6) #wiring harness resistance, capcitance, self inductance bolo = bolo(1.3,0,0.3,5e-12,0.45,0.45) #Bolometer operating resistance, loopgain, stray resistance, psat, Tc, bath temp parasitics = parasitics(stripline, c_gnd, r48) noise = dfmux_noise(SA13, bolo, parasitics, wire) noise.init_freq(np.linspace(1e6,5e6,100)) #evaluating noise between 1 and 5 MHz bias frequencies That produces noise estimates for a dfmux setup while overbiased the noise object has properties such as CS, TF and noise broken down by source In addition to producing noise estimates for a single readout setup, estimates can be produced for a list of SQUIDs with varying transimpedance etc, or varied bolometer resistance. ####################################################################################################################### dfmux_calc.py Five classes are defined in the code- squid, wire, bolometer, parasitic, and dfmux_noise. The squid object stores the transimpedance, dynamic impedance, input inductance and NEI of your SAA. It also has a method which will rescale the SAA to a different array size, eg will take the parameters for a SAA with 3x64 SQUIDs in series and two banks in parallel and change the stored SAA parameters to instead be representative of a SAA with a 2x64 in series with 3 banks in parallel. Lastly it stores information relevant to the noise contribution of a snubber on the input of the SAA, namely its resistance and temperature. The bolometer object stores the operating resistance, stray resistance, achieved loopgain, saturation power, critical temperature, and bath temperature. The parasitic object stores important parasitics that are not the wiring harness or the stray resistance in series with the bolometers. These are the stripline inductance (if any) the parastic capacitance to ground in the focal plane, and the value of R48 on the SQUID controller board. These are all relevant to estimate the current sharing factor of a given setup. The wire object stores the parasitic resistance, capacitance, and inductance of the wiring harness linking the SAA and the 300K stages. It also can store information about resistive or capacitive shunts across the SAA out pairs if they are present. This class has methods which calculate various helpful transfer functions and effective resistances of the harness at given frequencies. The dfmux_noise object stores squid, bolometer, parasitic, and wire objects grouped together, along with a frequency schedule specified when calling the method to calculate the noise. This uses those objects calculates the expected readout noise contribution as well as a number of diagnostic values such as expected current sharing factor, wiring harness transfer function and noise broken down into individual sources. Lastly there is the option to specify a different wiring harness for the nuller lines than the SAA out lines. (One is used for current sharing estimation and the other for SAA transfer function estimation.) This class has methods which calculate the readout noise expected at given frequencies. Measured current sharing can be given as an input to this method. There is also to an option to estimate DAN off noise referred to the input of the SQUID Controller Board. This option is only useful for in lab debugging, not scientific forecasting. ######################################################################################################### sq_size.py and nep_dist.py These are two scripts intended to be run like "python sq_size.py path/to/config.py" that use the above code sq_size.py takes a configuration file (example in stcr/m1_spice_100mK/config.py) and assumes some information about the experiment (readout NEP requirements, detector Psat, and optical loading). From this it estimates the smallest array of SQUIDs like the one specified in the configuration file which are capable of meeting the noise requirements. nep_dist.py takes the same configuration file and instead produces estimated readout NEP histograms for a specific SQUID array size and bolometer resistance. CITATIONS This code is heavily based on the following (which are referred to in comments when relevant) Joshua Montgomery's PhD Thesis - https://escholarship.mcgill.ca/concern/theses/1c18dm29r 2021 paper SPT-3G assessment of DfMUX noise https://arxiv.org/abs/2103.16017 Joshua Montgomery's Masters Thesis - https://www.proquest.com/docview/2514727898?pq-origsite=gscholar&fromopenview=true
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published