; docformat = 'rst' ; ; NAME: ; getCameraID ; PURPOSE: ; Homogeneize the telescope ID from FITS header 'INSTRUME' keyword. ; ;+ ; :Description: ; Homogeneize the telescope ID from FITS header 'INSTRUME' keyword. ; ; :Categories: ; FITS ; ; :Returns: A single identifyer for the camera:: ; Instrument Detector Telescope ID ; NACO ESO-VLT NACO ; ISAAC ESO-VLT ISAAC ; SPHERE IRDIS ESO-VLT SPHERE/IRDIS ; SPHERE IRDIFS ESO-VLT SPHERE/IFS ; ERIS NIX ESO-VLT ERIS/NIX ; EFOSC ESO-NTT EFOSC ; NIRC2 KeckII NIRC2 ; NIRSPEC KeckII NIRSPEC ; NIRI Gem-N NIRI ; PUEO CFHT PUEO ; Andor Tech OHP-120 iKon-2k ; C2PU/OPF C2PU-Omicron QHY600M ; LBTO/PISCES LBTO PISCES ; ; :Params: ; head: in, required, type=string ; A FITS header from the telescope. ; ; :Uses: ; sxpar(), lxpar(), getTelescopeID() ; ; :Author: ; B.Carry (OCA) ; ; :History: ; Change History:: ; Written in March 2014, B. Carry (IMCCE) ; 2015-Jan. - B.Carry (IMCCE) - Added iKon@OHP-120, SPHERE@VLT ; 2015 Feb. - B.Carry (IMCCE) - Corrected bad error message: INSTRUME keyword ; 2015 Nov. - B.Carry (OCA) - Added compile option idl2 ; 2016 Aug. - B.Carry (OCA) - Added EFOSC at ESO-LSO ; 2017 May - B.Carry (OCA) - Added SPHERE/IFS @ ESO-VLT ; 2017 Nov - B.Carry (OCA) - Added SPHERE/ZIMPOL @ ESO-VLT ; 2019 Mar.: B.Carry (OCA) - Secure self-consistent ID if used multiple times ; 2019 Jun.: B.Carry (OCA) - Added NIRSPEC @ KeckII ; 2019 Sep.: B.Carry (OCA) - Added FORS2 @ VLT ; 2022 Nov.: B.Carry (OCA) - Added PUEO @ CFHT ; 2023 Jan.: B.Carry (OCA) - Added QHY @ C2PU ; 2023 Dec.: B.Carry (OCA) - Added LBTO ; 2024 Mar.: B.Carry (OCA) - Added VLT/ERIS/NIX ;- function getCameraID, head ;--I-- Initialization ----------------------------------------------------------------- COMPILE_OPT hidden, idl2 ;--II-- Input Syntax Verification ----------------------------------------------------- if N_PARAMS() ne 1 then begin message, /IOERROR, 'Syntax : ID = getCameraID(HEAD)' return, -1 endif ;--III-- Header Parsing --------------------------------------------------------------- camName = sxpar(head,'INSTRUME',count=nbFound, /Silent) if nbFound eq 0 then camName = sxpar(head,'CURRINST',count=nbFound, /SILENT) if strCmp( getTelescopeID(head), 'ALMA' ) then begin ID='ALMA' return, ID endif if nbFound eq 0 then begin message, 'Inappropriate header: keyword INSTRUME not found' return, -1 endif ;--IV-- Camera Name Analysis ---------------------------------------------------------- camName = strtrim(camName,2) case camName of ;--IV.1-- ESO Cameras 'FORS2' : ID = 'FORS2' 'ISAAC' : ID = 'ISAAC' 'EFOSC' : ID = 'EFOSC' 'NAOS+CONICA': ID = 'NACO' 'SPHERE' : begin detName = strtrim(lxpar(head,'HIERARCH ESO DET ID'),2) case detName of 'IRDIS': ID = 'SPHERE/IRDIS' 'IFS': ID = 'SPHERE/IFS' else: begin attempt = strtrim(lxpar(head,'HIERARCH ESO DET NAME'),2) if strCmp(attempt,'NGC-ZIMPOL-DCS') then ID='SPHERE/ZIMPOL' else begin message, 'getCameraID: SPHERE detector not known :'+detName return, -1 endelse end end end 'ERIS' : begin detName = strtrim(lxpar(head,'HIERARCH ESO INS1 SCSM ID'),2) case detName of 'NIX': ID = 'ERIS/NIX' else: begin message, 'getCameraID: SPHERE detector not known :'+detName return, -1 endelse end end ;--IV.2-- Keck/Gemini Cameras 'NIRI' : ID = 'NIRI' 'NIRC2' : ID = 'NIRC2' 'NIRSPEC' : ID = 'NIRSPEC' ;--IV.3-- Misc. Cameras 'Andor Tech' : ID = 'iKon-2k' 'aobir' : ID = 'PUEO' ;--IV.3-- Self-consistency 'SPHERE/IRDIS': ID = 'SPHERE/IRDIS' 'SPHERE/IFS': ID = 'SPHERE/IFS' 'SPHERE/ZIMPOL': ID = 'SPHERE/ZIMPOL' 'NACO': ID = 'NACO' 'iKon-2k': ID = 'iKon-2k' 'Instrument': ID = 'QHY600M' 'Hokupaa+QUIRC': ID = 'Hokupaa' 'PISCES': ID = 'PISCES' ;--IV.5-- Unknown else: begin message, 'getCameraID: Camera not known :'+camName return, -1 end end ;--V-- Return Camera ID ------------------------------------------------------------ return, ID end