pro swe_getmag_ql, trange, filename=filename, toff=toff, sts=sts
@mvn_swe_com
smo = 1
if keyword_set(toff) then toff = double(toff[0]) else toff = 0D
if keyword_set(sts) then sflg = 1 else sflg = 0
if (size(filename,/type) eq 7) then begin
file = filename
nfiles = n_elements(file)
trange = 0
endif else begin
if (size(trange,/type) eq 0) then begin
if (size(mvn_swe_engy,/type) ne 8) then begin
print,"You must load SWEA data or specify a file name or time range."
return
endif
tmin = min(mvn_swe_engy.time, max=tmax)
trange = [tmin,tmax]
endif
tmin = min(time_double(trange), max=tmax)
if keyword_set(sts) then begin
path = 'maven/data/sci/mag/l1_sav/YYYY/MM/mvn_mag_ql_*_YYYYMMDD_v??_r??.sav'
file = mvn_pfp_file_retrieve(path,/daily_names,trange=[tmin,tmax])
endif else begin
file = mvn_pfp_file_retrieve(trange=[tmin,tmax],/l0)
endelse
nfiles = n_elements(file)
endelse
finfo = file_info(file)
indx = where(finfo.exists, nfiles, comp=jndx, ncomp=n)
for j=0,(n-1) do print,"File not found: ",file[jndx[j]]
if (nfiles eq 0) then return
file = file[indx]
t1 = [0D]
B1x = [0.]
B1y = [0.]
B1z = [0.]
t2 = [0D]
B2x = [0.]
B2y = [0.]
B2z = [0.]
for i=0,(nfiles-1) do begin
if (sflg) then begin
domag1 = 1
domag2 = 0
mvn_mag_load_ql, file=file, var=var
get_data, var, data=mag1
t1 = [temporary(t1), mag1.x]
B1x = [temporary(B1x), mag1.y[*,0]]
B1y = [temporary(B1y), mag1.y[*,1]]
B1z = [temporary(B1z), mag1.y[*,2]]
mag1 = 0
pl = 1
endif else begin
domag1 = 1
domag2 = 1
mvn_pfp_l0_file_read, file=file, /mag
get_data,'mvn_mag1_svy_BAVG',data=mag1
t1 = [temporary(t1), mag1.x]
B1x = [temporary(B1x), mag1.y[*,0]]
B1y = [temporary(B1y), mag1.y[*,1]]
B1z = [temporary(B1z), mag1.y[*,2]]
mag1 = 0
get_data,'mvn_mag2_svy_BAVG',data=mag2
t2 = [temporary(t2), mag2.x]
B2x = [temporary(B2x), mag2.y[*,0]]
B2y = [temporary(B2y), mag2.y[*,1]]
B2z = [temporary(B2z), mag2.y[*,2]]
mag2 = 0
pl = 0
endelse
endfor
if (domag1) then begin
if (size(tmin,/type) ne 5) then tmin = min(t1[1:*], max=tmax)
indx = where((t1 ge tmin) and (t1 le tmax), count)
if (count gt 0L) then begin
mag1 = {x:dblarr(count), y:fltarr(count,3)}
mag1.x = temporary(t1[indx])
mag1.y[*,0] = temporary(B1x[indx])
mag1.y[*,1] = temporary(B1y[indx])
mag1.y[*,2] = temporary(B1z[indx])
endif else begin
mag1 = 0
domag1 = 0
endelse
endif
if (domag2) then begin
if (size(tmin,/type) ne 5) then tmin = min(t2[1:*], max=tmax)
indx = where((t2 ge tmin) and (t2 le tmax), count)
if (count gt 0L) then begin
mag2 = {x:dblarr(count), y:fltarr(count,3)}
mag2.x = temporary(t2[indx])
mag2.y[*,0] = temporary(B2x[indx])
mag2.y[*,1] = temporary(B2y[indx])
mag2.y[*,2] = temporary(B2z[indx])
endif else begin
mag2 = 0
domag2 = 0
endelse
endif
if (domag1) then begin
indx = where((mag1.x gt t_mtx[0]) and (mag1.x lt t_mtx[2]), nstow, $
complement=jndx, ncomplement=ndeploy)
if (nstow gt 0L) then begin
print,"Using stowed boom rotation matrix for MAG1"
mag1.y[indx,*] = rotate_mag_to_swe(mag1.y[indx,*], magu=1, /stow, payload=pl)
endif
if (ndeploy gt 0L) then begin
print,"Using deployed boom rotation matrix for MAG1"
mag1.y[jndx,*] = rotate_mag_to_swe(mag1.y[jndx,*], magu=1, payload=pl)
endif
endif
if (domag2) then begin
indx = where((mag2.x gt t_mtx[0]) and (mag2.x lt t_mtx[2]), nstow, $
complement=jndx, ncomplement=ndeploy)
if (nstow gt 0L) then begin
print,"Using stowed boom rotation matrix for MAG2"
mag2.y[indx,*] = rotate_mag_to_swe(mag2.y[indx,*], magu=2, /stow, payload=pl)
endif
if (ndeploy gt 0L) then begin
print,"Using deployed boom rotation matrix for MAG2"
mag2.y[jndx,*] = rotate_mag_to_swe(mag2.y[jndx,*], magu=2, payload=pl)
endif
endif
if (smo) then begin
if (domag1) then begin
dt = median(mag1.x - shift(mag1.x,1))
nsmo = round(1D/dt)
mag1.y = smooth(mag1.y, [nsmo,1])
endif
if (domag2) then begin
dt = median(mag2.x - shift(mag2.x,1))
nsmo = round(1D/dt)
mag2.y = smooth(mag2.y, [nsmo,1])
endif
endif
if (size(swe_mag_struct,/type) ne 8) then mvn_swe_struct
if (domag1) then begin
store_data,'mvn_ql_mag1',data=mag1
swe_mag1 = replicate(swe_mag_struct, n_elements(mag1.x))
swe_mag1.time = mag1.x
swe_mag1.magf = transpose(mag1.y)
swe_mag1.Bamp = sqrt(total(mag1.y * mag1.y, 2))
swe_mag1.Bphi = atan(mag1.y[*,1], mag1.y[*,0])
indx = where(swe_mag1.Bphi lt 0., count)
if (count gt 0L) then swe_mag1[indx].Bphi = swe_mag1[indx].Bphi + (2.*!pi)
swe_mag1.Bthe = asin(mag1.y[*,2]/swe_mag1.Bamp)
swe_mag1.level = 0B
swe_mag1.valid = 1B
endif else swe_mag1 = 0
if (domag2) then begin
store_data,'mvn_ql_mag2',data=mag2
swe_mag2 = replicate(swe_mag_struct, n_elements(mag2.x))
swe_mag2.time = mag2.x
swe_mag2.magf = transpose(mag2.y)
swe_mag2.Bamp = sqrt(total(mag2.y * mag2.y, 2))
swe_mag2.Bphi = atan(mag2.y[*,1], mag2.y[*,0])
indx = where(swe_mag2.Bphi lt 0., count)
if (count gt 0L) then swe_mag2[indx].Bphi = swe_mag2[indx].Bphi + (2.*!pi)
swe_mag2.Bthe = asin(mag2.y[*,2]/swe_mag2.Bamp)
swe_mag2.level = 0B
swe_mag2.valid = 1B
endif else swe_mag2 = 0
if (domag1) then begin
store_data,'Bphi1',data={x:swe_mag1.time - toff, y:swe_mag1.Bphi*!radeg}
store_data,'Bthe1',data={x:swe_mag1.time - toff, y:swe_mag1.Bthe*!radeg}
store_data,'Bamp1',data={x:swe_mag1.time - toff, y:swe_mag1.Bamp}
ylim,'Bphi1',0,360,0
options,'Bphi1','yticks',4
options,'Bphi1','yminor',3
options,'Bphi1','psym',3
ylim,'Bthe1',-90,90,0
options,'Bthe1','yticks',2
options,'Bthe1','yminor',3
options,'Bthe1','psym',3
ylim,'Bamp1',0,0,1
get_data,'swe_mag_svy',data=foo
if (size(foo,/type) eq 8) then begin
store_data,'Sphi',data={x:foo.x, y:foo.y[*,0]}
store_data,'Sthe',data={x:foo.x, y:foo.y[*,1]-90.}
store_data,'PAD_Phi',data=['Bphi1','Sphi']
store_data,'PAD_The',data=['Bthe1','Sthe']
ylim,'PAD_Phi',0,360,0
options,'PAD_Phi','ytitle','PAD Phi'
options,'PAD_Phi','yticks',4
options,'PAD_Phi','yminor',3
ylim,'PAD_The',-90,90,0
options,'PAD_The','ytitle','PAD The'
options,'PAD_The','yticks',2
options,'PAD_The','yminor',3
options,'Sphi','color',2
options,'Sthe','color',2
options,'Sphi','psym',3
options,'Sthe','psym',3
endif
endif
if (domag2) then begin
store_data,'Bphi2',data={x:swe_mag2.time - toff, y:swe_mag2.Bphi*!radeg}
store_data,'Bthe2',data={x:swe_mag2.time - toff, y:swe_mag2.Bthe*!radeg}
store_data,'Bamp2',data={x:swe_mag2.time - toff, y:swe_mag2.Bamp}
ylim,'Bphi2',0,360,0
options,'Bphi2','yticks',4
options,'Bphi2','yminor',3
options,'Bphi2','psym',3
ylim,'Bthe2',-90,90,0
options,'Bthe2','yticks',2
options,'Bthe2','yminor',3
options,'Bthe2','psym',3
ylim,'Bamp2',0,0,1
if (domag1) then begin
store_data,'Bamp',data=['Bamp1','Bamp2']
options,'Bamp2','color',6
store_data,'Bphi',data=['Bphi1','Bphi2']
options,'Bphi2','color',6
ylim,'Bphi',0,360,0
options,'Bphi','yticks',4
options,'Bphi','yminor',3
store_data,'Bthe',data=['Bthe1','Bthe2']
options,'Bthe2','color',6
ylim,'Bthe',-90,90,0
options,'Bthe','yticks',2
options,'Bthe','yminor',3
endif
endif
return
end