#! /usr/bin/sh 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 #//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ #\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\// ########################################## # 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. 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 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 # put SIM_Z back into the header: fmodhead $L1name $sim_tbl fmodhead $L1name+1 $sim_tbl # other extensions gone! # Create a par file for the L1 event file: # Done before acis_process events; augmented by acis_process_events: # L1par=`basename $L1name .fits`.par # hdr2par $L1name $L1par ### 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 # NOTE: pix_coords seems to have gone away in the releas (dph 981113) # Comment-out the following. # #echo punlearn pix_coords # #punlearn pix_coords # echo pset pix_coords... # # *** fix *** # #pset pix_coords fp_sys=fp-4.3 # pset pix_coords fp_sys=fp-1.1 # pset pix_coords gdp_sys=gdp-1.1 # # *** fix *** # #pset pix_coords tdet_sys=acis-2.4 # pset pix_coords tdet_sys=acis-2.2 # pset pix_coords aimpt_name=as1 # pset pix_coords aimpt_coord="(0.0, 0.0, $SIM_Z)" # pset pix_coords grating_name=$Grating # END pix_coords setting. 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 display=1 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 random=yes #pset tg_resolve_events random=no pset tg_resolve_events rand_seed=1 pset tg_resolve_events sigma_hi_adj=3 pset tg_resolve_events sigma_lo_adj=3 pset tg_resolve_events verbose=1 #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,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,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}" 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`