as_built#

esis.flights.f1.optics.as_built(grid=None, axis_channel='channel', num_distribution=11)[source]#

Load the as-built optical model.

Based on design(), but includes efficiency and figure measurements of the primary mirror and gratings, as well as gain measurements of the sensor.

Parameters:
  • grid (None | ObjectVectorArray) – sampling of wavelength, field, and pupil positions that will be used to characterize the optical system.

  • axis_channel (str) – The name of the logical axis corresponding to changing camera channel.

  • num_distribution (int) – number of Monte Carlo samples to draw when computing uncertainties

Return type:

Instrument

Examples

Load the as-built optical model and print its parameters.

import esis

esis.flights.f1.optics.as_built()
Instrument(
    name='ESIS 1 final design (all channels)',
    axis_channel='channel',
    front_aperture=<esis.optics._front_apertures._front_apertures.FrontAperture object at 0x7f7f74981710>,
    central_obscuration=CentralObscuration(
        num_folds=8,
        halfwidth=35.31326554 mm,
        remove_last_vertex=True,
        translation=Cartesian3dVectorArray(
            x=0. mm,
            y=0. mm,
            z=-1404.27 mm,
        ),
    ),
    primary_mirror=PrimaryMirror(
        sag=ParabolicSag(
            transformation=None,
            parameters_slope_error=SlopeErrorParameters(
                step_size=4. mm,
                kernel_size=2. mm,
            ),
            parameters_roughness=RoughnessParameters(
                period_min=0.06 mm,
                period_max=6. mm,
            ),
            parameters_microroughness=RoughnessParameters(
                period_min=1.6 um,
                period_max=70. um,
            ),
            focal_length=-1000. mm,
        ),
        num_folds=8,
        width_clear=143.94043117 mm,
        width_border=5.35850129 mm,
        material=MultilayerMirror(
            layers=[
                Layer(
                    chemical='SiO2',
                    thickness=1. nm,
                    interface=ErfInterfaceProfile(
                        width=3.44068978 nm,
                    ),
                    kwargs_plot={'color': 'tab:blue', 'alpha': 0.3},
                    x_label=None,
                ),
                Layer(
                    chemical='SiC',
                    thickness=21.27827884 nm,
                    interface=ErfInterfaceProfile(
                        width=3.44068978 nm,
                    ),
                    kwargs_plot={'color': 'tab:blue', 'alpha': 0.5},
                    x_label=None,
                ),
                Layer(
                    chemical='Cr',
                    thickness=5. nm,
                    interface=ErfInterfaceProfile(
                        width=1.77840007 nm,
                    ),
                    kwargs_plot={'color': 'tab:orange', 'alpha': 0.5},
                    x_label=None,
                ),
            ],
            substrate=Layer(
                chemical='SiO2',
                thickness=30. mm,
                interface=ErfInterfaceProfile(
                    width=5.53 Angstrom,
                ),
                kwargs_plot={'color': 'gray', 'alpha': 0.5},
                x_label=None,
            ),
        ),
        translation=Cartesian3dVectorArray(
            x=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=226517010644876146012603463990931304658,
            ),
            y=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=95183709586175856128175191520637517920,
            ),
            z=0. mm,
        ),
        pitch=0. deg,
        yaw=0. deg,
        roll=0. deg,
    ),
    field_stop=FieldStop(
        num_folds=8,
        radius_clear=1.82 mm,
        radius_mechanical=2.81 mm,
        translation=Cartesian3dVectorArray(
            x=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=226517010644876146012603463990931304658,
            ),
            y=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=95183709586175856128175191520637517920,
            ),
            z=-1000. mm,
        ),
    ),
    grating=Grating(
        serial_number=ScalarArray(
            ndarray=['89025', '89024', '89026', '89027'],
            axes=('channel',),
        ),
        manufacturing_number=ScalarArray(
            ndarray=['UBO-16-024', 'UBO-16-017', 'UBO-16-019', 'UBO-16-014'],
            axes=('channel',),
        ),
        angle_input=1.301 deg,
        angle_output=8.057 deg,
        sag=SphericalSag(
            transformation=None,
            parameters_slope_error=SlopeErrorParameters(
                step_size=2. mm,
                kernel_size=1. mm,
            ),
            parameters_roughness=RoughnessParameters(
                period_min=0.024 mm,
                period_max=2.4 mm,
            ),
            parameters_microroughness=RoughnessParameters(
                period_min=0.02 um,
                period_max=2. um,
            ),
            radius=ScalarArray(
                ndarray=[596.88      , 597.05333333, 597.04333333, 597.19166667] mm,
                axes=('channel',),
            ),
        ),
        material=MultilayerMirror(
            layers=[
                Layer(
                    chemical='SiO2',
                    thickness=1. nm,
                    interface=ErfInterfaceProfile(
                        width=1. nm,
                    ),
                    kwargs_plot={'color': 'gray'},
                    x_label=1.1,
                ),
                Layer(
                    chemical=Chemical(
                        formula='SiC',
                        is_amorphous=True,
                        table='kortright',
                    ),
                    thickness=9.60594508 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'lightgray'},
                    x_label=None,
                ),
                Layer(
                    chemical='Al',
                    thickness=4.80725357 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'lightblue'},
                    x_label=1.1,
                ),
                Layer(
                    chemical=Chemical(
                        formula='Mg',
                        is_amorphous=False,
                        table='fernandez_perea',
                    ),
                    thickness=26.62708342 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'pink'},
                    x_label=None,
                ),
                PeriodicLayerSequence(
                    layers=[
                        Layer(
                            chemical='Al',
                            thickness=1.20181339 nm,
                            interface=ErfInterfaceProfile(
                                width=1.90483881 nm,
                            ),
                            kwargs_plot={'color': 'lightblue'},
                            x_label=1.1,
                        ),
                        Layer(
                            chemical=Chemical(
                                formula='SiC',
                                is_amorphous=True,
                                table='kortright',
                            ),
                            thickness=9.60594508 nm,
                            interface=ErfInterfaceProfile(
                                width=1.90483881 nm,
                            ),
                            kwargs_plot={'color': 'lightgray'},
                            x_label=None,
                        ),
                        Layer(
                            chemical=Chemical(
                                formula='Mg',
                                is_amorphous=False,
                                table='fernandez_perea',
                            ),
                            thickness=26.62708342 nm,
                            interface=ErfInterfaceProfile(
                                width=1.90483881 nm,
                            ),
                            kwargs_plot={'color': 'pink'},
                            x_label=None,
                        ),
                    ],
                    num_periods=3,
                ),
                Layer(
                    chemical='Al',
                    thickness=12.01813392 nm,
                    interface=ErfInterfaceProfile(
                        width=1.90483881 nm,
                    ),
                    kwargs_plot={'color': 'lightblue'},
                    x_label=1.1,
                ),
            ],
            substrate=Layer(
                chemical='SiO2',
                thickness=10. mm,
                interface=ErfInterfaceProfile(
                    width=0.5 nm,
                ),
                kwargs_plot={'color': 'gray'},
                x_label=None,
            ),
        ),
        rulings=MeasuredRulings(
            spacing=Polynomial1dRulingSpacing(
                coefficients={0: UncertainScalarArray(
    nominal=0.00038677 mm,
    distribution=ScalarArray(
        ndarray=[0.00038689, 0.00038688, 0.00038688, 0.00038667, 0.00038685, 0.00038688, 0.00038665, 0.00038686,
                 0.00038674, 0.00038676, 0.0003869 ] mm,
        axes=('_distribution',),
    ),
), 1: UniformUncertainScalarArray(
    nominal=-3.3849e-05 um / mm,
    width=5.12e-07 um / mm,
    num_distribution=11,
    seed=232346222959711141178646004084998573027,
), 2: UniformUncertainScalarArray(
    nominal=-1.3625e-07 um / mm2,
    width=8.558e-09 um / mm2,
    num_distribution=11,
    seed=246284576950797729305202610819680288876,
)},
                normal=Cartesian3dVectorArray(x=1, y=0, z=0),
                transformation=None,
            ),
            diffraction_order=-1,
            efficiency_measured=FunctionArray(
                inputs=TemporalSpectralDirectionalVectorArray(
                    time=<Time object: scale='utc' format='iso' value=2018-01-21 00:00:00.000>,
                    wavelength=ScalarArray(
                        ndarray=[449.9605, 455.0952, 460.0931, 465.0887, 470.089 , 475.0917, 480.1014, 485.0828,
                                 490.0831, 495.0905, 500.0861, 505.0863, 510.089 , 515.1011, 520.0967, 525.0922,
                                 530.0902, 535.0858, 540.0861, 545.0816, 550.0914, 555.0869, 560.0919, 565.0899,
                                 570.0878, 575.0905, 580.0884, 585.0911, 590.0866, 595.0964, 600.0919, 605.0899,
                                 610.0925, 615.0952, 620.0931, 625.0934, 630.0843, 635.0822, 640.0896, 645.0875,
                                 650.0949, 655.0905, 660.0837, 665.0887, 670.0961, 675.0846, 680.0802, 685.0899,
                                 690.0902, 695.0881, 700.0908, 705.0863, 710.0984, 715.0916, 720.0754, 725.0852,
                                 730.0831, 735.0787, 740.0861, 745.0863, 750.0937, 755.0916, 760.0872, 765.0875,
                                 770.0902, 775.0881, 780.0837, 785.0911, 790.0866, 795.0893, 800.0802, 805.097 ,
                                 810.0902, 815.0881, 820.0837, 825.0911, 830.089 , 835.0893, 840.0943, 845.0875,
                                 850.0902, 855.0881, 860.0837, 865.0863, 870.0914, 875.0846, 880.092 , 885.0875,
                                 890.0878, 895.0928, 900.0861, 905.0887, 910.0914, 915.094 , 920.0967, 925.0852,
                                 930.0925, 935.0928, 940.0861, 945.0887, 950.0749] Angstrom,
                        axes=('wavelength',),
                    ),
                    direction=0. deg,
                ),
                outputs=ScalarArray(
                    ndarray=[0.12321582, 0.59322994, 0.31578597, 0.37807883, 0.17012928, 0.10194699, 0.18328038,
                             0.13686031, 0.17249875, 0.23871327, 0.29489931, 0.42754583, 0.47872766, 0.45725882,
                             0.46379642, 0.47099969, 0.49313259, 0.51549805, 0.53398935, 0.5273769 , 0.51934506,
                             0.51059013, 0.49531883, 0.48487497, 0.47691071, 0.4673829 , 0.45800468, 0.44929878,
                             0.44494296, 0.44225212, 0.43921125, 0.43504338, 0.4323591 , 0.43168854, 0.43338953,
                             0.43193699, 0.4241297 , 0.40739984, 0.38069944, 0.34527646, 0.30570771, 0.26643472,
                             0.23812677, 0.22188315, 0.22124548, 0.23516671, 0.25738814, 0.28634021, 0.32160106,
                             0.34335857, 0.35209299, 0.35816431, 0.34814608, 0.33287109, 0.31726986, 0.29441473,
                             0.29216422, 0.29250187, 0.2702469 , 0.26815913, 0.2805732 , 0.28988671, 0.27849082,
                             0.29253054, 0.27877292, 0.33070687, 0.29231947, 0.32340672, 0.26830668, 0.36282648,
                             0.34440822, 0.26244641, 0.2573431 , 0.29912549, 0.29644082, 0.19558709, 0.34615717,
                             0.27346896, 0.32036365, 0.29543568, 0.24915719, 0.23839011, 0.34789841, 0.31262912,
                             0.30885046, 0.27228885, 0.34258837, 0.34673988, 0.37144668, 0.19229355, 0.39421528,
                             0.24486465, 0.18794816, 0.16429062, 0.35197533, 0.35929711, 0.58378151, 0.06519925,
                             0.46418769, 0.26846698, 0.04033995] ,
                    axes=('wavelength',),
                ),
            ),
        ),
        num_folds=8,
        halfwidth_inner=8.44 mm,
        halfwidth_outer=8.49 mm,
        width_border=2. mm,
        width_border_inner=4.58 mm,
        clearance=1.25 mm,
        distance_radial=20.74999998 mm,
        azimuth=ScalarArray(
            ndarray=[ 22.5,  67.5, 112.5, 157.5] deg,
            axes=('channel',),
        ),
        translation=Cartesian3dVectorArray(
            x=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=41792238686590709238851148085102527943,
            ),
            y=UniformUncertainScalarArray(
                nominal=0. mm,
                width=1. mm,
                num_distribution=11,
                seed=326574870314761778921838808770752765887,
            ),
            z=UniformUncertainScalarArray(
                nominal=-1374.7 mm,
                width=1.52752523e-05 m,
                num_distribution=11,
                seed=181586654684763442938221698362194593491,
            ),
        ),
        pitch=0. deg,
        yaw=-4.46956724 deg,
        roll=UniformUncertainScalarArray(
            nominal=0. deg,
            width=0.013 rad,
            num_distribution=11,
            seed=119006905788397241892811886337951901887,
        ),
    ),
    filter=Filter(
        material=ThinFilmFilter(
            layer=Layer(
                chemical='Al',
                thickness=100. nm,
                interface=None,
                kwargs_plot={'color': 'lightgray'},
                x_label=None,
            ),
            layer_oxide=Layer(
                chemical=Chemical(
                    formula='Al2O3',
                    is_amorphous=True,
                    table='palik',
                ),
                thickness=4. nm,
                interface=None,
                kwargs_plot={'color': 'gray'},
                x_label=1.1,
            ),
            mesh=Mesh(
                chemical='Ni',
                efficiency=0.82,
                pitch=70. 1 / inch,
            ),
        ),
        radius_clear=15. mm,
        width_border=0. mm,
        distance_radial=95.9 mm,
        azimuth=ScalarArray(
            ndarray=[ 22.5,  67.5, 112.5, 157.5] deg,
            axes=('channel',),
        ),
        translation=Cartesian3dVectorArray(
            x=0. mm,
            y=0. mm,
            z=-73.03800115 mm,
        ),
        pitch=0. deg,
        yaw=-3.45 deg,
        roll=45. deg,
    ),
    camera=Camera(
        sensor=Sensor(
            manufacturer='Teledyne/e2v',
            family='CCD230-42',
            serial_number=ScalarArray(
                ndarray=['SN6', 'SN7', 'SN9', 'SN10'],
                axes=('channel',),
            ),
            grade=None,
            material=BackIlluminatedSiliconSensorMaterial(
                temperature=-55. deg_C,
                thickness_oxide=46.10949654 Angstrom,
                thickness_implant=1534.88639638 Angstrom,
                thickness_substrate=14. um,
                roughness_oxide=0. nm,
                roughness_substrate=4.75030484 nm,
                cce_backsurface=0.33363706 ,
                depletion=JanesickDepletionModel(
                    thickness=8.65712287 um,
                    thickness_substrate=15. um,
                    chemical_substrate=Chemical(
                        formula='Si',
                        is_amorphous=False,
                        table=None,
                    ),
                    width_pixel=16. um,
                    mcc_measured=FunctionArray(
                        inputs=ScalarArray(
                            ndarray=[13.30879333, 13.28556681,  8.33803919,  8.33803919] Angstrom,
                            axes=('wavelength',),
                        ),
                        outputs=ScalarArray(
                            ndarray=[0.5285 , 0.5525 , 0.66425, 0.65825],
                            axes=('wavelength',),
                        ),
                    ),
                ),
                eqe_measured=FunctionArray(
                    inputs=ScalarArray(
                        ndarray=[ 310.87339764,  248.16252631,  177.79605138,  138.14433194,  126.80929102,
                                  113.29934402,   95.46922635,   82.64966432,   62.22335483,   49.67136155,
                                   40.01037307,   31.08733976,   24.81625263,   22.57565249,   22.57565249,
                                   20.63010166,   19.10879346,   16.54287381,   13.75232488,   10.35353014,
                                    8.84291196,    7.75968039,    7.28528546,    6.87078344,    6.77852838,
                                    6.74805279,    6.71771422,    6.65744566,    6.5385258 ,  400.60240964,
                                  450.30120482,  500.        ,  549.69879518,  599.39759036,  649.09638554,
                                  698.79518072,  748.4939759 ,  798.19277108,  847.89156627,  897.59036145,
                                  947.28915663,  996.98795181, 1051.20481928, 1100.90361446, 1150.60240964,
                                 1200.30120482, 1250.        , 1295.18072289, 1349.39759036, 1399.09638554,
                                 1453.31325301, 1503.01204819, 1552.71084337, 1602.40963855, 1652.10843373,
                                 1701.80722892, 1751.5060241 , 1805.72289157, 1846.38554217, 1896.08433735,
                                 1954.81927711, 2000.        , 2045.18072289, 2099.39759036, 2149.09638554,
                                 2203.31325301, 2298.19277108, 2402.10843373, 2496.98795181, 2600.90361446,
                                 2700.30120482, 2799.69879518, 2903.61445783, 2998.4939759 , 3102.40963855,
                                 3201.80722892, 3301.20481928, 3400.60240964, 3504.51807229, 3603.91566265,
                                 3703.31325301, 3798.19277108, 3902.10843373, 3996.98795181] Angstrom,
                        axes=('wavelength',),
                    ),
                    outputs=ScalarArray(
                        ndarray=[0.68915663, 0.73855422, 0.79156627, 0.84939759, 0.85542169, 0.52771084, 0.44698795,
                                 0.48313253, 0.56144578, 0.65180723, 0.72650602, 0.83493976, 0.90963855, 0.91686747,
                                 0.91686747, 0.92650602, 0.95783133, 0.98795181, 1.01325301, 1.00843373, 0.89879518,
                                 0.78313253, 0.72048193, 0.67710843, 0.7       , 0.82168675, 0.90120482, 0.92771084,
                                 0.95783133, 0.61807229, 0.5686747 , 0.50843373, 0.42289157, 0.34698795, 0.2686747 ,
                                 0.1939759 , 0.14698795, 0.11686747, 0.10120482, 0.0939759 , 0.08433735, 0.08072289,
                                 0.07951807, 0.08554217, 0.08915663, 0.09156627, 0.11807229, 0.13012048, 0.13493976,
                                 0.13855422, 0.14457831, 0.14578313, 0.14578313, 0.14698795, 0.13975904, 0.13253012,
                                 0.1313253 , 0.13012048, 0.13012048, 0.13012048, 0.13012048, 0.1313253 , 0.1313253 ,
                                 0.13253012, 0.13253012, 0.1313253 , 0.13493976, 0.1373494 , 0.12168675, 0.11807229,
                                 0.10240964, 0.09759036, 0.10361446, 0.11807229, 0.14457831, 0.15903614, 0.16506024,
                                 0.17108434, 0.16746988, 0.16144578, 0.17831325, 0.22289157, 0.28313253, 0.33012048],
                        axes=('wavelength',),
                    ),
                ),
            ),
            width_pixel=15. um,
            num_pixel_x=2048,
            num_pixel_y=2064,
            num_blank=50,
            num_overscan=2,
            cte=99.9995 %,
            readout_noise=6. electron,
            readout_mode='transfer',
            width_package_x=42. mm,
            width_package_y=61. mm,
            distance_radial=108. mm,
            azimuth=ScalarArray(
                ndarray=[ 22.5,  67.5, 112.5, 157.5] deg,
                axes=('channel',),
            ),
            translation=Cartesian3dVectorArray(
                x=0. mm,
                y=0. mm,
                z=126.96199885 mm,
            ),
            pitch=0. deg,
            yaw=-12.252 deg,
            roll=0. deg,
            position_image=0. mm,
        ),
        gain=ScalarArray(
            ndarray=[[[2.55, 2.63],
                      [2.57, 2.57]],

                     [[2.57, 2.53],
                      [2.5 , 2.52]],

                     [[2.57, 2.59],
                      [2.53, 2.52]],

                     [[2.6 , 2.58],
                      [2.6 , 2.54]]] electron / DN,
            axes=('channel', 'tap_y', 'tap_x'),
        ),
        bits_adc=16,
        timedelta_exposure=10. s,
        timedelta_exposure_min=2. s,
        timedelta_exposure_max=600. s,
        timedelta_exposure_step=100. ms,
        timedelta_transfer=50. ms,
        timedelta_readout=1.1 s,
        axis_tap_x='tap_x',
        axis_tap_y='tap_y',
        timedelta_sync=1. ms,
        channel=ScalarArray(
            ndarray=[1, 2, 3, 4],
            axes=('channel',),
        ),
        channel_trigger=1,
    ),
    wavelength=629.77 Angstrom,
    field=Cartesian2dVectorLinearSpace(
        start=-1,
        stop=1,
        axis=Cartesian2dVectorArray(x='field_x', y='field_y'),
        num=11,
        endpoint=True,
        centers=True,
    ),
    pupil=Cartesian2dVectorLinearSpace(
        start=-1,
        stop=1,
        axis=Cartesian2dVectorArray(x='pupil_x', y='pupil_y'),
        num=11,
        endpoint=True,
        centers=True,
    ),
    pitch=0. deg,
    yaw=0. deg,
    roll=0. deg,
    kwargs_plot=None,
)