IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 40491


Ignore:
Timestamp:
Jun 27, 2018, 4:11:56 PM (8 years ago)
Author:
eugene
Message:

add new psf model type for HSC

Location:
trunk/psModules
Files:
5 edited
3 copied

Legend:

Unmodified
Added
Removed
  • trunk/psModules

  • trunk/psModules/src/objects/Makefile.am

    r37964 r40491  
    9292        models/pmModel_EXP.c \
    9393        models/pmModel_DEV.c \
    94         models/pmModel_TRAIL.c
     94        models/pmModel_TRAIL.c \
     95        models/pmModel_HSC_V1.c
    9596
    9697pkginclude_HEADERS = \
     
    142143        models/pmModel_EXP.h \
    143144        models/pmModel_DEV.h \
    144         models/pmModel_TRAIL.h
     145        models/pmModel_TRAIL.h \
     146        models/pmModel_HSC_V1.h
    145147
    146148CLEANFILES = *~
  • trunk/psModules/src/objects/models/fwhm.sh

    r38280 r40491  
    161161end
    162162
    163 # qgauss is like ps1_v1 with z^2.25
    164 macro find.fwhm.qgauss
     163# hsc
     164macro find.fwhm.hscv1
    165165  if ($0 != 2)
    166     echo "USAGE: find.qgauss (K)"
     166    echo "USAGE: find.fwhm (K)"
    167167    break
    168168  end
     
    180180  create z 0 50 $dz
    181181
    182   # set f = 1.0 / (1.0 + $K*z + z^2.25)
    183   # f = $K*z + z^2.25 - 1.0, find where f == 0.0
    184  
    185   set f = $K*z + z^2.25 - 1.0
    186   set dfdz = $K + 2.25*z^1.25
     182  # set f = 1.0 / (1.0 + $K*z + z^1.667)
     183  # f = $K*z + z^1.667 - 1.0, find where f == 0.0
     184 
     185  set f = $K*z + z^1.8 - 1.0
     186  set dfdz = $K + 1.8*z^0.8
    187187
    188188  #lim -n 0 z f; clear; box; plot z f
    189189  #lim -n 1 z dfdz; clear; box; plot z dfdz 
    190190
    191   $nZ0 = 0
    192   $nZ1 = 5 / $dz
     191  # these just need to bound the solution
     192  $nZ0 = 0.5 / $dz
     193  $nZ1 = 5.0 / $dz
    193194
    194195  $Zg = 0.5*(z[$nZ0] + z[$nZ1]) 
     
    206207    $dZ = $Fg / $dFdz_g
    207208
     209    # echo -no-return $Zg $Fg $dZ $dFdz_g
     210
     211    $Zg -= $dZ
     212
     213    $Zg = max ($Zg , 0)
     214    $Zg = min ($Zg , z[-2])
     215    $nZg = int($Zg / $dz)
     216   
     217    # echo ": $Zg $nZg"
     218  end
     219  # echo $Zg $Fg $dZ $dFdz_g
     220  $Zhm = $Zg
     221  $FWHM = 2*sqrt(2*$Zg)
     222
     223  fprintf "%4.2f, // %4.1f, %4.2f" $FWHM $K $Zhm
     224end
     225
     226# qgauss is like ps1_v1 with z^2.25
     227macro find.fwhm.qgauss
     228  if ($0 != 2)
     229    echo "USAGE: find.qgauss (K)"
     230    break
     231  end
     232 
     233  $K = $1
     234
     235  if ($K == 0.0)
     236    $Zhm = 1.0
     237    $FWHM = 2*sqrt(2)
     238    fprintf "%4.2f, // %4.1f, %4.2f" $FWHM $K $Zhm
     239    return
     240  end
     241
     242  $dz = 0.01
     243  create z 0 50 $dz
     244
     245  # set f = 1.0 / (1.0 + $K*z + z^2.25)
     246  # f = $K*z + z^2.25 - 1.0, find where f == 0.0
     247 
     248  set f = $K*z + z^2.25 - 1.0
     249  set dfdz = $K + 2.25*z^1.25
     250
     251  #lim -n 0 z f; clear; box; plot z f
     252  #lim -n 1 z dfdz; clear; box; plot z dfdz 
     253
     254  $nZ0 = 0
     255  $nZ1 = 5 / $dz
     256
     257  $Zg = 0.5*(z[$nZ0] + z[$nZ1]) 
     258  $nZg = int($Zg / $dz)
     259  $dZ = 1.0
     260
     261  for i 0 10
     262    # interpolate between $nZg and $nZg + 1
     263    $Fg = f[$nZg] + ($Zg - $nZg*$dz)*(f[$nZg+1] - f[$nZg])/$dz
     264    $dFdz_g = dfdz[$nZg] + ($Zg - $nZg*$dz)*(dfdz[$nZg+1] - dfdz[$nZg])/$dz
     265
     266    # $Fg = f[$nZg]
     267    # $dFdz_g = dfdz[$nZg]
     268
     269    $dZ = $Fg / $dFdz_g
     270
    208271    # echo $Zg $Fg $dZ $dFdz_g
    209272
     
    223286  if ($0 != 4)
    224287    echo "USAGE: fwhm.trend (model) (struct) (output)"
    225     echo "  model: pgauss, rgauss, ps1v1, qgauss"
     288    echo "  model: pgauss, rgauss, ps1v1, qgauss, hscv1"
    226289    break
    227290  end
     
    229292  delete fwhm_v k_v
    230293
    231   $SAVE = 0
     294  $SAVE = 1
    232295  if ($SAVE) exec rm -f $3
    233296  if ($SAVE) output $3
     
    240303  if ($SAVE) echo "# define MIN_FWHM_BIN $minK"
    241304  if ($SAVE) echo "# define N_FWHM_BIN {int(($maxK - $minK) / $delK) + 1}"
    242   if ($SAVE) echo "static float $2[] = \{"
     305#  if ($SAVE) echo "static float $2[] = \{"
    243306
    244307  for k $minK $maxK $delK -incl
     
    247310    concat $FWHM fwhm_v
    248311  end
    249   if ($SAVE) echo "\}@"
     312#  if ($SAVE) echo "\}@"
    250313  if ($SAVE) output stdout
    251314
    252   lim k_v fwhm_v; clear; box; plot k_v fwhm_v -pt 10 -sz 1.0
    253 end
    254 
     315#  lim k_v fwhm_v; clear; box; plot k_v fwhm_v -pt 10 -sz 1.0
     316end
     317
  • trunk/psModules/src/objects/pmModelClass.c

    r36859 r40491  
    4747# include "models/pmModel_QGAUSS.h"
    4848# include "models/pmModel_PS1_V1.h"
     49# include "models/pmModel_HSC_V1.h"
    4950# include "models/pmModel_RGAUSS.h"
    5051# include "models/pmModel_SERSIC.h"
     
    6364    {"PS_MODEL_DEV",          7, 1, (pmModelFunc)pmModelFunc_DEV,     (pmModelFlux)pmModelFlux_DEV,     (pmModelRadius)pmModelRadius_DEV,     (pmModelSetFWHM)pmModelSetFWHM_DEV,     (pmModelLimits)pmModelLimits_DEV,     (pmModelGuessFunc)pmModelGuess_DEV,    (pmModelFromPSFFunc)pmModelFromPSF_DEV,    (pmModelParamsFromPSF)pmModelParamsFromPSF_DEV,    (pmModelFitStatusFunc)pmModelFitStatus_DEV,    (pmModelSetLimitsFunc)pmModelSetLimits_DEV    },
    6465    {"PS_MODEL_TRAIL",        7, 0, (pmModelFunc)pmModelFunc_TRAIL,   (pmModelFlux)pmModelFlux_TRAIL,   (pmModelRadius)pmModelRadius_TRAIL,   (pmModelSetFWHM)pmModelSetFWHM_TRAIL,   (pmModelLimits)pmModelLimits_TRAIL,   (pmModelGuessFunc)pmModelGuess_TRAIL,  (pmModelFromPSFFunc)pmModelFromPSF_TRAIL,  (pmModelParamsFromPSF)pmModelParamsFromPSF_TRAIL,  (pmModelFitStatusFunc)pmModelFitStatus_TRAIL,  (pmModelSetLimitsFunc)pmModelSetLimits_TRAIL  },
     66    {"PS_MODEL_HSC_V1",       8, 0, (pmModelFunc)pmModelFunc_HSC_V1,  (pmModelFlux)pmModelFlux_HSC_V1,  (pmModelRadius)pmModelRadius_HSC_V1,  (pmModelSetFWHM)pmModelSetFWHM_HSC_V1,  (pmModelLimits)pmModelLimits_HSC_V1,  (pmModelGuessFunc)pmModelGuess_HSC_V1, (pmModelFromPSFFunc)pmModelFromPSF_HSC_V1, (pmModelParamsFromPSF)pmModelParamsFromPSF_HSC_V1, (pmModelFitStatusFunc)pmModelFitStatus_HSC_V1, (pmModelSetLimitsFunc)pmModelSetLimits_HSC_V1 },
    6567};
    6668
  • trunk/psModules/src/objects/pmSourceOutputs.c

    r38038 r40491  
    135135                outputs->psfCore = PAR[PM_PAR_7];
    136136            }
     137            if (model->type == pmModelClassGetType ("PS_MODEL_HSC_V1")) {
     138                outputs->psfCore = PAR[PM_PAR_7];
     139            }
    137140
    138141            outputs->psfMajorFWHM = model->class->modelSetFWHM(model->params, axes.major);
Note: See TracChangeset for help on using the changeset viewer.