32 dt = 1000000000LL * (
long long)
t2->gpsSeconds;
33 dt += (
long long)
t2->gpsNanoSeconds;
34 dt -= 1000000000LL * (
long long)
t1->gpsSeconds;
35 dt -= (
long long)
t1->gpsNanoSeconds;
36 return 1
e-9 * (double)
dt;
42 t = 1000000000LL * (
long long)
t0->gpsSeconds;
43 t += (
long long)
t0->gpsNanoSeconds;
44 t += (
long long)( 1e9 *
dt );
45 t1->gpsSeconds =
t / 1000000000LL;
46 t1->gpsNanoSeconds =
t % 1000000000LL;
54 if ( ser->
type != FR_VECT_4R && ser->
type != FR_VECT_8C )
56 fprintf( stderr,
"unknown data type in series: %d\nmust be 4R or 8C\n",
64 fprintf(
fp,
"<ilwd name='%s::sequence' size='7'>\n", ser->
name );
65 if ( ser->
type == FR_VECT_8C )
67 fprintf(
fp,
"<lstring name='complex:domain' size='4'>TIME</lstring>\n" );
71 fprintf(
fp,
"<lstring name='real:domain' size='4'>TIME</lstring>\n" );
76 fprintf(
fp,
"<ilwd name='%s::sequence' size='9'>\n", ser->
name );
77 if ( ser->
type == FR_VECT_8C )
79 fprintf(
fp,
"<lstring name='complex:domain' size='4'>FREQ</lstring>\n" );
83 fprintf(
fp,
"<lstring name='real:domain' size='4'>FREQ</lstring>\n" );
86 fprintf(
fp,
"<int_4u name='gps_sec:start_time' units='sec'>%d</int_4u>\n",
88 fprintf(
fp,
"<int_4u name='gps_nan:start_time' units='nanosec'>%d</int_4u>\n",
90 fprintf(
fp,
"<int_4u name='gps_sec:stop_time' units='sec'>%d</int_4u>\n",
92 fprintf(
fp,
"<int_4u name='gps_nan:stop_time' units='nanosec'>%d</int_4u>\n",
96 fprintf(
fp,
"<real_8 name='time:step_size' units='sec'>%e</real_8>\n",
98 fprintf(
fp,
"<real_8 name='time:heterodyne_freq' units='Hz'>%e</real_8>\n",
103 fprintf(
fp,
"<real_8 name='start_freq' units='hz'>0</real_8>\n" );
104 fprintf(
fp,
"<real_8 name='stop_freq' units='hz'>%e</real_8>\n",
106 fprintf(
fp,
"<real_8 name='freq:step_size' units='hz'>%e</real_8>\n",
109 if ( ser->
type == FR_VECT_8C )
111 fprintf(
fp,
"<complex_8 dims='%d' name='data' units='%s'>",
114 for (
i = 1;
i < ser->
size; ++
i )
120 fprintf(
fp,
"<real_4 dims='%d' name='data' units='%s'>",
123 for (
i = 1;
i < ser->
size; ++
i )
137 char comment[] =
"Generated by $Id$";
138 char seconds[] =
"s";
141 struct FrProcData *
proc;
144 if ( ser->
type != FR_VECT_4R && ser->
type != FR_VECT_8C &&
145 ser->
type != FR_VECT_8R )
147 fprintf( stderr,
"unknown data type in series: %d\nmust be 4R or 8C\n",
157 frame = FrameHNew(
src );
166 union {
const char *
c;
char *
s; }
u = {ser->
unit};
170 proc = calloc( 1,
sizeof( *
proc ) );
171 proc->classe = FrProcDataDef();
172#if defined FR_VERS && FR_VERS < 5000
175#if defined FR_VERS && FR_VERS >= 6000
181 proc->next = frame->procData;
182 frame->procData =
proc;
185 if ( ser->
type == FR_VECT_8C )
187 for (
i = 0;
i < ser->
size; ++
i )
189 vect->dataF[2*
i] = ser->
data[2*
i];
190 vect->dataF[2*
i+1] = ser->
data[2*
i+1];
193 else if ( ser->
type == FR_VECT_4R )
195 for (
i = 0;
i < ser->
size; ++
i )
197 vect->dataF[
i] = ser->
data[
i];
200 else if ( ser->
type == FR_VECT_8R )
202 for (
i = 0;
i < ser->
size; ++
i )
204 vect->dataD[
i] = ser->
ddata[
i];
209 fprintf( stderr,
"unknown data type in series: %d\nmust be 4R or 8C\n",
CHAR comment[LIGOMETA_COMMENT_MAX]
void epoch_add(LIGOTimeGPS *t1, LIGOTimeGPS *t0, double dt)
double epoch_diff(const LIGOTimeGPS *t2, const LIGOTimeGPS *t1)
FrameH * fr_add_proc_data(FrameH *frame, const struct series *ser)
int write_ilwd(const char *fname, const struct series *ser)
#define IS_TRANS(domain_)