File: PhotonAbsorptionRate.m

package info (click to toggle)
psychtoolbox-3 3.0.19.14.dfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,796 kB
  • sloc: ansic: 176,245; cpp: 20,103; objc: 5,393; sh: 2,753; python: 1,397; php: 384; makefile: 193; java: 113
file content (42 lines) | stat: -rw-r--r-- 2,175 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function [photonAbsorptionRate] =...
	PhotonAbsorptionRate (irradianceInQuanta, irradianceS, absorptanceSpectra, absorptanceSpectraS, collectingDiameter)
% [photonAbsorptionRate] =...
%		PhotonAbsorptionRate (irradianceInQuanta, irradianceS, absorptanceSpectra, absorptanceSpectraS, collectingDiameter)
%
% Compute photons being absorbed per photoreceptor per sec, given the spectrum incident on the
% photoreceptor array.  We typically take the collecting area of a photoreceptor to be the inner segement
% diameter.
%
% Spatial units for this routine are um, which are convenient for photoreceptor calculations.  Be sure
% to convert your incident spectrum to these units.  The retinal irradiance is passed in quantal units.  Note
% that routines EnergyToQuanta and QuantaToEnergy are available for your converting pleasure.
%
% Can handle multiple photoreceptor types.  Put each absopbtance spectrum in a row of matrix
% absorptanceSpectra, put corresponding collecting diameters in column vector collectingDiameter.
%
% Units: 
%   photonAbsorptionRate: quanta/sec/photorecptor
%   irradianceInQuanta: quanta/um^2-sec-wlinterval
%   absorptanceSpectra: probability an incident quantum will be absorbed.
%   collectingDiameter (um^2)
%
% 05/06/03	lyin Wrote it
% 06/12/03	lyin Change the way variable being passed.
% 06/26/03  dhb  Change computation of area to pi*r^2 rather than pi*d^2!
% 06/26/03  dhb  Change to expect absorptanceSpectra and collectingDiameter in rows.
% 7/08/03   dhb  Cosmetic.
% 7/09/03   dhb  Take input in quantal units.

% Convert the wavelength representation of irradianceInQuanta into
% that of the photoreceptor absorptance spectra
irradianceInQuanta = SplineSpd(irradianceS, irradianceInQuanta, absorptanceSpectraS);

% Compute absorptions per unit area for each passed photoreceptor (quanta/sec-um^2).
photonAbsorptionRatePerArea = (absorptanceSpectra * irradianceInQuanta);

% Calculate the photon collecting area of each type of photoreceptors
collectingArea = pi * (collectingDiameter/2).^2;

% Real numbers of photons absorbed for each photoreceptors (quanta/sec)
photonAbsorptionRate = photonAbsorptionRatePerArea .* collectingArea;