;+ ; NAME: ; THM_AUTOLOAD_SPINMODEL.PRO ; ; PURPOSE: ; Given a tplot variable name, or an explicit time range, ; check to see whether a spin model is loaded. If not, or ; if the time range of interest is not completely covered, ; call thm_load_state to load the spin model and support data. ; ; CATEGORY: ; TDAS ; ; CALLING SEQUENCE: ; thm_autoload_spinmodel,probe='a',tvar='tha_mom' ; ; INPUTS: ; probe: A scalar character, one of 'a' through 'f', specifying which ; probe's spinmodel to check. ; ; tvar: A tplot variable name, defining the time range of interest. ; ; trange: A double precision two element array, defining the time range ; of interest. ; ; One of tvar or trange must be specified. ; ; OUTPUTS: ; Support data and a spin model are loaded, if necessary. ; pro thm_autoload_spinmodel,tvar=tvar,trange=trange,probe=probe need_load=0 if keyword_set(tvar) then begin get_data,tvar,data=d roi=minmax(d.x) endif else begin if keyword_set(trange) then begin roi=trange endif else begin message,'One of tvar or trange keywords must be set to establish the region of interest.' endelse endelse smp=spinmodel_get_ptr(probe) if ~obj_valid(smp) then begin need_load=1 t1=0.0D t2=0.0D endif else begin smp->get_info,start_time=t1, end_time=t2 if (roi[0] LE t1) OR (roi[1] GE t2) then begin need_load=1 endif endelse if (need_load NE 0) then begin ;print,'ROI: '+time_string(roi[0])+' to '+time_string(roi[1]) ;print,'Loaded: '+time_string(t1) + ' to '+time_string(t2) ;dprint,'Spin model coverage does not match ROI, loading state support data.' thm_load_state,probe=probe,trange=roi,/get_supp endif else begin ;dprint,'Spin model covers entire ROI, no load needed.' endelse end