The IDL-programme RESPONSE calculates the response function for the SODART/OXS Bragg spectrometer and its constituents.
In the spectroscopy of an X-ray line with a high-resolution Bragg spectrometer, in general, two different (extreme) situations are possible:
--------------
A) Wide lines: The energy resolution of the spectrometer is much smaller
than the line width. Then, the response function is the critical quantity,
which determines the count rate.
In this case, the count rate is obtained by the integral over energy
CountRate = INT dE (SourceFlux * EffectiveArea * DetectorEfficiency * RockingCurve * ReflectionFactor * BaffleFactor)
EffectiveArea is the effective area of the SODART X-ray telescope. EffectiveArea and DetectorEfficiency are interpolated from data files based on measurements and provided by DSRI Copenhagen.
ReflectionFactor is defined by ReflectionArea / MaximumArea, where MaximumArea is the area between the large and the small ellipses defined by the maximum and minimum mirror radii projected on the Bragg panel, and ReflectionArea is the actual reflecting crystal area of a certain crystal type reduced by the projection effect (large and small ellipses) and the shadow effect of the Bragg entrance door (shadow lines). The real thickness of the panel and the crystals is taken into account.
BaffleFactor takes into account the shadowing by thermal baffles and is set to 0.95.
One can assume that all quantities do not depend on energy in the relevant energy range except the RockingCurve, and the integral over energy gives
INT dE (RockingCurve) = PeakReflectivity * DeltaEnergy * IntegrationFactor
PeakReflectivity is the reflectivity at the rocking curve maximum.
DeltaEnergy is the FWHM of the rocking curve, recalculated into energy units by using the Bragg reflection condition, and represents the energy resolution.
IntegrationFactor compensates the discrepancy between the exakt and the approximated integral of a Lorentzian (LiF) or a Gaussian (ML, RAP, Si) function and is set to 1.57080 (for LiF) or 1.06447 (for ML, RAP, Si).
Then, the count rate is obtained by:
CountRate (ph/s) = SourceFlux (ph/s/cm^2/keV) * ResponseFunction (cm2*keV) with
ResponseFunction (cm2*keV) = EffectiveArea (cm2) * DetectorEfficiency * PeakReflectivity * DeltaEnergy (keV) * IntegrationFactor * ReflectionFactor * BaffleFactor.
----------------
B) Narrow lines: The line width is much smaller than the spectrometer's
energy resolution. Then, the spectrometric effective area determines
the count rate.
In this case, the count rate is obtained by the integral over energy
CountRate = INT dE (SourceFlux * EffectiveArea * DetectorEfficiency * PeakReflectivity * ReflectionFactor * BaffleFactor)
One can assume that all quantities do not depend on energy in the relevant energy range except SourceFlux, and the integral over energy gives
INT dE (SourceFlux) = LineFlux
Then, the count rate is obtained by:
CountRate (ph/s) = LineFlux (ph/s/cm^2) * SpectrometricEffectiveArea (cm2) with
SpectrometricEffectiveArea (cm2) = EffectiveArea (cm2) * DetectorEfficiency * PeakReflectivity * ReflectionFactor * BaffleFactor.
----------------
The relation between ResponseFunction and SpectrometricEffectiveArea is:
ResponseFunction (cm2*keV) = SpectrometricEffectiveArea (cm2) * DeltaEnergy (keV) * IntegrationFactor
This programme calculates the response function and all its constituents for four different crystal types (Multilayers, RAP, Si, LiF).
Originally, the GENERAL PHILOSOPHY of this programme was to calculate only the response function. Its factors were calculated only to illustrate the angular dependences. Particularly, the PeakReflectivity, RockingCurveWidth, DeltaEnergy, and EnergyResolution were data for an average crystal, and NOT for the whole panel. The reason is, that the individual non-parallelities of the crystals lead to a widening of the total (panel) rocking curve (RC) and to a reduction of its peak reflectivity, in comparison to the single crystal RC. Only the product PeakReflectivity * DeltaEnergy entering the ResponseFunction is again valid for the whole panel. Of cource, for RAP and ML the difference of average crystal data and panel data is not significant, since the nonparallelity plays no role. However, for LiF and particularly for Si the difference is significant.
To overcame this situation, in an update from November 1999 two versions
were introduced:
Version (c): PeakReflectivity, RockingCurveWidth, DeltaEnergy, and
EnergyResolution are calculated for a single crystal (as described above);
Version (p): PeakReflectivity, RockingCurveWidth, DeltaEnergy, and
EnergyResolution are calculated for all crystals of a given type, by
folding the single crystal RC with the non-parallelities (NONPs) of the
crystals. This procedure is applied for ML, RAP, Si, where no panel RC has
been measured.
In case of LiF, this folding was done off-line: The single crystal RC parameters were determined so that folding with the NONPs gives the measured RC parameters (see /bragg/prog/rocking/README.doc). For the version p the panel RC parameters are read directly from /bragg/data/crydat/crystal.dat
There are 4 main calculation branches:
1. Display (puzzle) of crystals overplotted with projection lines.
2. Calculation of on- and off-axis response function for SELected Bragg
angles and off-axis angles (for definition see comment in
SEL_ANGLES).
3. Calculation of on-axis response function for ALL Bragg angles.
Here, off-axis effects are NOT taken into account.
4. Create plots of all components of the response function.
In new calculations the 4 branches must be initialized in this order, because certain files are created by certain calculation branches, which are necessary for the following branches (see below). However, in the given programme version all needed files have been created already.
After starting the programme, a corresponding info is printed out:
| INPUT | p for PUZZLE | / s for SEL_ANGLES / |
| a for ALL_ANGLES | / m for MULTI_PLOT |
| p: | needs puz*.dat | - creates puz*.doc and puz*.pol |
| s: | needs puz*.pol | - creates rsp*.sel |
| a: | needs puz*.pol | - creates rsp*.all |
| m: | needs rsp*.all | - creates sod*.ps |
In the last 3 cases the user will be asked to calculate the RC for a single average crystal (version c) or for the whole panel (version p). Standard calculations should be done for the whole panel (version p).
The following procedures and functions are called by this main programme directly:
| PARAMETERS , | PUZZLE_PLOT, | RSTAB , | CRY_DATA , | READ_POLY , |
| SEL_ANGLES , | ALL_ANGLES , | MULTI_PLOT , |
and indirectly:
| CRYPOLY , | CRYPLOT , | CRYDIM , | CRYPAR , | CRYMECH , |
| COLPLOT_LIF, | ROWPLOT_LIF, | COLPLOT_SRP, | ROWPLOT_SRP, | |
| PANEL_PLOT, | PUZZLE , | PROJ_LINES, | REFLFACT , | PROJ_VIGN , |
| AREA , | BRAGG , | ENERGY , | DETECTOR, | SODART , |
| ML_TRANS, | PEAKREF , | RCWIDTH , | OFFAXIS , | |
| FOLD_NONP, | FOLDING , | READ_FILE, | OPLOTERR . |
The file READ_NONP is a link to the folder /bragg/prog/rocking/.
Additionally to the files produced and read in this folder, the following files are read from outside:
/response/puz.files/ contains all puz*.dat, puz*.doc, puz*.pol files
/bragg/data/efar/effarea729c
/bragg/data/efar/quanteff.hepc
/bragg/data/efar/quanteff.lepc
/bragg/data/crydat/crystal.dat
/bragg/data/crydim/crydim.num
/bragg/data/sort/evafin.used
/bragg/data/calib/wide/RAP.dat
/bragg/data/calib/wide/Si.dat
The result files puz*.ps are produced in the subfolder /results.puz/.
The result files sod*.ps are produced in the subfolder /results.sod/.
The result files rsp*.sel are produced in the subfolder /results.sel/.
The result files rsp*.all are produced in the subfolder /results.all/.
The structure of calls and data fluxes is shown in the figure: struct_rsp.gif.
written by Hans Wiebicke, October 1997
updated by Hans Wiebicke, November 1999