;+ ; NAME: ; big_body ; PURPOSE: ; CATEGORY: ; CALLING SEQUENCE: FUNCTION big_body, body, count=count, alias=alias ; INPUTS: ; body scalar, or array; type: string ; list of names of bodies ; If keyword /alias is set then 'body' MUST be a scalar ; OPTIONAL INPUT PARAMETERS: ; /alias if SET then a list of aliases is returned for the ; specified 'body'. ; OUTPUTS: ; Result if /alias NOT set: ; if 'body' NOT defined: ; array[count]; type: string ; list of names of bodies ; This is the concatenation of bodies handled by the ; JPL planetary ephemeris, the USNO asteroid ephemeris, ; the MPC minor planet and comet ephemeris, and the ; SGP satellite ephemeris. Finally a few deep space ; satellites are included for which we happen to have ; ephemeris data available: Helios 1, Helios 2 and Ulysses ; if 'body' set: ; same as input 'body' with aliases replaced by the ; real names of bodies. ; ; if /alias SET: ; array[count]; type: string ; a list of aliases for the specified 'body'. ; Aliases exist for the two Helios ; and Stereo spacecraft, Ulysses and Mars. ; For all other bodies the input value is returned. ; OPTIONAL OUTPUT PARAMETERS: ; count=count scalar; type: integer ; if /alias NOT set: number of bodies handled by href=big_eph= ; if /alias IS set : number of aliases for input 'body'j ; INCLUDE: @compile_opt.pro ; On error, return to caller ; CALLS: ; jpl_body, usno_body, mpc_body, sgp_body, IsType, where_common ; PROCEDURE: ; Acceptable aliases are defined in href=sgp_alias=. ; (currently this is only SMEI, WindSat, Coriolis = sat27640 ; Additional aliases defined here: ; Helios A, Helios-A, Helios_A, Helios-1, Helios_1 = Helios 1 ; Helios B, Helios-B, Helios_B, Helios-2, Helios_2 = Helios 2 ; Stereo A, Stereo-A, Stereo_A, StereoA, Stereo 1, Stereo-1, Stereo_1, Stereo1 = StereoA ; Stereo B, Stereo-B, Stereo_B, StereoB, Stereo 2, Stereo-2, Stereo_2, Stereo2 = StereoB ; Swoops = Ulysses ; Messenger = Messenger ; mgs = Mars ; MODIFICATION HISTORY: ; OCT-2006, Paul Hick (UCSD/CASS) ; NOV-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ; Added keyword /alias ;- InitVar, alias, /key helios_1 = 'Helios 1' helios_2 = 'Helios 2' ulysses = 'Ulysses' stereo_1 = 'Stereo A' stereo_2 = 'Stereo B' messenger = 'Messenger' helios_1_alias = 'helios'+['a',' a','-a','_a','1',' 1','-1','_1'] helios_2_alias = 'helios'+['b',' b','-b','_b','2',' 2','-2','_2'] stereo_1_alias = 'stereo'+['a',' a','-a','_a','1',' 1','-1','_1'] stereo_2_alias = 'stereo'+['b',' b','-b','_b','2',' 2','-2','_2'] ulysses_alias = ['ulysses','swoops'] mars_alias = ['mars' ,'mgs' ] messenger_alias= 'messenger' names = [(jpl_body(count=i))[0:i-1], usno_body(), mpc_body(), sgp_body(), $ helios_1, helios_2, ulysses, stereo_1, stereo_2, messenger] CASE 1 OF alias: BEGIN CASE big_body(body) OF helios_1 : rtn = helios_1_alias helios_2 : rtn = helios_2_alias stereo_1 : rtn = stereo_1_alias stereo_2 : rtn = stereo_2_alias ulysses : rtn = ulysses_alias messenger : rtn = messenger_alias big_body('Mars'): rtn = mars_alias ELSE : rtn = body ENDCASE count = n_elements(rtn) END IsType(body,/defined): BEGIN rtn = body tmp = strlowcase(body) rtn = sgp_alias(rtn) i = where_common(tmp,helios_1_alias) IF i[0] NE -1 THEN rtn[i] = helios_1 i = where_common(tmp,helios_2_alias) IF i[0] NE -1 THEN rtn[i] = helios_2 i = where_common(tmp,stereo_1_alias) if i[0] NE -1 THEN rtn[i] = stereo_1 i = where_common(tmp,stereo_2_alias) if i[0] NE -1 THEN rtn[i] = stereo_2 i = where_common(tmp,ulysses_alias) IF i[0] NE -1 THEN rtn[i] = ulysses i = where_common(tmp,messenger_alias) IF i[0] NE -1 THEN rtn[i] = messenger i = where_common(tmp,mars_alias) IF i[0] NE -1 THEN rtn[i] = jpl_body(/mars,/string) i = where_common(tmp,strlowcase(names),inref=j) IF i[0] NE -1 THEN rtn[i] = names[j] count = n_elements(names) END ELSE: BEGIN rtn = names count = n_elements(names) END ENDCASE RETURN, rtn & END