PRO load_data_ephem,yyyydddb,hhb,yyyyddde,hhe,veph_out,qeph_out,valid, $
veph_name = veph_name, qeph_name = qeph_name, $
t97_ramp =t97_ramp, $
verbose=verbose
ptrDataFileList = make_file_list(yyyydddb, hhb, yyyyddde, hhe, level='ephem', ephem_type=veph_name)
if (ptr_valid(ptrDataFileList) eq 0) then begin
n_vephDataFile=0
if keyword_set(verbose) then print,"# Warning ! No VEPH data file selected..."
endif else begin
VephDataFileList=*ptrDataFileList
n_vephDataFile = n_elements(vephDataFileList)
ptr_free,ptrDataFileList
endelse
ptrDataFileList = make_file_list(yyyydddb, hhb, yyyyddde, hhe, level='ephem', ephem_type=qeph_name)
if (ptr_valid(ptrDataFileList) eq 0) then begin
n_qephDataFile=0
if keyword_set(verbose) then print,"# Warning ! No QEPH data file selected..."
endif else begin
QephDataFileList=*ptrDataFileList
n_qephDataFile = n_elements(qephDataFileList)
ptr_free,ptrDataFileList
endelse
veph = {data_veph}
qeph = {data_qeph}
neph = 0
ii0 = 0l
for i=0l,n_vephDataFile-1l do begin
print,'-------------------------------------------------------------------'
print,'Reading VEPH file: '+VephDataFileList(i)
read_data_binary,VephDataFileList(i),vepht,level='veph',validv
print,'Reading QEPH file: '+QephDataFileList(i)
read_data_binary,QephDataFileList(i),qepht,level='qeph',validq
if validv eq 0 or validq eq 0 then begin
message,/info,"No ephemeris data. Skipping interval..."
nepht = 0
endif else begin
print,'merging...'
nvepht = n_elements(vepht)
nqepht = n_elements(qepht)
nepht = nvepht
case 1b of
nvepht gt nqepht : begin
qepht1 = replicate({data_qeph},nvepht)
qepht1.time = vepht.time
qepht1.q(0) = interpol(qepht.q(0),qepht.time,vepht.time)
qepht1.q(1) = interpol(qepht.q(1),qepht.time,vepht.time)
qepht1.q(2) = interpol(qepht.q(2),qepht.time,vepht.time)
qepht1.q(3) = interpol(qepht.q(3),qepht.time,vepht.time)
qepht = temporary(qepht1)
end
nvepht lt nqepht : begin
vepht1 = replicate({data_veph},nqepht)
vepht1.time = qepht.time
vepht1.r(0) = interpol(vepht.r(0),vepht.time,qepht.time)
vepht1.r(1) = interpol(vepht.r(1),vepht.time,qepht.time)
vepht1.r(2) = interpol(vepht.r(2),vepht.time,qepht.time)
vepht = temporary(vepht1)
nepht = nqepht
end
else :
endcase
veph = [temporary(veph),temporary(vepht)]
qeph = [temporary(qeph),temporary(qepht)]
endelse
neph += nepht
endfor
if neph ne 0 then begin
veph = veph(1:*)
qeph = qeph(1:*)
if keyword_set(t97_ramp) then begin
nn = n_elements(t97_ramp)
rr = sqrt(total(veph.r^2,1))
rr1 = interpol(rr,veph.time,t97_ramp)
veph1 = replicate({data_veph},nn)
veph1.time = t97_ramp
veph1.r(0) = interpol(veph.r(0)/rr,veph.time,t97_ramp)
veph1.r(1) = interpol(veph.r(1)/rr,veph.time,t97_ramp)
veph1.r(2) = interpol(veph.r(2)/rr,veph.time,t97_ramp)
rr1n = sqrt(total(veph1.r^2,1))
veph1.r(0) = veph1.r(0)/rr1n*rr1
veph1.r(1) = veph1.r(1)/rr1n*rr1
veph1.r(2) = veph1.r(2)/rr1n*rr1
veph_out = temporary(veph1)
thc = acos(qeph.q(0))*2.
thc1 = interpol(thc,qeph.time,t97_ramp)
qeph1 = replicate({data_qeph},nn)
qeph1.time = t97_ramp
qeph1.q(0) = cos(thc1/2.)
qeph1.q(1) = interpol(qeph.q(1)/sin(thc/2.),qeph.time,t97_ramp)
qeph1.q(2) = interpol(qeph.q(2)/sin(thc/2.),qeph.time,t97_ramp)
qeph1.q(3) = interpol(qeph.q(3)/sin(thc/2.),qeph.time,t97_ramp)
qq1n = sqrt(total(qeph1.q(1:3)^2,1))
qeph1.q(1) = qeph1.q(1)/qq1n*sin(thc1/2.)
qeph1.q(2) = qeph1.q(2)/qq1n*sin(thc1/2.)
qeph1.q(3) = qeph1.q(3)/qq1n*sin(thc1/2.)
qeph_out = temporary(qeph1)
endif else begin
veph_out = temporary(veph[1:*])
qeph_out = temporary(qeph[1:*])
endelse
valid = 1
endif else begin
valid = 0
endelse
return
end