NAME

CXC::Optics::Prescription::LVS::Mirror - Parsing and extracting LVS mirror prescriptions

VERSION

version 0.01

SUBROUTINES

load_mirror_model

$model = CXC::Optics::Prescription::LVS::Mirror->load_mirror_model( $model_name );

Creates a CXC::Optics::Prescription::LVS::Mirror object from the pre-parsed model with the given name.

Available models are:

ek05lvs

parse_mirror_output

$model = parse_mrror_output( $file );

Creates a CXC::Optics::Prescription::LVS::Mirror object by parsing the output file written by LVS' mirror program.

METHODS

prescriptions

@prescriptions = $model->prescriptions;

Return the prescription for the model. Linear parameters are in mm. The prescriptions are returned as an array indexed off of the mirror number (1-6).

Each array element looks like this:

 {
     primary => {
	 d     => 2.49570504674018,
	 e     => 1,
	 'e-1' => 0,
	 zoff  => 10069.2189948357
     },
     secondary => {
	 d     => 2.49723582188823,
	 e     => 1.00024809920262,
	 'e-1' => 0.000248099202621096,
	 zoff  => 0
     },
 }

osac_prescriptions

@prescriptions = $model->osac_prescriptions;

Return the OSAC prescription for the model. Linear parameters are in mm. The prescriptions are returned as an array indexed off of the mirror number (1-6).

Each array element looks like this:

 {
     primary => {
	 k     => -2.49570504674018,
	 p     => 0,
	 rho_0 => 320.569777256348,
	 z_0   => 419.1
     },
     secondary => {
	 k     => -7.26202481526188,
	 p     => -0.000496259958456534,
	 rho_0 => 306.098516687762,
	 z_0   => 1338.1
     },
 }

axial_distances

@distances = $model->axial_distances;

Return the axial distances in mm from the focal plane to the primary, secondary, and intersect plane for each shell.

The distances are returned as an array indexed off of the mirror number (1-6). Each array element looks like this:

{
    intersect_plane => -3.12348,
    primary         => {
        back  => 40.4,
        front => 878.6
    },
    secondary => {
        back  => -878.6,
        front => -40.4
    },
}

dimensions

@distances = $model->dimensions;

Return the optic and intersect plane dimensions, in mm. primary, secondary, and intersect plane for each shell.

The distances are returned as an array indexed off of the mirror number (1-6). Each array element looks like this:

{
    intersect_plane => {
        radius => 316.96956
    },
    primary => {
        length => 838.2,
        radius => {
            back  => 317.29022,
            front => 323.81612
        }
    },
    secondary => {
        length => 838.2,
        radius => {
            back  => 296.13584,
            front => 316.02294
        }
    },
}

grazing_angles

@angles = $model->grazing_angles;

Return the grazing angles, in radians.

The angles are returned as an array indexed off of the mirror number (1-6). Each array element looks like this:

{
    primary   => 0.0149014052178367,
    secondary => 0.0149201261086361
}

SEE ALSO

Please see those modules/websites for more information related to this module.

AUTHOR

Diab Jerius <djerius@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2018 by Smithsonian Astrophysical Observatory.

This is free software, licensed under:

The GNU General Public License, Version 3, June 2007