32#include <lal/LALError.h>
33#include <lal/LALStdlib.h>
34#include <lal/LALStdio.h>
35#include <lal/LIGOMetadataTables.h>
36#include <lal/LIGOMetadataUtils.h>
37#include <lal/LIGOMetadataInspiralUtils.h>
39#include <lal/SkyCoordinates.h>
40#include <lal/GeneratePPNInspiral.h>
41#include <lal/DetectorSite.h>
42#include <lal/DetResponse.h>
43#include <lal/TimeDelay.h>
100 int(*comparfunc) (
const void *,
const void *)
110 for ( thisEvent = eventHead; thisEvent; thisEvent = thisEvent->
next )
117 "XLALSortSnglInspiral: Empty SnglInspiralTable passed as input\n" );
124 for (
i = 0, thisEvent = eventHead;
i < numEvents;
125 ++
i, thisEvent = thisEvent->
next )
127 eventHandle[
i] = thisEvent;
131 qsort( eventHandle, numEvents,
sizeof(eventHandle[0]), comparfunc );
134 thisEvent = eventHead = eventHandle[0];
135 for (
i = 1;
i < numEvents; ++
i )
137 thisEvent = thisEvent->
next = eventHandle[
i];
139 thisEvent->
next = NULL;
198 thisEvent = eventHead;
203 thisEvent = thisEvent->
next;
205 if (
end_time(tmpEvent) >= startTimeNS &&
209 if ( ! inspiralEventList )
211 inspiralEventList = tmpEvent;
215 prevEvent->
next = tmpEvent;
217 tmpEvent->
next = NULL;
218 prevEvent = tmpEvent;
226 eventHead = inspiralEventList;
254 thisEvent = *eventHead;
259 if ( ! strcmp( thisEvent->
ifo, ifo ) )
264 thisIfoTrig = thisIfoTrig->
next = thisEvent;
268 ifoHead = thisIfoTrig = thisEvent;
278 thisEvent = thisEvent->
next;
280 thisIfoTrig->
next = NULL;
287 *eventHead = thisEvent;
290 prevEvent = thisEvent;
291 thisEvent = thisEvent->
next;
312 for(length = 0,
event = head;
event;
event =
event->next)
341 thisEvent = eventHead;
346 thisEvent = thisEvent->
next;
350 if ( ! strcmp(massCut,
"mchirp") )
352 massParam = tmpEvent->
mchirp;
354 else if ( ! strcmp(massCut,
"eta") )
356 massParam = tmpEvent->
eta;
358 else if ( ! strcmp(massCut,
"mtotal") )
360 massParam = tmpEvent->
mass1 + tmpEvent->
mass2;
362 else if ( ! strcmp(massCut,
"mcomp") )
364 massParam = tmpEvent->
mass1;
365 mass2Param = tmpEvent->
mass2;
368 if ( ! strcmp(massCut,
"mcomp") )
370 if ( ( massParam >= massRangeLow ) && ( massParam < massRangeHigh ) &&
371 ( mass2Param >= mass2RangeLow ) && ( mass2Param < mass2RangeHigh ) )
380 else if ( ! strcmp(massCut,
"eta") )
382 if ( ( massParam >= massRangeLow -
eps ) &&
383 ( massParam <= massRangeHigh +
eps ) )
394 if ( ( massParam >= massRangeLow ) && ( massParam < massRangeHigh ) )
407 if ( ! inspiralEventList )
409 inspiralEventList = tmpEvent;
413 prevEvent->
next = tmpEvent;
415 tmpEvent->
next = NULL;
416 prevEvent = tmpEvent;
425 eventHead = inspiralEventList;
int LALCompareSnglInspiralByTime(const void *a, const void *b)
SnglInspiralTable * XLALSortSnglInspiral(SnglInspiralTable *eventHead, int(*comparfunc)(const void *, const void *))
SnglInspiralTable * XLALIfoCutSingleInspiral(SnglInspiralTable **eventHead, char *ifo)
SnglInspiralTable * XLALTimeCutSingleInspiral(SnglInspiralTable *eventHead, LIGOTimeGPS *startTime, LIGOTimeGPS *endTime)
static INT8 end_time(const SnglInspiralTable *x)
INT4 XLALCountSnglInspiral(SnglInspiralTable *head)
SnglInspiralTable * XLALMassCut(SnglInspiralTable *eventHead, const char *massCut, REAL4 massRangeLow, REAL4 massRangeHigh, REAL4 mass2RangeLow, REAL4 mass2RangeHigh)
#define XLAL_ERROR_NULL(...)
int int int XLALPrintInfo(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
INT8 XLALGPSToINT8NS(const LIGOTimeGPS *epoch)
CHAR ifo[LIGOMETA_IFO_MAX]
struct tagSnglInspiralTable * next