;+ ;NAME: ; mvn_sta_cmn_tclip ;PURPOSE: ; applies a trange to a STATIC common block structure ;CALLING SEQUENCE: ; dat = mvn_sta_cmn_tclip(dat, trange) ;INPUT: ; dat1 = a MAVEN STA data structure: e.g., ; PROJECT_NAME STRING 'MAVEN' ; SPACECRAFT STRING '0' ; DATA_NAME STRING 'C6 Energy-Mass' ; APID STRING 'C6' ; UNITS_NAME STRING 'counts' ; UNITS_PROCEDURE STRING 'mvn_sta_convert_units' ; VALID INT Array[21600] ; QUALITY_FLAG INT Array[21600] ; TIME DOUBLE Array[21600] ; END_TIME DOUBLE Array[21600] ; DELTA_T DOUBLE Array[21600] ; INTEG_T DOUBLE Array[21600] ; MD INT Array[21600] ; MODE INT Array[21600] ; RATE INT Array[21600] ; SWP_IND INT Array[21600] ; MLUT_IND INT Array[21600] ; EFF_IND INT Array[21600] ; ATT_IND INT Array[21600] ; NENERGY INT 32 ; ENERGY FLOAT Array[9, 32, 64] ; DENERGY FLOAT Array[9, 32, 64] ; NBINS INT 1 ; BINS INT Array[1] ; NDEF INT 1 ; NANODE INT 1 ; THETA FLOAT 0.00000 ; DTHETA FLOAT 90.0000 ; PHI FLOAT 0.00000 ; DPHI FLOAT 360.000 ; DOMEGA FLOAT 8.88577 ; GF FLOAT Array[9, 32, 4] ; EFF FLOAT Array[128, 32, 64] ; GEOM_FACTOR FLOAT 0.000195673 ; NMASS INT 64 ; MASS FLOAT 0.0104389 ; MASS_ARR FLOAT Array[9, 32, 64] ; TOF_ARR FLOAT Array[5, 32, 64] ; TWT_ARR FLOAT Array[5, 32, 64] ; CHARGE FLOAT 1.00000 ; SC_POT FLOAT Array[21600] ; MAGF FLOAT Array[21600, 3] ; QUAT_SC FLOAT Array[21600, 4] ; QUAT_MSO FLOAT Array[21600, 4] ; BINS_SC LONG Array[21600] ; POS_SC_MSO FLOAT Array[21600, 3] ; BKG FLOAT Array[21600, 32, 64] ; DEAD FLOAT Array[21600, 32, 64] ; DATA DOUBLE Array[21600, 32, 64] ;OUTPUT: ; dat = structure with data only in the time range ;NOTES: ; Only will work if the reocrd varying arrays are 5D or less ;HISTORY: ; 19-may-2014, jmm, jimm@ssl.berkeley.edu ; $LastChangedBy: jimm $ ; $LastChangedDate: 2014-10-09 15:56:05 -0700 (Thu, 09 Oct 2014) $ ; $LastChangedRevision: 15966 $ ; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/projects/maven/sta/mvn_sta_cmn_tclip.pro $ ;- Function mvn_sta_cmn_tclip, dat1, trange If(n_elements(trange) Ne 2) Then Begin dprint, dlevel = [0], 'Bad time range:' Return, -1 Endif ;Record varying arrays are clipped rv_flag is 'Y' for tags that will ;be clipped. rv_arr = mvn_sta_cmn_l2vararr(dat1.apid) nvar = n_elements(rv_arr[0, *]) tags1 = tag_names(dat1) ntags1 = n_elements(tags1) xtime = where(tags1 Eq 'TIME', nxtime) If(nxtime Eq 0) Then Begin dprint, dlev = [0], 'Missing tag: TIME' Return, -1 Endif Else Begin tr0 = time_double(trange) ok = where(dat1.time Ge tr0[0] And dat1.time Lt tr0[1], nok) If(nok Eq 0) Then Begin dprint, dlev = [0], 'No data in interval: ' dprint, dlev = [0], time_string(tr0[0])+ ' -- '+time_string(tr0[1]) Return, -1 Endif Endelse ;The ok array exists here count = 0 dat = -1 For j = 0, nvar-1 Do Begin x1 = where(tags1 Eq rv_arr[0, j], nx1) If(nx1 Eq 0) Then Begin dprint, 'Ignoring missing tag: '+rv_arr[0, j] Endif Else Begin If(rv_arr[2, j] Eq 'N') Then Begin If(count Eq 0) Then undefine, dat count = count+1 str_element, dat, rv_arr[0, j], dat1.(x1), /add_replace Endif Else Begin ;records vary t1 = dat1.(x1) If(count Eq 0) Then undefine, dat count = count+1 str_element, dat, rv_arr[0, j], t1[ok, *, *, *, *], /add_replace Endelse Endelse Endfor Return, dat End