#!/usr/bin/perl ############################################################################### # A perl script to get the fits files corresponding to entries in a # 2QZ catalogue extract from the CD-ROM # # written by Scott Croom 08/03/01 # # SMC 06/06/03 (v1.1) : update to include new catalogue reading routines # ################################################################################ # # # LICENCE # # # # This program is free software; you can redistribute it and/or # # modify it under the terms of the GNU General Public License # # as published by the Free Software Foundation; either version 2 # # of the License, or (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with this program; if not, write to the Free Software # # Foundation, Inc., 59 Temple Place - Suite 330, # # Boston, MA 02111-1307, USA. # # # ################################################################################ # # Pragmas: #use diagnostics; # # Modules: use Shell qw(cp); # # version control: $version=1.1; printf ("get_fits.pl version %3.1f\n\n",$version); # get command line input: if ($ARGV[0] eq "-h") { help(); exit; } if ( scalar(@ARGV) != 3 ) { print "Usage: get_fits.pl \n"; print "or: get_fits.pl -h for more help\n"; exit; } else { $catfile=$ARGV[0]; $cdpath=$ARGV[1]; $outpath=$ARGV[2]; } # open the catalogue file: open ( CAT , $catfile ); $nlines=0; while ( $line = ) { chomp($line); rline($line); $nlines++; $namea=$iauname."a.fits.gz"; $dir=sprintf("ra%02d_%02d/",substr($iauname,1,2),substr($iauname,1,2)+1); # sub-directory for data $inname=$cdpath."/fits/".$dir.$namea; $outname=$outpath."/".$namea; if (-e $outname) { # check if the file already exists print "$outname already exists\n"; } elsif (not -e $inname) { print "$inname doesn\'t exist\n"; } else { cp($inname,$outname); } if ($nobs > 1) { # if there is a second observation get that too $nameb=$iauname."b.fits.gz"; $inname=$cdpath."/fits/".$dir.$nameb; $outname=$outpath."/".$nameb; if (-e $outname) { # check if the file already exists print "$outname already exists\n"; } elsif (not -e $inname) { print "$inname doesn\'t exist\n"; } else { cp($inname,$outname); } } } close(CAT); exit; ############################################################################### # subroutine to print out help information: sub help { print "GET_FITS.PL HELP\n"; print "------------------\n"; print "This script allows the user to copy FITS spectrum files from the\n"; print "2QZ CD-ROM. The spectra to be copied are specified by inputting\n"; print "a 2QZ catalogue file which contains entries for all the objects you\n"; print "require. This catalogue file will typically be produced using the\n"; print "2QZ catalogue search tool run via a web browser or the command line\n"; print "version: cat_search.pl.\n\n"; print "usage:\n"; print "get_fits.pl \n\n"; print " - an extract from the 2QZ catalogue\n"; print " - the path to the 2QZ CD, e.g.: /cdrom/cdrom0/\n"; print " - where to put the FITS files, e.g.: /data/me/fits/\n\n"; print "example:\n"; print "get_fits.pl 2QZ.cat /cdrom/cdrom0/ /data/scroom/great_spectra/\n\n"; return; } ############################################################################### # subroutine to read the catalogue entries in a standard format 2QZ catalogue # file sub rline { my @tmp=split(/\s+/," ".$_[0]); $iauname=$tmp[1]; $ra1j=$tmp[2]; $ra2j=$tmp[3]; $ra3j=$tmp[4]; $dec1j=$tmp[5]; $dec2j=$tmp[6]; $dec3j=$tmp[7]; $catno=$tmp[8]; $catname=$tmp[9]; $sector=$tmp[10]; $ra1=$tmp[11]; $ra2=$tmp[12]; $ra3=$tmp[13]; $dec1=$tmp[14]; $dec2=$tmp[15]; $dec3=$tmp[16]; $ukstfld=$tmp[17]; $apmx=$tmp[18]; $apmy=$tmp[19]; $rarad=$tmp[20]; $decrad=$tmp[21]; $b=$tmp[22]; $ub=$tmp[23]; $br=$tmp[24]; $nobs=$tmp[25]; $z1=$tmp[26]; $zq1=$tmp[27]; $id1=$tmp[28]; $date1=$tmp[29]; $fobs1=$tmp[30]; $fibre1=$tmp[31]; $sn1=$tmp[32]; $z2=$tmp[33]; $zq2=$tmp[34]; $id2=$tmp[35]; $date2=$tmp[36]; $fobs2=$tmp[37]; $fibre2=$tmp[38]; $sn2=$tmp[39]; $zprev=$tmp[40]; $radio=$tmp[41]; $xray=$tmp[42]; $dust=$tmp[43]; $comment1=$tmp[44]; $comment2=$tmp[45]; # set up checks for declination sign: $dsign=1.0; $dsignchar="+"; if ($dec1 =~ /-/) { $dsign=-1; $dsignchar="-"; } $dsignj=1.0; $dsigncharj="+"; if ($dec1j =~ /-/) { $dsignj=-1; $dsigncharj="-"; } # remove signs (-/+) from declination: $dec1=~s/-//; $dec1=~s/\+//; $dec1j=~s/-//; $dec1j=~s/\+//; return; } ###############################################################################