function spd_ui_cotrans_new_req_spin_tvars_helper,in_coord,out_coord,trange,loadedData,varname
compile_opt idl2,hidden
varList = loadedData->getAll(/parent)
coordSysObj = obj_new('spd_ui_coordinate_systems')
left_coords = coordSysObj->makeCoordSysListForSpinModel()
right_coords = coordSysObj->makeCoordSysListforTHEMIS(/include_dsl)
obj_destroy, coordSysObj
in_coord_tmp = strlowcase(in_coord[0])
out_coord_tmp = strlowcase(out_coord[0])
overlap_margin = 120.
if (in_set(in_coord_tmp,left_coords) && in_set(out_coord_tmp,right_coords)) || $
(in_set(out_coord_tmp,left_coords) && in_set(in_coord_tmp,right_coords)) then begin
tvarname = tnames(varname,trange=var_trange)
if ~is_string(tvarname) || $
var_trange[0] - overlap_margin gt trange[0] || $
var_trange[1] + overlap_margin lt trange[1] then begin
if ~in_set(varname,varList) then begin
return,1
endif else begin
tmp = loadedData->getTvarData(varname)
tvarname = tnames(varname,trange=var_trange)
if ~is_string(tvarname) || $
var_trange[0] - overlap_margin gt trange[0] || $
var_trange[1] + overlap_margin lt trange[1] then begin
return,1
endif
endelse
endif
endif
return,0
end
function spd_ui_cotrans_new_req_spin_tvars,in_coord,out_coord,probe,trange,loadedData
compile_opt idl2,hidden
spinras_cor = 'th'+probe+'_state_spinras_corrected'
spindec_cor = 'th'+probe+'_state_spindec_corrected'
spinras = 'th'+probe+'_state_spinras'
spindec = 'th'+probe+'_state_spindec'
if (~spd_ui_cotrans_new_req_spin_tvars_helper(in_coord,out_coord,trange,loadedData,spinras_cor) && $
~spd_ui_cotrans_new_req_spin_tvars_helper(in_coord,out_coord,trange,loadedData,spindec_cor)) || $
(~spd_ui_cotrans_new_req_spin_tvars_helper(in_coord,out_coord,trange,loadedData,spinras) && $
~spd_ui_cotrans_new_req_spin_tvars_helper(in_coord,out_coord,trange,loadedData,spindec)) then begin
return,0
endif else begin
return,1
endelse
end
function spd_ui_cotrans_new_req_spin_model,in_coord,out_coord,probe,trange
compile_opt idl2,hidden
coordsysobj = obj_new('spd_ui_coordinate_systems')
left_coords = coordsysobj->makeCoordSysListForSpinModel(/include_dsl)
right_coords = coordsysobj->makeCoordSysListForTHEMIS()
obj_destroy, coordsysobj
in_coord_tmp = strlowcase(in_coord[0])
out_coord_tmp = strlowcase(out_coord[0])
overlap_margin = 120.
if (in_set(in_coord_tmp,left_coords) && in_set(out_coord_tmp,right_coords)) || $
(in_set(out_coord_tmp,left_coords) && in_set(in_coord_tmp,right_coords)) then begin
spinmodel_ptr = spinmodel_get_ptr(probe)
if ~obj_valid(spinmodel_ptr) then begin
return,1
endif
spinmodel_get_info,model=spinmodel_ptr,start_time=model_start,end_time=model_end
if model_start - overlap_margin gt trange[0] || model_end + overlap_margin lt trange[1] then begin
return,1
endif
endif
return,0
end
function spd_ui_req_spin,in_coord,out_coord,probe,trange,loadedData
compile_opt idl2,hidden
return,spd_ui_cotrans_new_req_spin_tvars(in_coord,out_coord,probe,trange,loadedData) || spd_ui_cotrans_new_req_spin_model(in_coord,out_coord,probe,trange)
end