57#include <lal/LALStdlib.h>
58#include <lal/LALStatusMacros.h>
59#include <lal/AVFactories.h>
60#include <lal/LALConfig.h>
61#include <lal/LALConstants.h>
62#include <lal/LALDatatypes.h>
63#include <lal/LALMalloc.h>
64#include <lal/MatrixUtils.h>
65#include <lal/TemplateBankGeneration.h>
71 for (loop = 0; loop < 12; loop++){
72 dot += EV[loop] * DX[loop];
99 REAL4 dxLoop[12] = {0};
100 REAL4 coordinatedxs[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
101 REAL4 EV[12][12] = {{0}};
102 REAL4 EVinv[12][12] = {{0}};
103 REAL4 minX[12] = {0};
104 REAL4 maxX[12] = {0};
114 for(dimLoop = Dimension; dimLoop < 12; dimLoop++){
125 metricDimensions->
data[1] = metricDimensions->
data[0] = Dimension;
136 for (dimLoop = 0; dimLoop < Dimension; dimLoop++){
137 for (loop = 0; loop < Dimension; loop++){
138 EV[dimLoop][loop] = metric->
data[loop*Dimension + dimLoop];
150 for (dimLoop = 0; dimLoop < Dimension; dimLoop++){
151 coordinatedxs[dimLoop] = sqrt(2.0*input->
mm/((
REAL4) Dimension * eigenval->
data[dimLoop]));
154 printf(
"\nCoordinatedxs = %f,%f,%f\n", coordinatedxs[0], coordinatedxs[1], coordinatedxs[2]);
160 for (dimLoop = 0; dimLoop < Dimension; dimLoop++){
161 for (loop = 0; loop < Dimension; loop++){
162 EVinv[dimLoop][loop] = inverse->
data[loop*Dimension + dimLoop];
168 printf(
"\nmin and max coordinates before transformation\n");
169 for (dimLoop = 0; dimLoop < Dimension; dimLoop++){
173 printf(
"\nmin and max coordinates after transformation\n");
176 for (dimLoop = 0; dimLoop < Dimension; dimLoop++){
179 printf(
"MinX[%i] = %f\tMaxX[%i] = %f\n", dimLoop, minX[dimLoop], dimLoop, maxX[dimLoop]);
184 for (dimLoop = 0; dimLoop < Dimension; dimLoop++){
185 if (minX[dimLoop] > maxX[dimLoop]){
186 temp = minX[dimLoop];
187 minX[dimLoop] = maxX[dimLoop];
188 maxX[dimLoop] = temp;
195 for(dxLoop[11] = minX[11];
196 dxLoop[11] <= maxX[11];
197 dxLoop[11] += coordinatedxs[11]){
198 for(dxLoop[10] = minX[10];
199 dxLoop[10] <= maxX[10];
200 dxLoop[10] += coordinatedxs[10]){
201 for(dxLoop[9] = minX[9];
202 dxLoop[9] <= maxX[9];
203 dxLoop[9] += coordinatedxs[9]){
204 for(dxLoop[8] = minX[8];
205 dxLoop[8] <= maxX[8];
206 dxLoop[8] += coordinatedxs[8]){
207 for(dxLoop[7] = minX[7];
208 dxLoop[7] <= maxX[7];
209 dxLoop[7] += coordinatedxs[7]){
210 for(dxLoop[6] = minX[6];
211 dxLoop[6] <= maxX[6];
212 dxLoop[6] += coordinatedxs[6]){
213 for(dxLoop[5] = minX[5];
214 dxLoop[5] <= maxX[5];
215 dxLoop[5] += coordinatedxs[5]){
216 for(dxLoop[4] = minX[4];
217 dxLoop[4] <= maxX[4];
218 dxLoop[4] += coordinatedxs[4]){
219 for(dxLoop[3] = minX[3];
220 dxLoop[3] <= maxX[3];
221 dxLoop[3] += coordinatedxs[3]){
222 for(dxLoop[2] = minX[2];
223 dxLoop[2] <= maxX[2];
224 dxLoop[2] += coordinatedxs[2]){
225 for(dxLoop[1] = minX[1];
226 dxLoop[1] <= maxX[1];
227 dxLoop[1] += coordinatedxs[1]){
228 for(dxLoop[0] = minX[0];
229 dxLoop[0] <= maxX[0];
230 dxLoop[0] += coordinatedxs[0]){
232 for(dimLoop=0; dimLoop < Dimension; dimLoop++){
235 functionPtrs->
test(
status->statusPtr, input, bank, &testFlag);
241 for(dimLoop=0; dimLoop < Dimension; dimLoop++){
244 for(loop=0; loop < dimLoop; loop++){
248 functionPtrs->
test(
status->statusPtr, input, bank, &testFlag);
252 functionPtrs->
test(
status->statusPtr, input, bank, &testFlag);
261 for(dimLoop=0; dimLoop < Dimension; dimLoop++){
264 for(loop=0; loop < dimLoop; loop++){
268 functionPtrs->
test(
status->statusPtr, input, bank, &testFlag);
272 functionPtrs->
test(
status->statusPtr, input, bank, &testFlag);
295 printf(
"\nExtra templates added = %i\n", cnt);
#define TRY(func, statusptr)
#define ATTATCHSTATUSPTR(statusptr)
#define DETATCHSTATUSPTR(statusptr)
#define INITSTATUS(statusptr)
#define RETURN(statusptr)
static REAL4 DotProduct(REAL4 *EV, REAL4 *DX)
void LALSCreateArray(LALStatus *, REAL4Array **, UINT4Vector *)
void LALSMatrixInverse(LALStatus *stat, REAL4 *det, REAL4Array *matrix, REAL4Array *inverse)
void LALSSymmetricEigenVectors(LALStatus *stat, REAL4Vector *values, REAL4Array *matrix)
void LALNDTemplateBank(LALStatus *status, NDTemplateBankInput *input, NDTemplateBankFunctionPtrs *functionPtrs, NDTemplateBankOutput **output)
void LALU4CreateVector(LALStatus *, UINT4Vector **, UINT4)
void LALSCreateVector(LALStatus *, REAL4Vector **, UINT4)
NDTemplateBankTestPtr test
Ptr boundary test fct
NDTemplateBankMetricPtr metric
Ptr to metric function.
struct tagNDTemplateBankOutput * next
char output[FILENAME_MAX]