Grating

class esis.optics.grating.Grating(name=<factory>, piston=<Quantity 0. mm>, cylindrical_radius=<Quantity 0. mm>, cylindrical_azimuth=<Quantity 0. deg>, inclination=<Quantity 0. deg>, roll=<Quantity 0. deg>, twist=<Quantity 0. deg>, tangential_radius=<Quantity inf mm>, sagittal_radius=<Quantity inf mm>, nominal_input_angle=<Quantity 0. deg>, nominal_output_angle=<Quantity 0. deg>, diffraction_order=<Quantity 0.>, ruling_density=<Quantity 0. 1 / mm>, ruling_density_coeff_linear=<Quantity 0. 1 / mm2>, ruling_density_coeff_quadratic=<Quantity 0. 1 / mm3>, ruling_density_coeff_cubic=<Quantity 0. 1 / mm4>, aper_wedge_angle=<Quantity 0. deg>, inner_half_width=<Quantity 0. mm>, outer_half_width=<Quantity 0. mm>, border_width=<Quantity 0. mm>, inner_border_width=<Quantity 0. mm>, dynamic_clearance=<Quantity 0. mm>, substrate_thickness=<Quantity 0. mm>)

Bases: kgpy.optics.component.CylindricalComponent

__init__(name=<factory>, piston=<Quantity 0. mm>, cylindrical_radius=<Quantity 0. mm>, cylindrical_azimuth=<Quantity 0. deg>, inclination=<Quantity 0. deg>, roll=<Quantity 0. deg>, twist=<Quantity 0. deg>, tangential_radius=<Quantity inf mm>, sagittal_radius=<Quantity inf mm>, nominal_input_angle=<Quantity 0. deg>, nominal_output_angle=<Quantity 0. deg>, diffraction_order=<Quantity 0.>, ruling_density=<Quantity 0. 1 / mm>, ruling_density_coeff_linear=<Quantity 0. 1 / mm2>, ruling_density_coeff_quadratic=<Quantity 0. 1 / mm3>, ruling_density_coeff_cubic=<Quantity 0. 1 / mm4>, aper_wedge_angle=<Quantity 0. deg>, inner_half_width=<Quantity 0. mm>, outer_half_width=<Quantity 0. mm>, border_width=<Quantity 0. mm>, inner_border_width=<Quantity 0. mm>, dynamic_clearance=<Quantity 0. mm>, substrate_thickness=<Quantity 0. mm>)

Initialize self. See help(type(self)) for accurate signature.

Parameters
Return type

None

Attributes

aper_wedge_angle

aper_wedge_half_angle

rtype

astropy.units.Quantity

border_width

cylindrical_azimuth

cylindrical_radius

dataframe

rtype

pandas.DataFrame

diffraction_order

dynamic_clearance

dynamic_clearance_x

inclination

inner_border_width

inner_half_width

is_toroidal

rtype

bool

is_vls

rtype

bool

nominal_input_angle

nominal_output_angle

outer_half_width

piston

roll

ruling_density

ruling_density_coeff_cubic

ruling_density_coeff_linear

ruling_density_coeff_quadratic

sagittal_radius

substrate_thickness

surface

rtype

kgpy.optics.surface.Surface[kgpy.optics.surface.sag.Toroidal, kgpy.optics.surface.material.Mirror, kgpy.optics.surface.aperture.IsoscelesTrapezoid, kgpy.optics.surface.aperture.IsoscelesTrapezoid, kgpy.optics.surface.rulings.CubicPolyDensity]

tangential_radius

transform

rtype

kgpy.transform.rigid.TransformList

twist

Methods

__init__([name, piston, cylindrical_radius, …])

Initialize self.

apply_gregorian_layout(magnification, …)

Computes an optimal placement for the grating based on the magnification, the primary location and the detector location.

apply_poletto_prescription(wavelength_1, …)

rtype

esis.optics.grating.Grating

copy()

rtype

esis.optics.grating.Grating

diffraction_angle(wavelength[, input_angle])

Inheritance Diagram

Inheritance diagram of esis.optics.grating.Grating

apply_gregorian_layout(magnification, primary_focal_length, primary_clear_radius, back_focal_length, detector_cylindrical_radius, obscuration_margin)

Computes an optimal placement for the grating based on the magnification, the primary location and the detector location. Based off of the procedure developed by Charles Kankelborg in SPIDER/spider/optics/design/configurations.ipynb :type magnification: astropy.units.Quantity :param magnification: Requested magnification of the Gregorian telescope :type primary_focal_length: astropy.units.Quantity :param primary_focal_length: Focal length of the parabolic primary mirror. :type primary_clear_radius: astropy.units.Quantity :param primary_clear_radius: Radius of the usable area on the primary mirror :type back_focal_length: astropy.units.Quantity :param back_focal_length: Distance from apex of primary to center of detector projected on the z-axis. :type detector_cylindrical_radius: astropy.units.Quantity :param detector_cylindrical_radius: Radial distance from the center of the detector to the axis of symmetry :type obscuration_margin: astropy.units.Quantity :param obscuration_margin: Size of the unusable border around the outside of the grating. :rtype: esis.optics.grating.Grating :return: A new :py:class:esis.optics.components.Grating instance.

Parameters
Return type

esis.optics.grating.Grating

apply_poletto_prescription(wavelength_1, wavelength_2, magnification, primary_focal_length, detector_cylindrical_radius, is_toroidal=False, is_vls=False)
Return type

esis.optics.grating.Grating

Parameters
copy()
Return type

esis.optics.grating.Grating

diffraction_angle(wavelength, input_angle=<Quantity 0. deg>)
Parameters
aper_wedge_angle: astropy.units.Quantity = <Quantity 0. deg>
property aper_wedge_half_angle
Return type

astropy.units.Quantity

border_width: astropy.units.Quantity = <Quantity 0. mm>
cylindrical_azimuth: astropy.units.Quantity = <Quantity 0. deg>
cylindrical_radius: astropy.units.Quantity = <Quantity 0. mm>
property dataframe
Return type

pandas.DataFrame

diffraction_order: astropy.units.Quantity = <Quantity 0.>
dynamic_clearance: astropy.units.Quantity = <Quantity 0. mm>
property dynamic_clearance_x
inclination: astropy.units.Quantity = <Quantity 0. deg>
inner_border_width: astropy.units.Quantity = <Quantity 0. mm>
inner_half_width: astropy.units.Quantity = <Quantity 0. mm>
property is_toroidal
Return type

bool

property is_vls
Return type

bool

name: kgpy.Name
nominal_input_angle: astropy.units.Quantity = <Quantity 0. deg>
nominal_output_angle: astropy.units.Quantity = <Quantity 0. deg>
outer_half_width: astropy.units.Quantity = <Quantity 0. mm>
piston: astropy.units.Quantity = <Quantity 0. mm>
roll: astropy.units.Quantity = <Quantity 0. deg>
ruling_density: astropy.units.Quantity = <Quantity 0. 1 / mm>
ruling_density_coeff_cubic: astropy.units.Quantity = <Quantity 0. 1 / mm4>
ruling_density_coeff_linear: astropy.units.Quantity = <Quantity 0. 1 / mm2>
ruling_density_coeff_quadratic: astropy.units.Quantity = <Quantity 0. 1 / mm3>
sagittal_radius: astropy.units.Quantity = <Quantity inf mm>
substrate_thickness: astropy.units.Quantity = <Quantity 0. mm>
property surface
Return type

kgpy.optics.surface.Surface[kgpy.optics.surface.sag.Toroidal, kgpy.optics.surface.material.Mirror, kgpy.optics.surface.aperture.IsoscelesTrapezoid, kgpy.optics.surface.aperture.IsoscelesTrapezoid, kgpy.optics.surface.rulings.CubicPolyDensity]

tangential_radius: astropy.units.Quantity = <Quantity inf mm>
property transform
Return type

kgpy.transform.rigid.TransformList

twist: astropy.units.Quantity = <Quantity 0. deg>