EIT Software Listings

 

anal
obsolete
response
util

 

Previous Routine
Next Routine

 

Listing of $SSW/soho/eit/idl/obsolete/eit_eff_area.pro

 


function eit_eff_area, item, wave, waveout=waveout, 		$
		filters=filters, verbose=verbose, filein=filein,	$
		area_str=eit_area_str, text_area=text_area, qstop=qstop
;+
;NAME:
;  eit_eff_area
;PURPOSE:
;  Return the EIT effective area as a function of wavelength
;CALLING SEQUENCE:
;  Area = eit_eff_area(index,waveout=waveout)	
;  Area = eit_eff_area(roadmap,wave)		;User supplies wavelengths
;  Area = eit_eff_area(index,wave)
;  Area = eit_eff_area(Sector,wave)		;Sector is an integer array
;  Area = eit_eff_area(Sector,wave,filter=filt)	;Filt is an integer array
;
;  Area_structure = eit_eff_area()
;  Area_structure = eit_eff_area(filein=filein)
;INPUTS:
;  Item		- EIT index structure or roadmap.  May be a scalar
;		  or an array.  Sector and Filters are extracted.
;
;	or	- an integer scalar or array with the EIT sector number.

;OPTIONAL INPUTS:
;  wave		- Wavelengths at which the values of the area are 
;                 desired.  If not specified, the wavelengths are
;		  generated internally and returned in waveout.
;OPTIONAL INPUT  KEYWORDS:
;  filters	- To override the values of filters in Item
;  verbose	- Set to provide additional information
;  filein	- To read a specific EIT effective area file.  By
;		  default reads the following file:
;		    concat_dir('SSW_EIT_RESPONSE','era*.genx')
;                 Use filein='your_file_name' to override the default.
;  text_area	- If file is read, return the text information (string) array
;OUTPUTS:
;  Returns the EIT effective area.  
;  Output size will be (N_elements(wave), N_elements(item))
;
;OPTIONAL OUTPUT KEYWORDS:
;  waveout	- If wave is not provided, then wavelengths are
;		  defined by eit_eff_area and returned in waveout.
;OPTIONAL INPUT/OUTPUT KEYWORD:
;  area_str	- The contents of the EIT effective area file is
;		  returned in this structure variable.  If this
;		  variable is defined, the routine will not bother
;		  to re-read the file on subsequent calls.
;RESTRICTIONS:
;  If filters is defined, it must be of length 1 or length n_elements(Item)
;
;   NOTE:  It is assumed that area.filter(0) = Entrance filter
;			      area.filter(1) = CCD fixed filter
;			      area.filter(2) = Filter wheel C+Al filter
;			      area.filter(3) = Filter wheel thin Al filter
;	   This is order is established in the routine mk_eit_area.pro 
;METHOD:
;  The EIT effective area file is read.  If wave is specified, the 
;  values are interpolated in Log(area).
;HISTORY:
;   9-Jun-95, J. R. Lemen (LPARL), Written
;-


; --------------------------
; Check the input arguments:
; --------------------------

on_error,0				; Clear the on_error condition
if (n_elements(Filters) gt 1) and (n_elements(filters) ne n_elements(Item)) then begin
   on_error,1				; Return to the caller
   message,'Length of Filters must be 0, 1, or n_elements(Index)' ; Stop with an error
endif

; -------------------------------------------------
; Define the EIT effective area file name (filein):
; -------------------------------------------------
if n_elements(filein) eq 0 then begin
    ddir = 'SSW_EIT_RESPONSE'
    filein = concat_dir(ddir,'era*.genx')
    file = findfile(filein,count=count)
    if count eq 0 then begin
	on_error,2		; Return to Main
	message,string('Could not find file: ',filein,format='(2a)')
    endif
    file = file(n_elements(file)-1)
    break_file, file, disk, dir, name, ext, ver
    filein = concat_dir(ddir, name+ext+ver, /notrans)		; Reconstruct the name

endif else file = filein

if not file_exist(file) then begin
   on_error,1
   message,string('Could not open file: ',filein)	; Stop with an error
endif

; -----------------------------
; Read the effective area file:
; -----------------------------
restgen,file=file,str=eit_area_str,text=text_area	; Read the EIT effect area file
if n_elements(wave) eq 0 then waveout = eit_area_str.area.wave else waveout = wave

sectors = gt_EITsector(Item)
case n_elements(filters) of
0: begin
      siz = size(item)
      typ = siz( siz(0)+1 )
      if typ eq 8 then ffilters = gt_EITfilter(Item) else $
		       ffilters = replicate(2,n_elements(sectors))
   endcase
1: ffilters = replicate(filters(0),n_elements(sectors))
else: ffilters = filters
endcase

if (min(ffilters) lt 0) or (max(ffilters) gt 4) then begin
   on_error,1
   message,string('Invalid value of filters: Must be 0 <= filters <= 4')
endif

out = fltarr(n_elements(waveout), n_elements(sectors))

for i=0,n_elements(sectors)-1 do begin
  zz = eit_area_str.area.area(*,sectors(i))
  case ffilters(i) of 
    0: zz = zz * eit_area_str.filter(0).trans
    1: zz = zz * eit_area_str.filter(1).trans
    2: zz = zz
    3: zz = zz 			; Half blocker
    4: zz = zz 			; Half blocker
  endcase  

  if n_elements(wave) eq 0 then out(0,i) = zz else				$
	out(0,i) = 10.^dspline(	eit_area_str.area.wave,alog10(zz>1.e-30),	$
					waveout, interp=0)
endfor

if keyword_set(qstop) then stop
return,out
end


Web curator: Frédéric Auchère
Responsible NASA official: Joseph B. Gurman, Facility Scientist, Solar Data Analysis Center
joseph.b.gurman@gsfc.nasa.gov
+1 301 286-4767
NASA Goddard Space Flight Center
Solar Physics Branch / Code 682

Last revised: - Wed May 9 21:45:08 2007- F. Auchère