IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 13, 2011, 11:35:11 AM (15 years ago)
Author:
eugene
Message:

remove old deprecated functions related to in-line photometry in ppSim; enable 2D seeing variation in simulated images (SEEING.RAMP); galaxy angle in degrees; galaxy grid fluxes user set

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppSim/src/ppSimSetPSF.c

    r26900 r30618  
    2323    float theta    = psMetadataLookupF32(&status, recipe, "PSF.THETA"); // Seeing SIGMA (pixels)
    2424
     25    float seeingMax = psMetadataLookupF32(&status, recipe, "SEEING.MAX"); // Seeing SIGMA (pixels)
     26    bool seeingRamp = psMetadataLookupBool(&status, recipe, "SEEING.RAMP"); // Seeing SIGMA (pixels)
     27
    2528    char *psfModelName = psMetadataLookupStr(&status, recipe, "PSF.MODEL"); // Name of PSF model
    2629    if (psfModelName == NULL) {
     
    3942    int xSize = psMetadataLookupS32(NULL, chip->concepts, "CHIP.XSIZE");
    4043    int ySize = psMetadataLookupS32(NULL, chip->concepts, "CHIP.YSIZE");
    41     xSize = 1000;
    42     ySize = 1000;
    4344
    44     // no spatial variation
    45     options->psfTrendMode = PM_TREND_POLY_ORD;
    46     options->psfTrendNx = 0;
    47     options->psfTrendNy = 0;
    48     options->psfFieldNx = xSize;
    49     options->psfFieldNy = ySize;
     45    if (seeingRamp) {
     46        psEllipseAxes axes;
     47        psEllipsePol pol;
     48        psEllipsePol polMax;
    5049
    51     // generate the psf
    52     psf = pmPSFAlloc (options);
     50        // try spatial variation
     51        options->psfTrendMode = PM_TREND_POLY_ORD;
     52        options->psfTrendNx = 1;
     53        options->psfTrendNy = 1;
     54        options->psfFieldNx = xSize;
     55        options->psfFieldNy = ySize;
    5356
    54     psEllipseAxes axes;
    55     psEllipsePol pol;
     57        // generate the psf
     58        psf = pmPSFAlloc (options);
    5659
    57     // supply the semi-major axis (these are SIGMA values in PIXELS)
    58     axes.major = seeing;
    59     axes.minor = aRatio * seeing;
    60     axes.theta = theta * PS_RAD_DEG;
     60        // supply the semi-major axis (these are SIGMA values in PIXELS)
     61        axes.major = seeing;
     62        axes.minor = aRatio * seeing;
     63        axes.theta = theta * PS_RAD_DEG;
    6164
    62     pol = psEllipseAxesToPol (axes);
     65        pol = psEllipseAxesToPol (axes);
    6366   
    64     param = psf->params->data[PM_PAR_E0];
    65     param->poly->coeff[0][0] = pol.e0;
     67        axes.major = seeingMax;
     68        axes.minor = aRatio * seeingMax;
     69        polMax = psEllipseAxesToPol (axes);
    6670
    67     param = psf->params->data[PM_PAR_E1];
    68     param->poly->coeff[0][0] = pol.e1;
     71        param = psf->params->data[PM_PAR_E0];
     72        param->poly->coeff[0][0] = pol.e0;
     73        param->poly->coeff[1][0] = (polMax.e0 - pol.e0) / xSize;
     74        param->poly->coeff[0][1] = (polMax.e0 - pol.e0) / ySize;
    6975
    70     param = psf->params->data[PM_PAR_E2];
    71     param->poly->coeff[0][0] = pol.e2;
     76        param = psf->params->data[PM_PAR_E1];
     77        param->poly->coeff[0][0] = pol.e1;
     78        param->poly->coeff[1][0] = 0.0;
     79        param->poly->coeff[0][1] = 0.0;
    7280
    73     if (!strcasecmp (psfModelName, "PS_MODEL_QGAUSS")) {
    74         param = psf->params->data[PM_PAR_7];
    75         param->poly->coeff[0][0] = 1.0;
    76     }
     81        param = psf->params->data[PM_PAR_E2];
     82        param->poly->coeff[0][0] = pol.e2;
     83        param->poly->coeff[1][0] = 0.0;
     84        param->poly->coeff[0][1] = 0.0;
    7785
    78     if (!strcasecmp (psfModelName, "PS_MODEL_RGAUSS")) {
    79         param = psf->params->data[PM_PAR_7];
    80         param->poly->coeff[0][0] = 1.0;
     86        if (!strcasecmp (psfModelName, "PS_MODEL_QGAUSS")) {
     87            param = psf->params->data[PM_PAR_7];
     88            param->poly->coeff[0][0] = 1.0;
     89            param->poly->coeff[1][0] = 0.0;
     90            param->poly->coeff[0][1] = 0.0;
     91        }
     92
     93        if (!strcasecmp (psfModelName, "PS_MODEL_RGAUSS")) {
     94            param = psf->params->data[PM_PAR_7];
     95            param->poly->coeff[0][0] = 1.0;
     96            param->poly->coeff[1][0] = 0.0;
     97            param->poly->coeff[0][1] = 0.0;
     98        }
     99
     100    } else {
     101        psEllipseAxes axes;
     102        psEllipsePol pol;
     103
     104        // no spatial variation
     105        options->psfTrendMode = PM_TREND_POLY_ORD;
     106        options->psfTrendNx = 0;
     107        options->psfTrendNy = 0;
     108        options->psfFieldNx = xSize;
     109        options->psfFieldNy = ySize;
     110
     111        // generate the psf
     112        psf = pmPSFAlloc (options);
     113
     114        // supply the semi-major axis (these are SIGMA values in PIXELS)
     115        axes.major = seeing;
     116        axes.minor = aRatio * seeing;
     117        axes.theta = theta * PS_RAD_DEG;
     118
     119        pol = psEllipseAxesToPol (axes);
     120   
     121        param = psf->params->data[PM_PAR_E0];
     122        param->poly->coeff[0][0] = pol.e0;
     123
     124        param = psf->params->data[PM_PAR_E1];
     125        param->poly->coeff[0][0] = pol.e1;
     126
     127        param = psf->params->data[PM_PAR_E2];
     128        param->poly->coeff[0][0] = pol.e2;
     129
     130        if (!strcasecmp (psfModelName, "PS_MODEL_QGAUSS")) {
     131            param = psf->params->data[PM_PAR_7];
     132            param->poly->coeff[0][0] = 1.0;
     133        }
     134
     135        if (!strcasecmp (psfModelName, "PS_MODEL_RGAUSS")) {
     136            param = psf->params->data[PM_PAR_7];
     137            param->poly->coeff[0][0] = 1.0;
     138        }
    81139    }
    82140
Note: See TracChangeset for help on using the changeset viewer.