[SIM2D-146] Dichroic model is inconsistent between blue and red Created: 17/Dec/21  Updated: 22/Dec/21  Resolved: 22/Dec/21

Status: Done
Project: DRP 2-D Simulator
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Story Priority: Normal
Reporter: price Assignee: Kiyoto Yabe
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File dichroic.png     PNG File dichroic_revised.png     PNG File sim2d-146-nir.png     PNG File sim2d-146.png    
Reviewers: hassan

 Description   

The dichroic throughputs from pfs_thr_20201231_ext_all_*.dat have a sum that exceeds unity, which is unphysical.

import numpy as np
import matplotlib.pyplot as plt
blueData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20201231_ext_all_blu.dat")
redData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20201231_ext_all_red.dat")
wavelength = np.concatenate((blueData[:2600, 0], redData[:, 0]))
assert(np.all(blueData[2600:, 0] == redData[:401, 0]))
blue = np.zeros_like(wavelength)
blue[:3001] = blueData[:, 5]
red = np.zeros_like(wavelength)
red[2600:] = redData[:, 5]
total = blue + red
plt.plot(wavelength, blue, "b-")
plt.plot(wavelength, red, "r-")
plt.plot(wavelength, total, "k-")
plt.xlabel("Wavelength (nm)")
plt.ylabel("Dichroic transmission")
plt.suptitle("pfs_thr_20201231_ext_all_*.dat")
plt.show()


 Comments   
Comment by Kiyoto Yabe [ 21/Dec/21 ]

I just upload the new version (pfs_thr_20211220_ext_all_*.dat) to `drp_instdata`. The cause is that the reflectance of the blue dichroic used for the estimation is taken from the datasheet of the "witness sample". I could not find the proper estimation for the reflectance, so assume that reflectance = 1 - transmittance, but note that the absorption documented is 3-4% in average and might be severer in bluer part. Anyway, the updated version does not show any tip at the transition wavelength when blue and red are combined. 

Comment by price [ 22/Dec/21 ]

It looks like that with the new curves, the dichroic cutoff in the blue arm has moved 15 nm to shorter wavelengths, and the ripples on the blue arm have disappeared.
Comparing the ripples in the old curves with quartz spectra from PFI, I estimated the shift was about 10 nm.

I confirmed that the NIR is unaffected.

import numpy as np
import matplotlib.pyplot as plt
blueData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20201231_ext_all_blu.dat")
redData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20201231_ext_all_red.dat")
nirData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20201231_ext_all_nir.dat")
assert(np.all(blueData[2600:, 0] == redData[:401, 0]))
assert(np.all(redData[3150:, 0] == nirData[:401, 0]))
wavelength = np.concatenate((blueData[:2600, 0], redData[:, 0], nirData[401:, 0]))
blue = np.zeros_like(wavelength)
blue[:3001] = blueData[:, 9]
red = np.zeros_like(wavelength)
red[2600:6151] = redData[:, 9]
nir = np.zeros_like(wavelength)
nir[5750:] = nirData[:, 9]
total = blue + red + nir
plt.plot(wavelength, blue, "b:")
plt.plot(wavelength, red, "g:")
plt.plot(wavelength, nir, "r:")
plt.plot(wavelength, total, "k:", label="Old")
blueData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20211220_ext_all_blu.dat")
redData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20211220_ext_all_red.dat")
nirData = np.genfromtxt("../drp_instdata/data/throughput/pfs_thr_20211220_ext_all_nir.dat")
assert(np.all(blueData[2600:, 0] == redData[:401, 0]))
assert(np.all(redData[3150:, 0] == nirData[:401, 0]))
wavelength = np.concatenate((blueData[:2600, 0], redData[:, 0], nirData[401:, 0]))
blue = np.zeros_like(wavelength)
blue[:3001] = blueData[:, 9]
red = np.zeros_like(wavelength)
red[2600:6151] = redData[:, 9]
nir = np.zeros_like(wavelength)
nir[5750:] = nirData[:, 9]
total = blue + red + nir
plt.plot(wavelength, blue, "b-")
plt.plot(wavelength, red, "g-")
plt.plot(wavelength, nir, "r-")
plt.plot(wavelength, total, "k-", label="New")
plt.xlabel("Wavelength (nm)")
plt.ylabel("Transmission")
plt.legend()
plt.suptitle("Old vs New")
plt.show()
Comment by price [ 22/Dec/21 ]

I've updated the simulator to use the new throughput curves provided by Kiyoto Yabe.

Comment by hassan [ 22/Dec/21 ]

No objections with suggested changes in pull requests.

Comment by price [ 22/Dec/21 ]

Thanks, Kiyoto Yabe and hassan.

Merged to master.

Generated at Sat Feb 10 16:09:02 JST 2024 using Jira 8.3.4#803005-sha1:1f96e09b3c60279a408a2ae47be3c745f571388b.