Useful functions related to the Moffat profile. profitCubaMoffat
computes the exact 2D pixel integrals for a given Moffat model image. This is very slow compared to profitMakeModel
, but it is useful for checking model creation tuning (i.e. the degree to which speed can be increased without overly harming accuracy). Tests with this function were used to tune profitMakeModel
. profitRadialMoffat
computes the 1D radial flux intensity of the Moffat profile along the major axis of the profile.
profitCubaMoffat(xcen = dim[1]/2, ycen = dim[2]/2, mag = 15, fwhm = 3, con = 2, ang = 0,
axrat = 1, box = 0, dim = c(25, 25), rel.tol=1e-3, abs.tol= 1e-10, plot = FALSE, ...)
profitRadialMoffat(r = 1, mag = 15, fwhm = 3, con = 2, ang = 0, axrat = 1, box = 0)
Scalar; x centre of the 2D Sersic profile (can be fractional pixel positions).
Scalar; y centre of the 2D Sersic profile (can be fractional pixel positions).
Vector; the radius along the major axis at which to evaluate the flux intensity.
Scalar; total magnitude of the 2D Moffat profile. Converted to flux using flux=10^(-0.4*(mag-magzero)).
Scalar; full width half max of the Moffat function.
Scalar; concentration parameter for Moffat functions. Must be larger than 1. con=1 is pure Lorentzian and con=Inf is pure Normal. In practice con>5 starts to look very close to Normal.
Scalar; the orientation of the major axis of the Sersic profile in degrees. When plotted as an R image the angle (theta) has the convention that 0= | (vertical), 45= \, 90= - (horizontal), 135= /, 180= | (vertical). Values outside the range 0 <= ang <= 180 are allowed, but these get recomputed as ang = ang.
Scalar; axial ratio of the Sersic profile defined as minor-axis/major-axis, i.e. 1 is a circle and 0 is a line.
Scalar; the boxiness of the Sersic profile that traces contours of iso-flux, defined such that r[mod]=(x^(2+box)+y^(2+box))^(1/(2+box)). When box=0 the iso-flux contours will be normal ellipses, but modifications between -1<box<1 will produce visually boxy distortions. Negative values have a pin-cushion effect, whereas positive values have a barrel effect (the major and minor axes staying fixed in all cases).
Vector; The dimensions of the image to be generated. Typically this should be c(Nx,Ny). If length 1 then the value will be replicated for both dimensions.
Scalar; the requested relative accuracy. Default, 0.001.
Scalar; the requested absolute accuracy. The algorithm stops when either the relative or the absolute accuracies are met. Default, near 1e-10.
Logical; should a magimage
plot of the output be generated?
Further arguments to be passed to magimage
. Only relevant is plot=TRUE.
profitCubaMoffat
:
Matrix; contains the flux values of the specified model image. Dimensions dim.
profitRadialMoffat
:
Vector; same length as input r, specifying the flux intensity of the profile along the major axis.
This function uses the Cuba package to make an accurate (but expensive) cubature integral. This function was written to test the accuracy of Moffat models generated by profitMakeModel
.
By ProFit convention the bottom-left part of the bottom-left pixel when plotting the image matrix is c(0,0) and the top-right part of the bottom-left pixel is c(1,1), i.e. the mid-point of pixels are half integer values in x and y.
To confuse things a bit, when R plots an image of a matrix it is transposed and re-ordered vertically to how it appears if you print the matrix directly to screen, i.e. compare print(matrix(1:4,2,2)) and image(matrix(1:4,2,2)). The lowest value (1) is top-left when printed but bottom-left when displayed using image (the red pixel). Both are "correct": the issue is whether you consider the first element of a matrix to be the Cartesian x position (movement in x) or a row element (movement in y). Matrices in maths are always written top-left first where the first argument refers to row number, but images by convention are accessed in a Cartesian sense. Hence [3,4] in a maths matrix means 3 down and 4 right from the top-left, but 3 right and 4 up from the bottom-left in an image.
Moffat A. F. J., 1969, A\&A, 3, 455
profitMakeModel
, profitSersic
, profitFerrer
, profitCoreSersic
, profitKing
# NOT RUN {
magimage(profitCubaMoffat(axrat=0.7, ang=30))
# }
Run the code above in your browser using DataLab