;+ ; NAME: ; SEGMENT_TEST.PRO ; ; PURPOSE: ; Check a spinmodel segment structure to ensure that the model parameters ; b and c are consistent with the start and end times and ; spin counts ; ; CATEGORY: ; TDAS ; ; CALLING SEQUENCE: ; segment_test,probe,segment,result ; ; INPUTS: ; probe: A single character probe letter (only used in output messages). ; segment: A spinmodel_segment structure. ; ; OUTPUTS: ; result: 0 for failure, 1 for success ; ; KEYWORDS: ; None. ; ; PROCEDURE: ; Calls segment_interp_t to get spin count and spin phase at ; segment start/end times. ; Calls segment_interp_n to get sun pulse times of segment ; start/end counts. ; Cross check results of segment_interp_t and segment_interp_n, ; verifying that interp_t and interp_n results are consistent ; within modest tolerances (100 usec for times, 0.1 deg for ; phase angles). ; Check maxgap field against 4-hour threshold; large gaps are ; likely a result of missing data. ; ; EXAMPLE: ; mptr=spinmodel_get_ptr('a') ; sptr=(*mptr).segs_ptr ; segment_test,'a',(*sptr)[0],result ; ;Written by: Jim Lewis (jwl@ssl.berkeley.edu) ;Change Date: 2007-10-08 ;- pro segment_test,probe,segment,result t1 = segment.t1 t2 = segment.t2 c1 = segment.c1 c2 = segment.c2 phi1 = c1*360.0D phi2 = c2*360.0D segment_interp_t,segment,t1,n1,tlast1,spinphase1,spinper1,eclipse_delta_phi1 test_phi1 = n1*360.0D + spinphase1 segment_interp_t,segment,t2,n2,tlast2,spinphase2,spinper2,eclipse_delta_phi2 test_phi2 = n2*360.0D + spinphase2 segment_interp_n,segment,c1,test_t1,spinper1 segment_interp_n,segment,c2,test_t2,spinper2 err1 = abs(phi1-test_phi1) err2 = abs(phi2-test_phi2) err3 = abs(t1-test_t1) err4 = abs(t2-test_t2) if ((err1 GT 0.1) OR (err2 GT 0.1) OR (err3 GT 0.0001) OR (err4 GT 0.0001)) then begin dprint,'FAIL: Model ',probe,' contains a bad segment:' segment_print,segment dprint,'n1=',n1,' spinphase1=',spinphase1,' n2=',n2,' spinphase2=',spinphase2 dprint,'Expected phi1=',phi1,' phi2=',phi2 dprint,'Got phi1=',test_phi1,' phi2=',test_phi2 dprint,'Error values: phi1=',err1,' phi2=',err2,' t1=',err3,' t2=',err4 result = 0 endif else if (segment.maxgap GT 4.0D*60.0D*60.0D) then begin dprint,'FAIL: Model ',probe,' contains a gap longer than 4 hours.' segment_print,segment result = 0 endif else result=1 end