- 7/1: CMB Polarization Conference
- 7/6 : At Caltech
- 7/7
- 7/8
- 7/9
- 7/11
- 7/16
- 7/17
- 7/21
- 7/23
- 7/24
- 7/27
- 7/28
- 7/30
- 7/31
7/1: CMB Polarization Conference
See meetings page: CMBPol meeting linkfile upload problems:
Gear, Walter. Clover. Too big: 61.37 MB
Kogut, Al. PIPER. ??
Pearson, Timothy. C-Bass. Too big: 51 MB
7/6 : At Caltech
Adding new mce commands
Added mce_start_acq command.
Syntax:
mce_start_acq [# frames], [readout cards], [data rate], [# rows]
example
bicepViewer> mce_start_acq 1000, 1, 100, 33
7/7
Fridge Commands
look at specificscript.c
command sc_fridge_cmd
similar to datasystem_cmd
want channels from 1-8
looking at setbias_cmd
type = dc
freq: set once for all NTD's
voltage:
percent:
value:
keep these 3
device: number or list of numbers from 1 to 8
7/8
my laptop is broken :(7/9
Run MCE from gcp
MCE bash commands:
% reads all readout cards
mce_cmd -x rb rca data_mode
% rb = read block, rca = all readout cards, data mode = obvious
%%%%%%% Take data:
mce_fast_acq 25000 s 38
% s means all readout cards, use 1 for rc1, 2 for rc2
% defaults: data rate = 38, new_rows_rep=33 % num rows reported
% 25000 frames = 1 min
MCE IDL commands:
auto_tune_setup
% Converting data rate to frame rate:
% 50 MHz/ (num_rows*100*data_rate), 100=dwell_time
1. Freq sweep @ 14 amp ptp
2. Amp sweep @ 0.1 Hz
3. DC offset sweep, 1 amp ptp, 0.1 Hz, -6V to +6V
mce reset if it hangs:
mce_cmd -x mce_reset
dsp_reset
fakestop
empty
bicep@bicep32:/usr/mce/mce_script/idl_pro$
auto_setup_squids.pro
mce_fast_pipe -> continuous data taking?
running
gcp is already running on bicep31.
compile in emacs. Not sure if I needed to compile with GCP32=1?
Run mce from bicep32 with basic start.
Run bicepViewer on bicep32.
bicepViewer> bicepViewer> mce_cmd -x rb tes bias Masd/CommandMsg::packMceGenericMsg(mce_cmd -x rb tes bias) masd::CommandTask::runGenericCommand() This is mce_cmd version MAS/slotpc/363 Line 0 : ok : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Processed 0 lines, exiting. bicepViewer> mce_cmd -x rb rca data_mode Masd/CommandMsg::packMceGenericMsg(mce_cmd -x rb rca data_mode) masd::CommandTask::runGenericCommand() This is mce_cmd version MAS/slotpc/363 Line 0 : ok : 0 0 Processed 0 lines, exiting. bicepViewer> mce_cmd -x rb rca Masd/CommandMsg::packMceGenericMsg(mce_cmd -x rb rca) masd::CommandTask::runGenericCommand() This is mce_cmd version MAS/slotpc/363 Line 0 : error : rca expects at least 1 arguments Processed 0 lines, exiting. bicepViewer> mceGeneric "mce_cmd -x rb sa fb" Masd/CommandMsg::packMceGenericMsg(mce_cmd -x rb sa fb) masd::CommandTask::runGenericCommand() This is mce_cmd version MAS/slotpc/363 Line 0 : ok : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Processed 0 lines, exiting.
Try taking data:
bicepViewer> mce_start_acq 100, 1, 100, 33 MceNetCmdForwarder::forwardNetCmd( NET_MCE_START_ACQ_CMD ) MasdNetCmdForwarder: Got a MCE_START_ACQ command Masd/CommandMsg::packMceStartAcqMsg() CommandTask: case MCE_START_ACQ masd::CommandTask::runStartAcqCommand() mce_fast_acq 100 1 100 33
I'm not sure it did anything.
It did not do anything, because the command had the popen part commented out!
Uncomment this and try again...
mce_start_acq 20000, 1, 100, 33
Nothing...
I need a the command to look like:
./mce_fast_pipe 1000 s
./mce_fast_pipe 1000 1 100 33
works from the command line
this works also:
/home/bicep/./mce_fast_pipe 1000 1 100 33
Walts commands to find out what was wrong:
sudo rmmod mce_dsp
| ps aux | grep mce |
mce_cmd -x mce_reset
mce_cmd -x dsp_reset
mce_cmd -x fakestop
mce_cmd -x empty
mce_status
/home/bicep/mce_fast_pipe 500 1 100 33
The important error:
/usr/mce/mce_script//script/mce_run: line 99: echo: write error: Broken pipe
command line
Left 3 columns empty parsing runfile line for rc.
Error parsing runfile line, but will keep trying.
No register associated with runfile entry 'data_filename' in board 'frameacq.'
Ignoring it.
system()
Left 3 columns empty parsing runfile line for rc.
Error parsing runfile line, but will keep trying.
No register associated with runfile entry 'data_filename' in board 'frameacq.'
Ignoring it.
FRAME_BASENAME=/data/cryo/current_data//../mas_data_pipe
popen()
Left 3 columns empty parsing runfile line for rc.
Error parsing runfile line, but will keep trying.
No register associated with runfile entry 'data_filename' in board 'frameacq.'
Ignoring it.
popen() without collecting output
Left 3 columns empty parsing runfile line for rc.
Error parsing runfile line, but will keep trying.
No register associated with runfile entry 'data_filename' in board 'frameacq.'
Ignoring it.
/usr/mce/mce_script//script/mce_run: line 99: echo: write error: Broken pipe
Mystery "solved:"
adding the bash command "at" seems to fix the problem.
7/11
Walt's email: Data Acquisition Notes
Hi guys,
This e-mail is a summary of where the data acquisition software and hardware
stand after this week's development There are a few points of general
interest to everyone who will be taking data, and also some for Chin Lin,
Grant, and Doug, who will be working on monitoring and the fridge cycle
program.
1. Driving MCE - we have a few new commands that can be used in bicepViewer or
in schedule files, thanks to Kyle's efforts:
mceGeneric [...] - runs commands on the MCE computer. For
instance, mceGeneric mce_cmd -x mce_reset
You can use this basically in the same
way as when controlling MCE from the
command line.
mce_start_acq num_frames data_rate n_rows [rc] - start acquisition.
We still need a command to cleanly *stop* the acquisition, and we will add
more commands (and modify these) over the next run.
2. Controlling the sync box - I have added monitoring and control of the
box settings. The new registers are antenna0.syncBox.enable,
.data_rate, .row_len, and .num_rows. You can set them with the new
syncBox command, like this:
syncBox enable=on
syncBox data_rate=150
etc. Important: when taking data, the sync box settings should be
consistent with the MCE settings. They should have the same data_rate
and num_rows, and row_len on the sync box should be exactly half of
the row_len on the MCE (usually row_len=50 on sync box and
row_len=100 on MCE). data_rate=150 corresponds to 100 Hz acquisition.
This is our standard mode for the moment. In the future, GCP will
automatically make sure that the MCE and sync box settings match, but
for now you should check this when running mce_start_acq.
3. Frame synchronization - I have put in place a workaround for the "Y1859"
bug, which was causing bicepViewer to frequently display points in the year
1859. The underlying hardware problem remains, and Viktor, Steve Benton,
and I will try to fix it over the next month or so. In the meantime, your
plots in bicepViewer will look much nicer.
4. Monitoring - we have simple monitoring plots online at
http://bicep0.caltech.edu/~spuder/control_software/monitor/monitor.html
Grant, Chin Lin, and Doug can work on some more refined plots for
web display.
5. Thermometry - GCP is ready to read out all of the needed channels through
the BLAST bus, and convert to volts. We don't yet have temperature
calibrations. We have not yet tested this with the backpack on the dewar.
Will try this early next week. The BLAST bus readout has been heavily
modified: it now runs in its own thread, at the BLAST bus clock rate,
independent of GCP's sample rate. It is also more robust, so that
malformed readings are automatically thrown out. The voltages are
reported in some of the registers in antenna0.hk.
6. Heater control - We have tested that GCP can correctly set voltages on the
heater channels of the housekeeping backpack. There are commands to
control these from bicepViewer or schedule files. The voltages are
reported in some of the registers in antenna0.hk.
7. Thermal control - I have made a thermal control thread in GCP that can be
used to servo heaters in order to keep a constant temperature. It runs at
a constant 100 Hz, independent of everything else in the world. It can
control multiple heaters, so we will be able to servo on the "clean side"
and the "dirty side" simultaneously. I have also added some output
registers that let you look at what the thermal control system is doing.
You can find them in antenna0.tc. The four sets of P,I,D,S correspond to
the four temperature control modules with four heaters that can be servoed
simultaneously.
8. Fridge cycle - Not started yet, but I know how to do it now. Doug,
Chin Lin, and Grant can help. We will write a stand-alone fridge cycle
controller that will get data from and send commands to GCP.
9. Real-time analysis (teaser) - In planning
- Walt
7/16
Things to do
BICEP2
- add "at" to mceGeneric cmd
- add a command or fn that checks if the mce is doing anything, and prevents
us from making commands that the mce doesn't like.
- mce shutdown
- add logbook posting about how to add commands
- Check that MCE and sync box settings match.
- continuous running?
- thermometry control?
- real-time analysis?
KECK
- 50k lifting lid -> check drawing for center hole
- 4k lifting lid
- 50k inserting plate and rod
7/17
Solidworks model for 50k loading jig
Part Numbers:
01-021: 50k_lifting_lid
01-022: 4k_lifting_lid
01-023: 300k_loading_plate
01-024: 300k_loading_bar
01-025: 50k_loading_plate
7/21
reconfigure keyboard to devorak
http://www.kaufmann.no/roland/dvorak/linux.html
$ wget http://www.kaufmann.no/downloads/linux/kbddvp-1_2_1-src-linux.tgz
$ DVP_DIR=$(mktemp -t -d kbddvp.XXXXXX)
Illegal variable name.
$ mkdir kbddvp
$ cd kvddvp
$ gzip -d kbddvp-1_2_1-src-linux.tgz
$ tar -xvf kbddvp-1_2_1-src-linux.tar
$ chmod a+x dvp.p
$ chmod a+x dvp.postinst.sh
$ su
# ./dvp.postinst.sh && ./dvp.postinst.sh
# exit
$ system-config-keyboard
Nope...
$ setxkbmap -layout us -variant dvp
Error loading new keyboard description
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "xfree86+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc(pc105)+us" };
xkb_geometry { include "pc(pc105)" };
};
edit /etc/X11/xorg.conf
$ setxkbmap -layout us -variant dvp -option compose:102 -option keypad:atm -option numpad:shift3 -option kpdl:semi
tom says:
setxkbmap -help
tcaswell@ivanova:~$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(dvp)+us:2+inet(evdev)+level3(rwin_switch)+ctrl(swapcaps)+compose(menu)" };
xkb_geometry { include "pc(pc104)" };
};
are what my computer is set to
Envoyé mardi à 14:06
setxkbmap -layout us -variant dvp
spt data cuts
refer to 6/30 Notebook entry.
goal 1: make plot of response as fn of bolometers
from spt_analysis/fits/
type:
> data=read_spt_fits('/data/sptdat/fits/calibrator/calibrator_20090623_191359.fits')
> plot,data.observation.bolo_cal_response,/ps
Make a hard-copy plot:
IDL> set_plot, 'PS' IDL> device, filename='bolo_response_20090721.ps' IDL> plot, data.observation.bolo_cal_response, xtitle="bolometers", ytitle="response", /ps IDL> device, /close IDL> set_plot,'X'
looking at spt_analysis/cuts/get_cuts.pro
First try running:
IDL> get_cuts, data
IDL> print, data.obserfation.bolo_flags
error:
% Program caused arithmetic error: Floating divide by 0
can't get even a print statement to work. -> need to compile with .compile
$idl
> data=read_spt_fits('/data/sptdat/fits/calibrator/calibrator_20090623_191359.fits')
>
get_cuts
calls the following sub-routines:
- get_lowlevel_cuts
- get_response_cuts
- get_outlier_cuts
- get_line_cuts
- get_calibration_failed_cuts
- get_cal_wt_outlier_cuts
get_lowlevel_cuts
call read_cuts_config:
read_cuts_config.pro: later
args
- customfile, starttime, endtime, configfile, default, string
- call find_valid_config -> skip for now.
Figure out where we'll start appending new cuts, and grab the cut flags that we'll be modifying
- cut_flag_name_to_index()
Cuts:
- bolo_sqc_switch_enable >= 1
all are 1 or 0
- bolo_sqc_rfb_switch in [1, 3)
most are 1, some are 0, a few are ~255
- bolo_sqc_rfb_switch > 1
- bolo_squid_ibias >= bolo_squid_ibias_min
values fall in two ranges: (6.2, 7) and (5.5, 6)
cut value is 0.5
- bolo_dds_freq >= bolo_dds_freq_min=30,000
evenly scattered between (3.5e5, 1e6)
cut value is 3e5
- bolo_car_digpot >= bolo_car_digpot_min=1
all above 30
line at 170
interesting curve shape
cut value at 1
- bolo_dds_amp_i >= bolo_dds_amp_i_min=0.1
Q: are the detectors being cut the same for all cuts?
divide by zero error is in get_cal_wt_outlier_cuts
get_response_cuts
fills bolo_flag variable with a number representing what cuts the channel failed
Questions:
- How do I look inside a struct?
- Difference between "fn, arg" and "fn(arg)" ?
- "which" command?
- when do I need to compile
- quick hardcopy? to non-local directory?
spt:
- what is "rail"?, i.e. get_lowlevel_cuts L139
7/23
Re-do bars for stand
barUpper1 - 21.5"
barLower1 - 18.375"
Continue on spt cuts
Make plots of cuts
> data=read_spt_fits('/data/sptdat/fits/calibrator/calibrator_20090623_191359.fits')
IDL> set_plot, 'PS'
IDL> device, filename='bolo_dds_freq.ps'
IDL> plot, data.observation.bolo_dds_freq, /ps
IDL> device, filename='bolo_car_digpot.ps'
IDL> plot, data.observation.bolo_car_digpot, /ps
IDL> device, filename='bolo_dds_amp_i.ps'
IDL> plot, data.observation.bolo_dds_amp_i, /ps
IDL> device, /close
bolo_sqc_rfb_switch == 1

bolo_squid_ibias >= 1/2

bolo_dds_freq, >= 30,000

bolo_car_digpot, >= 1

bolo_dds_amp 0.1

7/24
get_response_cuts.pro
cuts applied:
- calibrator S/N
cal_sn_min = 10
- elnod response and goodness of fit
fills the data.rbservation.bolo_flag variable
SN cut
cal_sn_min=config.cal_sn_min
bolo_elnod_response=data.observation.bolo_elnod_response
bolo_elnod_gof=data.observation.bolo_elnod_gof
obs_tags=tag_names(data.observation)
bolo_cal_response=data.observation.bolo_cal_response
bolo_psd_9to11=data.observation.bolo_psd_9to11
two options,
- AUX_BOLO_PSD_9TO11 in obs_tags
- data.observation.aux_bolo_psd_9to11 has non-zero element
; SN cut
whcal=where(bolo_cal_response/(bolo_psd_9to11/sqrt(2.)) gt cal_sn_min
calibrator_flags[whnocal] = 1

elnod cut
Not being run. ??
7/27
data=read_spt_fits('/data/sptdat/fits/calibrator/calibrator_20090623_191359.fits')
get_outlier_cuts
arguments:
elnod_data, cal_data, elnod_sig_thresh, cal_sig_thresh, config
elnod_sig_thresh = config.elnod_sig_thresh
cal_sig_thresh = config.cal_sig_thresh
old_style=0
bolo_elnod_response=data.observation.bolo_elnod_response
bolo_elnod_gof=data.observation.bolo_elnod_gof
bolo_cal_response=data.observation.bolo_cal_response
bolo_psd_9to11=data.observation.bolo_psd_9to11
;-------------------------------------------------------------------
; Cut out channels that are more than 3 sigma away from some
; iteratively-determined mean calibrator response for live channels
; on that wedge
;-------------------------------------------------------------------
wh_these = ;good bolometers
wh_not_outlier= where_not_outlier(bolo_cal_response[wh_these], nsigma=3,wh_outlier=wh_outlier)
frac_cut = 0.05
maxiter = 15
where_not_outlier()
count = 0
keep_going = 1
while keep_going eq 1 do begin
thisdata = data[ind]
this_stddev = stddev(thisdata,/nan)
; find the non-outliers of this subset of data
testdata = abs(thisdata-median(thisdata))
wh_ok = where(testdata lt nsigma*this_stddev, nok)
; calculate the standard deviation of the new subset of data
new_stddev = stddev(thisdata[wh_ok],/nan)
; if we are not trying to hit a target, check to see if
; this stdev is close enough to the previous stdev, so
; that the iteration can stop
if (this_stddev-new_stddev)/(this_stddev) lt frac_cut then keep_going = 0
endelse
ind = ind[wh_ok]
count=count+1
cuts after get_lowlevel_cuts, get_response_cuts
why isn't the hard-copy working?
Answer:
> plot, x
> write_png, 'test.png'
This is a plot of bolo response in 'response units'.
Here, red crosses are the points that are cut by the outlier cut,
and blue are the bolometers that are being kept.

Answers
- can the Kludge comment be deleted? -> probably
- what is bolo_elnod_gof -> "goodness of fit" to weather data
- what is the flag 9to11 -> 9 to 11 hz
http://spt.uchicago.edu/intweb/analysis/doc/data_guide.html
get_line_cuts
bolo_n_lines=data.observation.bolo_n_lines
bolo_line_widths=data.observation.bolo_line_widths
bolo_line_centers=data.observation.bolo_line_centers
CUTS
1) cut lines which have too many lines
39
2) line width
1
3) line bandwidth
2
4) line bandwidth check range
[0, 25]
7/28
Add stop mce cmd
7/16 - things to do
NetDataSystemCmd
NetMask mces
To Do
- logbook posting on adding commands
- save idl plots -> done
- LakeShore driver
Lakeshore readout
See Projects -> lakeShore7/30
To Do
- mce status command
- LakeShore stuff
email from Ryan
ra3h30dec-60: /data/sptdat/run1_2009/ra3h30dec-60/fits/ ra21hdec-60 (temporary spot?): /data11/sptdat/run1_2009/ra21hdec-60/fits/ myspawn='find /data/sptdat/run1_2009/ra3h30dec-60/fits/ -name "field_scan_stub_*" | sort' spawn,myspawn,list nlist=n_elements(list) for i=0,nlist-1 do begin data=read_spt_fits(list[i]) endfor ; if you want to cut on dates before reading in the full list mjd=extract_date_from_filename(list,/mjd) ; mjd_to_date_string and date_string_to_mjd are both useful. ; decent IDL help: dfanning.com