Here I collect the results of the testing I am performing, comparing the output generated by the old ft2Util code (written by Andrea Tramacere) with the output generated by my code (ft2Util_2).
I used the version of Andrea's code currently used in the PROD pipeline (v1r2p32), and I compiled my code and Andrea's one against GlastRelease-v15r47p12gr21.
Fake FT2
Testing procedure
...
Then I run the executables to produce the fake FT2 files (i.e., without LIVETIME), and I compared the results. I have checked out the latest version of Andrea's code (v1r2p32), and I compiled both codes against GlastRelease-v15r47p12gr21.
These are the two command lines I used:
- Old version:
Code Block makeFT2Entries.exe -M7File $magic7 \ -FT2_fits_File ${filenameroot}_andrea.fits \ --Gleam --test-quaternion \ -DigiTstart $start -DigiTstop $stop \ -new_tpl /afs/slac.stanford.edu/g/glast/ground/releases/volume02/ScienceToolsv9r18p5/fitsGen/v6r1p1/data/ft2.tpl
- New version:
(without specifying a template, the new version uses the template provided by the current version of fitsGen)Code Block makeFT2.exe -m7file $magic7 \ -ft2file ${filenameroot}_io.fits \ -ft2start $start \ -ft2stop $stop
Results
The following plots show the results (mind the scales on the y axes, usually the differences are very small!). For every quantity q (like LAT_GEO, LON_GEO, RA_SCX, DEC_SCX...) I computed (qold-qnew)/qold , that is, the "fractional difference".
...
The maximum difference is of the order of ~ 2%, and it is in QSJ_3. QSJ_3 is the Z component of the vectorial part of the attitude quaternion. Usually the attitude quaternion is taken directly from the ATT message in the Magic 7 file. Those messages are issued by the spacecraft 5 times per second. Anyway, there are cases when there is no ATT message corresponding to a particular time interval, thus the codes have to interpolate (or extrapolate). This usually can happen at the very beginning of a run, or because of gaps in the Magic 7 file. The differences between the two codes arises mainly from two different strategies adopted for the interpolation/extrapolation: the old code uses only ATT messages arriving in sync with an ORB message (that is, one time per second), discarding the others; the new code, instead, uses all the available ATT messages. Thus, the new code should provide better interpolation/extrapolation. Anyway, the differences are really small, and I can't think of any application where they could really matter...
Run FT2
Testing procedure
I selected 100 runs (from 323423607 to 323989797), then for each run I submitted a different jobs to the farm. Each job performed this steps:
- Download the Digi, Merit, Magic7L1 and DigiGap files using the datacatalog, placing them in the /scratch directory of the batch workers.
- Run Andrea's code and mine, with the following command lines:
- Old version:
Code Block makeFT2Entries.exe -M7File $magic7 \ -FT2_fits_File ${filenameroot}_andrea.fits \ -DigiTstart $start \ -DigiTstop $stop \ -new_tpl $AndreaTemplate \ -DigiFile $digifile \ -MeritFile $meritfile \ -Gaps_File $digigapfileNew version:
- New version:
(without specifying a template, the new version uses the template provided by the current version of fitsGen)Code Block makeFT2.exe -m7file $magic7 \ -ft2file ${filenameroot}_io.fits \ -ft2start $start \ -ft2stop $stop \ -digifile $digifile \ -meritfile $meritfile \ -gapfile $digigapfile
$start and $stop are respectively the time stamp of the first and the last event in the Digi file.
- Old version:
- Run a python script which matches the entries in the two FT2 files and produces another FITS file containing the fractional difference for each quantity for each entry.
- Move back the produced files to my user disk
When every job finished, I simply merged all the FITS files produced by the python script in one big FITS file, and generate the plots.
Results
I show here only the results concerning the live time. For the other quantities, results are very similar to the previous test.