Use of the Pulsar Timing Programs


  Data can be stored in any one of four identical arrays (really parts of the same array), namely IN, AV, A3 and A4. Each data record consists of a header, the channel information and the data. When reading data in there is an input switch INCHAN which can be either 1 or 2, with corresponding file name IN1FILE and IN2FILE, the default being 1. The normal operation is to say read in, which means read from the input file into the data block IN , confusion can exist when it comes to outputting data as the corresponding operation is 'write in', which means write to the output file the data held in the IN array. Be careful when reading to different blocks as some have a special usage. The norm is that data is read into the IN block and when performing a cross correlation to get an arrival time the template is expected to be A3. If any data is averaged together then the resultant output will be stored in AV. If a multiple read is being carried out then the data is stored in successive channels of A4.

There are many options for the read command, such as a number of blocks. This will read in a number of single channel blocks into consecutive channels of theA4 data block, after which they can be averaged or what ever. Often one needs to carry out a set of operations as each data block is read in, such as averaging the left and right hand polarisations. For this purpose there exists an edit command. A number of edits can be set up using edit add, or edit insert. These edits will be carried out on reading the data. There are obviously some operations that cannot be carried out. The length of each data array is 512,000 real*4 numbers, and if a block of data with more than one channel of data has been read in, then the channels are equally spaced over the length of the data array, this allows operation to be carried out on the data with less worry as to whether the consequetive channels will inflict upon each other. One point to note is that a multiple read operation expects there to be data already in the IN array, if not it will read the next block, but if there is old, not required data then one should clear the array. This should be carefully understood, the command read in 5 will read 5 data blocks, if the option -1 is added then it will take no notice of large(>30 mins) time differences between data blocks. (The time difference is the length of time from the end of one integration to the beginning of the next.) But if this option is not invoked, then it needs to read in a data block before being able to tell whether the time gap is too great.

It has been mentioned that the templates are obtained using the templates.code file. There are two seperate ways to produce arrival times. The current version (getarrtime) is that all data in an observation is averaged together and an arrival time obtained from that data, this requires that the the ephemeris is well known in order for the data to align for integrating. This method has the advantage of producing an enhanced signal to noise ratio pulse to analyse. One facility in psrtime is to be able to write out a (correct file. This is an ephemeris based on the best fit to the data, and is written in a form that can be understood by psrprof. This sets up edits to change the values of various header quantities, period, dm, pdot, epoch etc. Alternatively the standard .eph files may also be used in the same way. The command correct will recalculate the header time from either an set of .eph files, pointed to by ephindex.dat or parav.eph or parameters set by the setvar commands (from eg. a correct file). The data is then shifted by the difference in time between the old header and the value just calculated. As the data from the on-line systems have a limited time resolution, there will usually be a small dead zone at the end of the data because the number of bins multiplied by the shift time of the bins is less than the topocentric period of the pulsar at that time. This can be overcome with the command changetbin. This command is used to re-bin the data with a different value for tbin, but if the number is added as a negative number then this defines the number of bins into which the data is to be split. After this operation, any shifting operation will maintain all data, hence this should be carried out as early as possible in the data reading operation, definately before carrying out a negative changetbin. The other version is called getgoodtime and can be very useful when the true ephemeris is not yet known well enough for averageing to be used. This operation will attempt to get an arrival time from each integration, and then fit a straight line through the resultant times to produce one arrival time for the set of integrations. This method requires better signal to noise ratio for each integration, but is better at rejecting bad points or interference, which otherwise would affect an integrated profile.

The actual pulsar data is usually only a small fraction of the total received data level, so a baseline can be fitted and subtracted from th e data. The command setbases will set the position of three gates within the data, gate 1 will cover the whole of the data and gates 2 and 3 will cover the first and last 10% of the data. On the assumption that the pulse is not sitting in these last two areas the command fitbases in will remove the mean of the dclevel in gates 2 and 3 and this quantity will be stored in the DCLEVEL in the channel parameter area. Obviously a different value will be calculated for each channel. Depending on whether the calibration signal was switched on or off for this integration the value will also copied to DCLEVON or DCLEVOFF.

There are many ways to improve the quality of the data prior to getting an arrival time, SMOOTH, CONDENSE, FOLD, LIMIT, SCALE and DUP are a few examples.

There are other operations that can be carried out in order to get a better value for the arrival time. One such operation is fitscat. This will take the template and increasingly scatter the profile to give the lowest value for the error in getting an arrival time. An other operation is clean. This expects to find a template in A3 that is the same length as the data (as opposed to normally when the template can be less than the data, and is usually only long enough to cover the pulse), a fixed proportion of this template is then aligned with the data and subtracted from it, leaving the result in IN and a point in the AV array showing the shift applied to the template and what proportion of the data was removed. This can either be carried out many time or the number of times given as a parameter.

Of course in all this one will need to see what one is doing and what data you are deaking with. To monitor the header data use mon and the required data block. This will show the header data, then the parameters for each channel. If you are looking at A4 after a multiple read there could be as many as 1024 channels, so an alternative command is mon <data block> hdr'. This only shows the header data. The command display will display the required block of data. One can also say plot grey, which will show all the channels of the data on a grey scale (this only works on the IN array). Note that all the data is used to calculate the maximum and minimum values, so if there is a large spike of interference in one channel then the whole plot is affected. Consider deletech to overcome this.

To find a particular block of data the command seek time can be used, but note that if only the date is used then it uses the time of day of the last block read. If a limited range of frequencies is required, then two parameters SELLOFREQ and SELHIFREQ can be set or the command selectfreq from <a> to <b> can be used.


May 2, 2001