#! /usr/bin/sh #### # 990223 dph - modifying as per: # ASC Data System, version: R4CU1C Sunday, February 7, 1999 # MARX version: 2.20.p4 # marx2fits v2.20.p4 #### echo Starting L1.5 at `date` # Take a MARX output file, HETG/ACIS-S config, and do L1.5-L2 processing. # The file to be processed is the first command-line argument. # The file should be the output of marx2fits. ############################################################ # # This is a test script. It does no error checking, # and hard-codes some filenames. # ############################################################ ############################################################ ############################################################ ############################################################ ############################################################ #//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// # # R E Q U I R E D F I L E S : # ########################################## # modhead tables: REFDAT=./RefData sim_tbl=$REFDAT/mh_aciss_sim.tbl # Reference data: src_tbl=$REFDAT/Src_tbl.fits ####### src position for tg_create_mask psf_tbl=$REFDAT/psf_fwhm.fits ####### psf vs off-axis angle table, for tg_create_mask #pi_tbl=$REFDAT/ccd_sigma.fits ##### PI width vs energy, for tg_resolve_events pi_tbl=$REFDAT/ccd_energy.fits ##### PI width vs energy, for tg_resolve_events #//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// ########################################## # get the filename to process. (minimal checking) if [ $# = 0 ] then echo Usage: `basename $0` marx2fits_FITS_file echo "You must specify a marx2fits filename, and I'll look for filename_L1.fits!" exit 1 fi fname=$1 ########################################## # get the marx parameter extension into a parameter file # for parameter extraction. fdump $fname'[3]' \!${fname}_marx.par - - prhead- showcol- showun- showrow- page- pagewid=132 # read some parameters we will need to set. ### next 2 should be OK in L1 par now... Grating=`pget ./${fname}_marx.par GratingType` Detector=`pget ./${fname}_marx.par DetectorType | cut -f1 -d-` ### Defocus=`pget ./${fname}_marx.par DetOffsetX` TG_Rowland=`pget ./${fname}_marx.par RowlandDiameter` echo Grating=$Grating Detector=$Detector Defocus=$Defocus TG_Rowland=$TG_Rowland HEG_angle=`pget ./${fname}_marx.par HETG_Shell4_Theta` MEG_angle=`pget ./${fname}_marx.par HETG_Shell1_Theta` LEG_angle=`pget ./${fname}_marx.par LETG_Shell1_Theta` # Dang. The ((...)) syntax is bash, not sh. # # P_MEG=((10000*`pget ./${fname}_marx.par HETG_Shell3_Period`)) # P_HEG=((10000*`pget ./${fname}_marx.par HETG_Shell4_Period`)) # P_LEG=((10000*`pget ./${fname}_marx.par LETG_Shell1_Period`)) P_MEG=`pget ./${fname}_marx.par HETG_Shell3_Period` P_HEG=`pget ./${fname}_marx.par HETG_Shell4_Period` P_LEG=`pget ./${fname}_marx.par LETG_Shell1_Period` echo P_MEG=$P_MEG P_HEG=$P_HEG P_LEG=$P_LEG P_MEG=`echo 10000 \* ${P_MEG} | bc` P_HEG=`echo 10000 \* ${P_HEG} | bc` P_LEG=`echo 10000 \* ${P_LEG} | bc` echo HEG_angle=$HEG_angle MEG_angle=$MEG_angle P_MEG=$P_MEG P_HEG=$P_HEG ########################################## #Create a par file from the event file header: outname=`basename $fname .fits`_L1.fits L1name=$outname L1par=`basename $fname .fits`_L1.par touch $L1par ; rm $L1par #hdr2par $fname $L1par # deprecated # dmmakepar $fname $L1par # bugs. hdr2par $L1name'[1]' $L1par # revived ### 990223 - should now have the following in hdr: echo -n "Testing... " Grating=`pget $L1par grating` Detector=`pget $L1par detnam` echo Grating=$Grating Detector=$Detector ### 990223 SIM_Z=`pget $L1par sim_z` # will need later for param setup # could get from pix_sim_table.par echo SIM_Z = $SIM_Z ############### ACIS L1 done. Ready to start grating L1.5. echo Setup for tg_create mask ... L15name=`basename $L1name .fits`a.fits # try w/out... # put SIM_Z back into the header: # fmodhead $L1name $sim_tbl # fmodhead $L1name+1 $sim_tbl # other extensions gone! ### add a few necessary parameters to the event par file: # echo defocus,r,h,$Defocus,,, >> $L1par echo roll,r,h,0,,, >> $L1par echo roll_tol,r,h,0,,, >> $L1par echo axlen1,i,h,8192,,, >> $L1par echo axlen2,i,h,8192,,, >> $L1par echo i_naxis1,i,h,8192,,, >> $L1par echo i_naxis2,i,h,8192,,, >> $L1par ### set various parameters for tg_create_mask, gratings, pixlib: # due to an inconsistency somewhere, we now have to negate the # clocking angles: punt bash syntax, use bc for sh: #aMEG=((-$MEG_angle)) #aHEG=((-$HEG_angle)) #aLEG=((-$LEG_angle)) aMEG=`echo -1 \* $MEG_angle | bc` aHEG=`echo -1 \* $HEG_angle | bc` aLEG=`echo -1 \* $LEG_angle | bc` #echo punlearn grating #punlearn grating echo pset grating... pset grating acsysgrt=ASC-GDP-1.1 pset grating tgrowland=$TG_Rowland pset grating tggratperiodheg=$P_HEG pset grating tggratperiodmeg=$P_MEG pset grating tggratperiodleg=$P_LEG # use negated version... pset grating tgclockingangleheg=$aHEG pset grating tgclockinganglemeg=$aMEG pset grating tgclockingangleleg=$aLEG # test non-negated versions... # pset grating tgclockingangleheg=$HEG_angle # pset grating tgclockinganglemeg=$MEG_angle # pset grating tgclockingangleleg=$LEG_angle #echo punlearn pix_grating #punlearn pix_grating echo pset pix_grating... pset pix_grating HEG_p=$P_HEG pset pix_grating MEG_p=$P_MEG pset pix_grating LEG_p=$P_LEG pset pix_grating HEG_alpha=$HEG_angle pset pix_grating MEG_alpha=$MEG_angle pset pix_grating LEG_alpha=$LEG_angle echo punlearn tg_create_mask punlearn tg_create_mask echo pset tg_create_mask... pset tg_create_mask input_psf_tab=$psf_tbl pset tg_create_mask grating_obs=$Grating pset tg_create_mask detector=$Detector pset tg_create_mask radius_factor_zero=50 width_factor_arms=20 pset tg_create_mask verbose=5 pset tg_create_mask use_user_pars=no RegName=`basename $L1name .fits`.reg echo ... setup done. echo Run tg_create mask ... tg_create_mask $L1par $RegName $src_tbl $Grating echo ... Done. ######## ready for tg_resolve_events ####### punlearn tg_resolve_events pset tg_resolve_events rmfile=$pi_tbl pset tg_resolve_events grating=$Grating #pset tg_resolve_events instrument=$Detector pset tg_resolve_events detector=$Detector pset tg_resolve_events random=yes pset tg_resolve_events rand_seed=1 pset tg_resolve_events energy_hi_adj=1 pset tg_resolve_events energy_lo_adj=1 #pset tg_resolve_events sigma_hi_adj=3 #pset tg_resolve_events sigma_lo_adj=3 pset tg_resolve_events verbose=5 #pset tg_resolve_events stdlev1="{d:time,i:expno,l:gdpx,s:gdpy,d:tg_r,d:tg_d,s:chipx,s:chipy,s:tdetx,s:tdety,s:detx,s:dety,d:sky,s:ccd_id,l:pha,l:pi,s:grade,s:fltgrade,s:status,s:ccdnode,s:tg_m,d:tg_lam,d:tg_mlam,s:tg_srcid,s:tg_part,s:tg_smap}" pset tg_resolve_events stdlev1="{d:time,i:expno,l:gdpx,s:gdpy,d:tg_r,d:tg_d,s:chipx,s:chipy,s:tdetx,s:tdety,s:detx,s:dety,s:x,s:y,s:ccd_id,l:pha,l:pi,f:energy,s:grade,s:fltgrade,s:status,s:ccdnode,s:tg_m,d:tg_lam,d:tg_mlam,s:tg_srcid,s:tg_part,s:tg_smap}" L15name=`basename $L1name .fits`a.fits echo tg_resolve_events $L1name $L15name $RegName time tg_resolve_events $L1name $L15name $RegName # ######################################################################## # #### need to do header-patching .....prim hdr is minimal. # Hdrname=`basename $L1name .fits`.hdr # fdump $L1name'[0]' \!$Hdrname 0 0 prhead+ showcol- showun- showrow- page- pagewid=132 # # punt req fields: # numlines=`cat $Hdrname | wc -l` # ndel=11 # outlines=`expr $numlines - $ndel` # echo numlines=$numlines outlines=$outlines Hdr=$Hdrname # tail +$ndel $Hdrname | head -$outlines > $Hdrname.new # echo fmodhead $L15name+0 $Hdrname.new ... # fmodhead $L15name+0 $Hdrname.new # #fmodhead $L15name+1 $Hdrname.new # this is OK - keep it! # echo rm ${Hdrname} ${Hdrname}.new # rm ${Hdrname} ${Hdrname}.new # #rm ${fname}_marx.par $L1par ############################################################### echo Finished L1.5 at `date`