629 def calculateDcr(visitInfo, wcs, filterInfo, dcrNumSubfilters, splitSubfilters=False):
630 """Calculate the shift in pixels of an exposure due to DCR. 634 visitInfo : `lsst.afw.image.VisitInfo` 635 Metadata for the exposure. 636 wcs : `lsst.afw.geom.SkyWcs` 637 Coordinate system definition (wcs) for the exposure. 638 filterInfo : `lsst.afw.image.Filter` 639 The filter definition, set in the current instruments' obs package. 640 dcrNumSubfilters : `int` 641 Number of sub-filters used to model chromatic effects within a band. 642 splitSubfilters : `bool`, optional 643 Calculate DCR for two evenly-spaced wavelengths in each subfilter, 644 instead of at the midpoint. Default: False 648 dcrShift : `tuple` of two `float` 649 The 2D shift due to DCR, in pixels. 650 Uses numpy axes ordering (Y, X). 654 weight = [0.75, 0.25]
655 lambdaEff = filterInfo.getFilterProperty().getLambdaEff()
659 elevation=visitInfo.getBoresightAzAlt().getLatitude(),
660 observatory=visitInfo.getObservatory(),
661 weather=visitInfo.getWeather())
663 elevation=visitInfo.getBoresightAzAlt().getLatitude(),
664 observatory=visitInfo.getObservatory(),
665 weather=visitInfo.getWeather())
667 diffRefractPix0 = diffRefractAmp0.asArcseconds()/wcs.getPixelScale().asArcseconds()
668 diffRefractPix1 = diffRefractAmp1.asArcseconds()/wcs.getPixelScale().asArcseconds()
669 diffRefractArr = [diffRefractPix0*weight[0] + diffRefractPix1*weight[1],
670 diffRefractPix0*weight[1] + diffRefractPix1*weight[0]]
671 shiftX = [diffRefractPix*np.sin(rotation.asRadians())
for diffRefractPix
in diffRefractArr]
672 shiftY = [diffRefractPix*np.cos(rotation.asRadians())
for diffRefractPix
in diffRefractArr]
673 dcrShift.append(((shiftY[0], shiftX[0]), (shiftY[1], shiftX[1])))
675 diffRefractAmp = (diffRefractAmp0 + diffRefractAmp1)/2.
676 diffRefractPix = diffRefractAmp.asArcseconds()/wcs.getPixelScale().asArcseconds()
677 shiftX = diffRefractPix*np.sin(rotation.asRadians())
678 shiftY = diffRefractPix*np.cos(rotation.asRadians())
679 dcrShift.append((shiftY, shiftX))
def calculateImageParallacticAngle(visitInfo, wcs)
def wavelengthGenerator(filterInfo, dcrNumSubfilters)
def differentialRefraction(wavelength, wavelengthRef, elevation, observatory, weather=None)
def calculateDcr(visitInfo, wcs, filterInfo, dcrNumSubfilters, splitSubfilters=False)