IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 15254 for trunk/psModules


Ignore:
Timestamp:
Oct 9, 2007, 9:27:04 AM (19 years ago)
Author:
eugene
Message:

changed mask to coeffMask, define PS_POLY_MASK_FIT,SET; distinguish between coeffs masked for fitting (FIT) and masked for evaluation (SET)

Location:
trunk/psModules/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/astrom/pmAstrometryDistortion.c

    r13653 r15254  
    77*  @author EAM, IfA
    88*
    9 *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
    10 *  @date $Date: 2007-06-06 00:43:19 $
     9*  @version $Revision: 1.20 $ $Name: not supported by cvs2svn $
     10*  @date $Date: 2007-10-09 19:27:04 $
    1111*
    1212*  Copyright 2006 Institute for Astronomy, University of Hawaii
     
    6262
    6363    psPolynomial2D *local = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, 1, 1);
    64     local->mask[1][1] = 1;
     64    local->coeffMask[1][1] = PS_POLY_MASK_SET;
    6565
    6666    // measure gradient for fractional chip regions
     
    211211    for (int i = 0; i <= fpa->toTPA->x->nX; i++) {
    212212        for (int j = 0; j <= fpa->toTPA->x->nY; j++) {
    213             if (fpa->toTPA->x->mask[i][j]) {
    214                 if ((i > 0) && (i <= fpa->toTPA->x->nX)) {
    215                     localX->mask[i-1][j] = 1;
    216                 }
    217                 if ((j > 0) && (j <= fpa->toTPA->x->nY)) {
    218                     localY->mask[i][j-1] = 1;
    219                 }
    220             }
     213            if ((i > 0) && (i <= fpa->toTPA->x->nX)) {
     214                localX->coeffMask[i-1][j] = fpa->toTPA->x->coeffMask[i][j];
     215            }
     216            if ((j > 0) && (j <= fpa->toTPA->x->nY)) {
     217                localY->coeffMask[i][j-1] = fpa->toTPA->x->coeffMask[i][j];
     218            }
    221219        }
    222220    }
     
    240238    fpa->toTPA->x->coeff[0][0] = 0;
    241239    for (int i = 1; i <= fpa->toTPA->x->nX; i++) {
    242         if (!fpa->toTPA->x->mask[i][0]) {
    243             fpa->toTPA->x->coeff[i][0] = localX->coeff[i-1][0] / i;
    244         }
     240        if (fpa->toTPA->x->coeffMask[i][0] & PS_POLY_MASK_SET) {
     241            continue;
     242        }
     243        fpa->toTPA->x->coeff[i][0] = localX->coeff[i-1][0] / i;
    245244    }
    246245    for (int j = 1; j <= fpa->toTPA->x->nY; j++) {
    247         if (!fpa->toTPA->x->mask[0][j]) {
    248             fpa->toTPA->x->coeff[0][j] = localY->coeff[0][j-1] / j;
    249         }
     246        if (fpa->toTPA->x->coeffMask[0][j] & PS_POLY_MASK_SET) {
     247            continue;
     248        }
     249        fpa->toTPA->x->coeff[0][j] = localY->coeff[0][j-1] / j;
    250250    }
    251251    for (int i = 1; i <= fpa->toTPA->x->nX; i++) {
    252252        for (int j = 1; j <= fpa->toTPA->x->nY; j++) {
    253             if (!fpa->toTPA->x->mask[i][j]) {
    254                 fpa->toTPA->x->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
    255             }
     253            if (fpa->toTPA->x->coeffMask[i][j] & PS_POLY_MASK_SET) {
     254                continue;
     255            }
     256            fpa->toTPA->x->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
    256257        }
    257258    }
     
    268269    for (int i = 0; i < fpa->toTPA->y->nX; i++) {
    269270        for (int j = 0; j < fpa->toTPA->y->nY; j++) {
    270             if (fpa->toTPA->y->mask[i][j]) {
    271                 if ((i > 0) && (i <= fpa->toTPA->y->nX)) {
    272                     localX->mask[i-1][j] = 1;
    273                 }
    274                 if ((j > 0) && (j <= fpa->toTPA->y->nY)) {
    275                     localY->mask[i][j-1] = 1;
    276                 }
    277             }
     271            if ((i > 0) && (i <= fpa->toTPA->y->nX)) {
     272                localX->coeffMask[i-1][j] = fpa->toTPA->y->coeffMask[i][j];
     273            }
     274            if ((j > 0) && (j <= fpa->toTPA->y->nY)) {
     275                localY->coeffMask[i][j-1] = fpa->toTPA->y->coeffMask[i][j];
     276            }
    278277        }
    279278    }
     
    286285    fpa->toTPA->y->coeff[0][0] = 0;
    287286    for (int i = 1; i <= fpa->toTPA->y->nX; i++) {
    288         if (!fpa->toTPA->y->mask[i][0]) {
    289             fpa->toTPA->y->coeff[i][0] = localX->coeff[i-1][0] / i;
    290         }
     287        if (fpa->toTPA->y->coeffMask[i][0] & PS_POLY_MASK_SET) {
     288            continue;
     289        }
     290        fpa->toTPA->y->coeff[i][0] = localX->coeff[i-1][0] / i;
    291291    }
    292292    for (int j = 1; j <= fpa->toTPA->y->nY; j++) {
    293         if (!fpa->toTPA->y->mask[0][j]) {
    294             fpa->toTPA->y->coeff[0][j] = localY->coeff[0][j-1] / j;
    295         }
     293        if (fpa->toTPA->y->coeffMask[0][j] & PS_POLY_MASK_SET) {
     294            continue;
     295        }
     296        fpa->toTPA->y->coeff[0][j] = localY->coeff[0][j-1] / j;
    296297    }
    297298    for (int i = 1; i <= fpa->toTPA->y->nX; i++) {
    298299        for (int j = 1; j <= fpa->toTPA->y->nY; j++) {
    299             if (!fpa->toTPA->y->mask[i][j]) {
    300                 fpa->toTPA->y->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
     300            if (fpa->toTPA->y->coeffMask[i][j] & PS_POLY_MASK_SET) {
     301                continue;
    301302            }
     303            fpa->toTPA->y->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
    302304        }
    303305    }
  • trunk/psModules/src/astrom/pmAstrometryUtils.c

    r12696 r15254  
    77 *  @author EAM, IfA
    88 *
    9  *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2007-03-30 21:12:56 $
     9 *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2007-10-09 19:27:04 $
    1111 *
    1212 *  Copyright 2006 Institute for Astronomy, University of Hawaii
     
    105105        psPolynomial2D *yPy = psPolynomial2DCopy (NULL, yPx);
    106106        for (int j = 0; j <= input->x->nY; j++) {
    107             output->x->mask[i][j] = input->x->mask[i][j];
    108             output->y->mask[i][j] = input->y->mask[i][j];
    109             output->x->coeff[i][j] = (output->x->mask[i][j]) ? 0 : psPolynomial2DEval (xPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
    110             output->y->coeff[i][j] = (output->y->mask[i][j]) ? 0 : psPolynomial2DEval (yPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
     107            output->x->coeffMask[i][j] = input->x->coeffMask[i][j];
     108            output->y->coeffMask[i][j] = input->y->coeffMask[i][j];
     109            output->x->coeff[i][j] = (output->x->coeffMask[i][j] & PS_POLY_MASK_SET) ? 0 : psPolynomial2DEval (xPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
     110            output->y->coeff[i][j] = (output->y->coeffMask[i][j] & PS_POLY_MASK_SET) ? 0 : psPolynomial2DEval (yPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
    111111
    112112            // take the next derivative wrt y, catch output (is NULL on last pass)
     
    146146        for (int j = 0; j <= order; j++) {
    147147            if (i + j > order) {
    148                 transform->x->mask [i][j] = 1;
    149                 transform->y->mask [i][j] = 1;
     148                transform->x->coeffMask [i][j] = PS_POLY_MASK_SET;
     149                transform->y->coeffMask [i][j] = PS_POLY_MASK_SET;
    150150            }
    151151        }
     
    153153    transform->x->coeff[1][0] = 1;
    154154    transform->y->coeff[0][1] = 1;
    155     transform->x->mask[1][0] = 0;
    156     transform->y->mask[0][1] = 0;
     155    transform->x->coeffMask[1][0] = PS_POLY_MASK_NONE;
     156    transform->y->coeffMask[0][1] = PS_POLY_MASK_NONE;
    157157
    158158    return transform;
     
    197197            if (i + j > order) {
    198198                // high-order cross terms must be masked (eg, x^3 y^2)
    199                 status &= transform->x->mask[i][j];
     199                status &= (transform->x->coeffMask[i][j] & PS_POLY_MASK_SET);
    200200            } else {
    201                 status &= !transform->x->mask[i][j];
     201                status &= !(transform->x->coeffMask[i][j] & PS_POLY_MASK_SET);
    202202                if ((i == 1) && (i + j == 1)) {
    203203                    // linear, diagonal terms must be non-zero
     
    216216            if (i + j > order) {
    217217                // high-order cross terms must be masked (eg, x^3 y^2)
    218                 status &= transform->y->mask[i][j];
     218                status &= (transform->y->coeffMask[i][j] & PS_POLY_MASK_SET);
    219219            } else {
    220                 status &= !transform->y->mask[i][j];
     220                status &= !(transform->y->coeffMask[i][j] & PS_POLY_MASK_SET);
    221221                if ((j == 1) && (i + j == 1)) {
    222222                    // linear, diagonal terms must be 1.0
     
    249249        for (int j = 0; j <= order; j++) {
    250250            if (i + j > order) {
    251                 distort->x->mask [i][j][0][0] = 1;
    252                 distort->y->mask [i][j][0][0] = 1;
     251                distort->x->coeffMask [i][j][0][0] = PS_POLY_MASK_SET;
     252                distort->y->coeffMask [i][j][0][0] = PS_POLY_MASK_SET;
    253253            }
    254254        }
     
    306306            if (i + j > order) {
    307307                // high-order cross terms must be masked (eg, x^3 y^2)
    308                 status &= distort->x->mask[i][j][0][0];
     308                status &= (distort->x->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
    309309            } else {
    310                 status &= !distort->x->mask[i][j][0][0];
     310                status &= !(distort->x->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
    311311                if ((i == 1) && (i + j == 1)) {
    312312                    // linear, diagonal terms must be 1.0
     
    325325            if (i + j > order) {
    326326                // high-order cross terms must be masked (eg, x^3 y^2)
    327                 status &= distort->y->mask[i][j][0][0];
     327                status &= (distort->y->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
    328328            } else {
    329                 status &= !distort->y->mask[i][j][0][0];
     329                status &= !(distort->y->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
    330330                if ((j == 1) && (i + j == 1)) {
    331331                    // linear, diagonal terms must be 1.0
  • trunk/psModules/src/astrom/pmAstrometryWCS.c

    r12838 r15254  
    77 *  @author EAM, IfA
    88 *
    9  *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2007-04-17 19:39:04 $
     9 *  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2007-10-09 19:27:04 $
    1111 *
    1212 *  Copyright 2006 Institute for Astronomy, University of Hawaii
     
    298298                        continue;
    299299                    if (i + j > fitOrder) {
    300                         wcs->trans->x->mask[i][j] = 1;
    301                         wcs->trans->y->mask[i][j] = 1;
     300                        wcs->trans->x->coeffMask[i][j] = PS_POLY_MASK_SET;
     301                        wcs->trans->y->coeffMask[i][j] = PS_POLY_MASK_SET;
    302302                        continue;
    303303                    }
  • trunk/psModules/src/detrend/pmShutterCorrection.c

    r14935 r15254  
    230230
    231231    // mask out the terms we will not fit
    232     line->mask[0][0] = 1;
    233     line->mask[1][1] = 1;
     232    line->coeffMask[0][0] = PS_POLY_MASK_SET;
     233    line->coeffMask[1][1] = PS_POLY_MASK_SET;
    234234    line->coeff[0][0] = 0;
    235235    line->coeff[1][1] = 0;
  • trunk/psModules/src/objects/pmPSF_IO.c

    r15230 r15254  
    66 *  @author EAM, IfA
    77 *
    8  *  @version $Revision: 1.26 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2007-10-06 01:02:49 $
     8 *  @version $Revision: 1.27 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2007-10-09 19:26:25 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    358358                        psMetadataAddF32 (row, PS_LIST_TAIL, "VALUE",      0, "", poly->coeff[ix][iy]);
    359359                        psMetadataAddF32 (row, PS_LIST_TAIL, "ERROR",      0, "", poly->coeffErr[ix][iy]);
    360                         psMetadataAddU8  (row, PS_LIST_TAIL, "MASK",       0, "", poly->mask[ix][iy]);
     360                        psMetadataAddU8  (row, PS_LIST_TAIL, "MASK",       0, "", poly->coeffMask[ix][iy]);
    361361
    362362                        psArrayAdd (psfTable, 100, row);
     
    710710            assert (xPow <= poly->nX);
    711711            assert (yPow <= poly->nY);
    712             poly->coeff[xPow][yPow]    = psMetadataLookupF32 (&status, row, "VALUE");
    713             poly->coeffErr[xPow][yPow] = psMetadataLookupF32 (&status, row, "ERROR");
    714             poly->mask[xPow][yPow]    = psMetadataLookupU8  (&status, row, "MASK");
     712            poly->coeff[xPow][yPow]     = psMetadataLookupF32 (&status, row, "VALUE");
     713            poly->coeffErr[xPow][yPow]  = psMetadataLookupF32 (&status, row, "ERROR");
     714            poly->coeffMask[xPow][yPow] = psMetadataLookupU8  (&status, row, "MASK");
    715715        }
    716716    }
  • trunk/psModules/src/objects/pmPSFtry.c

    r15016 r15254  
    55 *  @author EAM, IfA
    66 *
    7  *  @version $Revision: 1.48 $ $Name: not supported by cvs2svn $
    8  *  @date $Date: 2007-09-25 22:05:05 $
     7 *  @version $Revision: 1.49 $ $Name: not supported by cvs2svn $
     8 *  @date $Date: 2007-10-09 19:26:25 $
    99 *
    1010 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    280280    // linear clipped fit of ApResid to r2rflux
    281281    psPolynomial1D *poly = psPolynomial1DAlloc (PS_POLYNOMIAL_ORD, 1);
    282     poly->mask[1] = 1; // fit only a constant offset (no SKYBIAS)
     282    poly->coeffMask[1] = PS_POLY_MASK_SET; // fit only a constant offset (no SKYBIAS)
    283283
    284284    // XXX replace this with a psVectorStats call?  since we are not fitting the trend
  • trunk/psModules/src/objects/pmTrend2D.c

    r15000 r15254  
    33 *  @author EAM, IfA
    44 *
    5  *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2007-09-24 21:27:58 $
     5 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2007-10-09 19:26:25 $
    77 *
    88 *  Copyright 2004 Institute for Astronomy, University of Hawaii
     
    4848            for (int ny = 0; ny < trend->poly->nY + 1; ny++) {
    4949                if (nx + ny >= PS_MAX (trend->poly->nX, trend->poly->nY) + 1) {
    50                     trend->poly->mask[nx][ny] = 1;
     50                    trend->poly->coeffMask[nx][ny] = PS_POLY_MASK_SET;
    5151                } else {
    52                     trend->poly->mask[nx][ny] = 0;
     52                    trend->poly->coeffMask[nx][ny] = PS_POLY_MASK_NONE;
    5353                }
    5454            }
     
    9696            for (int ny = 0; ny < trend->poly->nY + 1; ny++) {
    9797                if (nx + ny >= PS_MAX (trend->poly->nX, trend->poly->nY) + 1) {
    98                     trend->poly->mask[nx][ny] = 1;
     98                    trend->poly->coeffMask[nx][ny] = PS_POLY_MASK_SET;
    9999                } else {
    100                     trend->poly->mask[nx][ny] = 0;
     100                    trend->poly->coeffMask[nx][ny] = PS_POLY_MASK_NONE;
    101101                }
    102102            }
     
    137137            for (int ny = 0; ny < trend->poly->nY + 1; ny++) {
    138138                if (nx + ny >= PS_MAX (trend->poly->nX, trend->poly->nY) + 1) {
    139                     trend->poly->mask[nx][ny] = 1;
     139                    trend->poly->coeffMask[nx][ny] = PS_POLY_MASK_SET;
    140140                } else {
    141                     trend->poly->mask[nx][ny] = 0;
     141                    trend->poly->coeffMask[nx][ny] = PS_POLY_MASK_NONE;
    142142                }
    143143            }
Note: See TracChangeset for help on using the changeset viewer.