Geometrical resampling S.Braccini, I.Ferrante, D.Passuello, O.Torre F.Antonucci, P.Astone, S.Frasca and C.Palomba
TARGET PLANES (depending on direction only) EACH CROSSING A DELAY (ANTICIPATION) OF 1 SAMPLE BETWEEN PULSAR AND ANTENNA CLOCKS c T 20 kHz
WHAT IS “MASK” ? Compute how many planes are crossed each 100 s
3 x 10 5 operations for all run (1 direction) This mask can be applied for all possible spin down for any frequency for (i=0; i<Mask; i++) Mask[i] = ((ephemeris[i t]-ephemeris[(i-1) t)] n ) (f/c) ; | 9, 13, 41………………17512, ………..-8, -27….. > integers for 90 days MASK COMPUTATION f = Hz (VIRGO Sampling Frequency) Run = 90 days (Run length) t = 100 s (Downsampling time) Mask = Run/Dt = (Mask length - integers)
INPUT DATA (20 kHz data cleaned in time and filtered in a wide band close to a central frequency) f 0 = 40 Hz and f = 10 mHz MASK APPLICATION > 200 x x n x 100 x th stApply for all spin down…… > 200 x x n x 100 x “MOVING ANTENNA” “REST ANTENNA”
| ………………………………………………………….. > float for 90 days OUTPUT | ………………………………………………………….. > Spin Down
for (i=0; i<Mask; i++) Mask[i] = ((ephemeris[i t]-ephemeris[(i-1) t)] n ) (f/c) ; – of real time per direction (valid for all possible spin-down) MASK COMPUTATION TIME MASK APPLICATION TIME Read in 20 kHz data points without mask Read in 20 kHz data points shifted by mask Difference of 3 s 100 days Cost of mask application = 3 x real time per single direction and single spin down
Results obtained with 5 year old machines EGO Farm: INTEL XEON 1.7 GHz + memoria run bus 400 MHz (2GB RAM) - BOGOMIPS 3000 – Not Using Biprocessor COMPUTATIONAL COST (probably will be better) One direction with several spin-downs in of real time (for all band frequencies) Just 10 lines of software
offset = signal_sampling_frequency*downsampling_factor*sizeof(double); /*quanto si sposterebbe senza correzioni*/ fseek(signal,0,SEEK_SET); /*trova l'inizio del file di input*/ for (l=0;l<n_samples;l++){ fseek(signal,offset,SEEK_CUR); /*per ogni campione si sposta di 'offset'*/ for (m=0; m<n_spin_down; m++){ jump = mask[l][m]*sizeof(double); /*correzione*/ fseek(signal,jump,SEEK_CUR); /*seleziona il campione indicato dalla maschera*/ fread((void *)&temp,sizeof(double),1,signal); /*lo legge(spostando il "cursore" avanti di 1double)*/ buffer[l][m] = temp; /*copia il campione letto nel buffer*/ jump = -jump-1*sizeof(double); fseek(signal,jump,SEEK_CUR); /*torna alla posizione senza correzione, da cui riparte* } for (i=0; i<Mask; i++) Mask[i] = ((ephemeris[iDt]-ephemeris[(i-1)Dt)] n ) (f/c) ; SOFTWARE (Few lines)
ACCURACY VS. FREQUENCY 4 kHz 20 kHz Already tested on circular orbit (see note)
NEXT STEP: End to End test on VSR1 of resampling part (in progress) INSERT IN THE FULL PIPELINE TO HAVE SCIENTIFIC DATA