LALPulsar  6.1.0.1-fe68b98
LUT.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005 Badri Krishnan, Alicia Sintes
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with with program; see the file COPYING. If not, write to the
16  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17  * MA 02110-1301 USA
18  */
19 #ifndef _LUT_H
20 #define _LUT_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 /**
27  * \defgroup LUT_h Header LUT.h
28  * \ingroup lalpulsar_hough
29  * \date 2001, 2003
30  * \brief Provides structures and function prototypes required for the construction of look up tables
31  * that are the core for building the Hough maps.
32  * \author Sintes, A.M, Papa, M.A. and Krishnan, B.
33  *
34  * History: Created by Sintes May 11, 2001
35  * Modified by Badri Krishnan Feb 2003
36  *
37  * ### Synopsis ###
38  *
39  * \code
40  * #include <lal/LUT.h>
41  * \endcode
42  *
43  * Our goal is the construction of Hough maps. In order to produce them
44  * efficiently, the present implemetation makes use of <tt>lut</tt>s.
45  * Here we provide the necessary routines for their construction and use.
46  *
47  * In principle, the subroutines provided are valid for
48  * any Hough master equation of the form:
49  * \f[ \nu-F_0 =\vec\xi (t) \cdot (\hat n -\hat N )\, ,\f]
50  * where \f$ \nu \f$ is the measured frequency of the signal at time \f$ t \f$ ,
51  * \f$ F_0 \f$ intrinsic frequency of the signal at that time, \f$ \hat n \f$ location of the
52  * souce in the sky, \f$ \hat N \f$ the center of the sky patch used in the
53  * demodulation procedure,
54  * and
55  * \f$ \vec\xi (t) \f$ any vector.
56  *
57  * The form of this vector \f$ \vec\xi (t) \f$
58  * depends on the demodulation procedure
59  * used in the previous step. In our case this corresponds to
60  * \f[\vec\xi (t) = \left( F_0+
61  * \sum_k F_k \left[ \Delta T \right]^k\right) \frac{\vec v(t)}{c}
62  * + \left( \sum_k k F_k \left[ \Delta T \right]^{k-1}\right)
63  * \frac {\vec x(t)- \vec x(\hat t_0)}{c}\, ,\f]
64  * and
65  * \f[F_0 \equiv f_0 + \sum_k \Delta f_k
66  * \left[ \Delta T \right]^k \, , \f]
67  * where
68  * \f$ \vec v(t) \f$ is the velocity of the detector, \f$ \vec x(t) \f$ is the detector
69  * position,
70  * \f$ T_{\hat N}(t) \f$ is the time at
71  * the solar system barycenter (for a given sky
72  * location \f$ \hat N \f$ ),
73  * \f$ \Delta T \equiv T_{\hat N}(t)-T_{\hat N}(\hat t_0) \f$ ,
74  * \f$ \Delta f_k = f_k-F_k \f$ the residual spin-down parameter,
75  * \f$ F_k \f$ the spin-down parameter used in the demodulation, and \f$ f_0 \f$ , \f$ f_k \f$ the
76  * intrinsic frequency and spin-down parameters of the source at time \f$ \hat t_0 \f$ .
77  *
78  * Looking at the generic Hough master equation, one realizes that
79  * for a fixed time, a given value of \f$ F_0 \f$ , and a measured frequency \f$ \nu \f$
80  * p(from a selected peak), the source could be located anywhere on a circle (whose
81  * center points in the same direction of \f$ \vec\xi (t) \f$ and is characterized by
82  * \f$ \phi \f$ , the angle between \f$ \hat n \f$ and \f$ \vec\xi \f$ ). Since the Hough transform is performed on a
83  * set of spectra with discrete frequencies, a peak on the spectrum appearing at
84  * \f$ \nu \f$ could correspond to any source with a demodulated
85  * frequency in a certain interval. As a consequence, the location of the sources
86  * compatible with \f$ F_0 \f$ and \f$ \nu \f$ is not a circle but an annulus with a certain
87  * width.
88  *
89  * Our purpose is to map these annuli on a discrete space. An estimation of the
90  * average thickness of the annuli tells us that the vast majority of
91  * annuli will be very thin, and therefore our algorithm should not be
92  * optimized for drawing
93  * thick annuli but for thin ones. Also, the mapping implementation should be one with a uniform
94  * probability distribution in order to avoid discretization errors.
95  * In order to remove border effects, we use a biunivocal mapping, which
96  * requires
97  * that a pixel in a partial Hough map can belong only to one annulus,
98  * just touched by one peak of the spectrum. The criteria for the biunivocal mapping
99  * is that if and only if the center of the pixel is inside the annulus, then the pixel
100  * will be enhanced.
101  *
102  * In order to simplify (reduce the computational cost of) this task we
103  * construct look up tables (<tt>lut</tt>) where the borders of these annuli are
104  * marked for any possible \f$ \nu -F_0 \f$ value. Since we work on a discrete space these <tt>lut</tt> are
105  * valid for many \f$ F_0 \f$ values.
106  *
107  * \anchor LUTstereo
108  * \image html LUTstereo.png "Stereographic projection. [Credit to: D.Hilbert\, S.Cohn-Vossen\, P. Nemenyi\, ``Geometry and Imagination''\, Chelsea Publishing Company\, New York 1952.]"
109  *
110  * At this point we have already chosen a sky tiling to produce the Hough map efficiently.
111  * It consists of changing coordinates so that the center of the patch is located at
112  * \f$ (0,-\pi/2) \f$ in ( \f$ \alpha-\delta \f$ ) (or in any other coordinate system), then we make use
113  * of the stereographic projection (see \ref LUTstereo "this figure") and we take horizontal and vertical lines on
114  * the projected plane at constant space separation.
115  * This projection is advantageous because it avoids distortions, i.e. the
116  * pixel size is almost constant independently of the sky location, and makes the
117  * algorithm simpler. The stereographic projection has the property to map circles
118  * on the celestial sphere to circles on the projected plane.
119  *
120  */
121 /** @{ */
122 
123 /*
124  * 5. Includes. This header may include others; if so, they go immediately
125  * after include-loop protection. Includes should appear in the following
126  * order:
127  * a. Standard library includes
128  * b. LDAS includes
129  * c. LAL includes
130  */
131 
132 #include <stdlib.h>
133 #include <math.h>
134 #include <stdio.h>
135 # include <stdlib.h>
136 # include <string.h>
137 #include <lal/LALStdlib.h>
138 #include <lal/LALConstants.h>
139 #include <lal/AVFactories.h>
140 #include <lal/SeqFactories.h>
141 
142 /*
143  * 7. Error codes and messages. This must be auto-extracted for
144  * inclusion in the documentation.
145  */
146 
147 /**\name Error Codes */
148 /** @{ */
149 #define LUTH_ENULL 1
150 #define LUTH_ESIZE 2
151 #define LUTH_ESZMM 4
152 #define LUTH_EINT 6
153 #define LUTH_ESAME 8
154 #define LUTH_EFREQ 10
155 #define LUTH_EVAL 12
156 
157 #define LUTH_MSGENULL "Null pointer"
158 #define LUTH_MSGESIZE "Invalid input size"
159 #define LUTH_MSGESZMM "Size mismatch"
160 #define LUTH_MSGEINT "Invalid interval"
161 #define LUTH_MSGESAME "Input/Output data vectors are the same"
162 #define LUTH_MSGEFREQ "Invalid frequency"
163 #define LUTH_MSGEVAL "Invalid value"
164 /** @} */
165 
166 
167 /* ******************************************************
168  * 8. Macros. But, note that macros are deprecated.
169  * They could be moved to the modules where are needed
170  */
171 
172 
173 #define MAX(A, B) (((A) < (B)) ? (B) : (A))
174 #define MIN(A, B) (((A) < (B)) ? (A) : (B))
175 #define cot(A) (1./tan(A))
176 
177 /** \name Constant declarations */
178 /** @{ */
179 
180 /* *******************************************************
181  * 9. Constant Declarations. (discouraged)
182  */
183 
184 /**
185  * Maximum ``error'' (as a fraction of the width of the thinnest annulus)
186  * which allows to represent a circle by a line.
187  */
188 #define LINERR 0.001
189 
190 /**
191  * Maximum ``error'' (as a fraction of the width of the thinnest annulus)
192  * which allows to consider two border equivalents!
193  * It is relevant for determining the LUT frequency range validity
194  */
195 #define PIXERR 0.5
196 
197 
198 /* Width of the thinnest annulus in terms of pixels */
199 /* #define PIXELFACTOR 2 */
200 
201 /** Earth v_epicycle/c TO BE CHANGED DEPENDING ON DETECTOR */
202 #define VEPI LAL_TWOPI * LAL_REARTH_SI / ( LAL_DAYSID_SI * LAL_C_SI )
203 /* #define VEPI 1.0e-06 */
204 /* vepi = 2*pi*R_earth /(day *c) */
205 
206 /** Total detector velocity/c TO BE CHANGED DEPENDING ON DETECTOR */
207 #define VTOT LAL_TWOPI * LAL_AU_SI / ( LAL_YRSID_SI * LAL_C_SI )
208 /* #define VTOT 1.06e-04 */
209 /* vtot = 2*pi* 1AU / (year * c) */
210 
211 /** @} */
212 
213 /* **************************************************************
214  * 10. Structure, enum, union, etc., typdefs.
215  */
216 
217 /** To be changed to {<tt>INT2 COORType</tt>} if the number of pixels in the x-direction exceeds 255. */
218 typedef INT2 COORType; /* typedef INT4 COORType; */ /* typedef UCHAR COORType; */
219 
220 /** This structure stores the border of a circle clipped on the projected plane. */
221 typedef struct tagHOUGHBorder {
222  INT4 yUpper; /**< upper y pixel affected by this border */
223  INT4 yLower; /**< lower y pixel affected by this border and yUpper<yLower or yUpper<0 are possible */
224  INT4 yCenter; /**< y pixel value of the center of the circle */
225  UINT2 ySide; /**< length of xPixel */
226  COORType *xPixel; /**< x pixel index to be marked */
227 } HOUGHBorder;
228 
229 
230 /**
231  * This structure stores the border indexes corresponding to one frequency
232  * bin plus the corrections to be added to the first column of the patch.
233  */
234 typedef struct tagHOUGHBin2Border {
235  INT2 leftB1; /**< Border index to be used (<em>start-border</em> ` \f$ +1 \f$ ') */
236  INT2 rightB1; /**< Border index to be used (<em>stop-border</em> ` \f$ -1 \f$ ') */
237  INT2 leftB2; /**< Border index to be used (<em>start-border</em> ` \f$ +1 \f$ ') */
238  INT2 rightB2; /**< Border index to be used (<em>stop-border</em> ` \f$ -1 \f$ ') */
239  INT2 piece1max; /**< Interval limits of the (first piece) correction to the first column. */
240  INT2 piece1min; /**< If <tt>piece1min \f$ > \f$ piece1max</tt> no corrections should be added */
241  INT2 piece2max; /**< Interval limits of the (second piece) correction to the first column */
242  INT2 piece2min; /**< If <tt>piece2min \f$ > \f$ piece2max</tt> no corrections should be added */
244 
245 /** This structure stores the patch-time-frequency <em>look up table</em>. */
246 typedef struct tagHOUGHptfLUT {
247  INT2 timeIndex; /**< time index of the \c lut */
248  INT8 f0Bin; /**< Frequency bin for which it has been constructed. */
249  REAL8 deltaF; /**< Frequency resolution <tt>df=1/TCOH</tt>, where <tt>1/TCOH</tt>
250  * is the coherent integration time used in teh demodulation procedure.
251  */
252  INT8 nFreqValid; /**< Number of frequencies where the \c lut is valid */
253  INT4 iniBin; /**< First bin affecting the patch with respect to \c f0 */
254  INT4 nBin; /**< Exact number of bins affecting the patch */
255  INT4 offset; /**< Frequency bin corresponding to center of patch measured with respect to \c f0Bin (zero in modulated case) */
256  UINT2 maxNBins; /**< Maximum number of bins affecting the patch (for memory allocation purposes) */
257  UINT2 maxNBorders; /**< Maximum number of borders affecting the patch (for memory allocation purposes) */
258  HOUGHBorder *border; /**< The annulus borders */
259  HOUGHBin2Border *bin; /**< Bin to border correspondence. */
260 } HOUGHptfLUT;
261 
262 
263 /** This structure stores patch-frequency \e grid information. */
264 typedef struct tagHOUGHPatchGrid {
265  REAL8 f0; /**< Frequency to construct grid */
266  REAL8 deltaF; /**< Frequency resolution: <tt>df=1/TCOH</tt> */
267  REAL8 deltaX; /**< Longitudinal space resolution, x-direction */
268  REAL8 xMin; /**< Patch limit, as the coordinate of the center of the first pixel */
269  REAL8 xMax; /**< Patch limit, as the coordinate of the center of the last pixel. */
270  UINT2 xSide; /**< Real number of pixels in the x direction (in the projected plane); it should be less than or equal to \c xSideMax. */
271  REAL8 *xCoor; /**< Coordinates of the pixel centers */
272  REAL8 deltaY; /**< Longitudinal space resolution, y-direction */
273  REAL8 yMin; /**< Patch limit, as center of the first pixel */
274  REAL8 yMax; /**< Patch limit, as center of the last pixel */
275  UINT2 ySide; /**< Real number of pixels in the y-direction (in the projected
276  * plane). It should be less than or equal to \c ySideMax.
277  */
278  REAL8 *yCoor; /**< Coordinates of the pixel centers. */
280 
281 /** parameters needed for gridding the patch */
282 typedef struct tagHOUGHResolutionPar {
283  INT8 f0Bin; /**< Frequency bin at which construct the grid */
284  REAL8 deltaF; /**< Frequency resolution: <tt>df=1/TCOH</tt> */
285  REAL8 patchSkySizeX;/**< Patch size in radians along x-axis */
286  REAL8 patchSkySizeY;/**< Patch size in radians along y-axis */
287  REAL8 pixelFactor; /**< number of pixel that fit in the thinnest annulus*/
288  REAL8 pixErr; /**< for validity of LUT as PIXERR */
289  REAL8 linErr; /**< as LINERR circle ->line */
290  REAL8 vTotC; /**< estimate value of v-total/C as VTOT */
292 
293 /** required for constructing patch */
294 typedef struct tagHOUGHSizePar {
295  INT8 f0Bin; /**< corresponding freq bin */
296  REAL8 deltaF; /**< df=1/TCOH */
297  REAL8 deltaX; /**< pixel size in the projected plane */
299  UINT2 xSide; /**< number of pixels in the x direction (projected plane)*/
300  UINT2 ySide; /**< number of pixels in the y direction */
301  UINT2 maxNBins; /**< maximum number of bins affecting the patch; for memory allocation */
302  UINT2 maxNBorders; /**< maximum number of borders affecting the patch; for memory allocation */
303  INT8 nFreqValid; /**< number of frequencies where the LUT is valid */
304  REAL8 epsilon; /**< max. angle (rad.) from the pole to consider a circle as a line in the projected plane */
305 } HOUGHSizePar;
306 
307 /** Three dimensional Cartessian coordinates */
308 typedef struct tagREAL8Cart3Coor {
313 
314 /** Two dimensional Cartessian coordinates */
315 typedef struct tagREAL8Cart2Coor {
319 
320 /** Two dimensional polar coordinates. */
321 typedef struct tagREAL8Polar2Coor {
325 
326 /** Polar coordinates of a unitary vector on the sphere */
327 typedef struct tagREAL8UnitPolarCoor {
328  REAL8 alpha; /**< any value */
329  REAL8 delta; /**< In the interval [ \f$ -\pi/2, \, \pi/2 \f$ ] */
331 
332 /** Parameters needed to construct the partial look up table */
333 typedef struct tagHOUGHParamPLUT {
334  INT8 f0Bin; /**< freq. bin for which it has been constructed */
335  REAL8 deltaF; /**< Frequency resolution: <tt>df=1/TCOH</tt> */
336  REAL8UnitPolarCoor xi; /**< Center of the circle on the celestial sphere,
337  * \f$ \xi \f$ (alpha,delta) in the rotated coordinates
338  */
339  REAL8 cosDelta; /**< \f$ \Delta \cos(\phi) \f$ corresponding to one annulus. */
340  INT4 offset; /**< Frequency bin corresponding to center of patch; measured w.r.t. \c f0Bin */
341  INT8 nFreqValid; /**< Number of frequency bins for which the LUT is valid */
342  REAL8 cosPhiMax0; /**< \f$ \max(\cos(\phi)) \f$ of the \c f0Bin */
343  REAL8 cosPhiMin0; /**< \f$ \min(\cos(\phi)) \f$ of the \c f0Bin */
344  REAL8 epsilon; /**< maximum angle (distance in radians) from the pole
345  * to consider a circle as a line in the projected plane
346  */
348 
349 /**
350  * Demodulation parameters needed for the Hough transform; all
351  * coordinates are assumed to be with respect to the same reference system.
352  */
353 typedef struct tagHOUGHDemodPar {
354  REAL8 deltaF; /**< Frequency resolution: <tt>df=1/TCOH</tt> */
355  REAL8UnitPolarCoor skyPatch; /**< \f$ N_{center} \f$ (alpha, delta): position of the center of the patch */
356  REAL8Cart3Coor veloC; /**< \f$ v(t)/c \f$ (x,y,z): Relative detector velocity */
357  REAL8Cart3Coor positC; /**< \f$ (x(t)-x(t0))/c \f$ (x,y,z): Position of the detector */
358  REAL8 timeDiff; /**< \f$ T_{\hat N} (t)-T_{\hat N} (\hat t_0) \f$ : time difference */
359  REAL8Vector spin; /**< Spin down information. It includes the fields:
360  * \c length: maximum order of spin-down parameter, and
361  * <tt>*data</tt>: pointer to spin-down parameter set \f$ F_k \f$
362  */
363 } HOUGHDemodPar;
364 
365 /*
366  * 11. Extern Global variables. (discouraged)
367  */
368 
369 
370 /*
371  * 12. Functions Declarations (i.e., prototypes).
372  */
373 void LALHOUGHComputeSizePar( LALStatus *status, /* demod case */
374  HOUGHSizePar *out,
376  );
377 
378 void LALHOUGHComputeNDSizePar( LALStatus *status, /* non -demod case*/
379  HOUGHSizePar *out,
381  );
382 
383 
385  HOUGHPatchGrid *out,
387  );
388 
389 void LALHOUGHCalcParamPLUT( LALStatus *status, /* Demod. case */
390  HOUGHParamPLUT *out, /* parameters needed build LUT*/
391  HOUGHSizePar *sizePar,
392  HOUGHDemodPar *par /* demodulation parameters */
393  );
394 
395 void LALNDHOUGHParamPLUT( LALStatus *status, /* non-demod. case */
396  HOUGHParamPLUT *out, /* parameters needed build LUT*/
397  HOUGHSizePar *sizePar,
398  HOUGHDemodPar *par /* demodulation parameters */
399  );
400 
402  REAL8UnitPolarCoor *out,
403  REAL8UnitPolarCoor *in,
405  );
406 
408  REAL8UnitPolarCoor *out,
409  REAL8UnitPolarCoor *in,
411  );
412 
414  REAL8Polar2Coor *out,
416  );
417 
419  REAL8Cart2Coor *out,
421  );
422 
424  REAL8UnitPolarCoor *out,
425  REAL8Polar2Coor *in
426  );
427 
429  REAL8UnitPolarCoor *out,
430  REAL8Cart2Coor *in
431  );
432 
434  HOUGHptfLUT *lut,
435  HOUGHPatchGrid *patch,
437  );
438 
439 /** @} */
440 
441 #ifdef __cplusplus
442 } /* Close C++ protection */
443 #endif
444 
445 #endif /* Close double-include protection _LUT_H */
446 
447 
448 
449 
450 
451 
452 
453 
454 
455 
456 
457 
458 
double REAL8
int16_t INT2
int64_t INT8
uint16_t UINT2
int32_t INT4
void LALStereoProjectCart(LALStatus *status, REAL8Cart2Coor *out, REAL8UnitPolarCoor *in)
void LALRotatePolarU(LALStatus *status, REAL8UnitPolarCoor *out, REAL8UnitPolarCoor *in, REAL8UnitPolarCoor *par)
Definition: Stereographic.c:97
void LALNDHOUGHParamPLUT(LALStatus *status, HOUGHParamPLUT *out, HOUGHSizePar *sizePar, HOUGHDemodPar *par)
Definition: NDParamPLUT.c:72
void LALStereoProjectPolar(LALStatus *status, REAL8Polar2Coor *out, REAL8UnitPolarCoor *in)
void LALInvRotatePolarU(LALStatus *status, REAL8UnitPolarCoor *out, REAL8UnitPolarCoor *in, REAL8UnitPolarCoor *par)
void LALStereoInvProjectPolar(LALStatus *status, REAL8UnitPolarCoor *out, REAL8Polar2Coor *in)
void LALHOUGHComputeNDSizePar(LALStatus *status, HOUGHSizePar *out, HOUGHResolutionPar *in)
Definition: PatchGrid.c:204
void LALHOUGHFillPatchGrid(LALStatus *status, HOUGHPatchGrid *out, HOUGHSizePar *par)
Definition: PatchGrid.c:331
void LALHOUGHConstructPLUT(LALStatus *status, HOUGHptfLUT *lut, HOUGHPatchGrid *patch, HOUGHParamPLUT *par)
void LALHOUGHCalcParamPLUT(LALStatus *status, HOUGHParamPLUT *out, HOUGHSizePar *sizePar, HOUGHDemodPar *par)
Definition: ParamPLUT.c:71
void LALHOUGHComputeSizePar(LALStatus *status, HOUGHSizePar *out, HOUGHResolutionPar *in)
Definition: PatchGrid.c:92
void LALStereoInvProjectCart(LALStatus *status, REAL8UnitPolarCoor *out, REAL8Cart2Coor *in)
INT2 COORType
To be changed to {INT2 COORType} if the number of pixels in the x-direction exceeds 255.
Definition: LUT.h:218
This structure stores the border indexes corresponding to one frequency bin plus the corrections to b...
Definition: LUT.h:234
INT2 rightB2
Border index to be used (stop-border ‘ ’)
Definition: LUT.h:238
INT2 leftB1
Border index to be used (start-border ‘ ’)
Definition: LUT.h:235
INT2 piece1min
If piece1min piece1max no corrections should be added.
Definition: LUT.h:240
INT2 piece2max
Interval limits of the (second piece) correction to the first column.
Definition: LUT.h:241
INT2 rightB1
Border index to be used (stop-border ‘ ’)
Definition: LUT.h:236
INT2 piece1max
Interval limits of the (first piece) correction to the first column.
Definition: LUT.h:239
INT2 leftB2
Border index to be used (start-border ‘ ’)
Definition: LUT.h:237
INT2 piece2min
If piece2min piece2max no corrections should be added.
Definition: LUT.h:242
This structure stores the border of a circle clipped on the projected plane.
Definition: LUT.h:221
COORType * xPixel
x pixel index to be marked
Definition: LUT.h:226
INT4 yLower
lower y pixel affected by this border and yUpper<yLower or yUpper<0 are possible
Definition: LUT.h:223
UINT2 ySide
length of xPixel
Definition: LUT.h:225
INT4 yCenter
y pixel value of the center of the circle
Definition: LUT.h:224
INT4 yUpper
upper y pixel affected by this border
Definition: LUT.h:222
Demodulation parameters needed for the Hough transform; all coordinates are assumed to be with respec...
Definition: LUT.h:353
REAL8Cart3Coor positC
(x,y,z): Position of the detector
Definition: LUT.h:357
REAL8 deltaF
Frequency resolution: df=1/TCOH
Definition: LUT.h:354
REAL8 timeDiff
: time difference
Definition: LUT.h:358
REAL8Cart3Coor veloC
(x,y,z): Relative detector velocity
Definition: LUT.h:356
REAL8Vector spin
Spin down information.
Definition: LUT.h:359
REAL8UnitPolarCoor skyPatch
(alpha, delta): position of the center of the patch
Definition: LUT.h:355
Parameters needed to construct the partial look up table.
Definition: LUT.h:333
REAL8UnitPolarCoor xi
Center of the circle on the celestial sphere, (alpha,delta) in the rotated coordinates.
Definition: LUT.h:336
REAL8 deltaF
Frequency resolution: df=1/TCOH
Definition: LUT.h:335
REAL8 cosPhiMin0
of the f0Bin
Definition: LUT.h:343
INT4 offset
Frequency bin corresponding to center of patch; measured w.r.t.
Definition: LUT.h:340
REAL8 epsilon
maximum angle (distance in radians) from the pole to consider a circle as a line in the projected pla...
Definition: LUT.h:344
REAL8 cosPhiMax0
of the f0Bin
Definition: LUT.h:342
REAL8 cosDelta
corresponding to one annulus.
Definition: LUT.h:339
INT8 nFreqValid
Number of frequency bins for which the LUT is valid.
Definition: LUT.h:341
INT8 f0Bin
freq.
Definition: LUT.h:334
This structure stores patch-frequency grid information.
Definition: LUT.h:264
UINT2 ySide
Real number of pixels in the y-direction (in the projected plane).
Definition: LUT.h:275
REAL8 deltaY
Longitudinal space resolution, y-direction.
Definition: LUT.h:272
REAL8 * xCoor
Coordinates of the pixel centers.
Definition: LUT.h:271
REAL8 yMin
Patch limit, as center of the first pixel.
Definition: LUT.h:273
UINT2 xSide
Real number of pixels in the x direction (in the projected plane); it should be less than or equal to...
Definition: LUT.h:270
REAL8 yMax
Patch limit, as center of the last pixel.
Definition: LUT.h:274
REAL8 deltaX
Longitudinal space resolution, x-direction.
Definition: LUT.h:267
REAL8 xMin
Patch limit, as the coordinate of the center of the first pixel.
Definition: LUT.h:268
REAL8 f0
Frequency to construct grid.
Definition: LUT.h:265
REAL8 xMax
Patch limit, as the coordinate of the center of the last pixel.
Definition: LUT.h:269
REAL8 * yCoor
Coordinates of the pixel centers.
Definition: LUT.h:278
REAL8 deltaF
Frequency resolution: df=1/TCOH
Definition: LUT.h:266
parameters needed for gridding the patch
Definition: LUT.h:282
REAL8 deltaF
Frequency resolution: df=1/TCOH
Definition: LUT.h:284
REAL8 pixErr
for validity of LUT as PIXERR
Definition: LUT.h:288
INT8 f0Bin
Frequency bin at which construct the grid.
Definition: LUT.h:283
REAL8 patchSkySizeY
Patch size in radians along y-axis.
Definition: LUT.h:286
REAL8 patchSkySizeX
Patch size in radians along x-axis.
Definition: LUT.h:285
REAL8 pixelFactor
number of pixel that fit in the thinnest annulus
Definition: LUT.h:287
REAL8 vTotC
estimate value of v-total/C as VTOT
Definition: LUT.h:290
REAL8 linErr
as LINERR circle ->line
Definition: LUT.h:289
required for constructing patch
Definition: LUT.h:294
UINT2 maxNBorders
maximum number of borders affecting the patch; for memory allocation
Definition: LUT.h:302
UINT2 maxNBins
maximum number of bins affecting the patch; for memory allocation
Definition: LUT.h:301
REAL8 epsilon
max.
Definition: LUT.h:304
UINT2 ySide
number of pixels in the y direction
Definition: LUT.h:300
INT8 nFreqValid
number of frequencies where the LUT is valid
Definition: LUT.h:303
INT8 f0Bin
corresponding freq bin
Definition: LUT.h:295
UINT2 xSide
number of pixels in the x direction (projected plane)
Definition: LUT.h:299
REAL8 deltaY
Definition: LUT.h:298
REAL8 deltaF
df=1/TCOH
Definition: LUT.h:296
REAL8 deltaX
pixel size in the projected plane
Definition: LUT.h:297
This structure stores the patch-time-frequency look up table.
Definition: LUT.h:246
INT4 offset
Frequency bin corresponding to center of patch measured with respect to f0Bin (zero in modulated case...
Definition: LUT.h:255
REAL8 deltaF
Frequency resolution df=1/TCOH, where 1/TCOH is the coherent integration time used in teh demodulatio...
Definition: LUT.h:249
UINT2 maxNBins
Maximum number of bins affecting the patch (for memory allocation purposes)
Definition: LUT.h:256
INT4 nBin
Exact number of bins affecting the patch.
Definition: LUT.h:254
HOUGHBorder * border
The annulus borders.
Definition: LUT.h:258
INT4 iniBin
First bin affecting the patch with respect to f0.
Definition: LUT.h:253
INT2 timeIndex
time index of the lut
Definition: LUT.h:247
HOUGHBin2Border * bin
Bin to border correspondence.
Definition: LUT.h:259
UINT2 maxNBorders
Maximum number of borders affecting the patch (for memory allocation purposes)
Definition: LUT.h:257
INT8 f0Bin
Frequency bin for which it has been constructed.
Definition: LUT.h:248
INT8 nFreqValid
Number of frequencies where the lut is valid.
Definition: LUT.h:252
Two dimensional Cartessian coordinates.
Definition: LUT.h:315
REAL8 y
Definition: LUT.h:317
REAL8 x
Definition: LUT.h:316
Three dimensional Cartessian coordinates.
Definition: LUT.h:308
REAL8 y
Definition: LUT.h:310
REAL8 x
Definition: LUT.h:309
REAL8 z
Definition: LUT.h:311
Two dimensional polar coordinates.
Definition: LUT.h:321
REAL8 radius
Definition: LUT.h:323
REAL8 alpha
Definition: LUT.h:322
Polar coordinates of a unitary vector on the sphere.
Definition: LUT.h:327
REAL8 alpha
any value
Definition: LUT.h:328
REAL8 delta
In the interval [ ].
Definition: LUT.h:329