ligo- xxx bruce allen, lsc talk 2003.05.23ligo scientific collaboration - u. wisconsin - milwaukee 1...

8
Bruce Allen, LSC Talk 2003.05. 23 LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 LIGO-XXX Effects of Timing Errors and Timing Offsets in Pulsar Searches and Upper Limits Bruce Allen, UWM

Upload: godwin-mccarthy

Post on 12-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

1

LIGO-XXX

Effects of Timing Errors and Timing Offsets in Pulsar Searches and

Upper Limits

Bruce Allen, UWM

Page 2: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

2

LIGO-XXX

Timing Precision in Pulsar Searches• Typical pulsar signal:

» f0 = 1 kHz (nominal)

» 0.001 Hz daily frequency modulation (Earth rotation)

» 0.1 Hz annual frequency modulation (Earth orbit around Sun)

• Typical search methods (both time-domain and frequency domain) use optimal filtering:

(t)=templates(t)=data

Note: sometimes called the F-statistic.

• Effect of a small constant timing offset t on 1-detector SNR is quadratic in the timing error:

Example: t =100 sec error, 1kHz signal, fractional loss of SNR is 18%:

Example: t =10 sec error, 1kHz signal, fractional loss of SNR is 0.2%.

monthsweeks

dtttsSNR/

)()(

2)(2

11)cos())(sin()sin(

0

2ttdtttt

T

T

82.0)(2

11 2 t

Page 3: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

3

LIGO-XXX

Maximization over phase (single detector)

• If the signal were a pure sinusoid (no amplitude or frequency modulation) then maximization over the unknown initial phase would erase the effects of a constant timing offset error:

• What happens with a real pulsar signal? Since it is not a pure sinusoid, it’s not obvious if maximization over the unknown phase can compensate for a timing error.

Let’s address this next…

1

)exp()(2

)cos(

))(sin()sin(0

2

0

T

dttittsT

tMax

dttttT

T

Max

Page 4: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

4

LIGO-XXX

Effects of timing error on real pulsar signals (one detector)

• Convenient to write SNR in the frequency domain:

• Typical pulsar signal:» f0 = 1 kHz (nominal)

» 0.001 Hz daily frequency modulation (Earth rotation)

» 0.1 Hz annual frequency modulation (Earth orbit around Sun)

• Bandwidth of signal is:

• Effect of timing error t:

which makes the SNR

so the effects of the timing error are on 1-detector SNR are negligible if

ff

f

T

dfffsdtttsSNR0

0

)()()()( *

0

year 1Tfor 10

year 1Tfor )year/(10

04

04

f

Tff

)2exp()()( tiffsfs

ff

f

dftffiffsSNR0

0

))(2exp()()( 0*

ft

tf

tfi

2

1

12

1)2exp(

Page 5: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

5

LIGO-XXX

Effects of constant timing offset on real pulsar signals (one detector)

• Search time T < 1 yeareffects of the constant timing error are small if

• Example: for S1, with T=3 weeks, the effects of constant timing errors on SNR are small provided that t<20 seconds

• Search time T > 1 yeareffects of the constant timing error are small if

Example: in a year-long search, the efffects of a constant timing error on SNR would be small provided that t<1 second

sec T

year

2

year10

0

4

Tf

t

sec 12

10

0

4

f

t

Page 6: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

6

LIGO-XXX

Varying timing offset & multiple-detector coherent searches

• If the timing offset is varying, or one does a coherent search using more than one detector, then the fractional SNR loss is

where t is the mean of the absolute timing errors.

• Example: timing error t =30 s, fractional SNR loss is 2%

• To correct timing errors for S1 pulsar analysis we “shifted data to nearest bin”. Sampling period is 61 s so that biggest timing error was ±30.5 s. Actual errors smaller.

• To prevent problems in the future, please try to keep all timing errors < 10 s.

2)(2

11 t

Page 7: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

7

LIGO-XXX

The dirty details: cut-and-paste from lalapps (1)

int deltatime(const char *instrument, int gpstime, int *valid){ int (*data)[4]; int i; /* corrections for Livingston L1 during S1. It would probably make sense to discard the first few hours for which there IS no timing data, but since the first SFT that we make starts at time L1.714179401 there is no need. And the first calibrated SFT is at time 714299280 */

int l1time[][4]={ {714177080, 714855840, -121, 678760}, {714855841, 715618813, -120, 762972}, /* value to use if time range not found */ {0, INT_MAX, -121, 0} }; /* corrections for Hanford H1 during S1. Again, it would probably make sense to discard the early times for which we have no timing data (about the first fifty hours of the run). In fact the first SFT is at time 714151661 which is BEFORE the first time listed below. But in fact we don't have calibration information until time 714357188. So this table is OK. */ int h1time[][4]={ {714335520, 715618813, -95, 1283293}, /* value to use if time range not found */ {0, INT_MAX, -95, 0} }; /* corrections for Hanford H2 during S1. Here the pattern of timing is SO irregular that we discard any segments for which we have no data. */

int h2time[][4]={

{714256920, 714407160, 5463, 150240},

{714407640, 714507180, -164, 99540},

{714507300, 714587880, 141, 80580},

{714697680, 714704820, 995, 7140},

{714705000, 714786780, -162, 81780},

{714786900, 715008660, 204, 221760},

{715008780, 715026480, 448, 17700},

{715026780, 715079460, -163, 52680},

{715079580, 715101120, 142, 21540},

{715101240, 715129260, 447, 28020},

{715129500, 715165740, -162, 36240},

{715166640, 715265820, -163, 99180},

{715266180, 715274580, -102, 8400},

{715274700, 715296960, 630, 22260},

{715297440, 715298280, -163, 840},

{715299420, 715305660, -163, 6240},

{715306920, 715545120, -163, 238200},

{715545240, 715556400, 814, 11160},

{715556640, 715594020, -163, 37380},

{715594140, 715618800, 81, 24660},

/* discard data if time range not found */

{-1, 0, 0, 0}

};

/* select the correct instrument */ if (!strcmp(instrument,"H1")) data=h1time; else if (!strcmp(instrument,"H2")) data=h2time; else if (!strcmp(instrument,"L1")) data=l1time; else { pout("Unrecognized detector: %s in deltatime().” “ Not H1, H2, or L1.\n", instrument); exit(1); } /* search along list to see if we find the correct time range */ for (i=0; data[i][0]>=0; i++) if (data[i][0]<=gpstime && gpstime<=data[i][1]){ *valid=1; return data[i][2]; } /* value we should use if time range NOT found */ *valid=0; return 0;}

Page 8: LIGO- XXX Bruce Allen, LSC Talk 2003.05.23LIGO Scientific Collaboration - U. Wisconsin - Milwaukee 1 Effects of Timing Errors and Timing Offsets in Pulsar

Bruce Allen, LSC Talk 2003.05.23

LIGO Scientific Collaboration - U. Wisconsin - Milwaukee

8

LIGO-XXX

The dirty details: cut and paste from lalapps (2)

/* Utility function for cyclically shifting an array "in place". Written for clarity and simplicity, not for efficiency. shift >= 0 : data[0] (moves to) -> data[shift] data[1] -> data[shift+1] data[length-1-shift] -> data[length-1] data[length-1-shift+1] -> data[0] data[length-1-shift+2] -> data[1] ... shift < 0 : replace shift by length+shift and follow

the rules above. ... */void shifter(float *data, int length, int shift){ float *temp=NULL; int delta=shift>=0?shift:length+shift; int i;

/* if no shift is required, we are done */ if (shift==0) return;

/* check that shift range seems reasonable */ if (abs(shift)>length/8){ pout("shifter(): shift amount %d seems too big/small for length %d array\n",

shift, length); exit(1); } /* allocate memory */ if (!(temp=(float *)LALMalloc(sizeof(float)*length))){ pout("Unable to allocate %d bytes of memory in shifter\n",

sizeof(float)*length); exit(1); }

/* copy data */ memcpy(temp, data, sizeof(float)*length);

/* now do shift */ for (i=0; i<length; i++) data[(delta+i) % length]=temp[i]; /* free memory and return */ LALFree(temp); return;}