Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 13 additions & 12 deletions scopesim/optics/echelle.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ class SpectrographSetup:
def __init__(
self,
order_range: tuple,
final_wave: u.Quantity,
design_res: u.Quantity,
pixels_per_res_elem: float,
focal_length: u.Quantity,
grating: GratingSetup,
Expand All @@ -150,7 +150,7 @@ def __init__(
(and that the slit image is gaussian)

:param tuple order_range: order range of the spectrograph
:param u.Quantity final_wave: longest wavelength at the edge of detector
# :param u.Quantity final_wave: longest wavelength at the edge of detector
:param float pixels_per_res_elem: number of pixels per resolution element of spectrometer
:param u.Quantity focal_length: the focal length of the detector
:param GratingSetup grating: configured grating
Expand All @@ -162,7 +162,8 @@ def __init__(
order_range = order_range[::-1]
self.m0 = order_range[0]
self.m_max = order_range[1]
self.l0 = final_wave
self.l0 = grating.wave(grating.beta_center, order_range[0])*(1/order_range[0]/2+1)
self.design_res = design_res
self.grating = grating
self.detector = detector
self.focal_length = focal_length
Expand Down Expand Up @@ -444,14 +445,14 @@ def angular_dispersion(self):
beta = self.beta_for_x_pixel(np.arange(self.detector.n_pix_x) + .5)
return self.grating.angular_dispersion(self.orders[:, None], beta)

@property
def design_res(self):
"""
:return: design resolution for spectrometer
Assumes that m0 (the longest wavelength order) FSR fills detector with some sampling
"""
dlambda = self.fsr(self.m0) / self.detector.n_pix_x * self.nominal_pixels_per_res_elem
return self.l0 / dlambda
# @property
# def design_res(self):
# """
# :return: design resolution for spectrometer
# Assumes that m0 (the longest wavelength order) FSR fills detector with some sampling
# """
# dlambda = self.fsr(self.m0) / self.detector.n_pix_x * self.nominal_pixels_per_res_elem
# return self.l0 / dlambda

@property
def average_res(self):
Expand Down Expand Up @@ -489,7 +490,7 @@ def plot_echellogram(self, center_orders=True, title='', blaze=False, cross_disp
oset = waves[1] if center_orders else 0
plt.plot(waves - oset, [i] * 3, '*', color=f'C{ii}')
plt.plot(fsr_edges[ii] - oset, [i] * 2, '.', color=f'C{ii}',
label=f'$\lambda=${waves[1]:.0f}')
label=f'$\\lambda=${waves[1]:.0f}')
plt.legend()
plt.xlabel('Center relative wavelength (nm)')
plt.ylabel('Order')
Expand Down
Loading