5#define UNUSED __attribute__ ((unused))
19 struct timeval startTime
22 UINT4 ui,uj,ifoNumber,subBankSize;
34 params->BVsubBankSize = subBankSize;
35 bankNormOverlaps =
LALCalloc(subBankSize,
sizeof(*bankNormOverlaps));
36 bankOverlaps =
LALCalloc(subBankSize,
sizeof(*bankOverlaps));
37 dataOverlaps =
LALCalloc(subBankSize,
sizeof(*dataOverlaps));
38 bankFcTmplts =
LALCalloc(subBankSize,
sizeof(*bankFcTmplts));
40 for (ui =0 ; ui < subBankSize; ui++)
45 PTFBankvetoHead = PTFBankTemplates;
47 for (ui=0 ; ui < subBankSize ; ui++)
51 PTFBankTemplates = PTFBankTemplates->
next;
53 for (uj = 0 ; uj <
params->numFreqPoints ; uj++)
62 for (ui = 0 ; ui < subBankSize; ui++)
64 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
66 if (
params->haveTrig[ifoNumber])
68 bankNormOverlaps[ui].
PTFM[ifoNumber]=
70 memset(bankNormOverlaps[ui].PTFM[ifoNumber]->
data,
71 0, 1 *
sizeof(
REAL8));
74 1,
params->numAnalPointsBuf);
79 &(bankFcTmplts[ui]),invspec[ifoNumber],0,
80 bankNormOverlaps[ui].PTFM[ifoNumber]);
85 while (PTFBankvetoHead)
88 thisTmplt = PTFBankvetoHead;
89 PTFBankvetoHead = PTFBankvetoHead->
next;
95 *bankNormOverlapsP = bankNormOverlaps;
96 *bankOverlapsP = bankOverlaps;
97 *dataOverlapsP = dataOverlaps;
98 *bankFcTmpltsP = bankFcTmplts;
109 COMPLEX8FFTPlan *invplan,
111 struct timeval startTime
115 for (ui = 0 ; ui <
params->BVsubBankSize ; ui++)
117 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
119 if (
params->haveTrig[ifoNumber])
123 &segments[ifoNumber]->sgmnt[segmentNum], invplan,
125 dataOverlaps[ui].
PTFqVec[ifoNumber], 0, 0);
129 verbose(
"Generated bank veto filters for segment %d at %ld \n", segmentNum,
142 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
144 if (
params->haveTrig[ifoNumber])
146 for (ui = 0 ; ui <
params->BVsubBankSize ; ui++)
148 memset(bankOverlaps[ui].PTFM[ifoNumber]->
data,0,1*
sizeof(
COMPLEX8));
152 fcTmplt, invspec[ifoNumber], 0,
153 bankOverlaps[ui].PTFM[ifoNumber]);
162 gsl_matrix **Bankeigenvecs,
163 gsl_vector **Bankeigenvals,
171 UINT4 csVecLengthTwo,
180 for (
j = 0 ;
j <
params->BVsubBankSize+1 ;
j++)
182 if (! Bankeigenvecs[
j])
184 Bankeigenvecs[
j] = gsl_matrix_alloc(csVecLengthTwo,
186 Bankeigenvals[
j] = gsl_vector_alloc(csVecLengthTwo);
187 if (
j ==
params->BVsubBankSize)
191 Bankeigenvals[
j],Fplus,Fcross,PTFM,csVecLength,csVecLengthTwo,
197 Bankeigenvals[
j],Fplus,Fcross,bankNormOverlaps[
j].PTFM,csVecLength,
198 csVecLengthTwo,vecLength);
206 if (! *bankCohOverlapsP)
208 bankCohOverlaps =
LALCalloc(
params->BVsubBankSize,
sizeof(*bankCohOverlaps));
209 *bankCohOverlapsP = bankCohOverlaps;
210 for (
j = 0 ;
j <
params->BVsubBankSize;
j++)
213 csVecLengthTwo,csVecLengthTwo);
215 csVecLengthTwo,csVecLengthTwo);
217 bankCohOverlaps[
j],Fplus,Fcross,Bankeigenvecs[
params->BVsubBankSize],
218 Bankeigenvals[
params->BVsubBankSize],Bankeigenvecs[
j],
219 Bankeigenvals[
j],csVecLength,csVecLengthTwo);
227 struct timeval startTime
231 UINT4 uj,ifoNumber,timeStepPoints;
232 verbose(
"Initializing auto veto filters at %ld \n",
236 sizeof(*autoTempOverlaps));
237 timeStepPoints =
params->autoVetoTimeStep*
params->sampleRate;
238 for (uj = 0; uj <
params->numAutoPoints; uj++)
240 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
242 if (
params->haveTrig[ifoNumber])
247 memset(autoTempOverlaps[uj].
PTFM[ifoNumber]->
data, 0,
251 autoTempOverlaps[uj].
PTFM[ifoNumber] = NULL;
254 verbose(
"Generated auto veto filters at %ld \n",
257 *autoTempOverlapsP = autoTempOverlaps;
258 return timeStepPoints;
266 COMPLEX8FFTPlan *invplan,
272 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
274 if (
params->haveTrig[ifoNumber])
277 invspec[ifoNumber],invplan,0,
params->numAutoPoints,
278 timeStepPoints,ifoNumber);
285 gsl_matrix **AutoeigenvecsP,
286 gsl_vector **AutoeigenvalsP,
293 UINT4 csVecLengthTwo,
298 gsl_matrix *Autoeigenvecs = *AutoeigenvecsP;
299 gsl_vector *Autoeigenvals = *AutoeigenvalsP;
304 if (! *AutoeigenvecsP)
306 Autoeigenvecs = gsl_matrix_alloc(csVecLengthTwo,csVecLengthTwo);
307 Autoeigenvals = gsl_vector_alloc(csVecLengthTwo);
308 *AutoeigenvecsP = Autoeigenvecs;
309 *AutoeigenvalsP = Autoeigenvals;
311 Fplus,Fcross,PTFM,csVecLength,csVecLengthTwo,vecLength);
315 if (! *autoCohOverlapsP)
318 sizeof(*autoCohOverlaps));
319 *autoCohOverlapsP = autoCohOverlaps;
320 for (
j = 0 ;
j <
params->numAutoPoints;
j++)
323 csVecLengthTwo,csVecLengthTwo);
325 csVecLengthTwo,csVecLengthTwo);
328 autoCohOverlaps[
j],Fplus,Fcross,Autoeigenvecs,Autoeigenvals,
329 Autoeigenvecs,Autoeigenvals,csVecLength,csVecLengthTwo);
336 gsl_matrix **AutoeigenvecsP,
337 gsl_vector **AutoeigenvalsP,
338 REAL4 **frequencyRangesPlus,
339 REAL4 **frequencyRangesCross,
340 REAL4 **powerBinsPlus,
341 REAL4 **powerBinsCross,
350 COMPLEX8FFTPlan *invPlan,
353 UINT4 csVecLengthTwo,
358 REAL4 fLowPlus,fHighPlus,fLowCross,fHighCross;
359 gsl_matrix *Autoeigenvecs = *AutoeigenvecsP;
360 gsl_vector *Autoeigenvals = *AutoeigenvalsP;
366 if (! *AutoeigenvecsP)
368 Autoeigenvecs = gsl_matrix_alloc(csVecLengthTwo,csVecLengthTwo);
369 Autoeigenvals = gsl_vector_alloc(csVecLengthTwo);
370 *AutoeigenvecsP = Autoeigenvecs;
371 *AutoeigenvalsP = Autoeigenvals;
373 Fplus,Fcross,PTFM,csVecLength,csVecLengthTwo,vecLength);
405 sizeof(*chisqOverlaps));
406 *chisqOverlapsP = chisqOverlaps;
408 for(
j = 0;
j <
params->numChiSquareBins;
j++)
411 if (
params->numChiSquareBins == 1)
426 else if (
j ==
params->numChiSquareBins-1)
448 XLALCreateCOMPLEX8VectorSequence (1,
params->numAnalPointsBuf);
450 &segments[
k]->sgmnt[segmentNumber],invPlan,tempqVec,
451 chisqOverlaps[
j].
PTFqVec[
k],fLowPlus,fHighPlus);
455 XLALCreateCOMPLEX8VectorSequence (1,
params->numAnalPointsBuf);
457 &segments[
k]->sgmnt[segmentNumber],invPlan,tempqVec,
459 fLowCross,fHighCross);
475 REAL4 **frequencyRangesPlus,
476 REAL4 **frequencyRangesCross,
477 REAL4 **powerBinsPlus,
478 REAL4 **powerBinsCross,
485 COMPLEX8FFTPlan *invPlan,
494 if (! chisqSnglOverlaps)
497 sizeof(*chisqSnglOverlaps));
498 *chisqSnglOverlapsP = chisqSnglOverlaps;
501 for(
j = 0;
j <
params->numChiSquareBins;
j++)
516 if (! frequencyRangesPlus[
k])
518 frequencyRangesPlus[
k] = (
REAL4 *)
520 frequencyRangesCross[
k] = (
REAL4 *)
523 PTFM,NULL,NULL,frequencyRangesPlus[
k],frequencyRangesCross[
k],\
526 if (! powerBinsPlus[
k])
528 powerBinsPlus[
k] = (
REAL4 *)
530 powerBinsCross[
k] = (
REAL4 *)
533 PTFM,NULL,NULL,frequencyRangesPlus[
k],frequencyRangesCross[
k],\
534 powerBinsPlus[
k],powerBinsCross[
k],overlapCont,NULL,
k,0);
536 for(
j = 0;
j <
params->numChiSquareBins;
j++)
546 if (
params->numChiSquareBins == 1)
554 fHigh = frequencyRangesPlus[
k][0];
556 else if (
j ==
params->numChiSquareBins-1)
558 fLow = frequencyRangesPlus[
k][
params->numChiSquareBins-2];
563 fLow = frequencyRangesPlus[
k][
j-1];
564 fHigh = frequencyRangesPlus[
k][
j];
570 &segments[
k]->sgmnt[segmentNumber],invPlan,tempqVec,\
593 params->bankVetoBankName,-1, -1 );
595 bankTemplate = *PTFBankTemplates;
597 for (
i=0; (
i < numTemplates); bankTemplate = bankTemplate->
next,
i++)
613 srand(
params->randomSeed);
615 REAL4 maxmass1 = 30.;
623 for (
i=0 ;
i < subBankSize ;
i++ )
629 PTFBankTemplates[
i].
mass1 = pow(rand()/(
float)RAND_MAX,2)*(maxmass1-minmass1)+minmass1;
630 PTFBankTemplates[
i].
mass2 = rand()/(
float)RAND_MAX*(PTFBankTemplates[
i].
mass1 - minmass2) + minmass2;
631 PTFBankTemplates[
i].
chi = rand()/(
float)RAND_MAX*(maxchi-minchi)+minchi;
632 PTFBankTemplates[
i].
kappa = rand()/(
float)RAND_MAX*(maxkappa-minkappa)+minkappa;
633 PTFBankTemplates[
i].
fLower = 38.;
641REAL4 Fplus[LAL_NUM_IFO],
642REAL4 Fcross[LAL_NUM_IFO],
650INT4 timeOffsetPoints[LAL_NUM_IFO],
651gsl_matrix **Bankeigenvecs,
652gsl_vector **Bankeigenvals,
660 UINT4 ui,uj,uk,halfNumPoints;
661 gsl_matrix *rotReOverlaps;
662 gsl_matrix *rotImOverlaps;
663 UINT4 snglDetMode = 1;
670 REAL4 BankVetoTemp[2*vecLengthTwo];
672 REAL4 normFac,overlapNorm,bankOverRe,bankOverIm;
673 REAL4 *TjwithS1,*TjwithS2;
682 SNRu1[0] = crealf(
PTFqVec[detectorNum]->
data[position+timeOffsetPoints[detectorNum]]);
683 SNRu1[0] = SNRu1[0] / pow(PTFM[detectorNum]->
data[0],0.5);
684 SNRu2[0] = cimagf(
PTFqVec[detectorNum]->
data[position+timeOffsetPoints[detectorNum]]);
685 SNRu2[0] = SNRu2[0] / pow(PTFM[detectorNum]->
data[0],0.5);
690 timeOffsetPoints,Bankeigenvecs[subBankSize],Bankeigenvals[subBankSize],
695 halfNumPoints =
params->numAnalPoints;
697 for ( ui = 0 ; ui < subBankSize ; ui++ )
701 TjwithS1[0] = crealf(dataOverlaps[ui].
PTFqVec[detectorNum]->
data[position \
702 -
params->analStartPointBuf + timeOffsetPoints[detectorNum]]);
703 TjwithS1[0] = TjwithS1[0] / \
704 pow(bankNormOverlaps[ui].PTFM[detectorNum]->
data[0],0.5);
705 TjwithS2[0] = cimagf(dataOverlaps[ui].
PTFqVec[detectorNum]->
data[position \
706 -
params->analStartPointBuf + timeOffsetPoints[detectorNum]]);
707 TjwithS2[0] = TjwithS2[0] / \
708 pow(bankNormOverlaps[ui].PTFM[detectorNum]->
data[0],0.5);
709 overlapNorm = PTFM[detectorNum]->data[0];
710 overlapNorm *= bankNormOverlaps[ui].
PTFM[detectorNum]->
data[0];
711 overlapNorm = pow(overlapNorm,0.5);
712 bankOverRe = crealf(bankOverlaps[ui].PTFM[detectorNum]->
data[0]);
713 bankOverIm = cimagf(bankOverlaps[ui].PTFM[detectorNum]->
data[0]);
714 bankOverRe = bankOverRe/overlapNorm;
715 bankOverIm = bankOverIm/overlapNorm;
716 for (uj = 0; uj < 2 * vecLengthTwo; uj++)
721 BankVetoTemp[uj] = TjwithS1[0];
723 BankVetoTemp[uj] = TjwithS2[0];
724 for (uk = 0; uk < 2*vecLengthTwo; uk++)
726 if (uj == 0 && uk == 0)
728 BankVetoTemp[uj] -= bankOverRe*SNRu1[0];
729 normFac += pow(bankOverRe,2);
731 if (uj == 0 && uk == vecLengthTwo )
733 BankVetoTemp[uj] -= bankOverIm*SNRu2[0];
734 normFac += pow(bankOverIm,2);
736 if (uj == vecLengthTwo && uk == 0 )
738 BankVetoTemp[uj] += bankOverIm*SNRu1[0];
739 normFac += pow(bankOverIm,2);
741 if (uj == vecLengthTwo && uk == vecLengthTwo )
743 BankVetoTemp[uj]-=bankOverRe*SNRu2[0];
744 normFac += pow(bankOverRe,2);
747 BankVeto+=pow(BankVetoTemp[uj],2)/(1-normFac);
759 TjwithS1,TjwithS2,Fplus,Fcross,timeOffsetPoints,Bankeigenvecs[ui],
760 Bankeigenvals[ui],halfNumPoints,position-
params->analStartPointBuf,
762 for (uj = 0; uj < 2*vecLengthTwo; uj++)
765 if (uj < vecLengthTwo)
766 BankVetoTemp[uj] = TjwithS1[uj];
768 BankVetoTemp[uj] = TjwithS2[uj-vecLengthTwo];
769 for (uk = 0; uk < 2*vecLengthTwo; uk++)
771 if (uj < vecLengthTwo && uk < vecLengthTwo)
773 BankVetoTemp[uj] -= gsl_matrix_get(rotReOverlaps,uk,uj)*SNRu1[uk];
774 normFac += pow(gsl_matrix_get(rotReOverlaps,uk,uj),2);
776 if (uj < vecLengthTwo && uk >= vecLengthTwo )
778 BankVetoTemp[uj] -= SNRu2[uk-vecLengthTwo] * gsl_matrix_get(
779 rotImOverlaps, uk-vecLengthTwo,uj);
780 normFac += pow(gsl_matrix_get(rotImOverlaps,uk-vecLengthTwo,uj),2);
782 if (uj >= vecLengthTwo && uk < vecLengthTwo )
784 BankVetoTemp[uj] += SNRu1[uk] * gsl_matrix_get(
785 rotImOverlaps,uk,uj-vecLengthTwo);
786 normFac += pow(gsl_matrix_get(rotImOverlaps,uk,uj-vecLengthTwo),2);
788 if (uj >= vecLengthTwo && uk >= vecLengthTwo )
790 BankVetoTemp[uj]-= SNRu2[uk-vecLengthTwo] * gsl_matrix_get(
791 rotReOverlaps,uk-vecLengthTwo,uj-vecLengthTwo);
792 normFac += pow(gsl_matrix_get(rotReOverlaps,
793 uk-vecLengthTwo,uj-vecLengthTwo),2);
796 BankVeto+=pow(BankVetoTemp[uj],2)/(1-normFac);
814REAL4 Fplus[LAL_NUM_IFO],
815REAL4 Fcross[LAL_NUM_IFO],
821INT4 timeOffsetPoints[LAL_NUM_IFO],
822gsl_matrix *Autoeigenvecs,
823gsl_vector *Autoeigenvals,
832 gsl_matrix *rotReOverlaps;
833 gsl_matrix *rotImOverlaps;
834 UINT4 timeStepPoints = 0;
835 timeStepPoints =
params->autoVetoTimeStep*
params->sampleRate;
837 UINT4 snglDetMode = 1;
844 REAL4 AutoVetoTemp[2*vecLengthTwo];
846 REAL4 normFac,autoOverRe,autoOverIm;
847 REAL4 *TjwithS1,*TjwithS2;
856 SNRu1[0] = crealf(
PTFqVec[detectorNum]->
data[position+timeOffsetPoints[detectorNum]]);
857 SNRu1[0] = SNRu1[0] / pow(PTFM[detectorNum]->
data[0],0.5);
858 SNRu2[0] = cimagf(
PTFqVec[detectorNum]->
data[position+timeOffsetPoints[detectorNum]]);
859 SNRu2[0] = SNRu2[0] / pow(PTFM[detectorNum]->
data[0],0.5);
864 timeOffsetPoints,Autoeigenvecs,Autoeigenvals,
868 for ( ui = 0 ; ui <
params->numAutoPoints ; ui++ )
872 TjwithS1[0] = crealf(
PTFqVec[detectorNum]->
data[position \
873 - ((ui+1) * timeStepPoints)+timeOffsetPoints[detectorNum]]);
874 TjwithS1[0] = TjwithS1[0] / pow(PTFM[detectorNum]->
data[0],0.5);
875 TjwithS2[0] = cimagf(
PTFqVec[detectorNum]->
data[position \
876 - ((ui+1) * timeStepPoints)+timeOffsetPoints[detectorNum]]);
877 TjwithS2[0] = TjwithS2[0] / pow(PTFM[detectorNum]->
data[0],0.5);
878 autoOverRe = crealf(autoTempOverlaps[ui].PTFM[detectorNum]->
data[0]);
879 autoOverIm = cimagf(autoTempOverlaps[ui].PTFM[detectorNum]->
data[0]);
880 autoOverRe = autoOverRe / PTFM[detectorNum]->data[0];
881 autoOverIm = autoOverIm / PTFM[detectorNum]->data[0];
882 for (uj = 0; uj < 2*vecLengthTwo; uj++)
886 AutoVetoTemp[uj] = TjwithS1[0];
888 AutoVetoTemp[uj] = TjwithS2[0];
889 for (uk = 0; uk < 2*vecLengthTwo; uk++)
891 if (uj == 0 && uk == 0)
893 AutoVetoTemp[uj] -= autoOverRe*SNRu1[0];
894 normFac += pow(autoOverRe,2);
896 if (uj == 0 && uk == 1 )
898 AutoVetoTemp[uj] += autoOverIm*SNRu2[0];
899 normFac += pow(autoOverIm,2);
901 if (uj == 1 && uk == 0 )
903 AutoVetoTemp[uj] -= autoOverIm*SNRu1[0];
904 normFac += pow(autoOverIm,2);
906 if (uj == 1 && uk == 1 )
908 AutoVetoTemp[uj] -= autoOverRe*SNRu2[0];
909 normFac += pow(autoOverRe,2);
912 AutoVeto+=pow(AutoVetoTemp[uj],2)/(1-normFac);
924 TjwithS2,Fplus,Fcross,timeOffsetPoints,Autoeigenvecs,
925 Autoeigenvals,
numPoints,position-((ui+1) * timeStepPoints),vecLength,
927 for (uj = 0; uj < 2*vecLengthTwo; uj++)
930 if (uj < vecLengthTwo)
931 AutoVetoTemp[uj] = TjwithS1[uj];
933 AutoVetoTemp[uj] = TjwithS2[uj-vecLengthTwo];
934 for (uk = 0; uk < 2*vecLengthTwo; uk++)
936 if (uj < vecLengthTwo && uk < vecLengthTwo)
938 AutoVetoTemp[uj] -= gsl_matrix_get(rotReOverlaps,uk,uj)*SNRu1[uk];
939 normFac += pow(gsl_matrix_get(rotReOverlaps,uk,uj),2);
941 if (uj < vecLengthTwo && uk >= vecLengthTwo )
943 AutoVetoTemp[uj] += SNRu2[uk-vecLengthTwo] * gsl_matrix_get(
944 rotImOverlaps,uk-vecLengthTwo,uj);
945 normFac += pow(gsl_matrix_get(rotImOverlaps,uk-vecLengthTwo,uj),2);
947 if (uj >= vecLengthTwo && uk < vecLengthTwo )
949 AutoVetoTemp[uj] -= SNRu1[uk] * gsl_matrix_get(
950 rotImOverlaps,uk,uj-vecLengthTwo);
951 normFac += pow(gsl_matrix_get(rotImOverlaps,uk,uj-vecLengthTwo),2);
953 if (uj >= vecLengthTwo && uk >= vecLengthTwo )
955 AutoVetoTemp[uj]-= SNRu2[uk-vecLengthTwo] * gsl_matrix_get(
956 rotReOverlaps,uk-vecLengthTwo,uj-vecLengthTwo);
957 normFac += pow(gsl_matrix_get(rotReOverlaps,
958 uk-vecLengthTwo,uj-vecLengthTwo),2);
961 AutoVeto+=pow(AutoVetoTemp[uj],2)/(1-normFac);
985 if ( bankNormOverlaps )
987 for ( ui = 0 ; ui <
params->BVsubBankSize ; ui++ )
989 for( ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
991 if ( bankNormOverlaps[ui].PTFM[ifoNumber] )
1002 for ( ui = 0 ; ui <
params->BVsubBankSize ; ui++ )
1004 if ( bankFcTmplts[ui].PTFQtilde )
1012 for (ui = 0 ; ui <
params->BVsubBankSize ; ui++)
1014 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
1016 if (dataOverlaps[ui].
PTFqVec[ifoNumber])
1018 dataOverlaps[ui].
PTFqVec[ifoNumber]);
1025 for (ui = 0 ; ui <
params->BVsubBankSize ; ui++)
1027 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
1029 if (bankOverlaps[ui].PTFM[ifoNumber])
1036 if (autoTempOverlaps)
1038 for (ui = 0; ui <
params->numAutoPoints; ui++)
1040 for(ifoNumber = 0; ifoNumber <
LAL_NUM_IFO; ifoNumber++)
1042 if (
params->haveTrig[ifoNumber])
1044 if (autoTempOverlaps[ui].PTFM[ifoNumber])
1061 REAL4 Fplus[LAL_NUM_IFO],
1062 REAL4 Fcross[LAL_NUM_IFO],
1063 gsl_matrix *eigenvecs,
1064 gsl_vector *eigenvals,
1065 gsl_matrix *Bankeigenvecs,
1066 gsl_vector *Bankeigenvals,
1077 gsl_matrix *reOverlaps = gsl_matrix_alloc(vecLengthTwo,vecLengthTwo);
1078 gsl_matrix *imOverlaps = gsl_matrix_alloc(vecLengthTwo,vecLengthTwo);
1079 gsl_matrix *tempM = gsl_matrix_alloc(vecLengthTwo,vecLengthTwo);
1080 REAL4 reOverlapsA[vecLengthTwo*vecLengthTwo];
1081 REAL4 imOverlapsA[vecLengthTwo*vecLengthTwo];
1085 for (uj = 0; uj < vecLengthTwo; uj++)
1087 for (uk = 0 ; uk < vecLengthTwo; uk++)
1089 reOverlapsA[uj*vecLengthTwo + uk] = 0;
1090 imOverlapsA[uj*vecLengthTwo + uk] = 0;
1098 for (uj = 0; uj < vecLengthTwo; uj++)
1100 if (
params->faceOnStatistic)
1102 for (uk = 0 ; uk < vecLengthTwo; uk++)
1105 reOverlapsA[uj*vecLengthTwo + uk] += (Fplus[
ul]*Fplus[
ul] + Fcross[
ul] * Fcross[
ul])*crealf(bankOverlaps.
PTFM[
ul]->
data[0]);
1106 if (
params->faceOnStatistic == 1)
1108 imOverlapsA[uj*vecLengthTwo + uk] += -(Fplus[
ul]*Fplus[
ul] + Fcross[
ul] * Fcross[
ul])*cimagf(bankOverlaps.
PTFM[
ul]->
data[0]);
1110 else if (
params->faceOnStatistic == 2)
1112 imOverlapsA[uj*vecLengthTwo + uk] += (Fplus[
ul]*Fplus[
ul] + Fcross[
ul] * Fcross[
ul])*cimagf(bankOverlaps.
PTFM[
ul]->
data[0]);
1116 fprintf(stderr,
"Shit, I shouldn't be here! Face-on stat is broken");
1126 for (uk = 0 ; uk < vecLengthTwo; uk++)
1132 reOverlapsA[uj*vecLengthTwo + uk] +=
1133 fone * ftwo * crealf(bankOverlaps.
PTFM[
ul]->
data[0]);
1134 imOverlapsA[uj*vecLengthTwo + uk] +=
1135 fone * ftwo * cimagf(bankOverlaps.
PTFM[
ul]->
data[0]);
1141 for (uj = 0; uj < vecLengthTwo; uj++)
1143 for (uk = 0; uk < vecLengthTwo; uk++)
1145 gsl_matrix_set(reOverlaps,uj,uk,reOverlapsA[uj*vecLengthTwo+uk]);
1146 gsl_matrix_set(imOverlaps,uj,uk,imOverlapsA[uj*vecLengthTwo+uk]);
1152 gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1,reOverlaps,eigenvecs,0.,tempM);
1153 gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1,Bankeigenvecs,tempM,0.,rotReOverlaps);
1155 gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1,imOverlaps,eigenvecs,0.,tempM);
1156 gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1,Bankeigenvecs,tempM,0.,rotImOverlaps);
1158 for (uj=0; uj<vecLengthTwo; uj++)
1160 for (uk=0; uk<vecLengthTwo; uk++ )
1162 gsl_matrix_set(rotReOverlaps,uj,uk,gsl_matrix_get(rotReOverlaps,uj,uk)/(sqrt(gsl_vector_get(eigenvals,uk))*sqrt(gsl_vector_get(Bankeigenvals,uj))));
1163 gsl_matrix_set(rotImOverlaps,uj,uk,gsl_matrix_get(rotImOverlaps,uj,uk)/(sqrt(gsl_vector_get(eigenvals,uk))*sqrt(gsl_vector_get(Bankeigenvals,uj))));
1167 gsl_matrix_free(reOverlaps);
1168 gsl_matrix_free(imOverlaps);
1169 gsl_matrix_free(tempM);
1178 REAL4 Fplus[LAL_NUM_IFO],
1179 REAL4 Fcross[LAL_NUM_IFO],
1180 REAL4 *frequencyRangesPlus,
1181 REAL4 *frequencyRangesCross,
1182 gsl_matrix *eigenvecs,
1189 REAL4 SNRtempPlus,SNRtempCross,SNRmaxPlus,SNRmaxCross;
1192 REAL8 v1,v2,overlapCont;
1204 len = invspec[
k]->data->length;
1214 fFinal =
params->highFilterFrequency;
1217 numFreqBins =
params->numChiSquareBins;
1224 if ( singlePolFlag )
1235 else if (
params->faceOnStatistic)
1241 a2[
k] = pow(Fplus[
k]*Fplus[
k] + Fcross[
k] * Fcross[
k],0.5);
1252 a2[
k] = Fplus[
k]*gsl_matrix_get(eigenvecs,0,0) + Fcross[
k]*gsl_matrix_get(eigenvecs,1,0);
1253 b2[
k] = Fplus[
k]*gsl_matrix_get(eigenvecs,0,1) + Fcross[
k]*gsl_matrix_get(eigenvecs,1,1);
1261 v1 +=
a2[
k]*
a2[
k]*PTFM[
k]->data[0];
1262 v2 +=
b2[
k]*
b2[
k]*PTFM[
k]->data[0];
1268 v1 = PTFM[detectorNum]->data[0];
1269 v2 = PTFM[detectorNum]->data[0];
1273 if (SNRmaxPlus < 0) SNRmaxPlus = -SNRmaxPlus;
1275 if (SNRmaxCross < 0) SNRmaxCross = -SNRmaxCross;
1292 overlapCont = (crealf(PTFQtilde[
i]) * crealf(PTFQtilde[
i]) +
1293 cimagf(PTFQtilde[
i]) * cimagf(PTFQtilde[
i]) )* invspec[
k]->
data->data[
i] ;
1294 v1 +=
a2[
k] *
a2[
k] * overlapCont;
1295 v2 +=
b2[
k] *
b2[
k] * overlapCont;
1301 overlapCont = ( crealf(PTFQtilde[
i]) * crealf(PTFQtilde[
i]) +
1302 cimagf(PTFQtilde[
i]) * cimagf(PTFQtilde[
i]) ) *
1303 invspec[detectorNum]->
data->data[
i] ;
1308 SNRtempPlus = v1 * 4 *
deltaF;
1309 if (SNRtempPlus < 0) SNRtempPlus = -SNRtempPlus;
1310 SNRtempCross = v2 * 4 *
deltaF;
1311 if (SNRtempCross < 0) SNRtempCross = -SNRtempCross;
1313 if (SNRtempPlus > SNRmaxPlus * ((
REAL4)freqBinPlus/(
REAL4)numFreqBins))
1315 if (freqBinPlus < numFreqBins)
1318 frequencyRangesPlus[freqBinPlus-1] = (
i)*
deltaF;
1322 if (SNRtempCross > SNRmaxCross * ((
REAL4)freqBinCross/(
REAL4)numFreqBins))
1324 if (freqBinCross < numFreqBins)
1327 frequencyRangesCross[freqBinCross-1] = (
i)*
deltaF;
1333 frequencyRangesPlus[freqBinPlus-1] =
kmax *
deltaF;
1334 frequencyRangesCross[freqBinCross-1] =
kmax *
deltaF;
1342 REAL4 Fplus[LAL_NUM_IFO],
1343 REAL4 Fcross[LAL_NUM_IFO],
1344 REAL4 *frequencyRangesPlus,
1345 REAL4 *frequencyRangesCross,
1346 REAL4 *powerBinsPlus,
1347 REAL4 *powerBinsCross,
1348 REAL4 **overlapCont,
1349 gsl_matrix *eigenvecs,
1356 REAL4 v1,v2,SNRtempPlus,SNRtempCross,SNRmaxPlus,SNRmaxCross;
1357 REAL4 SNRplusLast,SNRcrossLast,currOverlapContPlus;
1359 REAL8 tmpOverlapCont;
1360 REAL4 currOverlapContCross;
1375 len = invspec[
k]->data->length;
1385 fFinal =
params->highFilterFrequency;
1388 numFreqBins =
params->numChiSquareBins;
1395 if ( singlePolFlag )
1406 else if (
params->faceOnStatistic)
1412 a2[
k] = pow(Fplus[
k]*Fplus[
k] + Fcross[
k] * Fcross[
k],0.5);
1423 a2[
k] = Fplus[
k]*gsl_matrix_get(eigenvecs,0,0) + Fcross[
k]*gsl_matrix_get(eigenvecs,1,0);
1424 b2[
k] = Fplus[
k]*gsl_matrix_get(eigenvecs,0,1) + Fcross[
k]*gsl_matrix_get(eigenvecs,1,1);
1432 v1 +=
a2[
k]*
a2[
k]*PTFM[
k]->data[0];
1433 v2 +=
b2[
k]*
b2[
k]*PTFM[
k]->data[0];
1439 v1 = PTFM[detectorNum]->data[0];
1440 v2 = PTFM[detectorNum]->data[0];
1445 if (SNRmaxPlus < 0) SNRmaxPlus = -SNRmaxPlus;
1446 if (SNRmaxCross < 0) SNRmaxCross = -SNRmaxCross;
1462 if (! overlapCont[
k] && ((detectorNum ==
LAL_NUM_IFO)||(detectorNum==
k)) )
1470 tmpOverlapCont += (crealf(PTFQtilde[
i]) * crealf(PTFQtilde[
i]) + \
1471 cimagf(PTFQtilde[
i]) * cimagf(PTFQtilde[
i]) ) * \
1472 invspec[
k]->
data->data[
i] ;
1473 if (
i *
deltaF > frequencyRangesPlus[freqBinPlus] && \
1474 freqBinPlus < (numFreqBins-1))
1476 (overlapCont[
k])[freqBinPlus] = tmpOverlapCont;
1479 if (
i *
deltaF > frequencyRangesCross[freqBinCross] \
1480 && freqBinCross < (numFreqBins-1))
1482 (overlapCont[
k])[freqBinCross+
params->numChiSquareBins] = tmpOverlapCont;
1486 if (freqBinPlus == (numFreqBins-1))
1488 (overlapCont[
k])[freqBinPlus] = tmpOverlapCont;
1490 if (freqBinCross == (numFreqBins-1))
1492 (overlapCont[
k])[
params->numChiSquareBins + freqBinCross] = tmpOverlapCont;
1498 for (
i = 0;
i <
params->numChiSquareBins; ++
i )
1507 currOverlapContPlus = (overlapCont[
k])[
i];
1508 currOverlapContCross = (overlapCont[
k])[
i+
params->numChiSquareBins];
1509 v1 +=
a2[
k] *
a2[
k] * currOverlapContPlus * 4 *
deltaF;
1510 v2 +=
b2[
k] *
b2[
k] * currOverlapContCross * 4 *
deltaF;
1516 currOverlapContPlus = (overlapCont[detectorNum])[
i];
1517 v1 = currOverlapContPlus * 4 *
deltaF;
1523 if (SNRtempPlus < 0) SNRtempPlus = -SNRtempPlus;
1524 SNRtempCross = v2 * 4 *
deltaF;
1525 if (SNRtempCross < 0) SNRtempCross = -SNRtempCross;
1527 powerBinsPlus[
i] = SNRtempPlus/SNRmaxPlus - SNRplusLast;
1528 SNRplusLast = SNRtempPlus/SNRmaxPlus;
1530 powerBinsCross[
i] = SNRtempCross/SNRmaxCross - SNRcrossLast;
1531 SNRcrossLast = SNRtempCross/SNRmaxCross;
1538 for (
i = 0 ;
i < (numFreqBins);
i++)
1540 SNRplusLast += powerBinsPlus[
i];
1541 SNRcrossLast += powerBinsCross[
i];
1543 for (
i = 0 ;
i < (numFreqBins);
i++)
1545 powerBinsPlus[
i] = powerBinsPlus[
i]/SNRplusLast;
1546 powerBinsCross[
i] = powerBinsCross[
i]/SNRcrossLast;
1557REAL4 Fplus[LAL_NUM_IFO],
1558REAL4 Fcross[LAL_NUM_IFO],
1559INT4 timeOffsetPoints[LAL_NUM_IFO],
1560gsl_matrix *eigenvecs,
1561gsl_vector *eigenvals,
1562REAL4 *powerBinsPlus,
1563REAL4 *powerBinsCross,
1571 REAL4 *v1Plus,*v2Plus,*v1full,*v2full;
1572 REAL4 *v1Cross,*v2Cross;
1573 REAL4 chiSq,SNRtemp,SNRexp;
1574 UINT4 numChiSquareBins =
params->numChiSquareBins;
1585 halfNumPoints =
params->numAnalPointsBuf;
1593 timeOffsetPoints,eigenvecs,eigenvals,
numPoints,
1598 v1full[0] = crealf(
PTFqVec[detectorNum]->
data[position+timeOffsetPoints[detectorNum]]);
1599 v1full[0] = v1full[0]/pow(PTFM[detectorNum]->
data[0],0.5);
1600 v2full[0] = cimagf(
PTFqVec[detectorNum]->
data[position+timeOffsetPoints[detectorNum]]);
1601 v2full[0] = v2full[0]/pow(PTFM[detectorNum]->
data[0],0.5);
1604 for (
i = 0;
i < vecLengthTwo;
i++)
1606 SNRexp += v1full[
i]*v1full[
i];
1607 SNRexp += v2full[
i]*v2full[
i];
1609 SNRexp = pow(SNRexp,0.5);
1611 for (
i = 0;
i < numChiSquareBins;
i++ )
1617 v2Plus,Fplus,Fcross,timeOffsetPoints,eigenvecs,eigenvals,
1618 halfNumPoints,position-
params->analStartPointBuf,vecLength,
1622 chisqOverlaps[
i+numChiSquareBins].
PTFqVec,v1Cross,
1623 v2Cross,Fplus,Fcross,timeOffsetPoints,eigenvecs,eigenvals,
1624 halfNumPoints,position-
params->analStartPointBuf,vecLength,
1627 SNRtemp= pow((v1Plus[0] - v1full[0]*powerBinsPlus[
i]),2)/powerBinsPlus[
i];
1628 SNRtemp+= pow((v2Plus[0] - v2full[0]*powerBinsPlus[
i]),2)/powerBinsPlus[
i];
1629 if (vecLengthTwo == 2)
1631 SNRtemp+= pow((v1Cross[1]-v1full[1]*powerBinsCross[
i]),2)/powerBinsCross[
i];
1632 SNRtemp+= pow((v2Cross[1]-v2full[1]*powerBinsCross[
i]),2)/powerBinsCross[
i];
1638 v1Plus[0] = crealf(chisqOverlaps[
i].
PTFqVec[detectorNum]->
data[position-
params->analStartPointBuf+timeOffsetPoints[detectorNum]]);
1639 v1Plus[0] = v1Plus[0]/pow(PTFM[detectorNum]->
data[0],0.5);
1640 v2Plus[0] = cimagf(chisqOverlaps[
i].
PTFqVec[detectorNum]->
data[position-
params->analStartPointBuf+timeOffsetPoints[detectorNum]]);
1641 v2Plus[0] = v2Plus[0]/pow(PTFM[detectorNum]->
data[0],0.5);
1642 SNRtemp = pow((v1Plus[0] - v1full[0]*powerBinsPlus[
i]),2)/powerBinsPlus[
i];
1643 SNRtemp += pow((v2Plus[0] - v2full[0]*powerBinsCross[
i]),2)/powerBinsCross[
i];
int InspiralTmpltBankFromLIGOLw(InspiralTemplate **bankHead, const CHAR *fileName, INT4 startTmplt, INT4 stopTmplt)
void coh_PTF_complex_template_overlaps(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt1, FindChirpTemplate *fcTmplt2, REAL4FrequencySeries *invspec, UINT4 spinBank, COMPLEX8Array *PTFM)
void coh_PTF_calculate_rotated_vectors(struct coh_PTF_params *params, COMPLEX8VectorSequence **PTFqVec, REAL4 *u1, REAL4 *u2, REAL4 *Fplus, REAL4 *Fcross, INT4 *timeOffsetPoints, gsl_matrix *eigenvecs, gsl_vector *eigenvals, UINT4 numPoints, UINT4 position, UINT4 vecLength, UINT4 vecLengthTwo, UINT4 detectorNum)
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_calculate_bmatrix(struct coh_PTF_params *params, gsl_matrix *eigenvecs, gsl_vector *eigenvals, REAL4 Fplus[LAL_NUM_IFO], REAL4 Fpcross[LAL_NUM_IFO], REAL8Array *PTFM[LAL_NUM_IFO+1], UINT4 vecLength, UINT4 vecLengthTwo, UINT4 PTFMlen)
long int timeval_subtract(struct timeval *t1)
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)
void coh_PTF_chi_square_sngl_setup(struct coh_PTF_params *params, REAL4 **frequencyRangesPlus, REAL4 **frequencyRangesCross, REAL4 **powerBinsPlus, REAL4 **powerBinsCross, REAL4 **overlapCont, struct bankDataOverlaps **chisqSnglOverlapsP, FindChirpTemplate *fcTmplt, REAL4FrequencySeries **invspec, RingDataSegments **segments, REAL8Array **PTFM, COMPLEX8FFTPlan *invPlan, INT4 segmentNumber)
UINT4 coh_PTF_read_sub_bank(struct coh_PTF_params *params, InspiralTemplate **PTFBankTemplates)
void coh_PTF_calculate_bank_veto_template_filters(struct coh_PTF_params *params, FindChirpTemplate *bankFcTmplts, FindChirpTemplate *fcTmplt, REAL4FrequencySeries **invspec, struct bankComplexTemplateOverlaps *bankOverlaps)
REAL4 coh_PTF_calculate_bank_veto(UINT4 numPoints, UINT4 position, UINT4 subBankSize, REAL4 Fplus[LAL_NUM_IFO], REAL4 Fcross[LAL_NUM_IFO], struct coh_PTF_params *params, struct bankCohTemplateOverlaps *cohBankOverlaps, struct bankComplexTemplateOverlaps *bankOverlaps, struct bankDataOverlaps *dataOverlaps, struct bankTemplateOverlaps *bankNormOverlaps, COMPLEX8VectorSequence *PTFqVec[LAL_NUM_IFO+1], REAL8Array *PTFM[LAL_NUM_IFO+1], INT4 timeOffsetPoints[LAL_NUM_IFO], gsl_matrix **Bankeigenvecs, gsl_vector **Bankeigenvals, UINT4 detectorNum, UINT4 vecLength, UINT4 vecLengthTwo)
void coh_PTF_calculate_standard_chisq_power_bins(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt, REAL4FrequencySeries *invspec[LAL_NUM_IFO+1], REAL8Array *PTFM[LAL_NUM_IFO+1], REAL4 Fplus[LAL_NUM_IFO], REAL4 Fcross[LAL_NUM_IFO], REAL4 *frequencyRangesPlus, REAL4 *frequencyRangesCross, REAL4 *powerBinsPlus, REAL4 *powerBinsCross, REAL4 **overlapCont, gsl_matrix *eigenvecs, UINT4 detectorNum, UINT4 singlePolFlag)
REAL4 coh_PTF_calculate_chi_square(struct coh_PTF_params *params, UINT4 position, struct bankDataOverlaps *chisqOverlaps, COMPLEX8VectorSequence *PTFqVec[LAL_NUM_IFO+1], REAL8Array *PTFM[LAL_NUM_IFO+1], REAL4 Fplus[LAL_NUM_IFO], REAL4 Fcross[LAL_NUM_IFO], INT4 timeOffsetPoints[LAL_NUM_IFO], gsl_matrix *eigenvecs, gsl_vector *eigenvals, REAL4 *powerBinsPlus, REAL4 *powerBinsCross, UINT4 detectorNum, UINT4 vecLength, UINT4 vecLengthTwo)
void coh_PTF_bank_veto_coh_setup(struct coh_PTF_params *params, gsl_matrix **Bankeigenvecs, gsl_vector **Bankeigenvals, struct bankCohTemplateOverlaps **bankCohOverlapsP, struct bankComplexTemplateOverlaps *bankOverlaps, REAL4 *Fplus, REAL4 *Fcross, REAL8Array **PTFM, struct bankTemplateOverlaps *bankNormOverlaps, UINT4 csVecLength, UINT4 csVecLengthTwo, UINT4 vecLength)
void coh_PTF_auto_veto_coh_setup(struct coh_PTF_params *params, gsl_matrix **AutoeigenvecsP, gsl_vector **AutoeigenvalsP, struct bankCohTemplateOverlaps **autoCohOverlapsP, struct bankComplexTemplateOverlaps *autoTempOverlaps, REAL4 *Fplus, REAL4 *Fcross, REAL8Array **PTFM, UINT4 csVecLength, UINT4 csVecLengthTwo, UINT4 vecLength)
void coh_PTF_bank_veto_segment_setup(struct coh_PTF_params *params, struct bankDataOverlaps *dataOverlaps, FindChirpTemplate *bankFcTmplts, RingDataSegments **segments, COMPLEX8VectorSequence **PTFqVec, COMPLEX8FFTPlan *invplan, INT4 segmentNum, struct timeval startTime)
void coh_PTF_calculate_coherent_bank_overlaps(struct coh_PTF_params *params, struct bankComplexTemplateOverlaps bankOverlaps, struct bankCohTemplateOverlaps cohBankOverlaps, REAL4 Fplus[LAL_NUM_IFO], REAL4 Fcross[LAL_NUM_IFO], gsl_matrix *eigenvecs, gsl_vector *eigenvals, gsl_matrix *Bankeigenvecs, gsl_vector *Bankeigenvals, UINT4 vecLength, UINT4 vecLengthTwo)
UINT4 coh_PTF_initialize_bank_veto(struct coh_PTF_params *params, struct bankTemplateOverlaps **bankNormOverlapsP, struct bankComplexTemplateOverlaps **bankOverlapsP, struct bankDataOverlaps **dataOverlapsP, FindChirpTemplate **bankFcTmpltsP, FindChirpTemplate *fcTmplt, FindChirpTmpltParams *fcTmpltParams, REAL4FrequencySeries **invspec, struct timeval startTime)
REAL4 coh_PTF_calculate_auto_veto(UINT4 numPoints, UINT4 position, REAL4 Fplus[LAL_NUM_IFO], REAL4 Fcross[LAL_NUM_IFO], struct coh_PTF_params *params, struct bankCohTemplateOverlaps *cohAutoOverlaps, struct bankComplexTemplateOverlaps *autoTempOverlaps, COMPLEX8VectorSequence *PTFqVec[LAL_NUM_IFO+1], REAL8Array *PTFM[LAL_NUM_IFO+1], INT4 timeOffsetPoints[LAL_NUM_IFO], gsl_matrix *Autoeigenvecs, gsl_vector *Autoeigenvals, UINT4 detectorNum, UINT4 vecLength, UINT4 vecLengthTwo)
UINT4 coh_PTF_initialize_auto_veto(struct coh_PTF_params *params, struct bankComplexTemplateOverlaps **autoTempOverlapsP, struct timeval startTime)
void coh_PTF_chi_square_coh_setup(struct coh_PTF_params *params, gsl_matrix **AutoeigenvecsP, gsl_vector **AutoeigenvalsP, REAL4 **frequencyRangesPlus, REAL4 **frequencyRangesCross, REAL4 **powerBinsPlus, REAL4 **powerBinsCross, REAL4 **overlapCont, struct bankDataOverlaps **chisqOverlapsP, FindChirpTemplate *fcTmplt, REAL4FrequencySeries **invspec, RingDataSegments **segments, REAL4 *Fplus, REAL4 *Fcross, REAL8Array **PTFM, COMPLEX8FFTPlan *invPlan, INT4 segmentNumber, UINT4 csVecLength, UINT4 csVecLengthTwo, UINT4 vecLength)
void coh_PTF_initialise_sub_bank(struct coh_PTF_params *params, InspiralTemplate *PTFBankTemplates, FindChirpTemplate *bankFcTmplts, UINT4 subBankSize, UINT4 numPoints)
void coh_PTF_calculate_auto_veto_template_filters(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt, struct bankComplexTemplateOverlaps *autoTempOverlaps, REAL4FrequencySeries **invspec, COMPLEX8FFTPlan *invplan, UINT4 timeStepPoints)
void coh_PTF_free_veto_memory(struct coh_PTF_params *params, struct bankTemplateOverlaps *bankNormOverlaps, FindChirpTemplate *bankFcTmplts, struct bankComplexTemplateOverlaps *bankOverlaps, struct bankDataOverlaps *dataOverlaps, struct bankComplexTemplateOverlaps *autoTempOverlaps)
void coh_PTF_calculate_standard_chisq_freq_ranges(struct coh_PTF_params *params, FindChirpTemplate *fcTmplt, REAL4FrequencySeries *invspec[LAL_NUM_IFO+1], REAL8Array *PTFM[LAL_NUM_IFO+1], REAL4 Fplus[LAL_NUM_IFO], REAL4 Fcross[LAL_NUM_IFO], REAL4 *frequencyRangesPlus, REAL4 *frequencyRangesCross, gsl_matrix *eigenvecs, UINT4 detectorNum, UINT4 singlePolFlag)
COMPLEX8Array * XLALCreateCOMPLEX8ArrayL(UINT4,...)
void XLALDestroyREAL8Array(REAL8Array *)
REAL8Array * XLALCreateREAL8ArrayL(UINT4,...)
void XLALDestroyCOMPLEX8Array(COMPLEX8Array *)
COMPLEX8VectorSequence * XLALCreateCOMPLEX8VectorSequence(UINT4 length, UINT4 veclen)
void XLALDestroyCOMPLEX8VectorSequence(COMPLEX8VectorSequence *vecseq)
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.
This structure contains the parameters for generation of templates by the various template generation...
struct tagInspiralTemplate * next
gsl_matrix * rotReOverlaps
gsl_matrix * rotImOverlaps
COMPLEX8Array * PTFM[LAL_NUM_IFO]
COMPLEX8VectorSequence * PTFqVec[LAL_NUM_IFO+1]
REAL8Array * PTFM[LAL_NUM_IFO+1]