IV curves

From MCEWiki
Related topics:

Support for IV curve acquisition and analysis is somewhat under-developed, as we have found that users have preferred to write their own scripts (in contrast to tuning, where users seem happy that we have mostly figured things out already). However, we have ported ACT's IV analysis code from ACT-o-centric IDL to somewhat-more-generic python and produced a system that will, if nothing else, spit out a lot of plots of your IV data.

Acquisition

Currently only TES bias ramping is supported. Heater ramping would not be hard to introduce. The acquisition scripts, as of this writing, take their instructions from experiment.cfg and the command line.

ramp_tes_bias

This script should be called after the squids are set up, with the MCE servo in operation and an appropriate data_mode chosen.

The ramp_tes_bias script is normally invoked using the syntax:

 ramp_tes_bias iv_1212 s

where "iv_1212" represents the filename of the TES ramp, and s represents the readout card from which to acquire the data. The script will write the same TES biases to all elements of the "tes bias" virtual parameter. The readout card specified in the ramp_tes_bias command does not affect what TES lines are manipulated; it only affects what columns are actually read out.

The script does the following (italicized variables are experiment.cfg parameters):

  1. If tes_bias_normal_time is not zero, the detectors are driven normal through the following steps:
    1. Set "tes bias" to bias_normal.
    2. Pause for tes_bias_normal_time seconds.
    3. Set "tes bias" to 0
    4. Pause for tes_bias_normal_time seconds.
    5. Set "tes bias" to bias_normal
    6. Pause for tes_bias_normal_time seconds.
  2. The first bias is set up; "tes bias" is set to ramp_tes_start.
  3. Pause for ramp_tes_initial_pause seconds.
  4. Acquisition is set up, including generation of the runfile.
  5. For each TES bias in the ramp (defined by ramp_tes_start, ramp_tes_step, ramp_tes_count):
    1. Update "tes bias".
    2. Sleep for ramp_tes_period_us microseconds
    3. Read and store a data frame.
  6. If tes_bias_normal_time is not zero, the detectors are driven normal again as described above.
  7. The TES biases are set to tes_bias_final_bias.


Note that one usually runs IV curves from high to low bias, so ramp_tes_step will usually be negative.


Analysis

array.cfg

This configuration file describes basic parameters of the TESes, such as the number of TES lines and their mapping to columns, various inline resistances, TES/SQ1 FB winding ratio, shunt resistances. In principle it could specify almost enough information to calibrate the TES IV curves into physical units (uV, uA, pW). In practice there may be some ACT-specific implicit assumptions that may need to be loosened up.

As with experiment.cfg, if you have multiple configurations, you should create files

 array_<name>.cfg

in your $MAS_CONFIG directory to control each one.

To get basic analysis happening, you will really want to set up a few basic parameters. These are described below

fb_normalize - array of floats, one per column

Depending on how things are wired, a positive change in TES current will induce either a positive or negative change in the SQ1 FB. Store the sign of this coupling in fb_normalize. I.e. it should be all 1's, or all -1's.

n_bias lines - integer

This is the number of separate bias channels that should be analyzed. Usually this will be the same as the number of actual TES bias lines in the system (which will also be the number of elements in the MAS virtual bias parameter "tes bias").

bias_lines - array of integers, one per column

This maps each column to a particular bias line. So each entry should take a value from 0 to n_bias - 1.

R_bias_arr and R_bias_cable - array of floats, one per bias line

I don't know the meaning of these resistances off-hand. But you will probably need to make sure that these arrays each have n_bias elements for the code not to crash!


iv_analysis.py

This script is good at loading IV data. It's sort of good at analyzing it; and it's really somewhat mediocre at plotting it. The main analysis steps are based on Mike Niemack's code for ACT (which was good at doing all three of those things).

After acquiring TES ramp data (to a file called iv_1212, for example), run an analysis like this:

 python $MAS_PYTHON/iv_analysis.py iv_1212

The analysis output and plots will be written to iv_1212_data/ by default.

The program accepts a few option switches, including choosing a location for output, suppressing some output, and specifying an alternate (or difficult to locate) array.cfg file. You can get a full list of options by passing "-h".