LALApps 10.1.0.1-eeff03c
coh_PTF_option.c
Go to the documentation of this file.
1/*
2* Copyright (C) 2007 Duncan Brown, Jolien Creighton, Lisa M. Goggin, Matt Pitkin
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
20#include "config.h"
21#include "coh_PTF.h"
22
23/* parse command line arguments using LALgetopt_long to get ring params */
24int coh_PTF_parse_options(struct coh_PTF_params *params,int argc,char **argv )
25{
26
28 UINT4 ifoNumber;
29 static struct coh_PTF_params localparams;
30 memset( &localparams.haveTrig, 0, LAL_NUM_IFO * sizeof(int) );
31 struct LALoption long_options[] =
32 {
33 { "verbose", no_argument, &vrbflg, 1 },
34 { "strain-data", no_argument, &localparams.strainData, 1 },
35 { "zero-data", no_argument, &localparams.zeroData, 1 },
36 { "theoretical-spectrum", no_argument, &localparams.whiteSpectrum, 1 },
37 { "write-raw-data", no_argument, &localparams.writeRawData, 1 },
38 { "write-data", no_argument, &localparams.writeProcessedData, 1 },
39 { "write-inv-spectrum", no_argument, &localparams.writeInvSpectrum, 1 },
40 { "write-segment", no_argument, &localparams.writeSegment, 1 },
41 { "write-filter-output",no_argument, &localparams.writeFilterOutput, 1 },
42 { "analyze-inj-segs-only",no_argument, &localparams.analyzeInjSegsOnly, 1 },
43 { "do-null-stream", no_argument, &localparams.doNullStream, 1 },
44 { "do-trace-snr", no_argument, &localparams.doTraceSNR, 1 },
45 { "do-bank-veto", no_argument, &localparams.doBankVeto, 1 },
46 { "do-auto-veto", no_argument, &localparams.doAutoVeto, 1 },
47 { "do-chi-square", no_argument, &localparams.doChiSquare, 1 },
48 { "do-sngl-chi-tests", no_argument, &localparams.doSnglChiSquared, 1},
49 { "do-clustering", no_argument, &localparams.clusterFlag, 1},
50/* {"g1-data", no_argument, &(haveTrig[LAL_IFO_G1]), 1 },*/
51 {"h1-data", no_argument, &(localparams.haveTrig[LAL_IFO_H1]),1},
52 {"h2-data", no_argument, &(localparams.haveTrig[LAL_IFO_H2]),1},
53 {"l1-data", no_argument, &(localparams.haveTrig[LAL_IFO_L1]),1},
54/* {"t1-data", no_argument, &(haveTrig[LAL_IFO_T1]), 1 },*/
55 {"v1-data", no_argument, &(localparams.haveTrig[LAL_IFO_V1]),1},
56 {"face-on-analysis", no_argument, &(localparams.faceOnAnalysis),1},
57 {"face-away-analysis", no_argument, &(localparams.faceAwayAnalysis),1},
58 {"dynamic-template-length",no_argument, &(localparams.dynTempLength),1},
59 {"store-amplitude-params",no_argument, &(localparams.storeAmpParams),1},
60 {"analyse-segment-end", no_argument, &(localparams.analSegmentEnd),1},
61 {"do-short-slides", no_argument, &(localparams.doShortSlides),1},
62 { "write-sngl-inspiral-table", no_argument, &(localparams.writeSnglInspiralTable),1},
63 { "help", no_argument, 0, 'h' },
64 { "version", no_argument, 0, 'V' },
65 { "simulated-data", required_argument, 0, '6' },
66 { "gps-start-time", required_argument, 0, 'a' },
67 { "gps-start-time-ns", required_argument, 0, 'A' },
68 { "gps-end-time", required_argument, 0, 'b' },
69 { "gps-end-time-ns", required_argument, 0, 'B' },
70 { "trigger-time", required_argument, 0, '<' },
71 { "trigger-time-ns", required_argument, 0, '>' },
72 { "h1-channel-name", required_argument, 0, 'c' },
73 { "h1-frame-cache", required_argument, 0, 'D' },
74 { "h2-channel-name", required_argument, 0, 'x' },
75 { "h2-frame-cache", required_argument, 0, 'X' },
76 { "l1-channel-name", required_argument, 0, 'y' },
77 { "l1-frame-cache", required_argument, 0, 'Y' },
78 { "v1-channel-name", required_argument, 0, 'z' },
79 { "v1-frame-cache", required_argument, 0, 'Z' },
80 { "low-template-freq", required_argument, 0, 'e' },
81 { "low-filter-freq", required_argument, 0, 'H' },
82 { "high-filter-freq", required_argument, 0, 'I' },
83 { "highpass-frequency", required_argument, 0, 'E' },
84 { "injection-file", required_argument, 0, 'i' },
85 { "snr-threshold", required_argument, 0, 'j' },
86 { "spin-snr-threshold", required_argument, 0, '2' },
87 { "sngl-snr-threshold", required_argument, 0, '1' },
88 { "trig-time-window", required_argument, 0, 'J' },
89 { "user-tag", required_argument, 0, 'k' },
90 { "ifo-tag", required_argument, 0, 'K' },
91 { "non-spin-snr2-threshold", required_argument, 0, 'l' },
92 { "spin-snr2-threshold", required_argument, 0, 'L' },
93 { "spin-bank", required_argument, 0, 'm' },
94 { "non-spin-bank", required_argument, 0, 'M' },
95 { "only-segment-numbers", required_argument, 0, 'n' },
96 { "only-template-numbers", required_argument, 0, 'N' },
97 { "output-file", required_argument, 0, 'o' },
98 { "bank-file", required_argument, 0, 'O' },
99 { "num-auto-chisq-points", required_argument, 0, 'p' },
100 { "auto-veto-time-step", required_argument, 0, 'P' },
101 { "num-chi-square-bins", required_argument, 0, 'q' },
102 { "chi-square-threshold", required_argument, 0, 'Q' },
103 { "random-seed", required_argument, 0, 'r' },
104 { "dynamic-range-factor", required_argument, 0, 'R' },
105 { "sample-rate", required_argument, 0, 's' },
106 { "segment-duration", required_argument, 0, 'S' },
107 { "psd-segment-duration", required_argument, 0, '9' },
108 { "bank-veto-templates", required_argument, 0, 't' },
109 { "inverse-spec-length", required_argument, 0, 'T' },
110 { "trig-start-time", required_argument, 0, 'u' },
111 { "trig-end-time", required_argument, 0, 'U' },
112 { "block-duration", required_argument, 0, 'w' },
113 { "pad-data", required_argument, 0, 'W' },
114 { "right-ascension", required_argument, 0, 'f' },
115 { "declination", required_argument, 0, 'F' },
116 { "sky-error", required_argument, 0, 'g' },
117 { "timing-accuracy", required_argument, 0, 'G' },
118 { "approximant", required_argument, 0, 'C' },
119 { "order", required_argument, 0, 'v' },
120 { "h1-slide-segment", required_argument, 0, '!' },
121 { "h2-slide-segment", required_argument, 0, '&' },
122 { "l1-slide-segment", required_argument, 0, '(' },
123 { "v1-slide-segment", required_argument, 0, ')' },
124 { "sky-positions-file", required_argument, 0, '#' },
125 { "fft-level", required_argument, 0, '|' },
126 { "cluster-window", required_argument, 0, '4' },
127 { "inj-search-window", required_argument, 0, '3' },
128 { "inj-mchirp-window", required_argument, 0, '5' },
129 { "ligo-calibrated-data", required_argument, 0, '7' },
130 { "virgo-calibrated-data", required_argument, 0, '8' },
131 { "short-slide-offset", required_argument, 0, '@' },
132 { 0, 0, 0, 0 }
133 };
134 char args[] = "a:A:b:B:c:C:D:e:E:f:F:g:G:h:H:i:I:j:J:k:K:l:L:m:M:n:N:o:O:p:P:q:Q:r:R:s:S:t:T:u:U:v:V:w:W:x:X:y:Y:z:Z:1:2:3:4:5:6:7:8:9:<:>:!:&:(:):#:|:@";
135 char *program = argv[0];
136
137 /* set default values for parameters before parsing arguments */
138 coh_PTF_default_params( &localparams );
139
140 while ( 1 )
141 {
142 int option_index = 0;
143 int c;
144
145 c = LALgetopt_long_only( argc, argv, args, long_options, &option_index );
146 if ( c == -1 ) /* end of options */
147 break;
148
149 switch ( c )
150 {
151 case 0: /* if option set a flag, nothing else to do */
152 if ( long_options[option_index].flag )
153 break;
154 else
155 error( "error parsing option %s with argument %s\n",
156 long_options[option_index].name, LALoptarg );
157 break;
158 case 'a': /* gps-start-time */
159 localparams.startTime.gpsSeconds = atol( LALoptarg );
160 break;
161 case 'A': /* gps-start-time-ns */
162 localparams.startTime.gpsNanoSeconds = atol( LALoptarg );
163 break;
164 case 'b': /* gps-end-time */
165 localparams.endTime.gpsSeconds = atol( LALoptarg );
166 break;
167 case 'B': /* gps-end-time-ns */
168 localparams.endTime.gpsNanoSeconds = atol( LALoptarg );
169 break;
170 case '<': /* trigger-time */
171 localparams.trigTime.gpsSeconds = atol( LALoptarg );
172 break;
173 case '>': /* trigger-time-ns */
174 localparams.trigTime.gpsNanoSeconds = atol( LALoptarg );
175 break;
176 case 'c': /* h1 channel-name */
177 localparams.channel[LAL_IFO_H1] = LALoptarg;
178 break;
179 case 'D': /* h1 frame-cache */
180 localparams.dataCache[LAL_IFO_H1] = LALoptarg;
181 break;
182 case 'y': /* l1 channel-name */
183 localparams.channel[LAL_IFO_L1] = LALoptarg;
184 break;
185 case 'Y': /* l1 frame-cache */
186 localparams.dataCache[LAL_IFO_L1] = LALoptarg;
187 break;
188 case 'z': /* v1 channel-name */
189 localparams.channel[LAL_IFO_V1] = LALoptarg;
190 break;
191 case 'Z': /* v1 frame-cache */
192 localparams.dataCache[LAL_IFO_V1] = LALoptarg;
193 break;
194 case 'x': /* h2 channel-name */
195 localparams.channel[LAL_IFO_H2] = LALoptarg;
196 break;
197 case 'X': /* h2 frame-cache */
198 localparams.dataCache[LAL_IFO_H2] = LALoptarg;
199 break;
200 case 'e': /* start frequency of template generation */
201 localparams.lowTemplateFrequency = atof( LALoptarg );
202 break;
203 case 'H': /* start frequency of matched filter */
204 localparams.lowFilterFrequency = atof( LALoptarg );
205 break;
206 case 'I': /* End frequency of matched filter */
207 localparams.highFilterFrequency = atof( LALoptarg );
208 break;
209 case 'E': /* highpass-frequency */
210 localparams.highpassFrequency = atof( LALoptarg );
211 break;
212 case 'C': /* waveform approximant */
213 /* This will directly fail if the approximant is not a valid one.
214 However the user may get to a call to FindChirpTDTemplate and find
215 out only then that the approximant is not supported in there. */
217 break;
218 case '6': /* Simulated data option */
219 localparams.simData = 1;
220 if ( ! strcmp( "WhiteNoise",LALoptarg))
221 {
222 localparams.simDataType = WHITE_PSD;
223 }
224 else if ( ! strcmp( "ILIGONoise",LALoptarg))
225 {
226 localparams.simDataType = ILIGO_PSD;
227 }
228 else if ( ! strcmp( "ALIGONoise",LALoptarg))
229 {
230 localparams.simDataType = ALIGO_PSD;
231 }
232 else
233 {
234 fprintf( stderr, "invalid argument to --%s:\n"
235 "unknown data type specified:"
236 "%s valid options are WhiteNoise, ILIGONoise or ALIGONoise",
237 long_options[option_index].name, LALoptarg );
238 exit(1);
239 }
240 break;
241 case 'v': /* PN order of waveform */
242 if ( ! strcmp( "twoPN", LALoptarg ) )
243 {
244 localparams.order = LAL_PNORDER_TWO;
245 }
246 else if ( ! strcmp( "twoPointFivePN", LALoptarg ) )
247 {
248 localparams.order = LAL_PNORDER_TWO_POINT_FIVE;
249 }
250 else if ( ! strcmp( "threePN", LALoptarg ) )
251 {
252 localparams.order = LAL_PNORDER_THREE;
253 }
254 else if ( ! strcmp( "threePointFivePN", LALoptarg ) )
255 {
257 }
258 else if ( ! strcmp( "pseudoFourPN", LALoptarg ) )
259 {
260 localparams.order = LAL_PNORDER_PSEUDO_FOUR;
261 }
262 else
263 {
264 fprintf( stderr, "invalid argument to --%s:\n"
265 "unknown order specified: "
266 "%s (must be one of twoPN, twoPointFivePN, threePN, threePointFivePN, pseudoFourPN)\n",
267 long_options[option_index].name, LALoptarg );
268 exit( 1 );
269 }
270 break;
271 case 'f': /* right-ascension */
272 localparams.rightAscension = atof( LALoptarg ) * LAL_PI_180;
273 break;
274 case 'F': /* Declination */
275 localparams.declination = atof( LALoptarg ) * LAL_PI_180;
276 break;
277 case 'g': /* Error in declination */
278 localparams.skyError = atof( LALoptarg ) * LAL_PI_180;
279 break;
280 case 'G': /* timing accuracy of network */
281 localparams.timingAccuracy = atof( LALoptarg );
282 break;
283 case 'h': /* help */
285 exit( 0 );
286 case 'i': /* injection-file */
287 localparams.injectFile = LALoptarg;
288 break;
289 case 'j':
290 localparams.threshold = atof(LALoptarg);
291 break;
292 case '2':
293 localparams.spinThreshold = atof(LALoptarg);
294 break;
295 case '1':
296 localparams.snglSNRThreshold = atof(LALoptarg);
297 break;
298 case 'J':
299 localparams.timeWindow = atof(LALoptarg);
300 break;
301 case 'k': /* user-tag */
302 strncpy( localparams.userTag, LALoptarg, sizeof( localparams.userTag ) - 1 );
303 break;
304 case 'K': /* ifo-tag */
305 strncpy( localparams.ifoTag, LALoptarg, sizeof( localparams.ifoTag ) - 1 );
306 break;
307 case 'l':
308 localparams.nonspinSNR2threshold = atof(LALoptarg);
309 break;
310 case 'L':
311 localparams.spinSNR2threshold = atof(LALoptarg);
312 break;
313 case 'm': /* spin bank */
314 localparams.spinBank = 1;
315 strncpy( localparams.spinBankName, LALoptarg, sizeof( localparams.spinBankName ) - 1 );
316 break;
317 case 'M': /* non spin bank */
318 localparams.noSpinBank = 1;
319 strncpy( localparams.noSpinBankName, LALoptarg, sizeof( localparams.noSpinBankName ) - 1 );
320 break;
321 case 'n': /* only-segment-numbers */
322 localparams.segmentsToDoList = LALoptarg;
323 break;
324 case 'N': /* only-template-number */
325 localparams.templatesToDoList = LALoptarg;
326 break;
327 case 'o': /* output-file */
328 strncpy( localparams.outputFile, LALoptarg, sizeof( localparams.outputFile ) - 1 );
329 break;
330 case 'O': /* bank-file */
331 localparams.bankFile = LALoptarg;
332 break;
333 case 'p': /* num auto chisq points */
334 localparams.numAutoPoints = atoi( LALoptarg );
335 break;
336 case 'P': /* Auto veto time step */
337 localparams.autoVetoTimeStep = atof( LALoptarg );
338 break;
339 case 'q': /* num chi square bins */
340 localparams.numChiSquareBins = atoi( LALoptarg );
341 break;
342 case 'Q':
343 localparams.chiSquareCalcThreshold = atof( LALoptarg );
344 break;
345 case 'r': /* random seed */
346 localparams.randomSeed = atoi( LALoptarg );
347 break;
348 case 'R': /* dynamic range factor */
349 localparams.dynRangeFac = atof( LALoptarg );
350 break;
351 case 's': /* sample rate */
352 localparams.sampleRate = atof( LALoptarg );
353 break;
354 case 'S': /* segment-duration */
355 localparams.segmentDuration = atof( LALoptarg );
356 break;
357 case '9': /* PSD segment-duration */
358 localparams.psdSegmentDuration = atof( LALoptarg );
359 break;
360 case 't': /* bank veto template bank */
361 localparams.bankVetoBankName = LALoptarg;
362 break;
363 case 'T': /* inverse-spec-length */
364 localparams.truncateDuration = atof( LALoptarg );
365 break;
366 case 'u': /* trig-start-time */
367 localparams.trigStartTimeNS = (INT8) atol( LALoptarg ) * LAL_INT8_C(1000000000);
368 break;
369 case 'U': /* trig-end-time */
370 localparams.trigEndTimeNS = (INT8) atol( LALoptarg ) * LAL_INT8_C(1000000000);
371 break;
372 case 'w': /* block-duration */
373 localparams.duration = atof( LALoptarg );
374 break;
375 case 'W': /* pad-data */
376 localparams.padData = atof( LALoptarg );
377 break;
378 case '!': /* h1-slide-segment */
379 localparams.slideSegments[LAL_IFO_H1] = atoi( LALoptarg );
380 break;
381 case '&': /* h2-slide-segments */
382 localparams.slideSegments[LAL_IFO_H2] = atoi( LALoptarg );
383 break;
384 case '(': /* l1-slide-segments */
385 localparams.slideSegments[LAL_IFO_L1] = atoi( LALoptarg );
386 break;
387 case ')': /* v1-slide-segments */
388 localparams.slideSegments[LAL_IFO_V1] = atoi( LALoptarg );
389 break;
390 case '@': /* Short slide offset time */
391 localparams.shortSlideOffset = atoi( LALoptarg );
392 break;
393 case 'V': /* version */
394 XLALOutputVCSInfo(stderr, lalAppsVCSInfoList, 0, "%% ");
395 exit( 0 );
396 case '#': /* sky grid file */
397 localparams.skyPositionsFile = LALoptarg;
398 break;
399 case '|': /* FFT-level for plans */
400 localparams.fftLevel = atoi( LALoptarg );
401 break;
402 case '4': /* Cluster window */
403 localparams.clusterWindow = atof(LALoptarg);
404 break;
405 case '3': /* Injection search window */
406 localparams.injSearchWindow = atof( LALoptarg );
407 break;
408 case '5': /* Injection search window */
409 localparams.injMchirpWindow = atof( LALoptarg );
410 break;
411 case '7':
412 if (!strcmp("real_4", LALoptarg))
413 {
414 localparams.ligoDoubleData = 0;
415 }
416 else if (!strcmp("real_8", LALoptarg))
417 {
418 localparams.ligoDoubleData = 1;
419 }
420 else
421 {
422 fprintf(stderr, "invalid argument to --%s:\n"
423 "unknown data type specified;\n"
424 "%s (must be one of: real_4, real_8)\n",
425 long_options[option_index].name, LALoptarg);
426 }
427 break;
428 case '8':
429 if (!strcmp("real_4", LALoptarg))
430 {
431 localparams.virgoDoubleData = 0;
432 }
433 else if (!strcmp("real_8", LALoptarg))
434 {
435 localparams.virgoDoubleData = 1;
436 }
437 else
438 {
439 fprintf(stderr, "invalid argument to --%s:\n"
440 "unknown data type specified;\n"
441 "%s (must be one of: real_4, real_8)\n",
442 long_options[option_index].name, LALoptarg);
443 }
444 break;
445 case '?':
446 error( "unknown error while parsing options\n" );
447 break;
448 default:
449 error( "unknown error while parsing options\n" );
450 break;
451 }
452 }
453
454 if ( LALoptind < argc )
455 {
456 fprintf( stderr, "extraneous command line arguments:\n" );
457 while ( LALoptind < argc )
458 fprintf( stderr, "%s\n", argv[LALoptind++] );
459 exit( 1 );
460 }
461
462 /* set number of ifos */
463 localparams.numIFO = 0;
464
465 for ( ifoNumber = 0; ifoNumber < LAL_NUM_IFO; ifoNumber++ )
466 {
467 if ( localparams.haveTrig[ifoNumber] )
468 {
469 XLALReturnIFO(ifo,ifoNumber);
470 snprintf( localparams.ifoName[localparams.numIFO], LIGOMETA_IFO_MAX,\
471 "%s", ifo );
472 localparams.numIFO++;
473 }
474 }
475
476 /* check for H1H2 */
477 if (localparams.numIFO == 2)
478 {
479 if (! strcmp(localparams.ifoName[0],"H1"))
480 {
481 if (! strcmp(localparams.ifoName[1],"H2"))
482 {
483 localparams.singlePolFlag = 1;
484 }
485 }
486 }
487 /* Set the faceOn-faceAway flag */
488 /* Otherwise it takes default value of 0 */
489 if (localparams.faceOnAnalysis)
490 {
491 localparams.faceOnStatistic = 1;
492 }
493 else if (localparams.faceAwayAnalysis)
494 {
495 localparams.faceOnStatistic = 2;
496 }
497
498 /* Set the number of points in the time arrays */
499 localparams.numTimePoints = floor(\
500 localparams.segmentDuration * localparams.sampleRate + 0.5);
501 /* Set the number of points in the frequency arrays */
502 localparams.numFreqPoints = localparams.numTimePoints / 2 + 1;
503
504 /* For now we stick to only analysing half of each segment */
505 localparams.strideDuration = 0.5 * localparams.segmentDuration;
506
507 /* When shifting data from interferometers to 'point' at a sky location, */
508 /* we don't want to let possibly corrupted data to leak in at start/end. */
509 /* This buffer ensures that doesn't happen. Hardcoded to 1s */
510 localparams.numBufferPoints = floor(localparams.sampleRate + 0.5);
511
512 /* Choose the start and end point of each segment for analysis */
513 if (localparams.analSegmentEnd)
514 { /* Want to analyse from the end of the segment */
515 /* Start from the end */
516 localparams.analEndPoint = localparams.numTimePoints;
517 /* Remove the spectrum truncation */
518 localparams.analEndPoint -= floor(\
519 0.5 * localparams.truncateDuration * localparams.sampleRate + 0.5);
520 /* Remove the buffer points */
521 localparams.analEndPoint -= localparams.numBufferPoints;
522 /* And set the start point */
523 localparams.analStartPoint = localparams.analEndPoint - \
524 0.5*localparams.numTimePoints;
525 }
526 else
527 { /* DEFAULT: Analyse the middle of the segment */
528 localparams.analStartPoint = 1*localparams.numTimePoints/4;
529 localparams.analEndPoint = (3*localparams.numTimePoints)/4;
530 }
531
532 localparams.analStartTime = localparams.analStartPoint / \
533 localparams.sampleRate;
534 localparams.analStartPointBuf = localparams.analStartPoint\
535 - localparams.numBufferPoints;
536 localparams.analEndTime = localparams.analEndPoint / \
537 localparams.sampleRate;
538 localparams.analEndPointBuf = localparams.analEndPoint\
539 + localparams.numBufferPoints;
540 localparams.numAnalPoints = localparams.analEndPoint\
541 - localparams.analStartPoint;
542 localparams.numAnalPointsBuf = localparams.analEndPointBuf\
543 - localparams.analStartPointBuf;
544 /* Max template length is start length minus PSD truncation */
545 localparams.maxTempLength = localparams.analStartTime;
546 localparams.maxTempLength -= localparams.truncateDuration/2.;
547
548 /* Determine the number of short slides */
549 if (localparams.doShortSlides)
550 {
551 localparams.numShortSlides = 1 + localparams.numIFO * (int) floor( \
552 localparams.strideDuration / \
553 (localparams.shortSlideOffset * (localparams.numIFO-1)) );
554 }
555 else
556 {
557 localparams.numShortSlides = 1;
558 }
559
560 /* Set the template correction factor */
561 if ( localparams.approximant == FindChirpSP)
562 {
563 /* Most of this gets stored in fcTmplt->fcTmpltNorm which is computed on
564 * the fly. This is the correction needed to that. */
565 /* First need to add ( (df)**-7./6. )**2 */
566 localparams.tempCorrFac = pow(localparams.segmentDuration,14./6.);
567 /* For some reason FindChirp multiplies by a dt factor, take this out */
568 localparams.tempCorrFac *= pow(localparams.sampleRate,2./6.);
569 }
570 else
571 {
572 /* Sigmasq factors are not yet available for all approximants */
573 /* Set values to 1 (so this factor has no effect) and warn user */
574 verbose("warning: Sigmasq correction factor is not yet available for this approximant: setting it to 1.\n");
575 localparams.tempCorrFac = 1.0;
576 }
577
578 *params = localparams;
579
580 return 0;
581}
582
583/* sets default values for parameters */
585{
586 /* overall, default values are zero */
587 memset( params, 0, sizeof( *params ) );
588
589 /* set start time */
590 XLALGPSTimeNow(&params->jobStartTime);
591
592 /* FFT plan defaults to 1 */
593 params->fftLevel = 1;
594
595 /* No injections unless supplied */
596 params->injectList = NULL;
597
598 /* set default sky location params */
599 params->rightAscension = -1000.;
600 params->declination = -1000.;
601 params->skyError = 0.;
602 params->timingAccuracy = 0.0005;
603 params->skyPositionsFile = NULL;
604 params->skyLooping = ALL_SKY;
605
606 /* Default injection search window to 1s */
607 params->injSearchWindow = 1.;
608
609 /* dynamic range factor must be greater than zero */
610 params->dynRangeFac = 1E20;
611
612 /* Various frequencies must be set */
613 params->highpassFrequency = -1.0;
614 params->lowTemplateFrequency = -1.0;
615 params->lowFilterFrequency = -1.0;
616 params->highFilterFrequency = -1.0;
617
618 /* segments and templates to do: all of them */
619 params->segmentsToDoList = "^-$";
620 params->templatesToDoList = "^-$";
621
622 /* flags specifying what to do: default is to do everything */
623 params->getBank = 1;
624 params->getData = 1;
625 params->getSpectrum = 1;
626 params->doFilter = 1;
627
628 /* FIXME: Some thresholding stuff, this should be command line options */
629 params->bankVeton = 3.;
630 params->bankVetoq = 4.;
631 params->autoVeton = 3.;
632 params->autoVetoq = 4.;
633 params->nullStatThreshold = 5.25;
634 params->nullStatGradOn = 30.;
635 params->nullStatGradient = 50./700.;
636
637 params->approximant = NumApproximants;
639
640 /* numeric type for data, set to S6 data options */
641 params->ligoDoubleData = 1;
642 params->virgoDoubleData = 0;
643
644 return 0;
645}
646
647/* check sanity of parameters and sets appropriate values of unset parameters */
649{
650 UINT4 recordLength = 0;
651 UINT4 segmentLength = 0;
652 UINT4 segmentStride = 0;
653 UINT4 truncateLength = 0;
654 UINT4 ifoNumber;
656 INT8 endTime;
657// UINT4 slideSegments; Currently unused FIXME
658
659 if ( params->getSpectrum ) /* need data and response if not strain data */
660 sanity_check( params->getData && (params->strainData) );
661
662 /* parameters required to get data */
663 if ( params->getData )
664 {
665 /* checks on data duration */
666 startTime = epoch_to_ns( &params->startTime );
667 endTime = epoch_to_ns( &params->endTime );
668 sanity_check( startTime > 0 );
669 sanity_check( endTime > startTime );
671 sanity_check( 1e9*params->duration == ((endTime - startTime)) );
672
673 /* checks on size of data record */
674 sanity_check( params->sampleRate > 0 );
675 recordLength = params->duration * params->sampleRate;
676 sanity_check( recordLength > 0 );
677 for( ifoNumber = 0; ifoNumber < LAL_NUM_IFO; ifoNumber++)
678 {
679 if ( params->haveTrig[ifoNumber] )
680 {
681 sanity_check(params->channel[ifoNumber]);
682 sanity_check(params->dataCache[ifoNumber]);
683 }
684 }
685 }
686
687 /* parameters required to get spectrum */
688 if ( params->getSpectrum )
689 {
690 /* checks on size of data segments and stride */
691 sanity_check( params->psdSegmentDuration > 0 );
692 segmentLength = floor(params->psdSegmentDuration*params->sampleRate + 0.5);
693 sanity_check( recordLength / segmentLength > 0 );
694 params->psdStrideDuration = 0.5 * params->psdSegmentDuration;
695 segmentStride = floor(params->psdStrideDuration * params->sampleRate + 0.5);
696 sanity_check( segmentStride > 0 );
697 sanity_check( params->truncateDuration > 0);
698 truncateLength = floor(params->truncateDuration * params->sampleRate + 0.5);
699 sanity_check( truncateLength > 0 );
700
701 /* checks on data input information */
702 /*sanity_check( params->channel );*/
703 sanity_check( params->dynRangeFac > 0.0 );
704 }
705
706 /* Sanity checks on data stuff */
707 sanity_check( params->segmentDuration > 0 );
708 segmentLength = floor(params->segmentDuration * params->sampleRate + 0.5);
709 sanity_check( recordLength / segmentLength > 0 );
710 segmentStride = floor(params->strideDuration * params->sampleRate + 0.5);
711 sanity_check( segmentStride > 0 );
712 sanity_check( !( (recordLength - segmentLength) % segmentStride ) );
713 params->numOverlapSegments = 1 + (recordLength - segmentLength)/segmentStride;
714 sanity_check( params->numTimePoints > 0);
715 sanity_check( params->numFreqPoints > 0);
716 sanity_check( (params->analStartPoint < segmentLength) );
717 sanity_check( (params->analEndPoint < segmentLength) );
718 sanity_check( (params->analEndPoint - params->analStartPoint) \
719 == segmentStride);
720
721 /* sky localisation params */
722 if ( params->rightAscension != -1000. && params->declination != -1000. )
723 {
724
725 sanity_check( params->rightAscension >= 0.\
726 && params->rightAscension <= 2.*LAL_PI);
727 sanity_check( params->declination >= -LAL_PI/2.\
728 && params->declination <= LAL_PI/2.);
729
730 if ( params->skyError>0. )
731 {
732
733 sanity_check( params->skyError >= -LAL_PI/2.\
734 && params->skyError <=LAL_PI/2. );
735 sanity_check( params->timingAccuracy > 0. );
736
737 if ( params->numIFO == 2 )
738 params->skyLooping = TWO_DET_SKY_PATCH;
739 else
740 params->skyLooping = SKY_PATCH;
741 }
742 else
743 {
744 params->skyLooping = SINGLE_SKY_POINT;
745 }
746 }
747 else if (params->skyPositionsFile)
748 {
749 params->skyLooping = SKY_PATCH;
750 }
751
752 else
753 {
754 if ( params->numIFO == 2 )
755 params->skyLooping = TWO_DET_ALL_SKY;
756 else
757 params->skyLooping = ALL_SKY;
758 }
759
760 if ( params->skyLooping != SINGLE_SKY_POINT && params->doNullStream )
761 {
762 error( "--do-null-stream and --sky-error are incompatbile. Null stream on more than one sky point is a bad idea.\n" );
763 }
764
765 /* Check that filter frequencies have been given */
766 sanity_check( params->highpassFrequency > 0);
767 sanity_check( params->lowTemplateFrequency > 0 || params->dynTempLength != 0);
768 sanity_check( params->lowFilterFrequency > 0 && params->lowFilterFrequency >= params->lowTemplateFrequency);
769 sanity_check( params->highFilterFrequency > params->lowFilterFrequency);
770
771 sanity_check( params->approximant != NumApproximants);
773 sanity_check( params->dynTempLength == 0 || params->approximant == FindChirpSP);
774
775// This needs fixing. Need a check on whether segmentsToDoList and
776// analyzeInjSegsOnly have been given.
777// sanity_check( ! ((params->segmentsToDoList != "^-$") && (params->analyzeInjSegsOnly)));
778
779 return 0;
780}
781
782/* Sanity check for coh_PTF_inspiral specific */
784{
785 INT8 trigTime;
786 trigTime = epoch_to_ns( &params->trigTime );
787 sanity_check( trigTime > 0 );
788 sanity_check( params->threshold );
789 if ( params->spinBank )
790 {
791 sanity_check( params->spinThreshold );
792 }
793 sanity_check( params->timeWindow );
794// This sanity check needs fixing!
795// sanity_check( params->outputFile );
796 if ( params->bankFile )
797 {
798 fprintf(stderr,"Please use --spin-bank and/or --non-spin-bank with this ");
799 fprintf(stderr,"code and not --bank-file.\n");
800 sanity_check(! params->bankFile );
801 }
802 if ( params->doBankVeto && (! params->bankVetoBankName) )
803 {
804 fprintf(stderr, "When using --do-bank-veto you must also supply ");
805 fprintf(stderr, "--bank-veto-templates. \n" );
806 sanity_check(!( params->doBankVeto && (! params->bankVetoBankName)));
807 }
808 if ( params->bankVetoBankName && (! params->doBankVeto) )
809 {
810 fprintf(stderr, "Supplying --bank-veto-templates will do nothing if ");
811 fprintf(stderr, "--do-bank-veto is not given. \n" );
812 }
813 if ( params->doAutoVeto && (! (params->autoVetoTimeStep && params->numAutoPoints)))
814 {
815 fprintf(stderr, "When using --do-auto-veto you must also supply ");
816 fprintf(stderr, "--num-auto-chisq-points and --auto-veto-time-step\n");
817 sanity_check(params->doAutoVeto && params->autoVetoTimeStep && params->numAutoPoints);
818 }
819 if ( params->doChiSquare && (! params->numChiSquareBins))
820 {
821 fprintf(stderr, "When using --do-chi-square you must also supply ");
822 fprintf(stderr, "--num-chi-square-bins \n");
823 sanity_check(params->doChiSquare && params->numChiSquareBins);
824 }
825 sanity_check(params->spinBank || params->noSpinBank);
826 if ( params->clusterFlag)
827 sanity_check( params->clusterWindow);
828
829 if (params->numIFO == 0)
830 {
831 fprintf(stderr, "You have not specified any detectors to analyse");
832 return 1;
833 }
834 else if (params->numIFO == 1)
835 {
836 fprintf(stdout, "You have only specified one detector, "
837 "why are you using the coherent code? \n");
838 }
839
840 sanity_check( params->numShortSlides > 0);
841 sanity_check( ! (params->doShortSlides && params->shortSlideOffset == 0));
842
843 sanity_check( ! (params->writeSnglInspiralTable && (params->numIFO != 1)));
844
845 return 0;
846}
847
848
849/* prints a help message */
850int coh_PTF_usage( const char *program )
851{
852 fprintf( stderr, "usage: %s options\n", program );
853 fprintf( stderr, "\ngeneral options:\n" );
854 fprintf( stderr, "--help print this message\n" );
855 fprintf( stderr, "--version print the version of the code\n" );
856 fprintf( stderr, "--verbose print verbose messages while running\n" );
857
858 fprintf( stderr, "\ndata reading options:\n" );
859 fprintf( stderr, "--h1-data Analyze h1 data \n" );
860 fprintf( stderr, "--h2-data Analyze h2 data \n" );
861 fprintf( stderr, "--l1-data Analyze l1 data \n" );
862 fprintf( stderr, "--v1-data Analyze v1 data \n" );
863 fprintf( stderr, "--h1-frame-cache=cachefile name of the frame cache file\n" );
864 fprintf( stderr, "--h2-frame-cache=cachefile name of the frame cache file\n" );
865 fprintf( stderr, "--l1-frame-cache=cachefile name of the frame cache file\n" );
866 fprintf( stderr, "--v1-frame-cache=cachefile name of the frame cache file\n" );
867 fprintf( stderr, "--h1-channel-name data channel to analyze\n" );
868 fprintf( stderr, "--h2-channel-name data channel to analyze\n" );
869 fprintf( stderr, "--l1-channel-name data channel to analyze\n" );
870 fprintf( stderr, "--v1-channel-name data channel to analyze\n" );
871 fprintf( stderr, "--gps-start-time=tstart GPS start time of data to analyze (sec)\n" );
872 fprintf( stderr, "--gps-start-time-ns=tstartns nanosecond residual of start time\n" );
873 fprintf( stderr, "--gps-end-time=tstop GPS stop time of data to analyze (sec)\n" );
874 fprintf( stderr, "--gps-end-time-ns=tstopns nanosecond residual of stop time\n" );
875 fprintf( stderr, "\nsimulated data options:\n" );
876 fprintf( stderr, "--simulated-data=dataType create simulated Gaussian noise. Can be WhiteNoise,ILIGONoise or ALIGONoise. \n" );
877 fprintf( stderr, "--random-seed=seed random number seed for simulated data\n" );
878 fprintf( stderr, "--sample-rate=srate sampling rate of simulated data (Hz)\n" );
879 fprintf( stderr, "--zero-data create a time series of zeros\n" );
880
881 fprintf( stderr, "\ndata conditioning options:\n" );
882 fprintf( stderr, "--highpass-frequency=fhi high-pass filter data at frequency fhi (Hz)\n" );
883 fprintf( stderr, "--sample-rate=srate decimate data to be at sample rate srate (Hz)\n" );
884
885 fprintf( stderr, "\ncalibration options:\n" );
886 fprintf( stderr, "--strain-data data is strain (already calibrated)\n" );
887 fprintf( stderr, "--ligo-calibrated-data=TYPE LIGO calibrated data of TYPE real_4 or real_8\n");
888 fprintf( stderr, "--virgo-calibrated-data=TYPE Virgo calibrated data of TYPE real_4 or real_8\n");
889 fprintf( stderr, "--strain-data data is strain (already calibrated)\n" );
890 fprintf( stderr, "--dynamic-range-factor=dynfac scale calibration by factor dynfac\n" );
891 fprintf( stderr, "--fft-level=PLAN Set the fft plan to use level=PLAN\n" );
892
893 fprintf( stderr, "\ndata segmentation options:\n" );
894 fprintf( stderr, "--segment-duration=duration duration of a data segment for filtering (sec)\n" );
895 fprintf( stderr, "--psd-segment-duration=duration duration of a data segment for PSD generation (sec)\n" );
896 fprintf( stderr, "--block-duration=duration duration of an analysis block (sec)\n" );
897 fprintf( stderr, "--pad-data=duration input data padding (sec)\n" );
898 fprintf( stderr, "--h1-slide-segment=amount amount to be slid H1\n" );
899 fprintf( stderr, "--h2-slide-segment=amount amount to be slid H2\n" );
900 fprintf( stderr, "--l1-slide-segment=amount amount to be slid L1\n" );
901 fprintf( stderr, "--v1-slide-segment=amount amount to be slid V1\n" );
902 fprintf( stderr, "--do-short-slides Enabling sliding within the analysis segments. \n");
903 fprintf( stderr, "--short-slide-offset Sets the slide amount between ifos when doing short slides.\n");
904
905 fprintf( stderr, "\npower spectrum options:\n" );
906 fprintf( stderr, "--theoretical-spectrum take the PSD as the PSD used to generate the simulated data\n" );
907 fprintf( stderr, "--low-template-freq=fmin low frequency cutoff for generation of templates (Hz)\n" );
908 fprintf( stderr, "--low-filter-freq=f_low low frequency cutoff for matched filtering (Hz)\n" );
909 fprintf( stderr, "--high-filter-freq=f_max high frequency cutoff for matched filtering (Hz)\n" );
910 fprintf( stderr, "--inverse-spec-length=t set length of inverse spectrum to t seconds\n" );
911 fprintf( stderr, "\nbank generation options:\n" );
912 fprintf( stderr, "--bank-file=name Location of tmpltbank xml file\n" );
913 fprintf( stderr, "--spin-bank=name Location of output spin bank for spin checker or input spin bank for cohPTF_inspiral \n");
914 fprintf( stderr, "--non-spin-bank=name Location of output non spin bank for spin checker or input non spin bank for cohPTF_inspiral \n");
915 fprintf( stderr, "\nfiltering options:\n" );
916 fprintf( stderr, "--only-segment-numbers=seglist list of segment numbers to compute\n" );
917 fprintf( stderr, "--analyze-inj-segs-only Only analyze times when injections have been made\n" );
918 fprintf( stderr, "--only-template-numbers=tmpltlist list of filter templates to use\n" );
919 fprintf( stderr, "--face-on-analysis Run with templates demanding inclination=0\n" );
920 fprintf( stderr, "--face-away-analysis Run with templates demanding inclination=pi/2\n" );
921 fprintf( stderr, "--dynamic-template-length Run with templates whose length is dynamically set to be close to the maximum possible.\n");
922 fprintf( stderr, "--analyse-segment-end Rather than analyse the middle half of analysis segments (1/4 to 3/4 of length), which is the default behaviour. Analyse from (1/2 - truncDuration to 1 - truncDuration of length) where truncDuration is the spectrum truncation which cannot be analysed. This is the closest to the end of the segment it is possible to analyse \n");
923
924 fprintf( stderr, "\nsky location options:\n" );
925 fprintf( stderr, "--right-ascension=ra right ascension of external trigger in degrees\n" );
926 fprintf( stderr, "--declination=dec declination of external trigger in degrees\n" );
927 fprintf( stderr, "--sky-error=err 1-sigma error radius in sky location of external trigger in degrees\n" );
928 fprintf( stderr, "--timing-accuracy=t_acc Accuracy ( in seconds ) of timing information\n" );
929 fprintf( stderr, "--sky-positions-file=name Location of sky locations file for IPN\n" );
930
931 fprintf( stderr, "\ninjection options:\n" );
932 fprintf( stderr, "--injection-file=file list of software injections to make into the data. If this option is not given injections are not made\n");
933 fprintf( stderr, "--inj-search-window=arg output injection triggers only within arg of the injections\n");
934 fprintf( stderr, "--inj-mchirp-window=arg search for injections only with templates with fractional mchirp distance within arg\n");
935
936 fprintf( stderr, "\nTrigger extraction options:\n" );
937 fprintf( stderr, "--snr-threshold=threshold Only keep triggers with a snr above threshold\n" );
938 fprintf( stderr, "--spin-snr-threshold=threshold Only keep spinning triggers with a snr above threshold\n" );
939 fprintf( stderr, "--sngl-snr-threshold Only keep triggers if at least one ifo has snr above value\n" );
940 fprintf( stderr, "--non-spin-snr2-threshold=value SNR squared value over which a non spin trigger is considered found for spin checker program\n" );
941 fprintf( stderr, "--spin-snr2-threshold=value SNR squared value over which a spin trigger is considered found for spin checker program\n" );
942 fprintf( stderr, "--trig-time-window=window Keep loudest trigger within window seconds\n" );
943 fprintf( stderr, "--do-null-stream Calculate Null SNR for potential triggers\n");
944 fprintf( stderr, "--do-trace-snr Calculate Trace SNR for potential triggers \n");
945 fprintf( stderr, "--do-bank-veto Calculate Bank Veto for potential triggers \n");
946 fprintf( stderr, "--bank-veto-templates File containing templates to use for bank veto \n");
947 fprintf( stderr, "--do-auto-veto Calculate Auto Veto for potential triggers \n");
948 fprintf( stderr, "--do-chi-square Calculate the chi squared value for potential triggers \n");
949 fprintf( stderr, "--num-auto-chisq-points Number of points to use in calculating auto veto \n");
950 fprintf( stderr, "--auto-veto-time-step Seperation between points for auto veto \n");
951 fprintf( stderr, "--num-chi-square-bins Number of bins to use to calculate chi square \n");
952 fprintf (stderr, "--chi-square-threshold Only calculate chi square if detection statistic is above this threshold \n");
953 fprintf (stderr, "--store-amplitude-params Calculate and store the amplitude params in the multi_inspiral table \n");
954
955 fprintf( stderr, "\ntrigger output options:\n" );
956 fprintf( stderr, "--output-file=outfile output triggers to file outfile\n" );
957 fprintf( stderr, "--trig-start-time=sec output only triggers after GPS time sec. CURRENTLY NONFUNCTIONAL\n" );
958 fprintf( stderr, "--trig-end-time=sec output only triggers before GPS time sec. CURRENTLY NONFUNCTIONAL\n" );
959 fprintf( stderr, "--ifo-tag=string set ifotag to string for file naming\n" );
960 fprintf( stderr, "--user-tag=string set the process_params usertag to string\n" );
961 fprintf( stderr, "--do-clustering turn on clustering\n");
962 fprintf( stderr, "--cluster-window=arg cluster window length\n");
963 fprintf( stderr, "--write-sngl-inspiral-table Write output as sngl_inspiral\n");
964
965 fprintf( stderr, "\nintermediate data output options:\n" );
966 fprintf( stderr, "--write-raw-data write raw data before injection or conditioning\n" );
967 fprintf( stderr, "--write-data write data after injection and conditioning\n" );
968 fprintf( stderr, "--write-inv-spectrum write inverse power spectrum\n" );
969 fprintf( stderr, "--write-segment write overwhitened data segments\n" );
970 fprintf( stderr, "--write-filter-output write filtered data segments\n" );
971
972 return 0;
973}
const char * program
const LALVCSInfoList lalAppsVCSInfoList
NULL-terminated list of VCS and build information for LALApps and its dependencies
int XLALSimInspiralGetApproximantFromString(const char *waveform)
int LALgetopt_long_only(int argc, char *const *argv, const char *options, const struct LALoption *long_options, int *opt_index)
int LALoptind
char * LALoptarg
#define no_argument
#define required_argument
#define LIGOMETA_IFO_MAX
LAL_NUM_IFO
LAL_IFO_H1
LAL_IFO_H2
LAL_IFO_V1
LAL_IFO_L1
void XLALReturnIFO(char *ifo, InterferometerNumber IFONumber)
#define fprintf
int verbose
Definition: chirplen.c:77
@ ALL_SKY
Definition: coh_PTF.h:290
@ SINGLE_SKY_POINT
Definition: coh_PTF.h:287
@ TWO_DET_ALL_SKY
Definition: coh_PTF.h:291
@ TWO_DET_SKY_PATCH
Definition: coh_PTF.h:288
@ SKY_PATCH
Definition: coh_PTF.h:289
#define sanity_check(condition)
Definition: coh_PTF.h:85
int coh_PTF_parse_options(struct coh_PTF_params *params, int argc, char **argv)
int coh_PTF_params_inspiral_sanity_check(struct coh_PTF_params *params)
int coh_PTF_default_params(struct coh_PTF_params *params)
int coh_PTF_usage(const char *program)
int coh_PTF_params_sanity_check(struct coh_PTF_params *params)
int error(const char *fmt,...)
Definition: errutil.c:37
int vrbflg
INT8 epoch_to_ns(LIGOTimeGPS *epoch)
Definition: gpstime.c:38
LIGOTimeGPS * XLALGPSTimeNow(LIGOTimeGPS *gpstime)
#define LAL_PI_180
#define LAL_PI
#define LAL_INT8_C(c)
int64_t INT8
char CHAR
uint32_t UINT4
NumApproximants
FindChirpSP
LAL_PNORDER_TWO_POINT_FIVE
LAL_PNORDER_NUM_ORDER
LAL_PNORDER_THREE
LAL_PNORDER_TWO
LAL_PNORDER_PSEUDO_FOUR
LAL_PNORDER_THREE_POINT_FIVE
int XLALOutputVCSInfo(FILE *fp, const LALVCSInfoList vcs_list, const int verbose, const char *prefix)
char * ifo
Definition: gwf2xml.c:57
char name[LIGOMETA_SOURCE_MAX]
Definition: inspinj.c:561
args
c
int
float atol
int startTime
@ ALIGO_PSD
Definition: spectrm.h:94
@ ILIGO_PSD
Definition: spectrm.h:93
@ WHITE_PSD
Definition: spectrm.h:92
int * flag
INT4 gpsNanoSeconds
UINT4 numAnalPointsBuf
Definition: coh_PTF.h:145
LIGOTimeGPS startTime
Definition: coh_PTF.h:118
REAL8 segmentDuration
Definition: coh_PTF.h:131
REAL4 maxTempLength
Definition: coh_PTF.h:147
REAL4 clusterWindow
Definition: coh_PTF.h:199
REAL4 threshold
Definition: coh_PTF.h:158
int doBankVeto
Definition: coh_PTF.h:217
int singlePolFlag
Definition: coh_PTF.h:221
char userTag[256]
Definition: coh_PTF.h:192
REAL4 snglSNRThreshold
Definition: coh_PTF.h:160
int analSegmentEnd
Definition: coh_PTF.h:227
UINT4 numChiSquareBins
Definition: coh_PTF.h:185
UINT4 numIFO
Definition: coh_PTF.h:115
int faceOnAnalysis
Definition: coh_PTF.h:223
int ligoDoubleData
Definition: coh_PTF.h:205
int storeAmpParams
Definition: coh_PTF.h:226
int doNullStream
Definition: coh_PTF.h:215
int writeSegment
Definition: coh_PTF.h:234
REAL8 analStartTime
Definition: coh_PTF.h:139
int virgoDoubleData
Definition: coh_PTF.h:206
REAL4 chiSquareCalcThreshold
Definition: coh_PTF.h:186
int dynTempLength
Definition: coh_PTF.h:225
const char * skyPositionsFile
Definition: coh_PTF.h:168
UINT4 analEndPointBuf
Definition: coh_PTF.h:143
UINT4 slideSegments[LAL_NUM_IFO+1]
Definition: coh_PTF.h:194
const char * segmentsToDoList
Definition: coh_PTF.h:171
REAL4 autoVetoTimeStep
Definition: coh_PTF.h:177
REAL8 sampleRate
Definition: coh_PTF.h:129
REAL4 spinSNR2threshold
Definition: coh_PTF.h:162
int doTraceSNR
Definition: coh_PTF.h:216
const char * dataCache[LAL_NUM_IFO]
Definition: coh_PTF.h:127
UINT4 simDataType
Definition: coh_PTF.h:198
const char * bankVetoBankName
Definition: coh_PTF.h:175
int writeProcessedData
Definition: coh_PTF.h:232
UINT4 numAutoPoints
Definition: coh_PTF.h:176
UINT4 numFreqPoints
Definition: coh_PTF.h:137
UINT4 numBufferPoints
Definition: coh_PTF.h:146
UINT4 numAnalPoints
Definition: coh_PTF.h:144
UINT4 analEndPoint
Definition: coh_PTF.h:140
LIGOTimeGPS trigTime
Definition: coh_PTF.h:120
REAL4 injMchirpWindow
Definition: coh_PTF.h:202
int faceOnStatistic
Definition: coh_PTF.h:237
REAL4 declination
Definition: coh_PTF.h:165
int doShortSlides
Definition: coh_PTF.h:228
UINT4 spinBank
Definition: coh_PTF.h:188
INT8 trigEndTimeNS
Definition: coh_PTF.h:122
REAL8 psdSegmentDuration
Definition: coh_PTF.h:132
REAL8 truncateDuration
Definition: coh_PTF.h:135
UINT4 analStartPointBuf
Definition: coh_PTF.h:142
REAL4 spinThreshold
Definition: coh_PTF.h:159
char noSpinBankName[256]
Definition: coh_PTF.h:191
char spinBankName[256]
Definition: coh_PTF.h:189
int doSnglChiSquared
Definition: coh_PTF.h:220
REAL4 lowFilterFrequency
Definition: coh_PTF.h:150
REAL4 shortSlideOffset
Definition: coh_PTF.h:195
REAL4 skyError
Definition: coh_PTF.h:166
int clusterFlag
Definition: coh_PTF.h:222
INT8 trigStartTimeNS
Definition: coh_PTF.h:121
const char * bankFile
Definition: coh_PTF.h:170
int writeInvSpectrum
Definition: coh_PTF.h:233
REAL4 timeWindow
Definition: coh_PTF.h:161
const char * injectFile
Definition: coh_PTF.h:128
char ifoName[MAXIFO][LIGOMETA_IFO_MAX]
Definition: coh_PTF.h:114
Approximant approximant
Definition: coh_PTF.h:155
REAL8 padData
Definition: coh_PTF.h:130
UINT4 fftLevel
Definition: coh_PTF.h:197
const char * channel[LAL_NUM_IFO]
Definition: coh_PTF.h:126
char ifoTag[256]
Definition: coh_PTF.h:193
int faceAwayAnalysis
Definition: coh_PTF.h:224
int writeSnglInspiralTable
Definition: coh_PTF.h:229
REAL4 lowTemplateFrequency
Definition: coh_PTF.h:149
int strainData
Definition: coh_PTF.h:204
REAL8 strideDuration
Definition: coh_PTF.h:133
LALPNOrder order
Definition: coh_PTF.h:156
int doAutoVeto
Definition: coh_PTF.h:218
REAL4 rightAscension
Definition: coh_PTF.h:164
LIGOTimeGPS endTime
Definition: coh_PTF.h:119
UINT4 numShortSlides
Definition: coh_PTF.h:196
REAL4 injSearchWindow
Definition: coh_PTF.h:201
const char * templatesToDoList
Definition: coh_PTF.h:172
REAL4 highpassFrequency
Definition: coh_PTF.h:152
REAL4 nonspinSNR2threshold
Definition: coh_PTF.h:163
char outputFile[256]
Definition: coh_PTF.h:187
INT4 haveTrig[LAL_NUM_IFO]
Definition: coh_PTF.h:117
REAL8 duration
Definition: coh_PTF.h:125
REAL8 dynRangeFac
Definition: coh_PTF.h:153
int writeRawData
Definition: coh_PTF.h:231
int whiteSpectrum
Definition: coh_PTF.h:209
int doChiSquare
Definition: coh_PTF.h:219
REAL4 highFilterFrequency
Definition: coh_PTF.h:151
UINT4 numTimePoints
Definition: coh_PTF.h:136
UINT4 noSpinBank
Definition: coh_PTF.h:190
REAL4 timingAccuracy
Definition: coh_PTF.h:167
int analyzeInjSegsOnly
Definition: coh_PTF.h:214
int writeFilterOutput
Definition: coh_PTF.h:235
REAL8 analEndTime
Definition: coh_PTF.h:141
REAL8 tempCorrFac
Definition: coh_PTF.h:154
INT4 randomSeed
Definition: coh_PTF.h:116
UINT4 analStartPoint
Definition: coh_PTF.h:138
double duration