# ***************************************************************************** # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Module authors: # Davis V. Garrad # Tina Arh # # ***************************************************************************** # Select the parameters that are written under environment in HDF file at every write SetEnvironment(tt, mf, nmr_TSSOP16, nmr_RP100Node_CH1, nmr_RP100Node_CH2, r1, tps)#, ZVLNode) # PPMS: Set field & temperature #maw(tt, 3) # set PPMS temperature (in Kelvin) #maw(mf, 3) # set the starting PPMS field (in Tesla) #nicossleep(20*60) # 20 minutes # ... # Create the pulse sequence pw90 = 2.5 # us amp = 40 # percent tau = 50 # us # generate_pulse(pulse_width, amplitude, delay_time, pulse_cycle) p90 = generate_pulse(pw90, amp, tau, '0 0 2 2 1 1 3 3 0 0 2 2 1 1 3 3') p180_2 = generate_pulse(2*pw90, amp, 0, '1 3 3 1 2 0 0 2 0 2 2 0 3 1 1 3') seq = [ p90, p180_2 ] # Create the list of sequences to scan (for a T2 scan, the delay after the first pulse - tau - increases linearly from tau_min to tau_max) tau_min = 50 # us tau_max = 20000 # us n_points = 20 delay_times = [tau_min + i * (tau_max - tau_min) / (n_points - 1) for i in range(n_points)] # Generates a list of sequences; copies of seq are made, only the zeroth pulse is modified. Each copy is given a 'delay_time' value from delay_times seq_list = generate_sequences(seq, [0], 'delay_time', delay_times) # We now modify the delay after the second pulse to be a fixed time shorter than tau, this means the spin echo will always appear at the same time after the start of acquisition for i in range(len(seq_list)): seq_list[i][1]['delay_time'] = max(seq_list[i][0]['delay_time'] - 20.0, 0.1) # Set some parameters independent of pulse sequence globalparams = { 'acq_phase_cycle': '0 0 2 2 1 1 3 3 2 2 0 0 3 3 1 1', 'acquisition_time': 204.8, # us 'num_acqs': 4096, # "1D scans" in TNMR. Our 16-fold phase cycling means this should be a multiple of 16 for proper averaging 'ringdown_time': 5, # us 'post_acquisition_time': 100, # ms 'obs_freq': 42.09, # MHz 'nucleus': '139La', # For example, 139La. Will be used in a filename! 'comments': 'An example of a T2 scan', 'title': 'T2', # Goes at the beginning of a filename! } update_device_parameters(nmr_daq_scout, globalparams) # Acquire data scan_sequences(nmr_daq_scout, seq_list) # gather the data