Number of Subscans
Due to a limitation in the maximum number of files opened in cfitsio (300 in the APECS-1.0), the maximum number of subscan readable in Boa is 99.
Use continuous_data 'on' to observe as much as you want with one single subscan
However, if you observe moving objects, their coordinates are only computed once per subscan
Observing Tips
In the following, you can start the specified macro.apecs by typing run_macro('macro.apecs') at the APECS prompt, or when function are defined execfile('macro.apecs') . A set of useful abbreviations have been defined in the abb.apecs macro.
Contents
How to setup your observing session
The setup-laboca.apecs macro has to be launch at the beginning of each observing session :
1 #SET PROJECT ID
2 project_id('your ESO project ID')
3
4 #SET FRONTEND - BACKEND
5 frontends 'LABOCA'
6 laboca.backends 'abba'
7
8 #SELECT USED CHANNELS AND REFERENCE PIXEL
9 laboca.feeds select='all',ref='default'
10
11 #SET FRONTEND GAIN
12 laboca gain=4
13
14 #SET BACKEND GAIN AND DUMPTIME (200Hz)
15 abba dumptime=0.005, gain=10
16
17
18 #SWITCH OFF USE OF REFERENCE
19 use_ref 'off'
20
21 #SWITCH CONTINUUS DATA TAKING OFF
22 continuous_data 'off'
23
24 #SET DEFAULT CATLOG FOR 2nd CALIBRATORS AND POINTING SOURCES:
25 sourcecats(['POINT.cat','Your catalog.cat'])
Observe with a few feeds only
Once you have determined which feeds are dead, noisy or non responsive, you can select only a set of good bolometers to observe with. For example, you can setup a good_chan.apecs file as :
This following is for illustration only
1 center_chan = 318
2
3 sky_chan= [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4 16, 17, 19, 20, 21, 23, 25, 26, 27, 28, 31, 36, 38, 39,
5 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 54, 55, 56, 57,
6 58, 61, 62, 63, 65, 67, 68, 70, 71, 72, 73, 75, 76, 77,
7 78, 79, 80, 81, 82, 83, 84, 85, 86, 89, 90, 91, 92, 93,
8 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
9 108, 109, 110, 111, 112, 113, 114, 115, 116, 119, 121, 122, 123, 126,
10 127, 128, 129, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 143,
11 147, 148, 149, 150, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163,
12 164, 165, 166, 167, 168, 169, 175, 176, 177, 178, 179, 180, 181, 183,
13 184, 185, 186, 187, 191, 192, 194, 196, 198, 202, 203, 205, 207, 209,
14 212, 215, 216, 217, 218, 219, 220, 221, 223, 225, 227, 228, 233, 234,
15 236, 237, 238, 239, 240, 244, 245, 246, 249, 253, 255, 256, 257, 258,
16 259, 262, 263, 264, 265, 267, 269, 270, 271, 274, 278, 279, 281, 282,
17 283, 286, 288, 290, 291, 292, 296, 298, 303, 310, 313, 314, 316, 317,
18 320]
19
20 dark_chan= [29, 33, 35, 40, 64, 66, 124, 135, 142, 144, 146, 151, 158, 189,
21 193, 195, 200, 224, 226, 284, 295, 302, 304, 306, 311]
22
23
24 good_chan = []
25 good_chan.extend(sky_chan)
26 good_chan.extend(dark_chan)
27
28 beam_chan = []
29 beam_chan.extend(sky_chan)
30 beam_chan.append(center_chan)
31
32 small_chan = [1,9,10,11,17,19,110,121]
33 small_chan.extend(dark_chan)
and changing the setup-laboca.apecs as
you will only get data for a subsample of the array, lowering the used disk space and the time needed to read them. If you want to make tests on the array, you can also use a very small subset of the array as laboca.feeds select=small_chan,ref='default'
Selecting the reference pixel
You can select which feeds will be the reference pixel for your observation. To simplify the process you can define functions like :
This following is for illustration only
to select, as reference pixel, the feed 110 or the default, respectively.
Pointing
Crosses
Regular cross pointing scans are possible, but produce highly undersampled coverage on the sky. We recommand to use spiral strokes for pointing, producing fully sampled coverage on the sky for the complete field of view of the array.
Spirals
It is possible to use spiral strokes to make pointings with Laboca. A function pspiral(time=20.0) has been setup as follow in the abb.apecs file:
be sure to select a valid reference channel, although not critical
1 def pspiral(time=20.0):
2 use_spiral ('on')
3
4 # Define the spiral stroke : 200 Hz sampling
5 spiral_setup(r0=0, r_dot=3, phi_dot=120, dumptime=0.005, \
6 r0_unit='arcsec', r_dot_unit='arcsec/s', \
7 phi_dot_unit='deg/s',dumptime_unit='s')
8
9 # point scan in raster mode, 1 spiral, 20s
10 point(time=time,mode='ras',points=1)
11 use_spiral ('off')
Focus
Focus can be made with standard APECS focus() command
be sure to select a valid reference channel
The focus scans will be reduced by the onlineCalibrator. The correction offsets can be applied by using the fcorr() command :
1 fcorr('f')
Skydip
In order to make a opacity measurement, a bolotip() function has been defined in the abb.apecs as follow :
be sure to select a valid reference channel
1 def bolotip(poi=6):
2 # Being too cautious
3 reference(x=0.0,y=0.0,system='ho')
4 use_spiral ('off')
5 continuous_data ('off')
6 use_ref ('off')
7
8 # move the telescope to zenith to avoid bolometer drifts
9 source('BOLOTIP-EL88',x=(200.0,'deg'),y=(88.0,'deg'),system='ho')
10
11 # Setting default gain for bolotips and move to the source
12 abba (dumptime=0.005,gain=1)
13 laboca (gain=1)
14 go()
15
16 # Do an sky-hot measurement and the skydip itself
17 calibrate(mode='hot',time=10)
18 skydip(am_stop=3.0,points=poi,time=10.0, mode='ras')
19
20 # reset the gain to some default
21 abba (gain=10)
22 laboca (gain=4)
please use this macro instead of the skydip() APECS command since, the latter does not take the reference needed to reduce the skydip.
Map
Spirals
OTF
BeamMap
In order to derive the array parameter, a function beammap() has been setup for beammaps :
Do not use this on moving objects or planets, otherwise switch the continuous_data 'off'
These functions cover completely the array if the center channel is set as reference
Alternatively you can slipt the beammap into 3 smallers maps to ease their reduction
1 def beammapsplit():
2 use_spiral ('off')
3 continuous_data ('on')
4
5 # First centered map
6 offset(0,0,system='ho')
7 otf(xlen=780,xstep=0.6,\
8 ylen=300,ystep=6,\
9 time=0.005,direction='x',zigzag=1,\
10 unit='arcsec',system='ho')
11
12 # Second map for the lower part of the array
13 offset(0,-240,system='ho')
14 otf(xlen=780,xstep=0.6,\
15 ylen=300,ystep=6,\
16 time=0.005,direction='x',zigzag=1,\
17 unit='arcsec',system='ho')
18
19 # Third map for the upper part of the array
20 offset(0,+240,system='ho')
21 otf(xlen=780,xstep=0.6,\
22 ylen=300,ystep=6,\
23 time=0.005,direction='x',zigzag=1,\
24 unit='arcsec',system='ho')
25
26 # Do not forget to set back the offsets to default
27 offset(0,0,system='ho')