## EIT Software Listings

 anal obsolete response util

### Listing of \$SSW/soho/eit/idl/anal/eit_temp.pro

```
function eit_temp,dem=dem,inratio=inratio,pressure=pressure,pre_calc=pre_calc,\$
show=show, dn171=dn171,dn195=dn195,dn284=dn284,expotime=expotime,\$
r195_to_171=r195_to_171,r284_to_195=r284_to_195
;+
; NAME:
;  eit_temp
; PURPOSE:
;  Specify  195/171 or 284/195 ratio or individual DN values ==> compute TEMP,
;                                                     emission measure
;  NOTE: THIS IS MAINLY A PLACEHOLDER, HOWEVER IT MAY BE USEFUL.
;
; CALLING SEQUENCE:
;         temp=eit_temp(dn171=dn171,dn195=dn195,expotime=expotime,\$
;                       inratio=inratio,dn284=dn284]
;
; INPUTS:
;    MUST SPECIFY EITHER
;      dn171,dn195,dn284 = observed flux in image, best if corrected by
;                    eit_prep, must have background subtracted
; OR
;      inratio     = calculated 195/171 or 284/195 ratio, e.g. from eit_ratio
;
;      pre_calc    = MUCH FASTER - use pre-calculated spectra if online.
;      show        = set if want to see temperature dependence upon ratio
;      expotime = total exposure time (including shutter close time)
;                 if specifying non-normalized DN values
;      r195_to_171 = (default) return temperature based upon 195/171 ratio
;      r284_to_195 =           return temperature based upon 284/195 ratio
;
; OUTPUTS:
;   This function returns temperature and emission measure (cm^-5).
;   IF a dn195 level is not input the output emission measure is
;   normalized to 1 DN a observed in 195.
;
;   temperature    = computed temperature for given ratio
;   dem            = column emission measure (cm^-5)
;                    value returned can be compared to what one
;                    would get from a true DEM calculation, i.e.
;                    we return the Isothermal Emission measure *0.7/0.3
;
; RESTRICTIONS:
;   Default: Pressure for level populations = (Ne*T) 1e15 K cm^-3
;                       (not very sensitive to this)
;
;   VERY Slow if calculating spectra from scratch.
;
;   Pre_calc: this uses a set of pre-calculated spectra for a
;             pressure of 1e15 cm^-3 K and spanning emperatures
;             from 30,000-9.0e6 K. These are then interpolated to
;
; MODIFICATION HISTORY:
;   1997 Feb 05, J.S. Newmark, Written.
;   1997 Sep 29, Version 2.0 Substantial re-write to work with CHIANTI
;                 J. Newmark
;   1997 Oct 06, Version 2.1 J. Newmark, use fact that temperature is
;                slowly varying and dem is linearly proportional to
;                signal, use histograms - speed up for large inputs
;   1998 Feb 13, Add error checking, put floor on arrays of 1 DN, max
;                ratio = 5
;   1999 May 07, J.S. Newmark - new calibration
;   1999 Jun 08, Version 3.0, J. Newmark
;                BUG FIX for Emission measure calculation
;   1999 Nov 17, J.S. Newmark - new calibration
;-

defsysv,'!xuvtop',exist=yes_chianti
if not yes_chianti then ssw_packages,/chianti,/append

if not keyword_set(expotime) then expotime = 1.
if not keyword_set(pressure) then pressure = 1.e15
;
; below is for full version when CHIANTI is available
;
if keyword_set(pre_calc) then begin
restore,concat_dir(getenv('SSW_EIT_RESPONSE'),'chianti_spec.save')
;   restore,'dn2.save'
inspec = temporary(spec0)
pressure = pressure(0)
endif else begin
temp=indgen(20)*0.1+4.6
temp = 10^temp
endelse

resp195 = eit_flux(195,temp,pressure=pressure,dem_name='unit',inspec=inspec,\$
inwave=waves)

if not keyword_set(r284_to_195) then begin
resp171 = eit_flux(171,temp,pressure=pressure,dem_name='unit',inspec=inspec,\$
inwave=waves)
ratio = resp195 / resp171
title = 'EIT 195/171 Ratio'
if not keyword_set(inratio) then inratio = (dn195>1) / float(dn171>1)
yr = [1e-3,4.5]
endif else begin
resp284 = eit_flux(284,temp,pressure=pressure,dem_name='unit',inspec=inspec,\$
inwave=waves)
ratio = resp284 / resp195
title = 'EIT 284/195 Ratio'
if not keyword_set(inratio) then inratio = (dn284>.1) / float(dn195>1)
yr = [1e-3,1]
endelse

atemp = alog10(temp)
if keyword_set(show) then plot,atemp,ratio,yr=yr,\$
title=title,xtitle='Log Temp (K)',ytitl='Ratio'

dum = min(ratio,minsub)
dum = max(ratio(minsub:n_elements(ratio)-1),maxsub)
maxsub = maxsub + minsub

; use histogram to speed up calculations if input is large, e.g.
;    whole images
if n_elements(inratio) eq 1 then inratio = fltarr(1) + inratio
vals = histogram(inratio<5,bin=0.01,min=0,reverse=ind)
num = n_elements(vals)
hist_ratio = findgen(num)*0.01
;
his_temp = interpol(atemp(minsub:maxsub),ratio(minsub:maxsub),hist_ratio)
his_temp = 10^his_temp

temp = inratio
for i = 0,num-1 do if ind(i) ne ind(i+1) then \$
temp(ind(ind(i):ind(i+1)-1)) = his_temp(i)

if n_elements(dn195) ne 0 then begin
newspec = interp2d(inspec,waves,atemp,waves,alog10(his_temp),/grid)
;
; calculate "unit" emission measure and use fact that dem varies
;  linearly with input signal
;
his_dem = eit_flux(195,his_temp,pressure=pressure,dn=intarr(num)+1,\$
inspec=newspec,inwave=waves)
dem = inratio
for i = 0,num-1 do if ind(i) ne ind(i+1) then \$
dem(ind(ind(i):ind(i+1)-1)) = his_dem(i)
dem = dem * (dn195>1)
endif

return,temp
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:03 2007- F. Auchère