package SrcMerge; use strict; use English; use Carp; use vars qw(@ISA $VERSION $name $author $date $version @instList $numberOfStreams); @ISA = qw(Module); use ModuleResources; # Declare identity, version, author, date, etc. $name = __PACKAGE__; $VERSION = '2.17'; $version = $VERSION; $author = 'Richard West,Dean Hinshaw,Duncan John Fyfe,Ian Stewart,AnjaSchroeder, Duncan Law-Green'; $date = '2012-12-21'; # DEVELOPERS NOTE: # The evaluateRules differ between production and catalogue pipelines. # Remeber this when copying this module between pipelines. # # ChangeLog # ========= # version 2.17 - 2012-12-21 DLG # ------------ # # + added astcorr=Y to catcorr call to perform 'field stretch' astrometric correction # # version 2.16 - 2012-07-10 DLG # ------------ # # + check for non-empty OM source list in srcmatch call # # version 2.15 - 2012-04-25 DLG # ------------ # # + disable dpssflag to prevent flag overwrite # ## version 2.14 - 2012-03-05 DLG # ------------ # # + disable evalcorr # # version 2.13 - 2012-03-02 DLG # ------------ # # + add calls to CGP catalogue xcorr routines catprep/catcorr # # version 2.12 - 2006-08-09 DJF # ------------ # # + evalcorr intercept changed from 5 to 9. # # version 2.11 - 2006-03-07 DJF # ------------ # # + dpssflag had unquoted strings as parameter values. # + change evalcorr invocation to use new parameters and test # # version 2.10 - 2006-03-01 ACS # ------------ # # + Changed dpssflag parameters # from dpssflag srclisttable=$mlSrcList mfraclimit=0.5 brcolumn=SCTS brfactor=0.0003 extfactor=1 # to dpssflag srclisttable=$mlSrcList extlimit=1.5 mfraclimit=0.5 brcolumn=RATE brfactor=65 op1=sqrt # op2=mul minrad=10 maxrad=400 extfactor=3 maxextrad=200 brlimit=1000 fixext=160 brexfraction=0.4 # detmlfraction=0.9 badcolumn=CUTRAD badfactor=1 pnclosetobadon=no # this should be the final version # # version 2.09 - 2006-01-20 DJF # ------------ # # + Added test to make sure OM observation source list exists before passing it as a parameter to srcmatch. # # version 2.08 - 2005-12-07 DJF # ------------ # # + Changed dpssflag parameters # from dpssflag srclisttable=$mlSrcList mfraclimit=0.5 brcolumn=SCTS brfactor=0.0003 # to dpssflag srclisttable=$mlSrcList mfraclimit=0.5 brcolumn=SCTS brfactor=0.0003 # # version 2.07 - 2005-12-01 IMS # ------------ # + Added invocation of dpssflag. # + Thinned out commented-out code a bit. # # version 2.06 - 2005-11-18 IMS # ------------ # + No longer generates the USNO extract. This job is taken over by module USNOExtract. # + 'start' dependency can therefore lose ImageMerge but must gain USNOExtract. # # version 2.05 - 2005-11-04 IMS # ------------ # # + The module no longer skips source lists with BKGDSCRN=T - non-flare-screened exposures are now screened out at an earlier stage. # + Implemented DJF's shortened intermediate file names. # # version 2.04 - 2005-10-14 IMS # ------------ # # + Added 'allComplete' to the list of methods called from ModuleResources. # + RGW reinstated the XID src list in the call to srcmatch. # # version 2.03 - 2005-09-20 RGW # ------------ # # + don't pass XID source list to srcmatch (this is a hack / temporary workaround) # # version 2.02 - 2005-08-31 RGW # ------------ # # + updated trigger conditions (requires ImageMerge to have completed) # # version 2.01 - 2005-08-02 IMS # ------------ # # + In evaluateRules, allIgnored and allComplete tests on ExpDetect changed to ignored and complete (because ExpDetect now has only 1 instrument and stream). # + ExpDetect now creates just a single emldetect source list for the observation. SrcMerge has been altered to use this list (plus the matching list with XID data) instead of finding the longest-duration exposure-level source list. # + The observation-level image is now also used instead of the appropriate instrument fov image. # # version 2.00 - 2005-05-09 DJF # ------------ # # + Add explicit perl module headers. Previously these were supplied # at compile time. This will make debugging and extending the modules # through additional perl libraries easier. # # + Code layout made more uniform with perltidy # + Standerdized date format (ccyy-mm-dd) # + Standerdized author list to use comma separator # + Make use of perl $VERSION magic. Now $Version = version = '' ## # Version 1.13 - 2003-12-10 (DJF) # ------------ # # + Adapted doCommand to use anonymous lists for list parameters # # Version 1.12 - 2002-07-02 (DJF) # ------------ # # + Changed srcmatch systerr from 4.0 to 2.5 # # Version 1.11 - 2002-05-30 (DJF) # ------------ # # + Catalogue version copied into production pipeline. # See Version 1.10.2 - 1.10.7 ChangeLogs for further details # # # Version 1.10.7 - 2002-05-17 (DJF) # -------------- # # + Added evalcorr task # # Version 1.10.6 - 2002-05-15 (DJF) # -------------- # # + Amended eposcorr maxoffset (was 7, now 10) and maxdist (was 20 now 15) parameters # # Version 1.10.5 - 2002-04-30 (DH) # -------------- # # + Add option to write out likelyhood image in eposcorr. # # Version 1.10.4 - 2002-04-30 (DH) # -------------- # # + Specify input source lists as being of format FITS. # # Version 1.10.3 - 2002-04-23 (DH) # -------------- # # + Don't use source lists in srcmatch if they have not been # background screened. # # Version 1.10.2 - 2002-03-29 (DH) # -------------- # # + Add in call to eposcorr to correct positions of combined # source list. # # Version 1.10.1 - 2002-03-28 (DH) # -------------- # # + Remove dependency on OMSourceCombine - Catalogue pipeline only. # # Version 1.10 - 2002-03-22 (DH) # ------------ # # + Don't use source lists that have not entries. # # Version 1.09 - 2002-02-25 (DH) # ------------ # # + Bug fix for 1.08 . # # Version 1.08 - 2002-02-19 (DH) # ------------ # # + Add in the correlation of the om observation soure list # to srcmatch, if it is available. # # Version 1.07 - 2001-05-22 (DH) # ------------ # # + Change srcmatch parameter syserr, to its proper # spelling systerr. # # Version 1.06 - 2001-05-21 (DH) # ------------ # # + Change srcmatch parameters maxerr from 5 to 4, # and syserr from default to 4 . # # Version 1.05 - 2001-03-16 (DH) # ------------ # # + Print out version number in performAction() for # tracking purposes. # # Version 1.04 - 2001-01-16 (DH) # ------------ # # + Remove ignore rule on number of exposures, as it was # redundant and causing unnecessary DB access. # # Version 1.03 - 2001-01-11 (DH) # ------------ # # + Test for existence of source list file before trying to # use it. # # Version 1.02 - 2001-01-09 (DH) # ------------ # # + Change ignore conditions evaluateRules. # # Version 1.01 - 2000-11-28 (DH) # ------------ # # + First production version. # # Declare list of instruments this module is interested in @instList = qw(all); # Number of streams sub numberOfStreams { return 1; } # Rules method sub evaluateRules { return ignore() if ignored( module => 'ExpDetect' , instrument => 'epic' , stream => 1 ); start() if complete( module => 'ExpDetect' , instrument => 'epic' , stream => 1 ) and complete( module => 'USNOExtract' , instrument => 'all' , stream => 1 ) and allComplete( module => 'OMSourceCombine' , instrument => 'om' , stream => 1 ); } # Action method sub performAction { info("Module version number: $version"); my (@extraopts); my $mlSrcList = findFile( class => 'product' , instrument => 'epic' , content => 'EPIC observation ml source list' ); return success() unless ( fileExists( file => $mlSrcList ) && numberFITSRows( file => $mlSrcList , extension => 'SRCLIST' ) > 0 ); # Pre-flagging for screeners: # doCommand( # 'dpssflag' # , srclisttable => $mlSrcList # , extlimit => 1.5 # , mfraclimit => 0.5 # , brcolumn => 'RATE' # , brfactor => 65 # , op1 => 'sqrt' # , op2 => 'mul' # , minrad => 10 # , maxrad => 400 # , extfactor => 3 # , maxextrad => 200 # , brlimit => 1000 # , fixext => 160 # , brexfraction => 0.4 # , detmlfraction => 0.9 # , badcolumn => 'CUTRAD' # , badfactor => 1 # ) # or return exception(); # info("***DPSSFLAG disabled because it is broken***"); my $mlXidSrcList = findFile( class => 'intermediate' , instrument => 'epic' , content => 'ml xid source list' ); # Get om summary source list, if it exists, and has non-zero rows my $omList = findFile( class => 'product' , instrument => 'om' , content => 'OM OBSERVATION SOURCE LIST' ); if ( $omList && fileExists( file => $omList ) && numberFITSRows( file => $omList, extension => 'SRCLIST' ) > 0 ) { @extraopts = ( useomlistset => 'Y' , omlistset => $omList ); } else { info('No OM observation source list available.'); @extraopts = ( useomlistset => 'N' ); } # Run srcmatch to form temporary summary source lists my $tmpfitsSummary = newFile( class => 'intermediate' , instrument => 'epic' , content => 'summary source list' , format => 'FITS' ); my $htmlSummary = newFile( class => 'product' , instrument => 'epic' , content => 'EPIC summary source list' , format => 'HTML' ); doCommand( 'srcmatch' , inputlistsets => "$mlSrcList $mlXidSrcList" , outputlistset => $tmpfitsSummary , htmloutput => $htmlSummary # , maxerr => 4 # , systerr => 2.5 , @extraopts , allepicmode => 'yes' ) or return exception(); # Run catcorr to correct source positions my $usnoList = findFile( class => 'product' , instrument => 'all' , content => 'Reference catalogue' , format => 'FITS' ); info("No catalogue extract to work from. Unable to continue.") and ignore() unless defined ($usnoList); doCommand( 'catcorr' , srclistset => $tmpfitsSummary , catset => $usnoList , mingood => 10 , minfit => 5.0 , maxoffset => 10.0 , astcorr => 'Y' ) or return exception(); my $fitsSummary = newFile( class => 'product' , instrument => 'epic' , content => 'EPIC summary source list' , format => 'FITS' ); # # insert copyFile to create final summary source list since evalcorr disabled copyFile( source => $tmpfitsSummary , destination => $fitsSummary ); # evalcorr generates final summary source lists by cloning the eposcorr output #doCommand( # 'evalcorr' # , input => $tmpfitsSummary # , output => $fitsSummary # , mode => 'CLONE' # , expression => '2XMM' # , intercept => 9 # ); # return success(); } 1;