;+
; Project     : SOLAR-B - EIS
;
; Name        : EIS_CPT_GET_HUNTER_INFO
;
; Purpose     : Gets informatio for hunter study.
;
; Explanation : Returns hunter ID and pointing.
;               Response studies may inherit the pointing of the hunter study.
;               This means that the initial positions will be the same
;               even if fine mirror raster size and yheight are not the same.
;               If there are multiple hunter studies for an given event type with different pointings then will give an error.
;
; Use         : < result = eis_cpt_get_hunter_info ( response_study_identifier, study_details, hunter_study_id, mirror_start, y_start) >
;
; Inputs      : response_study_identifier : ULONG study identifier from planning tools giving type of event.
;               study_details             : STRUCTURE ARRAY of type EIS_study_detail.
;               hunter_study_id           : LONG identifier for hunter study
;               mirror_start              : INT mirror initial position for hunter study
;               y_start                   : INT camera window y start for hunter study
;
; Opt. Inputs : None.
;
; Outputs     : result     : INT flag :
;                              1 : processed OK.
;                              0 : processing failed.
;
; Opt. Outputs: None.
;
; Keywords    : None.
;
; Calls       : None.
;
; Common      : None.
;
; Restrictions: None.
;
; Side effects: None.
;
; Category    : EIS_CPT.
;
; Prev. Hist. : None.
;
; Written     : Martin Carter RAL 11/06/08
;
; Modified    : Version 0.0, 13/05/13, MKC
;                 Adapted from eis cpt set response pointing.
;
; Version     : 0.0, 13/05/13
;-
;**********************************************************

FUNCTION eis_cpt_get_hunter_info, response_study_identifier, study_details, hunter_study_id, mirror_start, y_start

  ; get first hunter study ID

  hunter_study_id = eis_cpt_get_hunter_study( study_details, response_study_identifier, HUNTER_STUDY_LIST=hunter_study_list)

  ; check hunter study present

  IF NOT KEYWORD_SET(hunter_study_id) THEN BEGIN

    eis_cpt_message, 'ERROR : NO HUNTER STUDIES FOR RESPONSE STUDY TYPE '+eis_cpt_strtrim(response_study_identifier)

    GOTO, error

  ENDIF

  ; get pointing info from hunter study

  ; initialize values

  eis_cpt_undefine, mirror_start

  eis_cpt_undefine, y_start

  ; loop through hunter studies

  FOR s = 0, N_ELEMENTS(hunter_study_list)-1 DO BEGIN

    ; get raster details

    study = eis_get_study(study_details[hunter_study_list[s]].study_identifier)

    ; get hunter rasters

    CASE response_study_identifier OF
      1 : hunter_raster_list = WHERE(study.XRT_flare_control_flag NE 0)
      2 : hunter_raster_list = WHERE(study.XRT_flare_control_flag NE 0)
      3 : hunter_raster_list = WHERE(study.EIS_flare_control_flag NE 0)
      4 : hunter_raster_list = WHERE(study.EIS_event_control_flag NE 0)
      ELSE : MESSAGE, 'IMPLEMENTATION ERROR'
    ENDCASE

    ; have already checked there will be some rasters
    ; loop through hunter rasters

    FOR r = 0, N_ELEMENTS(hunter_raster_list)-1 DO BEGIN

      ; save mirror start and check same as already encountered

      IF N_ELEMENTS(mirror_start) EQ 0 THEN BEGIN

        mirror_start = study[hunter_raster_list[r]].fine_mirror_position

      ENDIF ELSE BEGIN

        IF mirror_start NE study[hunter_raster_list[r]].fine_mirror_position THEN BEGIN

          eis_cpt_message, 'ERROR : DIFFERENT MIRROR INITIAL POSITIONS FOR HUNTER STUDIES'

          GOTO, error

         ENDIF

      ENDELSE

      ; check y start

      hardware_window = eis_cpt_hardware_window(study[hunter_raster_list[r]])

      ; save y range for windows and check same as already encountered

      IF N_ELEMENTS(y_start) EQ 0 THEN BEGIN

        y_start = hardware_window[1]

      ENDIF ELSE BEGIN

        IF y_start NE hardware_window[1] THEN BEGIN

          eis_cpt_message, 'ERROR : DIFFERENT Y WINDOW STARTS FOR HUNTER STUDIES'

          GOTO, error

         ENDIF

      ENDELSE

    ENDFOR

  ENDFOR

  ; return finished OK flag

  RETURN, 1

error :

  ; issue routine name

  MESSAGE, 'ERROR', /INFORMATIONAL

  ; return error flag

  RETURN, 0

END





