IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 16, 2020, 1:39:13 PM (6 years ago)
Author:
tdeboer
Message:

revert to working Ohana build

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psastro/src/psastroMaskUpdates.c

    r40490 r41338  
    134134   
    135135    double REFSTAR_MASK_MAX_MAG            = psMetadataLookupF32 (&status, recipe, "REFSTAR_MASK_MAX_MAG");
    136     double REFSTAR_MASK_SATSTAR_MAG_SLOPE  = psMetadataLookupF32 (&status, recipe, "REFSTAR_MASK_SATSTAR_MAG_SLOPE");
    137136    double REFSTAR_MASK_SATSTAR_MAG_MAX    = psMetadataLookupF32 (&status, recipe, "REFSTAR_MASK_SATSTAR_MAG_MAX");
     137    double REFSTAR_MASK_SATSTAR_RAD_OFFSET = psMetadataLookupF32 (&status, recipe, "REFSTAR_MASK_SATSTAR_RAD_OFFSET");
     138    double REFSTAR_MASK_SATSTAR_EXP        = psMetadataLookupF32 (&status, recipe, "REFSTAR_MASK_SATSTAR_EXP");
    138139    double REFSTAR_MASK_SATSTAR_POS_ZERO   = psMetadataLookupF32 (&status, recipe, "REFSTAR_MASK_SATSTAR_POS_ZERO");
    139140    double REFSTAR_MASK_SATSPIKE_MAG_SLOPE = psMetadataLookupF32 (&status, recipe, "REFSTAR_MASK_SATSPIKE_MAG_SLOPE");
     
    232233    double ROTANGLE = PM_RAD_DEG * psMetadataLookupF64 (&status, fpa->concepts, "FPA.ROTANGLE");
    233234    psAssert (status, "ROTANGLE missing");
     235    int ROT_PARITY = psMetadataLookupS32(&status, recipe, "PSASTRO.MODEL.ROT.PARITY");
     236    if (!status) psAbort ("Can't find recipe option PSASTRO.MODEL.ROT.PARITY");
     237
     238    //select the astromeric rotation angle from the header
     239    psMetadata *header = psMetadataLookupMetadata (&status, fpa->analysis, "PSASTRO.HEADER");
     240    if (!header) {
     241        psError(PSASTRO_ERR_CONFIG, true, "Can't find PSASTRO header");
     242        return false;
     243    }
     244    float AST_T0 = PM_RAD_DEG * psMetadataLookupF32(&status, header, "AST_T0");
    234245
    235246    // de-activate all files except PSASTRO.INPUT.MASK and PSASTRO.OUTPUT.MASK
     
    327338
    328339                    // CIRCLE around the stars (scaled by magnitude)
    329                     float radius = REFSTAR_MASK_SATSTAR_MAG_SLOPE * (REFSTAR_MASK_SATSTAR_MAG_MAX - ref->Mag);
     340                    float radius = REFSTAR_MASK_SATSTAR_RAD_OFFSET + pow(REFSTAR_MASK_SATSTAR_EXP,(REFSTAR_MASK_SATSTAR_MAG_MAX - ref->Mag));
    330341
    331342                    // XXX for now, assume cell binning is 1x1 relative to chip
     
    333344
    334345                    for (float theta = 0.0; theta < 2*M_PI; theta += M_PI / 2.0) {
    335 
    336                         float Theta = theta - ROTANGLE - REFSTAR_MASK_SATSTAR_POS_ZERO;
     346                        float Theta = theta - (ROT_PARITY * ROTANGLE) - AST_T0 - REFSTAR_MASK_SATSTAR_POS_ZERO;
    337347
    338348                        // LINE for boundaries of the saturation spikes (scaled by magnitude)
    339                         // float MAG_MAX = (theta == 0.0) || (theta == M_PI) ? REFSTAR_MASK_SATSPIKE_MAG_MAX1 : REFSTAR_MASK_SATSPIKE_MAG_MAX2;
     349                        //float MAG_MAX = (theta == 0.0) || (theta == M_PI) ? REFSTAR_MASK_SATSPIKE_MAG_MAX1 : REFSTAR_MASK_SATSPIKE_MAG_MAX2;
    340350
    341351                        float MAG_MAX = REFSTAR_MASK_SATSPIKE_MAG_MAX;
     
    400410                        }
    401411                    }
     412
    402413                }
    403414
     
    412423                    for (int i = 0; i < ghosts->n; i++) {
    413424                        psastroGhost *ghost = ghosts->data[i];
     425                        //offset the ghost angles with the astrometric rotation angle
     426                        ghost->inner.theta -= (ROT_PARITY * ROTANGLE)
     427                        ghost->outer.theta -= (ROT_PARITY * ROTANGLE)
    414428                        // XXX bright vs faint ghost bits? (OR with SUSPECT)
    415429                        psastroMaskEllipticalAnnulus (readoutMask->mask, ghostMaskValue, ghost->chip->x, ghost->chip->y, ghost->inner, ghost->outer);
     
    418432
    419433                // Select the glint mask regions for this readout (loaded in
    420                 // psastroExtractGlints.c).  These glint regions are defined as rectangular
     434                // psastroChooseGlintStars.c).  These glint regions are defined as rectangular
    421435                // boxes and are generated for each chip based on the position of the bright
    422436                // stars beyond the edge of the focal plane.  This masking is currently very
     
    426440                    // mask the glints on this readout
    427441                    for (int i = 0; i < glints->n; i++) {
    428                         psRegion *glint = glints->data[i];
    429                         psastroMaskRectangle (readoutMask->mask, glintMaskValue, glint->x0, glint->y0, glint->x1, glint->y1);
     442                        psVector *glint = glints->data[i];
     443                        //psLogMsg ("psastro", 3, "glint: %f %f %f %f\n", glint->x0, glint->y0, glint->x1, glint->y1);
     444                        //psastroMaskRectangle (readoutMask->mask, glintMaskValue, glint->x0, glint->y0, glint->x1, glint->y1);
     445
     446                        psastroMaskBox (readoutMask->mask, glintMaskValue, glint->data.F32[0], glint->data.F32[1],
     447                                    glint->data.F32[2], glint->data.F32[3], glint->data.F32[4]);
     448
    430449                    }
    431450                }
Note: See TracChangeset for help on using the changeset viewer.