next up previous
Next: Tidbinbilla Up: Worked examples Previous: Mopra

Parkes Polarimetry

The following example is processing of some Parkes polarmetric observations of OH masers at 1.6 GHz. Because digital filters where used in the backend, the baselines are stable enough not to require a quotient spectra. The 4 MHz bandwidth is wide enough to observe both the 1665 and 1667 MHz OH maser transitions. Each source was observed once for about 10 minutes. Tsys information was not written to the rpfits file (a nominal 25K values was used), so the amplitudes need to be adjusted based on a separate log file. A simple user function is used to simplify this, contained in a file called mypol.py:

def xyscale(data,xtsys=1.0,ytsys=1.0,nomtsys=25.0) :

 data.set_cursor(pol=0)
 data.scale(xtsys/nomtsys,allaxes=False)

 data.set_cursor(pol=1)
 data.scale(ytsys/nomtsys,allaxes=False)

 data.set_cursor(pol=2)
 data.scale((xtsys+ytsys)/(2*nomtsys),allaxes=False)

 data.set_cursor(pol=3)
 data.scale((xtsys+ytsys)/(2*nomtsys),allaxes=False)

The typical asap session would be

  
# Remind ourself the name of the rpfits files
ls 

# Load data from an rpfits file
d1665 = scantable('2005-10-27_0154-P484.rpf')

# Check what we have just loaded
d1665.summary

# View the data in velocity
d1665.set_unit('km/s')
d1665.set_freqframe('LSRK')

# Correct for the known phase offset in the crosspol data
d1665.rotate_xyphase(-4)

# Create a copy of the data and set the rest frequency to the 1667 MHz 
# transition
d1667 = d1665.copy()
d1667.set_restfreqs(lines=['OH1667'])
d1667.summary

# Copy out the scan we wish to process
g351_5 = d1665.get_scan('351p160')
g351_7 = d1667.get_scan('351p160')

# Plot the data
plotter.plot(g351_5,g351_7) # Only shows one panel

# Tell the plotter to stack polarisation and panel scans
plotter.set_mode('p','s')

# Correct for the Tsys using our predefined function
execfile('mypol.py') # Read in the function
xyscale(g351_5,23.2,22.7) # Execute it on the data
xyscale(g351_7,23.2,22.7)

# Only plot the velocity range of interest
plotter.set_range(-30,10)

# Baseline the data
msk = g351_5.create_mask([-20,-15],[0,5])
g351_5.poly_baseline(msk,1)
msk = g351_7.create_mask([-20,-15],[0,5])
g351_7.poly_baseline(msk,1)

# Update the plot with the baselined data
plotter.plot()

# Look at the various polarisation products
plotter.set_cursor(pol='RR LL')
plotter.set_cursor(pol='I Plinear')
plotter.set_cursor(pol='I Q U V')

# Save the plot as postscript
plotter.save('g361_stokes.ps')

# Save the process spectra
g351_5.save('junk5.asap')
g351_7.save('junk7.asap')



Malte Marquarding 2005-11-30