A new way of thinking and calculating about DOF
Moderators: rjlittlefield, ChrisR, Chris S., Pau
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
A new way of thinking and calculating about DOF
Here's a new way of dealing with DOF that may be helpful.
Instead of using geometric optics based directly on the circle of confusion, I'm going to compute DOF using wave optics, based on the effective f-number and looking at wavefront error. Then I'll get at circle of confusion indirectly, by using that to determine what f-number we should be using in the first place in order for diffraction to play nicely with that circle of confusion.
I warn you that this is probably going to look a little crazy, but I think it has some advantages in being simpler to think about once you get the hang of it.
Notation:
f_eff is the effective f-number, as seen by the camera sensor
TDF is the total depth of field, front to back limit, as determined by the criterion of 1/4-lambda wavefront error
NA is the subject-side numerical aperture
m is the magnification, from subject to sensor.
C is the diameter of the circle of confusion. We're going to take C as being proportional to the Airy disk diameter implied by the effective f-number, and pick one to match the other.
Basic formulas...
Let's take it as always true that:
TDF = lambda/NA^2 [1/4-lambda wavefront error, lambda = 0.00055 mm for green light]
NA = m/(2*f_eff)
and correspondingly
f_eff = m/(2*NA)
Doing the algebra, we have immediately that
TDF = lambda*4*f_eff^2/m^2
Now, for the sake of illustration let's choose to associate f_eff = 11 with C = 0.012. This corresponds to a rule of thumb that f/11 is the smallest aperture you can use on an APS sensor without losing resolution even at actual pixels (C ~= 1/2300 of sensor diagonal). It turns out this also makes C just a little smaller than the diameter of the Airy disk.
Then in general for other values of C we can say that a good choice is:
f_eff = 917*C [917=11/0.012, so scaling the aperture to match our choice of C]
Now we're set to look at some calculations.
Suppose we're using a 10X NA 0.25 microscope objective. Then we have that
f_eff = 10/(2*0.25) = 20
TDF = 0.00055*4*20^2/10^2 = 0.0088
You'll notice that this is just equal to the first term of microscopyu's formula.
On the other hand, at 1:1 and effective f/11, we have
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*11^2/1^2 = 0.2662
The traditional formula would come at this case from a different direction, using a nominal lens aperture of f/5.5 (effective f/11 at 1:1) and calculating as
TDF = 2*C*N*(m+1)/m^2 = 2*0.012*5.5*(1+1)/1^2 = 0.264
The results are a little different, about 1%. If we wanted them to come out exact, we could tweak the relationship between f_eff and C to make that happen. But forging ahead...
As another example, at 0.5X and effective f/11, we have
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*11^2/0.5^2 = 1.065
The traditional formula would use a nominal aperture of f/7.33 (=11/(0.5+1), producing effective f/11), so
TDF = 2*C*N*(m+1)/m^2 = 2*0.012*7.33*(0.5+1)/0.5^2 = 1.056
Again the numbers are slightly different, and by no coincidence it's by 1%, the same amount as before.
We can change sensor size by altering C and f_eff. If we're just scaling up the sensor to full-frame, without changing our criterion for final sharpness, then we'll need C = 0.012*1.6 = 0.0192 and f/17.6. Of course the magnification also has to increase by 1.6 in order to image the same subject size.
In that case the calculated TDF for what was the f/11 m=0.5 case is now f/17.6 m=0.8, and the calculations go like this:
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*17.6^2/0.8^2 = 1.065
TDF = 2*C*N*(m+1)/m^2 = 2*0.0192*9.78*(0.8+1)/0.8^2 = 1.056
It's important to notice that these are exactly the same TDF values that we got with the smaller sensor. When you change the sensor size, and you adjust the magnification to shoot the same size subject, and you adjust the aperture to get the same amount of diffraction blur, then you also get the same DOF, and vice versa. The only difference is that with the bigger sensor you get to use a smaller aperture setting on the lens (f/9.78 instead of f/7.3 in this case).
Let's try another one. How about m=3 with C=0.025 -- maybe we're shooting a small subject on an APS sensor but we don't care about pixel-peeping.
So, compute as:
f_eff = 917*C = 917*0.025 = f/23. (Makes sense -- we can tolerate more diffraction blur with the larger circle of confusion.)
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*23^2/3^2 = 0.129
Now, if we're shooting with an ordinary lens on extension, to get f/23 at m=3 means that we need an aperture setting of 23/(3+1) = f/5.75.
The classic calculation would be
TDF = 2*C*N*(m+1)/m^2 = 2*0.025*5.75*(3+1)/3^2 = 0.128 (There's that 1% difference again -- attributable to the scaling between C and f_eff.)
Your eyes may be glazed over by the numbers at this point. Mine too. Let's take a break from the numbers and think about why this formulation is useful.
It's useful because
a) it matches the physics (including diffraction),
b) it tells you how to optimize your aperture corresponding to the sharpness you need, and
c) effective aperture may be surprisingly easy to access, even with info you can get from a newbie user.
Here are some typical cases:
1. Modern Nikon body and lens: f_eff = camera setting
2. Canon body with macro lens: f_eff ~= camera setting*(m+1)
3. Lens on bellows or tubes at low magnification: f_eff ~= lens setting*(m+1)
4. Lens reversed on bellows or tubes at high magnification: f_eff ~= lens setting*(m+1)
5. Closeup lens on regular lens: f_eff = same as regular lens alone
6. Reversed combo, stopped in the rear: effective aperture = rear lens setting
7. Reversed combo, stopped in the front: f_eff ~= lens setting * m
8. Teleconverter with auto lens: f_eff adjustment is handled by camera
9. Microscope objective: f_eff = m/(2*NA)
I have the feeling that there's a great simplification here. Instead of having a large handful of complicated formulas, we have just one basic formula that's not very complicated, combined with a large handful of simple formulas to compute the parameter needed by the basic one. Throw in some decent way to determine magnification, let the user pick C, and you get a recommended aperture setting and DOF value at the same time.
It's late now, so I'm going to just post this out and come back tomorrow to read folks' reactions and try to answer whatever questions have come up.
One question is sure to come up so I'll address that now: haven't I ignored pupil ratio? Yes, I surely have. The rationale is that at low magnification P doesn't matter much, at high magnification P doesn't matter much either because typically you'll be reversing the lens, and at magnifications around 1:1 it would be strange to be using an asymmetric manual lens anyway. This reasoning fails on a few lenses like the 38 mm and 20 mm Olympus bellows macro lenses, because those have aperture values that are specified at infinity focus even though they're always used front-forward at high magnification. But the resulting error is not huge even for those -- the 20 just acts more like f/2.7 instead of f/2.0.
--Rik
Instead of using geometric optics based directly on the circle of confusion, I'm going to compute DOF using wave optics, based on the effective f-number and looking at wavefront error. Then I'll get at circle of confusion indirectly, by using that to determine what f-number we should be using in the first place in order for diffraction to play nicely with that circle of confusion.
I warn you that this is probably going to look a little crazy, but I think it has some advantages in being simpler to think about once you get the hang of it.
Notation:
f_eff is the effective f-number, as seen by the camera sensor
TDF is the total depth of field, front to back limit, as determined by the criterion of 1/4-lambda wavefront error
NA is the subject-side numerical aperture
m is the magnification, from subject to sensor.
C is the diameter of the circle of confusion. We're going to take C as being proportional to the Airy disk diameter implied by the effective f-number, and pick one to match the other.
Basic formulas...
Let's take it as always true that:
TDF = lambda/NA^2 [1/4-lambda wavefront error, lambda = 0.00055 mm for green light]
NA = m/(2*f_eff)
and correspondingly
f_eff = m/(2*NA)
Doing the algebra, we have immediately that
TDF = lambda*4*f_eff^2/m^2
Now, for the sake of illustration let's choose to associate f_eff = 11 with C = 0.012. This corresponds to a rule of thumb that f/11 is the smallest aperture you can use on an APS sensor without losing resolution even at actual pixels (C ~= 1/2300 of sensor diagonal). It turns out this also makes C just a little smaller than the diameter of the Airy disk.
Then in general for other values of C we can say that a good choice is:
f_eff = 917*C [917=11/0.012, so scaling the aperture to match our choice of C]
Now we're set to look at some calculations.
Suppose we're using a 10X NA 0.25 microscope objective. Then we have that
f_eff = 10/(2*0.25) = 20
TDF = 0.00055*4*20^2/10^2 = 0.0088
You'll notice that this is just equal to the first term of microscopyu's formula.
On the other hand, at 1:1 and effective f/11, we have
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*11^2/1^2 = 0.2662
The traditional formula would come at this case from a different direction, using a nominal lens aperture of f/5.5 (effective f/11 at 1:1) and calculating as
TDF = 2*C*N*(m+1)/m^2 = 2*0.012*5.5*(1+1)/1^2 = 0.264
The results are a little different, about 1%. If we wanted them to come out exact, we could tweak the relationship between f_eff and C to make that happen. But forging ahead...
As another example, at 0.5X and effective f/11, we have
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*11^2/0.5^2 = 1.065
The traditional formula would use a nominal aperture of f/7.33 (=11/(0.5+1), producing effective f/11), so
TDF = 2*C*N*(m+1)/m^2 = 2*0.012*7.33*(0.5+1)/0.5^2 = 1.056
Again the numbers are slightly different, and by no coincidence it's by 1%, the same amount as before.
We can change sensor size by altering C and f_eff. If we're just scaling up the sensor to full-frame, without changing our criterion for final sharpness, then we'll need C = 0.012*1.6 = 0.0192 and f/17.6. Of course the magnification also has to increase by 1.6 in order to image the same subject size.
In that case the calculated TDF for what was the f/11 m=0.5 case is now f/17.6 m=0.8, and the calculations go like this:
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*17.6^2/0.8^2 = 1.065
TDF = 2*C*N*(m+1)/m^2 = 2*0.0192*9.78*(0.8+1)/0.8^2 = 1.056
It's important to notice that these are exactly the same TDF values that we got with the smaller sensor. When you change the sensor size, and you adjust the magnification to shoot the same size subject, and you adjust the aperture to get the same amount of diffraction blur, then you also get the same DOF, and vice versa. The only difference is that with the bigger sensor you get to use a smaller aperture setting on the lens (f/9.78 instead of f/7.3 in this case).
Let's try another one. How about m=3 with C=0.025 -- maybe we're shooting a small subject on an APS sensor but we don't care about pixel-peeping.
So, compute as:
f_eff = 917*C = 917*0.025 = f/23. (Makes sense -- we can tolerate more diffraction blur with the larger circle of confusion.)
TDF = lambda*4*f_eff^2/m^2 = 0.00055*4*23^2/3^2 = 0.129
Now, if we're shooting with an ordinary lens on extension, to get f/23 at m=3 means that we need an aperture setting of 23/(3+1) = f/5.75.
The classic calculation would be
TDF = 2*C*N*(m+1)/m^2 = 2*0.025*5.75*(3+1)/3^2 = 0.128 (There's that 1% difference again -- attributable to the scaling between C and f_eff.)
Your eyes may be glazed over by the numbers at this point. Mine too. Let's take a break from the numbers and think about why this formulation is useful.
It's useful because
a) it matches the physics (including diffraction),
b) it tells you how to optimize your aperture corresponding to the sharpness you need, and
c) effective aperture may be surprisingly easy to access, even with info you can get from a newbie user.
Here are some typical cases:
1. Modern Nikon body and lens: f_eff = camera setting
2. Canon body with macro lens: f_eff ~= camera setting*(m+1)
3. Lens on bellows or tubes at low magnification: f_eff ~= lens setting*(m+1)
4. Lens reversed on bellows or tubes at high magnification: f_eff ~= lens setting*(m+1)
5. Closeup lens on regular lens: f_eff = same as regular lens alone
6. Reversed combo, stopped in the rear: effective aperture = rear lens setting
7. Reversed combo, stopped in the front: f_eff ~= lens setting * m
8. Teleconverter with auto lens: f_eff adjustment is handled by camera
9. Microscope objective: f_eff = m/(2*NA)
I have the feeling that there's a great simplification here. Instead of having a large handful of complicated formulas, we have just one basic formula that's not very complicated, combined with a large handful of simple formulas to compute the parameter needed by the basic one. Throw in some decent way to determine magnification, let the user pick C, and you get a recommended aperture setting and DOF value at the same time.
It's late now, so I'm going to just post this out and come back tomorrow to read folks' reactions and try to answer whatever questions have come up.
One question is sure to come up so I'll address that now: haven't I ignored pupil ratio? Yes, I surely have. The rationale is that at low magnification P doesn't matter much, at high magnification P doesn't matter much either because typically you'll be reversing the lens, and at magnifications around 1:1 it would be strange to be using an asymmetric manual lens anyway. This reasoning fails on a few lenses like the 38 mm and 20 mm Olympus bellows macro lenses, because those have aperture values that are specified at infinity focus even though they're always used front-forward at high magnification. But the resulting error is not huge even for those -- the 20 just acts more like f/2.7 instead of f/2.0.
--Rik
Looks fine (so far!)
One query on point 1, about Nikon lenses. I don't have any modern G Micros, for example but I think there's room for confusion. The 55mm f/2.8 manual ( still available, or was until very recently) doesn't do anything clever about the aperture as you focus. The really old 55 f/3.5 had a compensating aperture, but as far as I know that was unique.
One query on point 1, about Nikon lenses. I don't have any modern G Micros, for example but I think there's room for confusion. The 55mm f/2.8 manual ( still available, or was until very recently) doesn't do anything clever about the aperture as you focus. The really old 55 f/3.5 had a compensating aperture, but as far as I know that was unique.
Last edited by ChrisR on Mon May 13, 2013 6:04 pm, edited 1 time in total.
-
- Posts: 187
- Joined: Tue Jan 20, 2009 2:59 pm
- Location: Berwickshire, Scotland
Rik,
This is very interesting. Has made a middle aged man think about some algebra that has been lying fallow for well over 30 years now.
Your typical case 9 - Microscope objective -has me wondering whether this is the same whether it is a finite objective on opticless extension such as tubes or bellows and an intinite lens using a tube lens for focus.
You can tell that I went to a school where you could do any two from physics, chemistry and biology. Physics was the lucky one - I chose the other two.
Best,
Peter
This is very interesting. Has made a middle aged man think about some algebra that has been lying fallow for well over 30 years now.
Your typical case 9 - Microscope objective -has me wondering whether this is the same whether it is a finite objective on opticless extension such as tubes or bellows and an intinite lens using a tube lens for focus.
You can tell that I went to a school where you could do any two from physics, chemistry and biology. Physics was the lucky one - I chose the other two.
Best,
Peter
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
For practical purposes it is the same. Manufacturers accurately specify NA for the objective used as designed, and the relationship that f_eff = m/(2*NA) is always true. If you change magnification by altering focus, then the objective moves farther or closer to the subject. This does change NA and f_eff, but the change is small compared to all the other uncertainties surrounding DOF.Peter M. Macdonald wrote:Your typical case 9 - Microscope objective -has me wondering whether this is the same whether it is a finite objective on opticless extension such as tubes or bellows and an intinite lens using a tube lens for focus.
--Rik
-
- Posts: 187
- Joined: Tue Jan 20, 2009 2:59 pm
- Location: Berwickshire, Scotland
Rik,
Many thanks for assuaging my curiosity.
When I was setting up I used the calculators in the spreadshhets on Charles Krebs website as a rough guide and then ran some tests. Seems that, no matter how good the maths, a quick set of tests is inevitable at some stage of the process. It avoids the risk of user (maths) errors!
Peter
Many thanks for assuaging my curiosity.
When I was setting up I used the calculators in the spreadshhets on Charles Krebs website as a rough guide and then ran some tests. Seems that, no matter how good the maths, a quick set of tests is inevitable at some stage of the process. It avoids the risk of user (maths) errors!
Peter
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
Good information -- thanks!ChrisR wrote:One query on point 1, about Nikon lenses. I don't have any modern G Micros, for example but I think there's room for confusion. The 55mm f/2.8 manual ( still available, or was until very recently) doesn't do anything clever abou the aperture as you focus. The really old 55 f/3.5 had a compensating aperture, but as far as I know that was unique.
Most of what I know about Nikons is second-hand, from reading.
If somebody asks me about a particular body/lens combination, I will have to suggest an empirical test: see if changing focus also changes the maximum aperture as reported by the body. If it does, I think you can assume that what's being shown is effective aperture. If it doesn't, then either a) what's being shown is nominal aperture, or b) the lens has such a short focus range that the effective aperture doesn't change enough to matter.
If that test is not valid, please let me know how it fails.
--Rik
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
I recently was pointed to a paper that has a more accurate formula for DOF at 1/4-lambda wavefront error as a function of NA. (Thanks, michael_r!)
Above, I wrote that
deltaZ_BW = lambda/(2*NA^2)
while the more accurate formula is
deltaZ = lambda/(4*n*(1-sqrt(1-(NA/n)^2))) [n = refractive index of media, typically 1 for our purposes]
The lambda/NA^2 form is an asymptotic expansion of the more accurate formula. The relative error grows only a little faster than NA^2. It is about 1.6% at NA 0.25, 7.2% at NA=0.50, 9% at NA 0.55, increasing to 25% at NA 0.80 and larger beyond that.
The reference is "Depth-of-Focus in Microscopy" by Young, Zagers, van Vliet, Mullikin, Boddeke, and Netten at Delft University of Technology, published in SCIA ’93, Proc. 8th Scandinavian Conference on Image Analysis, Tromso, Norway, 1993, 493-498. Google search finds a copy at https://www.researchgate.net/publicatio ... Microscopy.
--Rik
Edit: Aug 23, 2017, to add final matching parenthesis at end of formula.
Edit: Jan 4, 2021, to fix broken link
Above, I wrote that
Using the notation of the paper, the above formula corresponds toLet's take it as always true that:
TDF = lambda/NA^2
deltaZ_BW = lambda/(2*NA^2)
while the more accurate formula is
deltaZ = lambda/(4*n*(1-sqrt(1-(NA/n)^2))) [n = refractive index of media, typically 1 for our purposes]
The lambda/NA^2 form is an asymptotic expansion of the more accurate formula. The relative error grows only a little faster than NA^2. It is about 1.6% at NA 0.25, 7.2% at NA=0.50, 9% at NA 0.55, increasing to 25% at NA 0.80 and larger beyond that.
The reference is "Depth-of-Focus in Microscopy" by Young, Zagers, van Vliet, Mullikin, Boddeke, and Netten at Delft University of Technology, published in SCIA ’93, Proc. 8th Scandinavian Conference on Image Analysis, Tromso, Norway, 1993, 493-498. Google search finds a copy at https://www.researchgate.net/publicatio ... Microscopy.
--Rik
Edit: Aug 23, 2017, to add final matching parenthesis at end of formula.
Edit: Jan 4, 2021, to fix broken link
Last edited by rjlittlefield on Wed Aug 23, 2017 8:01 am, edited 1 time in total.
Rik,
Most interesting and a welcome alternative to the standard approaches.
Does the MPE-65 lens, with its mechanical and optical acrobatics, pose any significant difficulties in applying these equations to estimate its DOF characteristics as a function of magnification and nominal f-stop?
Most interesting and a welcome alternative to the standard approaches.
Does the MPE-65 lens, with its mechanical and optical acrobatics, pose any significant difficulties in applying these equations to estimate its DOF characteristics as a function of magnification and nominal f-stop?
-Phil
"Diffraction never sleeps"
"Diffraction never sleeps"
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
Well, the MP-E 65 is one of those lenses that changes focal length as it extends.DQE wrote:Does the MPE-65 lens, with its mechanical and optical acrobatics, pose any significant difficulties in applying these equations to estimate its DOF characteristics as a function of magnification and nominal f-stop?
In general, the challenge with such lenses is trying to determine just what f-number they're actually running at, as opposed to what the label says.
For the MP-E 65, this actually turns out to be no big deal. If it were an ideal lens, its ratio of exposure times between 1X and 5X would be (1+1)^2 : (5+1)^2 = 1:9. I just now measured the beast and got an exposure time ratio of 1:8, which is within measurement error for the test.
My Canon 100 mm f/2.8L macro is also well behaved, exhibiting an exposure time ratio of 1:4 between infinity focus and 1X. Likewise for my Sigma 105 mm f/2.8 EX.
I have heard tales of other macro lenses that only lose one stop between infinity and 1X, not two stops as would be expected from standard theory. I haven't observed that personally, however.
--Rik
-
- Posts: 233
- Joined: Thu Jan 05, 2012 9:10 am
- Contact:
Please forgive me for being math-challenged, but regarding:
are the units for the 0.264 figure millimeters?
The traditional formula would come at this case from a different direction, using a nominal lens aperture of f/5.5 (effective f/11 at 1:1) and calculating as
TDF = 2*C*N*(m+1)/m^2 = 2*0.012*5.5*(1+1)/1^2 = 0.264
are the units for the 0.264 figure millimeters?
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
That doesn't sound "math-challenged to me" -- good question!Peter De Smidt wrote:are the units for the 0.264 figure millimeters?
In that formula all of the variables are "dimensionless" except for C. As a result, if C is specified in millimeters, that's the unit of the result also. If you specify C in inches, the result comes out that way too.
It's the same way in the other formulas, except that there lambda provides the units.
--Rik
-
- Posts: 233
- Joined: Thu Jan 05, 2012 9:10 am
- Contact:
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
That's what I get. The number corresponds to the classic DOF formula with CoC = 0.0088 mm. That's obviously a stringent criterion but it seems completely in line with pixel-peeping an f/8 effective aperture.So for green light with a ¼ lambda wavefront error and an f4 lens at 1:1, would we get:
TDF = 0.00055mm * 4*8^2/1^2 = 0.1408mm ?
--Rik
-
- Posts: 233
- Joined: Thu Jan 05, 2012 9:10 am
- Contact:
- rjlittlefield
- Site Admin
- Posts: 24057
- Joined: Tue Aug 01, 2006 8:34 am
- Location: Richland, Washington State, USA
- Contact:
Here's a work in progress that may be helpful.
What I've done is to construct a "DOF Two Ways" spreadsheet.
Way #1 is a classic DOF calculation based on circle of confusion, working from sensor dimensions and using a stringent spec of 2.5 pixels per CoC.
Way #2 is a wave optics calculation based on 1/4 lambda wavefront error as outlined above, using lambda = 0.00055.
The final output is two things:
1. A suggested step size = 0.8*max(Way#1,Way#2)
2. A note about whether the system is "diffraction limited", "sensor limited" or "near optimum", based on whether the two Ways are within 10% of each other.
I've posted it out as an Excel 2003 spreadsheet.
Here are sample screenshots:
This has not been checked very carefully. All comments appreciated!
--Rik
EditCR Search tag: DOF two ways
What I've done is to construct a "DOF Two Ways" spreadsheet.
Way #1 is a classic DOF calculation based on circle of confusion, working from sensor dimensions and using a stringent spec of 2.5 pixels per CoC.
Way #2 is a wave optics calculation based on 1/4 lambda wavefront error as outlined above, using lambda = 0.00055.
The final output is two things:
1. A suggested step size = 0.8*max(Way#1,Way#2)
2. A note about whether the system is "diffraction limited", "sensor limited" or "near optimum", based on whether the two Ways are within 10% of each other.
I've posted it out as an Excel 2003 spreadsheet.
Here are sample screenshots:
This has not been checked very carefully. All comments appreciated!
--Rik
EditCR Search tag: DOF two ways