AIRY_Software_Package_5.1 - Help

Compiled by:


N.B.: This document contains the headers of the main routine xxx.pro of each module XXX, as well as the headers related to a couple of utilities. You can find more information about each routine of the AIRY_Software_Package_5.1 by editing the header of the routine itself, or alternatively by typing in the IDL prompt:

doc_library, "routine_name"

where routine_name is the string corresponding to the name of the routine (e.g. "n_phot", "adn_init", etc.).


the AIRY web-page
the CAOS web-page

Routine Descriptions

ADN

[Next Routine] [Top]
 NAME:
    ADN

 ROUTINE'S PURPOSE:
    ADN manages the simulation for the ADd Noise (ADN) module,
    that is to call the module's initialization routine (adn_init) at the first
    iteration of the simulation project.

 MODULE'S PURPOSE:
    ADN permits to add photon noise, background noise, read-out noise and
    dark-current noise to an image or a cube of images. ADN allows also to
	 simulate the saturation of the CCD as well as the perturbations due to 
    flat-field and bad-pixels.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = adn(inp_img_t, out_img_t, par, INIT=init)

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t: structure of type img_t.
    par      : parameters structure.

 INCLUDED OUTPUTS:
    out_img_t: structure of type "img_t" containing the characteristics of
               the noisy map, the following fields are contained in
               this structure:

out_img_t =                             $
  {                                     $
    data_type  : out_type[0]          , $
    data_status: !caos_data.valid     , $
    image      : noisy_map            , $ ; IMAGE with same resolution as PSF.
    npixel     : inp_img_t.npixel     , $ ; Number of pixels (per subaperture)
    resolution : inp_img_t.resolution , $ ; Pixel size [arcsec/pix]
    lambda     : inp_img_t.lambda     , $ ; Mean detection wavelength [m]
    width      : inp_img_t.width      , $ ; Wavelength band width [m]
    time_integ : inp_img_t.time_integ , $ ; Integration time for each image [s]
    time_delay : 0.                   , $ ; [NOT USED WITHIN AIRY]
    psf        : 0B                   , $ ; this is an image, not a PSF
    background : background           , $ ; the value of the background
    snr        : 0.                   , $ ; [NOT YET EVALUATED]
    angle      : inp_img_t.angle        $ ; hour angles [degrees]
   }

 KEYWORD PARAMETERS:
    INIT: initialization data structure.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
     none.

 CALLED NON-IDL FUNCTIONS:
    adn_add_noise.pro : add the noise (Poisson and Gaussian) in the map
    adn_ccd_sat.pro   : CCD saturation control

 MODULE MODIFICATION HISTORY:
    module written : version beta,
                     Serge  Correia   (OAA) [correia@arcetri.astro.it],
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it].

 ROUTINE MODIFICATION HISTORY:
    routine written: june 2000,
                     Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : july 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                    -call to adn_prog eliminated (useless).
                   : january 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.


 MODULE MODIFICATION HISTORY:
    module written : Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : for version 1.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                    -call to adn_prog eliminated (useless).
                   : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : march 2004,
                     Barbara Anconelli (DISI) [anconelli@disi.unige.it]:
                    -now having control over initial seed when generating
		                read-out noise.
                   : april 2004,
                     Barbara Anconelli (DISI) [anconelli@disi.unige.it]:
                    -added possibility of choice between three type of noise:
                     poisson, read-out and dark-current
                    -having control over initial seed when generating also
                     poisson noise and dark-current noise.
                   : october 2005,
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it]:
                    -use of variable "time_integ" now is active.
                    -fixed bug in calculation of dark_current noise
                   : april 2006,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -CCD saturation and full-well capacity parameters added in 
                     order to simulate the saturation of the CCD.
                    -function 'add_ccd_sat.pro' added.
                   : for version 5.0,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -added possibility to simulate multi-frame images.
                     Multi-frame images cannot be saved (by WFT), but can be 
                     only automatically reduced by using PRE.
                    -DITHERING added: each frame can be shifted in 
                     two different ways: 
                     a) random shifts: the positions will be created within a 
                        circle of given radius;
                     b) user defined shifts: the values are stored into a file 
                        and will be loaded in the ADN_ADD_NOISE procedure. 
                        In this case each line of the file must contain X and 
                        Y shifts, separated by a comma.
                     Dithering can be applied to either each frame or every N
                     frames (N is given by the user).
                    -Added the MASKing of the images.
                    -FLAT-FIELD and BAD-PIXELS perturbations added. 
                   : march 2011,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -added another TAB in the GUI containing the possibility  
                     of clipping negative values after RON and converting the
                     output to an arbitrary IDL data type. 
                    -The function "addnoise.pro" has been integrated 
                     within the routine "adn_add_noise.pro".
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See adn/adn.pro)


ANB

[Previous Routine] [Next Routine] [Top]
 NAME:
    anb

 ROUTINE'S PURPOSE:
    ANB executes the simulation for the ANalysis Binary (ANB) module.

 MODULE'S PURPOSE:
    ANB module performs the astrometric and photometric analysis on a 
    restored binary type object.   

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = anb(inp_img_t, $
                par,       $
                INIT=init  )

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t: structure of type img_t (image type).
    par      : parameters structure from anb_gui.

 KEYWORD PARAMETERS:
    INIT: initialisation data structure

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
       none.

 RESTRICTIONS:
     1-In some cases, namely when the object is a double star of faint
     magnitude the MMM algorithm can return an incorrect value (0) for
     the background evaluation.
     For this kind of cases it is recommended to use an alternative method
     for background evaluation.

     2- The background estimation done by PRE module can be contaminated
     by the object if the extension
     of the object is a large fraction of the image frame. The estimated mean value
     of the sky background and especially its rms value are then biased.
     A simple solution is to compute directly the mean background using
     the routine n_phot (found in .../caos/lib/, help at the IDL/CAOS prompt with
     the command <>). For example, with a 0.01 arcsec pixel
     size, a telescope collecting surface of 10 m^2, an integration time of 100 s
     and an overall efficiency of 0.3, the K band mean background (per pixel) is:
     
        0.3*(n_phot(0.,BAND="K",DELTA_T=100.,SURF=10.))[1]*0.01^2
     
     Then it is necessary to enter by hand the value found within the PRE module GUI
     (using the option "consider a user-defined background").

 CALLED NON-IDL FUNCTIONS:
       ap_phot_cent.pro
       ap_phot_cent_comp.pro
       detect_binary_star.pro
       legend_windt_m.pro
       make_graph_bin.pro
       model_binary.pro

 ROUTINE MODIFICATION HISTORY:
    routine written: october 2000,
                     Serge Correia (OAA) [marcel@arcetri.astro.it].
    modifications  : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.
                   : may 2011,
                     Marcel Carbillet (Fizeau) [marcel.carbillet@unice.fr]:
                    -help completed.

 MODULE MODIFICATION HISTORY:
    module written : Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : for version 5.0,
                     Marcel Carbillet (Fizeau) [marcel.carbillet@unice.fr]:
                    -GUI resized.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See anb/anb.pro)


CBD

[Previous Routine] [Next Routine] [Top]
 NAME:
    CBD

 ROUTINE'S PURPOSE:
    CBD manages the simulation for the Constrained Blind (or myopic) 
    Deconvolution (CBD) module, that is:
       1-call the module's initialization routine cbd_init at the first
         iteration of the simulation project,
       2-call the module's program routine cbd_prog.

 MODULE'S PURPOSE:
    CBD performs the deconvolution of a cube of images (i.e. p images
    corresponding to different orientations of the baseline) when
    the user don't have a PSF.
    The module gives back an image and an estimate of the PSF(s) and has in
    input a PSF(s) and an image(s).
    If the user has already an initial estimate of the PSF(s) he can give
    it directly in input; otherwise the module generates an estimate by an
    operation based on the autocorrelation operator on the image supplied
    in input.
    It is possible to obtain these two reconstructions by perform
    alternatively two partial reconstructions, the first one to the image(s)
    and the second one to the PSF(s).
    There are two different methods for image deconvolution and just one
    for PSFs reconstruction. In the first case the user can choose between
    the OS-EM method (see for details: "Application of the OS-EM method to the
    restoration of LBT images", M. Bertero and P. Boccacci, A&AS 144,
    May 2000, 181-186) and the LR-EM method.
    CBD fits the PSFs dimensions to the images dimensions, if they do not
    match, through zero-padding.
    The background evaluation performed by PRE module is used to restore
    the object with a correct sky-value, while the reconstructed PSFs are 
    managed without background (this is subtracted before the deconvolution 
    process).
    In this version no stopping rule is given. The rates of convergence may
    be different for different types of objects.
    This algorithm is sensible to the number of the iterations that the user 
    set in the reconstruction box of images and PSFs.
    In the case of a point-like stellar object, it is easy to have a good
    estimate of the initial PSFs.
    In the case of diffuse objects (i.e. galaxies) is more difficult to obtain
    a good estimate about the PSFs shape making the autocorrelation of the
    input image and it is recommended to supply a different one.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = cbd(inp_img_t2, out_psf_t, out_img_t, par, INIT=init)

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t2: structure of type img_t, corresponding to images
    par       : parameters structure.

 INCLUDED OUTPUTS:
    out_psf_t: structure of type "img_t" (with one more feature, the filter 
               to use to maintain in band the same PSFS) containing the 
               characteristics of the deconvolved PSF(s).

    out_img_t: structure of type "img_t" containing the characteristics of
               the deconvolved object.

 KEYWORD PARAMETERS:
    INIT: initialization data structure.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : int scalar. Total number of iteration during the 
                 simulation run.
    this_iter  : int scalar. Number of the current iteration. It is
                 defined only while status eq !caos_status.run.
                 (this_iter >= 1).  

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    none.

 CALLED NON-IDL FUNCTIONS:
    -other routine from the folder .../cbd/cbd_gui_lib.

 ROUTINE MODIFICATION HISTORY:
    routine written: May 2005, 
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it].


 MODULE MODIFICATION HISTORY:
    module written : december 2008, 
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it].
    modifications  : for version 5.0,
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it]:
                    -the module (previously called BLI) has been renamed in 
                     CBD after the work done for the paper (+revisions):
                     G. DesiderĂ , M. Carbillet, "Strehl-constrained iterative
                     blind deconvolution for post-adaptive-optics data", 2009,
                     A&A 507, pp. 1759-1762.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -output's order exchanged: (WAS) top=PSF, bottom=OBJ;
                     (NOW IS) top=OBJ, bottom=PSF, as it is in the whole 
                     Soft.Pack.AIRY
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See cbd/cbd.pro)


CNV

[Previous Routine] [Next Routine] [Top]
 NAME:
    cnv

 ROUTINE'S PURPOSE:
    cnv manages the simulation for the CoNVolution (CNV) module,
    that is to call the module's initialization routine cnv_init at the first
         iteration of the simulation project.

 MODULE'S PURPOSE:
    CNV permits to make a convolution between a 2D (3D) PSFs and an object
    2D (3D) map. The parameters related to the observing conditions (efficiency,
    integration time, telescope surface collecting surface) can be chosen.
    The pixel size of the resulting cube of images is driven by the PSFs pixel
    size, whatever is the object map one. Both the object map and the PSFs
    arrays are by the way put in 2^N (N integer) pixels arrays, if they are
    not originally 2^N arrays. The maximum size for this last operation is
    set to 2048 pixels (that corresponds to N=11).

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = cnv(inp_img_t, inp_src_t, out_img_t, par, INIT=init)

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t: structure of type img_t.
    inp_src_t: structure of type src_t.
    par      : parameters structure.

 INCLUDED OUTPUTS:
    out_img_t: structure of type "img_t" containing the characteristics of
               the convolved map, the following fields are contained in
               this structure:

out_img_t =                         $
{                                   $
   data_type  : out_type[0]         , $
   data_status: !caos_data.valid    , $
   image      : image               , $ ; IMAGE with same resolution as PSF.
   npixel     : nb_pix              , $ ; Number of pixels (per subaperture)
   resolution : inp_img_t.resolution, $ ; Pixel size [arcsec/pix]
   lambda     : lambda[0]           , $ ; Mean detection wavelength [m]
   width      : width[0]            , $ ; Wavelength band width [m]
   time_integ : par.int_time        , $ ; Integration time for each image [s]
   time_delay : 0.                  , $ ; [NOT USED WITHIN AIRY]
   psf        : 0B                  , $ ; IMAGE=1, PSF=0
   background : back_frame          , $ ; sky background flux [ph/pixel] 
   snr        : 0.                  , $ ; [NOT YET EVALUATED]
   angle      : angle                 $ ; hour angles [degrees]
}

 KEYWORD PARAMETERS:
    INIT: initialisation data structure.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    The object map and the PSFs arrays are put to 2^N (N integer) pixels
    arrays if they are not originally 2^N arrays.
    Doing it the maximum size is set to 2048 pixels (that corresponds to N=11).

 CALLED NON-IDL FUNCTIONS:

 ROUTINE MODIFICATION HISTORY:
    routine written: june 2000,
                     Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : july 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                    -call to cnv_prog eliminated (useless).
                    -parameters needed for image complete definition now
                     considered (total efficiency, telescope collecting
                     surface, integration time).
                   : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.
                   : december 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                   : october 2005,
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it],
                    -use of variable "time_integ" activated for the output structure.

 MODULE MODIFICATION HISTORY:
    module written : version beta,
                     Serge  Correia   (OAA) [correia@arcetri.astro.it],
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it].
    modifications  : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : for version 5.0;
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -added the possibility to convolve objects and PSF
                     "many to many" (it was "one to many").
                    -added possibility to simulate multi-frame images.
                     Multi-frame images cannot be saved (by WFT), but only auto-reduced
                     by PRE module.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See cnv/cnv.pro)


DEC

[Previous Routine] [Next Routine] [Top]
 NAME:
    dec

 ROUTINE'S PURPOSE:
    dec manages the simulation for the image deconvolution (dec) module,
    that is:
       1-call the module's initialization routine dec_init at the first
         iteration of the simulation project,
       2-call the module's program routine dec_prog.

 MODULE'S PURPOSE:

    DEC performs the deconvolution of a cube of images (i.e. p images
    corresponding to different orientations of the baseline). There are
    three different methods for image deconvolution: the OS-EM method 
    (see for details: "Application of the OS-EM method to the
    restoration of LBT images", M. Bertero and P. Boccacci, A&AS 144,
    May 2000, 181-186), the LRM (Lucy Richardson Method) and ISRA
    (Image Space Reconstruction Algorithm).
    There is an accelerate version of OS-EM (Lanteri et al.) where
    the user has the possibility to choose an acceleration exponent
    (2, 3, 5, 8). This last method can allow an accelereration by a
    factor 2, 3, 5, or 8 in computational time and the restoration error
    should be the same as that the standard version. (see for details:
    "Restoration of interferometric images. III. Efficient Richardson-Lucy
    methods for LINC-NIRVANA data reduction", B. Anconelli, M. Bertero,
    P. Boccacci, M. Carbillet, & H. Lanteri A&A 431, 731-738 (2005)).
    When the object is complex, like a high dynamic object, the user can
    use a regularization version of the method. In this case he has the
    choice between a convex and two pseudo-convex regularization.
    DEC fits the PSFs dimensions to the images dimensions, if they do not
    match, through zero-padding. (see for details: "Iterative methods for
    the reconstruction of astronomical images with high dynamic range"
    B. Anconelli, M. Bertero, P. Boccacci, M. Carbillet & H. Lanteri,
    JCAM (2005))
    The background evaluation performed by PRE module is used to restore
    the object with a correct sky-value.
    In this version no stopping rule is given. The rates of convergence may
    be different for different types of objects.
    In the case of diffuse objects (i.e. galaxies) a typical number of
    iterations could be ~100. While in the case of point-like objects (e.g.
    binary stars) the iterations can be pushed up to 5000 or 10000.
    In DEC we have also an algorithm for super-resolving compact objects such
    as a binary system with an angular separation smaller than the angular
    resolution of the telescope. (see for details: "Restoration of
    interferometric images. IV. An algorithm for super-resolution of stellar
    systems", B. Anconelli, M. Bertero, P. Boccacci & M. Carbillet, A&A 431,
    747-755 (2005))
    The method is based on a simple modification of the LR method and in
    general consist of 3 steps: the first one requires a large number of OS-EM
    iterations (typically 10000), which are used to estimate the domain of the
    unresolved object; the second one is a RL-restoration (typically 5000
    iterations) inizialized with the mask of the domain, as estimated in
    step 1.
    These two steps are used to estimate the positions of the two stars while
    their magnitudes can be obtained in a possible 3rd step by solving a
    simple least-squares problem. The first two steps are included in dec.
    In the second step it is possible to choose, in the interface, the image
    and the mask used to initialized the method. The mask is an image with
    values 0 or 1. There are 3 kind of masks: the 1st is a mask based on
    percentage of the image maximum, the 2nd one is a circular mask, and the 3rd
    is a user-defined mask.
    DEC allows also to reduce the boundary effect in the
    reconstructed image (see for details: "Restoration of boundary effects in
    multiple image deconvolution with an application to LBT LINC-NIRVANA", 
    B. Anconelli, M. Bertero, P. Boccacci & M. Carbillet, A&A 437, 369-374 (2005)).

    Please pay attention to the fact that the TOP BOX-INPUT of the module dec
    is supposed to receive images, while the BOTTOM BOX-INPUT of the module
    dec is supposed to receive PSFs.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = dec(inp_img_t1, inp_img_t2, out_img_t, par, INIT=init)

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t1: structure of type img_t, corresponding to PSF's
    inp_img_t2: structure of type img_t, corresponding to images
    par       : parameters structure.

 INCLUDED OUTPUTS:
    out_img_t: structure of type "img_t" containing the characteristics of
               the deconvolved object, the following fields are contained in
               this structure:

out_img_t = 				               $
  {          				               $
    data_type  : out_type[0]     	     , $
    data_status: !caos_data.valid	     , $
    image      : cube            	     , $
    psf        : 0B              	     , $ ; This flag indicates that this is a IMAGE
    npixel     : N              	     , $ ; Number of pixels (per subaperture)
    resolution : inp_img_t2.resolution  , $ ; Pixel size [arcsec/pix]
    lambda     : inp_img_t2.lambda      , $ ; Mean detection wavelength [m]
    width      : inp_img_t2.width       , $ ; Wavelength band width [m]
    time_integ : inp_img_t2.time_integ  , $ ; Integration time for each image [s]
    time_delay : inp_img_t2.time_delay  , $ ; [NOT USED WITHIN AIRY]
    background : inp_img_t2.background  , $ ; background
    snr        : inp_img_t2.snr         , $ ; snr
    angle      : inp_img_t2.angle         $ ; hour angles [degrees]
   }


 KEYWORD PARAMETERS:
    INIT: initialization data structure.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : int scalar. Total number of iteration during the 
                 simulation run.
    this_iter  : int scalar. Number of the current iteration. It is
                 defined only while status eq !caos_status.run.
                 (this_iter >= 1).  

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    none.

 CALLED NON-IDL FUNCTIONS:
    -other routine from the folder .../dec/dec_gui_lib.

 ROUTINE MODIFICATION HISTORY:
    routine written: november 1999, 
                     Massimo Barbati (USG) [massimo@dirac.disi.unige.it].
    modifications  : march 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -adapted to dec version of the CAOS structure (v 2.0).
                   : may 2000,
                     Massimo Barbati (USG) [massimo@dirac.disi.unige.it]:
                    -Help form, Restore form.
                    -Variables Names, Comments.
                   : july 2000,
                     Massimo Barbati (USG) [massimo@dirac.disi.unige.it]:
                    -beta version for package AIRY.
                   : july 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed + a few minor changes.
                   : Barbara Anconelli (DISI) [anconelli@disi.unige.it]:
                    -help completed.

 MODULE MODIFICATION HISTORY:
    module written : Massimo Barbati (USG) [massimo@dirac.disi.unige.it].
    modifications  : for version 2.0,
                     Barbara Anconelli (DISI) [anconelli@disi.unige.it]:
                    -second output of type "src_t" added.
                    -super-resolution stuff added.
                   : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : for version 2.0, 
                     Serge Correia (AIP) [scorreia@aip.de]:
                    -added the possibility to choose between the OS-EM method
                     and the LR/EM method (par.method added). 
                   : for version 2.0,
                     Barbara Anconelli (DISI) [anconelli@disi.unige.it],
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -"real acquisition" button commented and 2nd output of type
                    "src_t" momentaneously eliminated.
                    -normalization constant "c" from PAR to INIT structure.
                    -background substracted from PSF too now.
                   : for version 3.0,
                     Barbara Anconelli (DISI) [anconelli@disi.unige.it],
                    -added a dec accelerate version of OS-EM method (par.acc 
                     addded)
                    -ISRA method inserted
                    -added regularization for OS-EM method.
                    -visualization of a mask added.
                    -restructuration of interface
                    -choice of differents regularizations type added
                   : for version 4.0,
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it],
                    -use of variable "time_integ" activated for the output structure
                    -added possibility to reduce boundary effect
                   : for version 5.0,
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it],
                    -eliminated variables concerning regularizations with 
                     alpha=0.5 and alpha=1.
                    -image type (img_t) completed (tag "angle" added).                  
                   : may 2011,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -routine debugged.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See dec/dec.pro)


DSP

[Previous Routine] [Next Routine] [Top]
 NAME:
   dsp 

 ROUTINE'S PURPOSE:
   dsp manages the simulation for the data DiSPlay (DSP) module,
   that is:
      1-call the module's initialization routine dsp_init at the first
        iteration of the simulation project,
      2-call the module's program routine dsp_prog otherwise.

 MODULE'S PURPOSE:
   DSP executes the simulation for the data DiSPlay (DSP) module.
   It can display the relevant field of each defined output type
   of the Software Package AIRY, i.e.:

   -source/object type (src_t or obj_t):
       displays the 2D-map.

   -image type (img_t):
       displays either a single 2D image or a series of 2D images in several
       display windows.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = dsp(inp_yyy_t, par, INIT=init)

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_yyy_t: structure of type yyy_t.
    par      : parameters structure from dsp_gui.

 KEYWORD PARAMETERS:
    INIT: initialization structure.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    none.

 CALLED NON-IDL FUNCTIONS:
    launch_dsp
    display_3d
    image_show2
    win_pos_manager

 ROUTINE MODIFICATION HISTORY:
    program written: march 2001,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it].
    modifications  : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.

 MODULE MODIFICATION HISTORY:
    module written : Marcel Carbillet (OAA) [marcel@arcetri.astro.it].
                     (from module DIS of Software Package CAOS).
    modifications  : for version 1.0,
                     Serge Correia (OAA) [correia@arcetri.astro.it]:
                    -zoom and display modes (sqrt, log, etc.) added.
                   : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : for version 5.0,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it],
                     Gabriele DesiderĂ  (DISI) [desidera@disi.unige.it]:
                    -Multi-frame case implemented.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See dsp/dsp.pro)


FSM

[Previous Routine] [Next Routine] [Top]
 NAME:
    fsm

 ROUTINE'S PURPOSE:
    FSM executes the simulation for the Find Stars Module (FSM) module.

 MODULE'S PURPOSE:
    FSM module find stars and perform the astrometric and photometric analysis, 
    given a detection threshold expressed in RMS background (like in PRE module 
    the MMM algorithm is used for background evaluation, unless it fails in which 
    case the border of the frame is used to compute this value).
    A final display, in square-root scale, is given with the found stars encircled, 
    as well as the listing of the stars location and aperture photometry.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = fsm(inp_img_t, $
                par,       $
                INIT=init  )

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t: structure of type img_t (image type).
    par      : parameters structure from fsm_gui.

 KEYWORD PARAMETERS:
    INIT: initialization data structure

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
       none.

 RESTRICTIONS:
     1-In some cases, namely when the object is a double star of faint
     magnitude the MMM algorithm can return an incorrect value (0) for
     the background evaluation.
     For this kind of cases it is recommended to use an alternative method
     for background evaluation.

     2- The background estimation done by PRE module can be contaminated
     by the object if the extension
     of the object is a large fraction of the image frame. The estimated mean value
     of the sky background and especially its rms value are then biased.
     A simple solution is to compute directly the mean background using
     the routine n_phot (found in .../caos/lib/, help at the IDL/CAOS prompt with
     the command <>). For example, with a 0.01 arcsec pixel
     size, a telescope collecting surface of 10 m^2, an integration time of 100 s
     and an overall efficiency of 0.3, the K band mean background (per pixel) is:
     
        0.3*(n_phot(0.,BAND="K",DELTA_T=100.,SURF=10.))[1]*0.01^2
     
     Then it is necessary to enter by hand the value found within the PRE module GUI
     (using the option "consider a user-defined background").

 CALLED NON-IDL FUNCTIONS:
       amas_phot_m.pro
       astrolib_find.pro
       astrolib_find_module.pro

 ROUTINE MODIFICATION HISTORY:
    routine written: october 2000,
                     Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.
                   : june 2003,
                     Serge Correia (AIP) [scorreia@aip.de]:
                    -status common variable eliminated.
                   : december 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                   : may 2011,
                     Marcel Carbillet (Fizeau) [marcel.carbillet@unice.fr]:
                    -help completed.

 MODULE MODIFICATION HISTORY:
    module written : Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See fsm/fsm.pro)


OBJ

[Previous Routine] [Next Routine] [Top]
 NAME:
    obj

 ROUTINE'S PURPOSE:
    OBJ manages the simulation for the OBJect (OBJ) module,
    that is:
      1-call the module's initialization routine obj_init.pro at the first
        iteration of the project
      2-call the module's program routine obj_prog.pro otherwise.

 MODULE'S PURPOSE:
    OBJ permits to define map of different types of astronomical objects as 
    a target for observation and/or subsequent image reconstruction/deconvolution.
    
    Current object types are: single star, binary object, open cluster, 
    planetary nebulae, supernovae remnant, spiral galaxy, Young Stellar Objects (YSOs), 
    stellar surface and user-defined.

    For each object type the map is defined by its dimension [npixel] and pixel size. 

    In particular, some remarks concerning the definition of some objects are the 
    following : 
    
    Single star : pixel located at [npixel/2,npixel/2] containing all the flux 
                  (i.e. unresolved star or point source). 
                  One may pay attention to the fact that such a definition will 
                  creates artifacts if one use PSFs (for both the convolution/
                  modelization and deconvolution) which are centered on 
                  [npixel-1/2,npixel-1/2]. 
                  A work around is to use a dirac map (pixel at [0,0] set to 1, 
                  0 elsewhere) within the user-defined object type. 
    
    Binary object : Formed by two point-source stars for which the barycenter 
                    (not photocenter) is located in [npixel/2,npixel/2]. 
                    In order to center each component on a pixel, the separation
                    and position angle may vary slightly from the one set by 
                    user in the GUI. A warning appears if such a variation is 
                    more than 1%. 

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = obj(out_obj_t, par, INIT=init)

 OUTPUT:
    error: long scalar (error code). see !caos_error var in caos_init.pro.

 INPUTS:
    none.

 INCLUDED OUTPUTS:
    out_obj_t: structure of type "src_t" containing the characteristics of
               the selected source, the following fields are contained in
               this structure:
               off_axis  : [NOT USED]
               pos_ang   : [NOT USED]
               dist_z    : [NOT USED]
               map       : object 2D map
               scale_xy  : map scale [rd/px]
               coord     : [NOT USED]
               scale_z   : [NOT USED]
               n_phot    : number(s) of photons  [/s/m^2] (vs. wavelength)
               background: sky background(s) [/s/m^2/arcsec^2] (id.)
               lambda    : wavelength(s) [m]
               width     : band-width(s) [m]

 KEYWORD PARAMETERS:
    INIT: named variable undefined or containing a scalar when obj is
          called for the first time. As output the named variable will
          contain a structure of the initialization data. For the following
          calls of obj, the keyword INIT has to be set to the structure
          returned by the first call.

 COMMON BLOCKS:
    common caos_ao_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    The "Object total magnitude" field within the sub-GUIs "YSOs"
    and "Spiral galaxy" remains to the original value although it has been changed
    and the whole set of parameters was saved before.
    This is just a display problem, since the change of this value is effectively
    taken into account (as it can be seen at the IDL/CAOS prompt line).

 PROCEDURE:
    none.

 CALLED NON-IDL FUNCTIONS:
    -n_phot  : for number of photons calculus (see in .../lib).
    -spec2mag: to transform a V-magnitude into any other band
               magnitude (see in .../lib).
    -other routines from the astrolib/astron IDL library
    -other routines from the folder .../obj/obj_lib
                     and the folder .../obj/obj_gui_lib

 ROUTINE MODIFICATION HISTORY:
    program written: may 2000,
                     Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : july 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                   : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.
                    -call to obj_prog eliminated (useless).
                   : november 2003,
                     Serge Correia (AIP) [scorreia@aip.de]:
                    -help updated.

 MODULE MODIFICATION HISTORY:
    program written: version beta,
                     Serge Correia (OAA) [correia@arcetri.astro.it].
                   : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                    -obj_prog eliminated since it was irrelevant.
                   : for version 2.0 too,
                     Serge Correia (AIP) [scorreia@aip.de]:
                    -object type single star added.
                    -help updated.
                   : for version 5.0,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -flux constants are now "float" instead of "int",
                    -object type (obj_t) completed (tag angle added),
                    -modeling of elliptical disk, gaussian and stellar surface debugged.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New sub-GUIs for Planetary Nebula, SNR, Spiral galaxy, YSO, 
                     and user-defined objects. 
                    -Bug fixed in parameter restoring procedure (esp. Planetary 
                     nebula and SNR).
                    -Small changes in the text of the GUI.
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See obj/obj.pro)


PEX

[Previous Routine] [Next Routine] [Top]
 NAME:
    pex

 ROUTINE'S PURPOSE:
    pex manages the simulation for the PEX module, that is to call 
    the module's initialization routine pex_init at the first iteration 
    of the simulation project.

 MODULE'S PURPOSE:
    PEX performs PSF extrapolation from a cube of images (or from a single 
    image). The extraction can be done either when project is "set up" (when 
    parameters of the modules are chosen and saved) or when project runs.
    This operation is divided between PEX_OPEN_GUI and PEX_INIT procedures. 
    PEX_OPEN_GUI: users can load the image, set up scale, zoom, etc., 
             then they can select one or more star with a simple 
             point&click operation, and also select a suitable 
             'radius of extraction' (R) and the value of the beta parameter.
             Users have to complete the information about PSF 
             (pixel-size, band, etc.).
    PEX_INIT: PSF is extracted by following steps:
             For each selected star,
             - centroid of the star is computed and its position is shifted 
               to the center of the image with a sub-pixel precision;
             - a domain of size 2R x 2R is extracted from the central region 
               (this image will be denoted by H);
             - Moffat extrapolation of H(n) (where n=[n1,n2] is the multi-index 
               characterizing the pixels of the image) is executed by following 
               sub-steps:
             -- a first estimation of background is performed with a bilinear 
                function: B(n) = a0 + a1*n1 + a2*n2 
             -- the image H - a1*n1 - a2*n2 is fitted with a circular 
                symmetric Moffat function:
                                      b1
                M0(r) = b0 + -------------------    where r = sqrt(n1^2 + n2^2)
                             (1 + r^2 / b2^2)^beta
             -- the estimated values of the parameters ai and bi are used as 
                initial guesses for a least-squares best-fitting of H(n) with  
                a rotated elliptical Moffat function superimposed with a 
                linear varying background:
	 	                                                   c3
                M(n) = c0 + c1*n1 + c2*n2 + -----------------------------------
                                             (1 + (n1'/c4)^2 + (n2'/c5)^2)^beta
                where n1'=n1*cos(q) + n2*sin(q) and n2'=-n1*sin(q) + n2*cos(q).
                The value of b2 is the initial guess for both c4 and c5, 
                while the initial guess of the rotation angle q in zero.
             -- the extracted image H(n) is merged into the sampled function 
                M(n) defined on the full image and the linearly background is 
                subtracted and the result is normalized to unit volume.
             If several stars are selected in the same image, the median of 
             all the results of previous procedure is computed and this is 
             normalized again to unit volume.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = pex(out_img_t, par)

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INCLUDED OUTPUTS:
    out_img_t: structure of type img_t.

 OUTPUT IMAGE = PSF EXTRACTED

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    none.

 CALLED NON-IDL FUNCTIONS:
 PEX_APPEND, PEX_REMOVE, PEX_CIRCLE (called by PEX_GUI, see PEX_GUI_LIB dir)
 PEX_PSF_EXTRAPOLATION (called by PEX_INIT, see PEX_LIB dir)
 MPFIT2DFUN, MPFIT, MPFIT2DPEAK (called by PSF_EXTRAPOLATION - 
     routines written by Craig B. Markwardt, see each file *.pro 
     in PEX_LIB directory for details)
 PEX_CIRCULAR_MASK (called by PEX_PSF_EXTRAPOLATION, see PEX_LIB directory)

 ROUTINE MODIFICATION HISTORY:
    routine written: January 2007,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it].
    modifications  : 

 MODULE MODIFICATION HISTORY:
    module written : Andrea La Camera (DISI) [lacamera@disi.unige.it].
    modifications  
       : January 2007,
         Andrea La Camera (DISI) [lacamera@disi.unige.it]:	
        -PEX module is projected to be used in case of Space-Variant PSF 
         extraction, by splitting the image into severals domains and 
         extracting the PSF from each domain. 
         This operation is NOT IMPLEMENTED YET, however data structures 
         (esp. xsave, ysave and nb_click arrays) include a "domain" 
         subdivision of the image.
         (In case of Space-Invariant PSF, the image coincides with the 
         unique domain).
         PLEASE DON'T DELETE ANY COMMENTED (three ";") LINE.
       : October 2008,
         Andrea La Camera (DISI) [lacamera@disi.unige.it]:
        -Added the possibility to extract the PSF when project runs, LPX_GUI
         now is a sort of "before-gui". A new procedure called LPX_OPEN_GUI has
         been created for managing the Graphical User Interface.        
       : February 2011, 
         Andrea La Camera (DISI) [lacamera@disi.unige.it]:	
        -routine debugged. Domains deleted (not really used) 
       : December 2011,
         Andrea La Camera (DISI) [lacamera@disi.unige.it]:
        -file "find_dim.pro" has been deleted [not really used]
        -files "circular_mask.pro", "psf_extrapolation.pro", "append.pro",
         "remove.pro", and "circle.pro" have been renamed by adding the prefix
         'pex_' to each filename. Apt changes to the functions/procedures.
       : February 2012,
         Andrea La Camera (DISI) [lacamera@disi.unige.it]:
        -New way to call AIRY_HELP. By using the "online_help" 
         routine, we resolved a known-issue of the Soft.Pack.

(See pex/pex.pro)


PRE

[Previous Routine] [Next Routine] [Top]
 NAME:
    pre

 ROUTINE'S PURPOSE:
    pre manages the simulation for the pre-processing (pre) module,
    that is to call the module's initialization routine pre_init at the first
         iteration of the simulation project.

 MODULE'S PURPOSE:
    pre permits to pre-process a cube of images before a subsequent image
    restoration/deconvolution process. More precisely, the module permits:
    - data reduction (also called data calibration),
    - shift-and-add procedure for multi-frame images,
    - positivization of the calibrated images,
    - sky background evaluation,
    - SNR evaluation,
    - images re-centering.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = pre(inp_img_t, out_img_t, par, INIT=init ) 

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t: structure of type img_t.
    par      : parameters structure.

 INCLUDED OUTPUTS:
    out_img_t: structure of type "img_t" containing the characteristics of 
               the pre-processed map, the following fields are contained in
               this structure:

out_img_t = $
   {        $
   data_type  : out_type[0]          , $
   data_status: !caos_data.valid     , $
   image      : pre_map              , $ ; image map
   npixel     : inp_img_t.npixel     , $ ; number of pixels
   resolution : inp_img_t.resolution , $ ; pixel size [arcsec/pix]
   lambda     : inp_img_t.lambda     , $ ; mean detection wavelength [m]
   width      : inp_img_t.width      , $ ; wavelength band width [m]
   time_integ : inp_img_t.time_integ , $ ; Integration time for each image [s]
   time_delay : inp_img_t.time_delay , $ ; [NOT USED WITHIN AIRY]
   psf        : inp_img_t.psf        , $ ; image or PSF ?
   background : back                 , $ ; estimated sky background level of the
                                         ; pre-processed maps
   snr        : snr                  , $ ; estimated peak SNR of the
                                         ; pre-processed maps
   angle      : inp_img_t.angle        $ ; hour angles [degrees]
   }

 KEYWORD PARAMETERS:
    INIT: initialization data structure.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
     1-In some cases, namely when the object is a double star of faint
     magnitude the MMM algorithm can return an incorrect value (0) for
     the background evaluation.
     For this kind of cases it is recommended to use an alternative method
     for background evaluation.

     2- The background estimation done by PRE module can be contaminated
     by the object if the extension
     of the object is a large fraction of the image frame. The estimated mean value
     of the sky background and especially its rms value are then biased.
     A simple solution is to compute directly the mean background using
     the routine n_phot (found in .../caos/lib/, help at the IDL/CAOS prompt with
     the command <>). For example, with a 0.01 arcsec pixel
     size, a telescope collecting surface of 10 m^2, an integration time of 100 s
     and an overall efficiency of 0.3, the K band mean background (per pixel) is:
     
        0.3*(n_phot(0.,BAND="K",DELTA_T=100.,SURF=10.))[1]*0.01^2
     
     Then it is necessary to enter by hand the value found within the PRE module GUI
     (using the option "consider a user-defined background").

 CALLED NON-IDL FUNCTIONS:
    phot_rec.pro : re-center the map wrt the photocenter location
    sky_back_sub : estimate the sky background level of a map 
                   using the astrolib routine SKY. 

 ROUTINE MODIFICATION HISTORY:
    routine written: june 2000,
                     Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : july 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                    -call to routine pre_prog eliminated (useless).
                   : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminated for version 4.0
                     of the whole system CAOS.

 MODULE MODIFICATION HISTORY:
    module written : Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : for version 1.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -help completed.
                    -call to pre_prog eliminated (useless).
                   : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
		              : for version 2.0 too,
   		             Barbara Anconelli (DISI) [anconelli@disi.unige.it]
	                  -added the possility for the user to subtract sky
		                background from the images.
		              : for version 4.0,
                     Gabriele Desidera' (DISI) [desider@disi.unige.it]:
                    -use of the variable "time_integ" activated.
                   : for version 5.0,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -added possibility to simulate multi-frame images.
                     Multi-frames images cannot be saved (by WFT), but only 
                     auto-reduced by PRE module (this module),
                    -Added DATA REDUCTION for raw images (BAD-PIXEL MAP,
                     FLAT-FIELD MAP, DARK CURRENT MAP and BIAS MAP),
                    -Added SHIFT-AND-ADD method. The values of the shift can 
                     be either stored in a text file (x_shift, y_shift in 
                     every line) or calculated by correlation (with integer or 
                     sub-pixel accuracy),
                    -Apodization has been removed (obsolete),
                    -Changed Re-centering procedure, the new one is based on 
                     correlation among the images (with integer or sub-pixel
                     accuracy),
                    -New GUI's design with "TABs".
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See pre/pre.pro)


RFT

[Previous Routine] [Next Routine] [Top]
 NAME:
    rft

 ROUTINE'S PURPOSE:
    rft manages the simulation for the Read FiTs file (RFT) module.

 MODULE'S PURPOSE:
    RFT read a FITS file provided in input.
    Both cases of 2D input images and 3D input image cubes are supported.
    Header's keywords can be used as input parameters of the image structures,
    if they are labeled as :
       resolut  = pixel size [arcsec] [float]
       lambda   = Filter center wavelength [meters] [float]
       width    = Filter width [meters] [float]
       psf      = psf choice (1=psf, 0=image) [byte/integer]
    Otherwise, parameters have to be set up by means of the GUI of the module.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = rft(out_img_t, $ ; output structure
                par        ) ; parameter structure

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    par      : parameters structure.

 INCLUDED OUTPUTS:
    out_img_t: structure of type img_t.

 KEYWORD PARAMETERS:
    none.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    This module is designed for restoring of data cubes once, during the
    initialization phase. It is not designed for sequencial restoring of
    structures iteration after iteration. For this reason it is more likely
    to be used within the package AIRY (Algorithms for Image Restoration in
    interferometrY), than within the original CAOS (Code for Adaptive Optics
    Systems) package. In addition it needs the astrolib package for restoring
    of FITS format data cubes.

 CALLED NON-IDL FUNCTIONS:
    routines of the astrolib package for the FITS format management.

 ROUTINE MODIFICATION HISTORY:
    routine written: oct 2000,
                     Serge Correia (OAA) [marcel@arcetri.astro.it].
    modifications  : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.

 MODULE MODIFICATION HISTORY:
    module written : version beta,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it],
                     Serge  Correia   (OAA) [marcel@arcetri.astro.it].
    modifications  : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : for version 3.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -added better selection of central wavelength and band-width
                    -global GUI reordering for better fitting in screens !
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it]:
                    -added possibility to insert integration times in association
                     with the loaded data cube.
                   : february 2011,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -"Insert hour angle" button and table added;
                    -"Insert integration time" button and table changed;
                    -New GUI design.
                   : february 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -file "rft_time_gui.pro" and folder "rft_gui_lib" removed
                     [unused and no more necessary]
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See rft/rft.pro)


RSC

[Previous Routine] [Next Routine] [Top]
 NAME:
    rsc

 ROUTINE'S PURPOSE:
    RSC manages the simulation for the Restore image Structure Cubes (RSC) 
    module.

 MODULE'S PURPOSE:
    RSC restores data cubes.
    Both FITS and XDR formats are supported.
    Both cases of 2D input images and 3D input image cubes are supported.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = rsc(out_img_t, $ ; output structure
                par        ) ; parameter structure

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    par      : parameters structure.

 INCLUDED OUTPUTS:
    out_img_t: structure of type img_t.

 KEYWORD PARAMETERS:
    none.

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter, calibration, signature

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.
    calibration: is it a calibration project ? (yes=1B, no=0B)
    signature  : project signature.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    This module is designed for restoring of data cubes once, during the
    initialization phase. It is not designed for sequencial restoring of
    structures iteration after iteration. For this reason it is more likely
    to be used within the package AIRY (Algorithms for Image Restoration in
    interferometrY), than within the original CAOS (Code for Adaptive Optics
    Systems) package. In addition it needs the astrolib package for restoring
    of FITS format data cubes.

 CALLED NON-IDL FUNCTIONS:
    routines fo the astrolib package for the FITS format management.

 ROUTINE MODIFICATION HISTORY:
    routine written: june-july 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it].
    modifications  : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.

 MODULE MODIFICATION HISTORY:
    module written : version beta,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it],
                     Serge  Correia   (OAA) [marcel@arcetri.astro.it].
    modifications  : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : for version 4.0,
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it]:
                    -use of variable "time_integ" activated in output structure
                   : for version 5.0,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -image type (img_t) completed (tag "angle" added).
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See rsc/rsc.pro)


RTI

[Previous Routine] [Next Routine] [Top]
 NAME:
   RTI

 ROUTINE'S PURPOSE:
    RTI manages the simulation for the RoTate Image (RTI) module,
    that is to call the module's initialization routine rti_init at the first
         iteration of the simulation project.

 MODULE'S PURPOSE:
   To rotate either images or objects in two different ways: 
    - rotation in pixel space: by using the IDL routine "ROT";
    - rotation in frequencies space: by rotating the Fourier transform of the input
   N.B. The rotation can generate artifacts, in particular in the case of 
   point objects/stars.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = rti(inp_gen_t, out_gen_t, par)
 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_gen_t: structure of type gen_t.
    par      : parameters structure.

 KEYWORD PARAMETERS:

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
    none.

 RESTRICTIONS:
    none.

 CALLED NON-IDL FUNCTIONS:

 ROUTINE MODIFICATION HISTORY:
    program written: March 2007,
         Andrea La Camera (DISI) [lacamera@disi.unige.it]
    modifications  : 

 MODULE MODIFICATION HISTORY:
    program written: March 2007,
         Andrea La Camera (DISI) [lacamera@disi.unige.it]
    modifications  : 
                   : february 2011,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]
                    -module debugged (in particular, for tags "angle" and 
                     "time_integ")
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See rti/rti.pro)


SIM

[Previous Routine] [Next Routine] [Top]
 NAME:
    sim

 ROUTINE'S PURPOSE:
    SIM executes the simulation for the Save IMage structure (SIM) module.

 MODULE'S PURPOSE:
    Using SIM, output structures image (img_t) can be saved.
    Both FITS and XDR formats are supported.
    Series of 2D images are saved as one only img_t structure with a tag
    "image" that is a cube composed of the various 2D input images.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = sim(inp_img_t, $
                par,       $
                INIT=init  )

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t: structure of type img_t (image type).
    par      : parameters structure from sim_gui.

 KEYWORD PARAMETERS:
    INIT: initialization data structure

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
       none.

 RESTRICTIONS:
       none.

 CALLED NON-IDL FUNCTIONS:
       none.

 ROUTINE MODIFICATION HISTORY:
    routine written: july 2000,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it].
    modifications  : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.

 MODULE MODIFICATION HISTORY:
    module written : beta version,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it],
                     Serge  Correia   (OAA) [correia@arcetri.astro.it].
    modifications  : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See sim/sim.pro)


WFT

[Previous Routine] [Top]
 NAME:
    wft

 ROUTINE'S PURPOSE:
    WFT executes the simulation for the Write FiTs (WFT) module.

 MODULE'S PURPOSE:
    Using WFT, output structures image (img_t) can be saved in .fits format 
    which header contains parameters of the image structure.

 CATEGORY:
    main module's routine

 CALLING SEQUENCE:
    error = wft(inp_img_t, $
                par  )

 OUTPUT:
    error: long scalar (error code, see !caos_error var in caos_init.pro).

 INPUTS:
    inp_img_t: structure of type img_t (image type).
    par      : parameters structure from wft_gui.

 KEYWORD PARAMETERS:
    none

 COMMON BLOCKS:
    common caos_block, tot_iter, this_iter

    tot_iter   : total number of iteration during the simulation run.
    this_iter  : current iteration number.

 SIDE EFFECTS:
       none.

 RESTRICTIONS:
       none.

 CALLED NON-IDL FUNCTIONS:
       
    imstruc_to_fits.pro

 ROUTINE MODIFICATION HISTORY:
    routine written: october 2000,
                     Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : february 2003,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -use of variable "calibration" eliminited for version 4.0
                     of the whole system CAOS.

 MODULE MODIFICATION HISTORY:
    module written : Serge Correia (OAA) [correia@arcetri.astro.it].
    modifications  : for version 2.0,
                     Marcel Carbillet (OAA) [marcel@arcetri.astro.it]:
                    -no more use of the common variable "calibration" and
                     the tag "calib" (structure "info") for version 4.0 of
                     the whole Software System CAOS.
     modification  : for version 3.0,
                     Gabriele Desidera' (DISI, Universita' di Genova) [desidera@disi.unige.it]
                    -add the possibility to write multiple images for multiple iterations  
                   : for version 5.0,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it],
                     Gabriele Desidera' (DISI) [desidera@disi.unige.it]:
                    -multi-frame case implemented,
                    -FITS header completed (imstruc_to_fits.pro modified),
                    -INIT eliminated (obsolete).
                   : February 2012,
                     Andrea La Camera (DISI) [lacamera@disi.unige.it]:
                    -New way to call AIRY_HELP. By using the "online_help" 
                     routine, we resolved a known-issue of the Soft.Pack.

(See wft/wft.pro)