00001 /* 00002 * Copyright (C) 2007 John Whelan, Reinhard Prix 00003 * 00004 * This program is free software; you can redistribute it and/or modify 00005 * it under the terms of the GNU General Public License as published by 00006 * the Free Software Foundation; either version 2 of the License, or 00007 * (at your option) any later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with with program; see the file COPYING. If not, write to the 00016 * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00017 * MA 02111-1307 USA 00018 */ 00019 00020 /*** <lalVerbatim file="ComplexAMHV"> 00021 Author: Whelan, J.T., Reinhard Prix 00022 $Id: ComplexAM.h,v 1.10 2008/08/01 12:03:17 reinhard Exp $ 00023 *** </lalVerbatim> */ 00024 00025 /* <lalLaTeX> 00026 \section{Header \texttt{ComplexAM.h}} 00027 \label{s:ComplexAM.h} 00028 Computes filter components for amplitude demodulation. 00029 00030 \subsection*{Synposis} 00031 \begin{verbatim} 00032 #include <lal/ComplexAM.h> 00033 \end{verbatim} 00034 00035 \noindent structures and prototypes associated with complex AM coefficients 00036 00037 </lalLaTeX> */ 00038 00039 00040 #ifndef _COMPLEXAM_H 00041 #define _COMPLEXAM_H 00042 00043 #include <math.h> 00044 #include <lal/DetResponse.h> 00045 #include <lal/DetectorSite.h> 00046 #include <lal/ComputeFstat.h> 00047 #include "LALBarycenter.h" 00048 00049 #ifdef __cplusplus 00050 extern "C" { 00051 #endif 00052 00053 NRCSID (COMPLEXAMH, "$Id: ComplexAM.h"); 00054 00055 00056 /*----- Error-codes -----*/ 00057 #define COMPLEXAMC_ENULL 1 00058 #define COMPLEXAMC_ENONULL 2 00059 #define COMPLEXAMC_EINPUT 3 00060 #define COMPLEXAMC_EMEM 4 00061 #define COMPLEXAMC_EXLAL 5 00062 #define COMPLEXAMC_EIEEE 6 00063 #define COMPLEXAMC_ERAALISA 7 00064 00065 #define COMPLEXAMC_MSGENULL "Arguments contained an unexpected null pointer" 00066 #define COMPLEXAMC_MSGENONULL "Output pointer is non-NULL" 00067 #define COMPLEXAMC_MSGEINPUT "Invalid input" 00068 #define COMPLEXAMC_MSGEMEM "Out of memory. Bad." 00069 #define COMPLEXAMC_MSGEXLAL "XLAL function call failed" 00070 #define COMPLEXAMC_MSGEIEEE "Floating point failure" 00071 #define COMPLEXAMC_MSGERAALISA "RAA response only available for LISA" 00072 00073 /* <lalLaTeX> 00074 \subsection*{Structures} 00075 00076 </lalLaTeX> */ 00077 00078 /** The 'detector tensor' for a GW-detector: symmetric 3x3 matrix, storing only the upper triangle. 00079 * The coordinate-system is SSB-fixed Cartesian coordinates, in particular EQUATORIAL coords for 00080 * Earth-based detectors and ECLIPTIC coords for LISA. 00081 */ 00082 typedef struct 00083 { 00084 SymmTensor3 re; /**< tensor holding real-parts of all components */ 00085 SymmTensor3 im; /**< tensor holding imaginary-parts of all components */ 00086 } CmplxDetectorTensor; 00087 00088 /** Convenience container for precomputed pi f L/c and skyposition vector 00089 */ 00090 typedef struct 00091 { 00092 REAL4 Freq; /**< signal frequency */ 00093 REAL8 skyposV[3]; /**< unit vector pointing to skyposition of source */ 00094 SymmTensor3 ePlus; /**< ePlus polarization tensor (skypos-dependent) */ 00095 SymmTensor3 eCross; /**< eCross polarization tensor (skypos-dependent) */ 00096 } FreqSkypos_t; 00097 00098 /* <lalLaTeX> 00099 \newpage\input{ComplexAMHV} 00100 % \newpage\input{ComplexAMC} 00101 </lalLaTeX> */ 00102 00103 /*---------- exported prototypes [API] ----------*/ 00104 00105 void 00106 LALGetCmplxAMCoeffs( LALStatus *, 00107 CmplxAMCoeffs *coeffs, 00108 const DetectorStateSeries *DetectorStates, 00109 const FreqSkypos_t *freq_skypos ); 00110 00111 void 00112 LALGetMultiCmplxAMCoeffs( LALStatus *, 00113 MultiCmplxAMCoeffs **multiAMcoef, 00114 const MultiDetectorStateSeries *multiDetStates, 00115 PulsarDopplerParams doppler ); 00116 00117 int 00118 XLALWeighMultiCmplxAMCoeffs ( MultiCmplxAMCoeffs *multiAMcoef, const MultiNoiseWeights *multiWeights ); 00119 00120 /* destructors */ 00121 void XLALDestroyMultiCmplxAMCoeffs ( MultiCmplxAMCoeffs *multiAMcoef ); 00122 00123 #ifdef __cplusplus 00124 } 00125 #endif 00126 00127 #endif /* _COMPLEXAM_H */
1.5.2