static void visible_points_action(GtkWidget *w, struct container *co) { #if 0 co->data_window[data_window_type_point]=data_window("Visible Points",co->win,NULL); graphics_redraw(co); #endif }
static void menu_window_visible_points(struct container *co) { co->data_window[data_window_type_point]=data_window("Visible Points",co->win,NULL); graphics_redraw(co); }
/* program entry point */ INT4 main(INT4 argc, CHAR *argv[]) { /* lal initialisation variables */ LALStatus status = blank_status; /* xml */ CHAR baseName[FILENAME_MAX]; StochasticTable *stochHead = NULL; StochasticTable *thisStoch = NULL; /* counter */ INT4 i; /* data structures */ REAL4TimeSeries *seriesOne; REAL4TimeSeries *seriesTwo; REAL4FrequencySeries *overlap; REAL4FrequencySeries *mask; REAL4FrequencySeries *omegaGW; REAL4Window *dataWindow; LIGOTimeGPS gpsStartTime; LIGOTimeGPS gpsEndTime; /* variables */ INT4 numSegments; INT4 duration, durationEff, extrasec; INT4 segsInInt; INT4 segmentLength; INT4 padData; REAL8 deltaF; INT4 filterLength; INT4 numFMin; INT4 numFMax; /* error handler */ status.statusPtr = NULL; lal_errhandler = LAL_ERR_EXIT; /* create the process and process params tables */ proctable.processTable = (ProcessTable *) calloc(1, sizeof(ProcessTable)); XLALGPSTimeNow(&proctable.processTable->start_time); XLALPopulateProcessTable(proctable.processTable, prog_name, \ lalAppsVCSIdentInfo.vcsId, lalAppsVCSIdentInfo.vcsStatus, lalAppsVCSIdentInfo.vcsDate, 0); this_proc_param = procparams.processParamsTable = (ProcessParamsTable *) \ calloc(1, sizeof(ProcessParamsTable)); memset(comment, 0, LIGOMETA_COMMENT_MAX * sizeof(CHAR)); /* parse command line options */ parse_options(argc, argv); /* get xml file basename */ if (userTag) { snprintf(baseName, FILENAME_MAX, "%s%s-STOCHASTIC_%s_%d-%d", \ ifoOne, ifoTwo, userTag, startTime, (endTime - startTime)); } else { snprintf(baseName, FILENAME_MAX, "%s%s-STOCHASTIC-%d-%d", \ ifoOne, ifoTwo, startTime, (endTime - startTime)); } /* get number of segments */ duration = endTime - startTime; numSegments = duration / segmentDuration; segsInInt = intervalDuration / segmentDuration; /* recentre */ if (recentre_flag) { if (vrbflg) fprintf(stdout, "Recentring within data stream...\n"); durationEff = numSegments * segmentDuration; extrasec = duration - durationEff; startTime += extrasec / 2; endTime = startTime + durationEff; } /* add a resample buffer, if required */ if ((resampleRate) || (high_pass_flag)) padData = 1; else padData = 0; /* initialise gps time structures */ gpsStartTime.gpsSeconds = startTime; gpsStartTime.gpsNanoSeconds = 0; gpsEndTime.gpsSeconds = endTime; gpsEndTime.gpsNanoSeconds = 0; /* read data */ seriesOne = get_time_series(ifoOne, frameCacheOne, channelOne, \ gpsStartTime, gpsEndTime, resampleRate, highPassOrder, highPassFreq, \ highPassAtten, geoHighPassOrder, geoHighPassFreq, geoHighPassAtten, \ padData); seriesTwo = get_time_series(ifoTwo, frameCacheTwo, channelTwo, \ gpsStartTime, gpsEndTime, resampleRate, highPassOrder, highPassFreq, \ highPassAtten, geoHighPassOrder, geoHighPassFreq, geoHighPassAtten, \ padData); /* check that the two series have the same sample rate */ if (seriesOne->deltaT != seriesTwo->deltaT) { fprintf(stderr, "Series have different sample rates...\n"); exit(1); } else { /* get resample rate, if required */ if (!resampleRate) resampleRate = (INT4)(1./seriesOne->deltaT); } /* get deltaF for optimal filter */ deltaF = 1./(REAL8)PSD_WINDOW_DURATION; /* get bins for min and max frequencies */ numFMin = (INT4)(fMin / deltaF); numFMax = (INT4)(fMax / deltaF); /* get lengths */ filterLength = numFMax - numFMin + 1; segmentLength = segmentDuration * resampleRate; if (vrbflg) fprintf(stdout, "Generating data segment window...\n"); /* for overlapping hann windows, the hann window length is the segment * length */ if (overlap_hann_flag) hannDuration = segmentDuration; /* create window for data */ dataWindow = data_window(seriesOne->deltaT, segmentLength, hannDuration); /* generate overlap reduction function */ if (vrbflg) fprintf(stdout, "Generating the overlap reduction function...\n"); overlap = overlap_reduction_function(&status, filterLength, fMin, deltaF, \ siteOne, siteTwo); /* generate omegaGW */ if (vrbflg) fprintf(stdout, "Generating spectrum for optimal filter...\n"); omegaGW = omega_gw(&status, alpha, fRef, omegaRef, filterLength, \ fMin, deltaF); /* frequency mask */ if (apply_mask_flag) { if (vrbflg) fprintf(stdout, "Applying frequency mask to spectrum..\n"); /* generate frequency mask */ mask = frequency_mask(fMin, deltaF, filterLength, maskBin); /* apply mask to omegaGW */ for (i = 0; i < filterLength; i++) omegaGW->data->data[i] *= mask->data->data[i]; /* destroy frequency mask */ XLALDestroyREAL4FrequencySeries(mask); } /* perform search */ stochHead = stochastic_search(&status, seriesOne, seriesTwo, overlap, \ omegaGW, dataWindow, numSegments, filterLength, segmentDuration, \ segsInInt, segmentLength, PSD_WINDOW_DURATION, ifoOne, ifoTwo, \ channelOne, channelTwo, calCacheOne, calCacheTwo, calibOffset, \ fMin, fMax, fRef); /* save out xml table */ save_xml_file(&status, prog_name, outputPath, baseName, \ stochHead, proctable, procparams, this_proc_param, comment); /* cleanup */ XLALDestroyREAL4FrequencySeries(overlap); XLALDestroyREAL4FrequencySeries(omegaGW); XLALDestroyREAL4Window(dataWindow); XLALDestroyREAL4TimeSeries(seriesOne); XLALDestroyREAL4TimeSeries(seriesTwo); /* free memory used in the stochastic xml table */ while(stochHead) { thisStoch = stochHead; stochHead = stochHead->next; LALFree(thisStoch); } /* free calloc'd memory */ if (strcmp(frameCacheOne, frameCacheTwo)) { free(frameCacheOne); free(frameCacheTwo); } else { free(frameCacheOne); } free(calCacheOne); free(calCacheTwo); free(channelOne); free(channelTwo); free(ifoOne); free(ifoTwo); free(userTag); free(outputPath); /* check for memory leaks and exit */ LALCheckMemoryLeaks(); exit(0); }