33 switch (
params->approximant )
38 for (
i=0 ;
i <
params->xfacVec->length ;
i++ )
70 onebysqrtoftwo, onebysqrtofsix;
74 sqrtoftwo = sqrt(2.0);
75 onebysqrtoftwo = 1.0 / sqrtoftwo;
76 onebysqrtofsix = 1.0 / sqrt(6.0);
122 for (
i = 0;
i < 5; ++
i )
136 if (InspTmplt->
tC >
params->maxTempLength )
138 fprintf(stderr,
"Template generated is longer than max. Template must not ");
139 fprintf(stderr,
"be longer than this as it causes wrapping issues in the ");
140 fprintf(stderr,
"FFT. Template length is %lf \n",InspTmplt->
tC);
145 for(
i = 0;
i <
N; ++
i)
147 omega_2_3 =
params->PTFomega_2_3->data[
i];
154 e2z =
params->PTFe2->data[2 *
N +
i];
156 Q[0].data[
i] = omega_2_3 * onebysqrtoftwo * ( cos(2 * phi) * (
e1x *
e1x +
157 e2y * e2y - e2x * e2x -
e1y *
e1y ) + 2 * sin(2 * phi) *
158 (
e1x * e2x -
e1y * e2y ));
159 Q[1].data[
i] = omega_2_3 * sqrtoftwo * ( cos(2 * phi) * (
e1x *
e1y -
160 e2x * e2y ) + sin(2 * phi) * (
e1x * e2y +
e1y * e2x ));
161 Q[2].data[
i] = omega_2_3 * sqrtoftwo * ( cos(2 * phi) * (
e1x *
e1z -
162 e2x * e2z ) + sin(2 * phi) * (
e1x * e2z +
e1z * e2x ));
163 Q[3].data[
i] = omega_2_3 * sqrtoftwo * ( cos(2 * phi) * (
e1y *
e1z -
164 e2y * e2z ) + sin(2 * phi) * (
e1y * e2z +
e1z * e2y ));
165 Q[4].data[
i] = omega_2_3 * onebysqrtofsix * ( cos(2 * phi) *
167 e2x * e2x - e2y * e2y ) + 2 * sin(2 * phi) * (
e1x * e2x +
168 e1y * e2y - 2 *
e1z * e2z ));
172 for (
i = 0;
i < 5; ++
i )
194 COMPLEX8FFTPlan *invPlan,
235 fFinal =
params->highFilterFrequency;
239 qtilde = qtildeVec->
data;
258 if (spinTemplate == 1)
270 for(
i = 0;
i < vecLength; ++
i )
272 for (
j = 0;
j <
i + 1; ++
j )
276 PTFM->
data[5 *
i +
j] += (crealf(PTFQtilde[
k +
i * len]) *
277 crealf(PTFQtilde[
k +
j * len]) +
278 cimagf(PTFQtilde[
k +
i * len]) *
279 cimagf(PTFQtilde[
k +
j * len]) )
291 for(
i = 0;
i < vecLength; ++
i )
293 for (
j = 0;
j <
i + 1; ++
j )
297 PTFN->
data[5 *
i +
j] += (crealf(PTFQtilde[
k +
i * len]) *
298 cimagf(PTFQtilde[
k +
j * len]) -
299 cimagf(PTFQtilde[
k +
i * len]) *
300 crealf(PTFQtilde[
k +
j * len]) )
310 for (
i = 0;
i < vecLength; ++
i )
315 memset( qtildeVec->
data, 0,
321 r = crealf(inputData[
k]);
322 s = cimagf(inputData[
k]);
365 fFinal =
params->highFilterFrequency;
374 for(
i = 0;
i < vecLen; ++
i )
376 for (
j = 0;
j < vecLen; ++
j )
380 PTFM->
data[vecLen *
i +
j] += (crealf(PTFQtilde1[
k +
i * len]) *
381 crealf(PTFQtilde2[
k +
j * len]) +
382 cimagf(PTFQtilde1[
k +
i * len]) *
383 cimagf(PTFQtilde2[
k +
j * len]) )
417 fFinal =
params->highFilterFrequency;
426 for(
i = 0;
i < vecLen; ++
i )
428 for (
j = 0;
j < vecLen; ++
j )
433 ( crealf(PTFQtilde1[
k +
i * len]) *
434 crealf(PTFQtilde2[
k +
j * len]) +
435 cimagf(PTFQtilde1[
k +
i * len]) *
436 cimagf(PTFQtilde2[
k +
j * len]) )
438 ( -crealf(PTFQtilde1[
k +
i * len]) *
439 cimagf(PTFQtilde2[
k +
j * len]) +
440 cimagf(PTFQtilde1[
k +
i * len]) *
441 crealf(PTFQtilde2[
k +
j * len]) )
455 COMPLEX8FFTPlan *invBankPlan,
485 fFinal =
params->highFilterFrequency;
490 qtilde = qtildeVec->
data;
502 for (
i = 0;
i < vecLen; ++
i )
504 memset( qtildeVec->
data, 0,
509 r = crealf(inputData[
k]);
510 s = cimagf(inputData[
k]);
511 x = crealf(PTFQtilde[
i * (
params->numFreqPoints) +
k]);
512 y = 0 - cimagf(PTFQtilde[
i * (
params->numFreqPoints) +
k]);
524 for (
i = 0;
i < vecLen ;
i++ )
526 for (
j =
params->analStartPointBuf; j < params->analEndPointBuf; ++
j )
529 (
j-
params->analStartPointBuf)]\
540 COMPLEX8FFTPlan *invBankPlan,
543 UINT4 timeStepPoints,
555 len =
params->numFreqPoints;
563 fFinal =
params->highFilterFrequency;
567 qtilde = qtildeVec->
data;
574 for (
i = 0;
i < vecLen; ++
i )
576 for (
j=0;
j < vecLen; ++
j )
578 memset( qtildeVec->
data, 0,
583 r = crealf(PTFQtilde[
i * (len ) +
k]);
584 s = cimagf(PTFQtilde[
i * (len ) +
k]);
585 x = crealf(PTFQtilde[
j * (len ) +
k]);
586 y = 0 - cimagf(PTFQtilde[
j * (len ) +
k]);
596 for (
k = 1;
k < numAutoPoints+1 ;
k++ )
void LALFindChirpTDTemplate(LALStatus *status, FindChirpTemplate *fcTmplt, InspiralTemplate *theTmplt, FindChirpTmpltParams *params)
#define sanity_check(condition)
void coh_PTF_template_PTF(FindChirpTemplate *fcTmplt, InspiralTemplate *InspTmplt, FindChirpTmpltParams *params)
void coh_PTF_complex_template_overlaps(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt1, FindChirpTemplate *fcTmplt2, REAL4FrequencySeries *invspec, UINT4 spinBank, COMPLEX8Array *PTFM)
void coh_PTF_template(FindChirpTemplate *fcTmplt, InspiralTemplate *InspTmplt, FindChirpTmpltParams *params)
void coh_PTF_template_overlaps(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt1, FindChirpTemplate *fcTmplt2, REAL4FrequencySeries *invspec, UINT4 spinBank, REAL8Array *PTFM)
void coh_PTF_auto_veto_overlaps(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt, struct bankComplexTemplateOverlaps *autoTempOverlaps, REAL4FrequencySeries *invspec, COMPLEX8FFTPlan *invBankPlan, UINT4 spinBank, UINT4 numAutoPoints, UINT4 timeStepPoints, UINT4 ifoNumber)
void coh_PTF_normalize(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt, REAL4FrequencySeries *invspec, REAL8Array *PTFM, REAL8Array *PTFN, COMPLEX8VectorSequence *PTFqVec, COMPLEX8FrequencySeries *sgmnt, COMPLEX8FFTPlan *invPlan, UINT4 spinTemplate)
void coh_PTF_bank_filters(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt, UINT4 spinBank, COMPLEX8FrequencySeries *sgmnt, COMPLEX8FFTPlan *invBankPlan, COMPLEX8VectorSequence *PTFqVec, COMPLEX8VectorSequence *PTFBankqVec, REAL8 f_min, REAL8 fFinal)
int XLALCOMPLEX8VectorFFT(COMPLEX8Vector *_LAL_RESTRICT_ output, const COMPLEX8Vector *_LAL_RESTRICT_ input, const COMPLEX8FFTPlan *plan)
INT4 XLALFindChirpPTFWaveform(REAL4Vector *PTFphi, REAL4Vector *PTFomega_2_3, REAL4VectorSequence *PTFe1, REAL4VectorSequence *PTFe2, InspiralTemplate *InspTmplt, REAL8 deltaT)
void LALFindChirpSPTemplate(LALStatus *status, FindChirpTemplate *fcTmplt, InspiralTemplate *tmplt, FindChirpTmpltParams *params)
#define XLAL_INIT_DECL(var,...)
int XLALREAL4ForwardFFT(COMPLEX8Vector *output, const REAL4Vector *input, const REAL4FFTPlan *plan)
COMPLEX8Vector * XLALCreateCOMPLEX8Vector(UINT4 length)
void XLALDestroyCOMPLEX8Vector(COMPLEX8Vector *vector)
This structure contains a frequency domain template used as input to the FindChirpFilter() routine.
COMPLEX8Vector * data
Vector of length containing the frequency template data ; For a template generated in the frequency ...
COMPLEX8VectorSequence * PTFQtilde
UNDOCUMENTED.
InspiralTemplate tmplt
The template parameters of this FindChirpTemplate; In addition to the mass parameters the following f...
REAL4VectorSequence * PTFQ
UNDOCUMENTED.
This structure contains the parameters for generation of templates by the various template generation...
COMPLEX8Array * PTFM[LAL_NUM_IFO]