95 casu_fits **skyout,
int *status) {
96 int i,njit,nx,ny,ji,ns;
97 unsigned char *inbpm,*rejmask,*rejplus;
100 cpl_propertylist *drs;
102 casu_fits **xsky_fits;
103 const char *fctid =
"vircam_tilesky";
108 if (*status != CASU_OK)
114 cpl_msg_error(fctid,
"Sky correction impossible. No science frames");
124 cplmask = cpl_mask_wrap((cpl_size)nx,(cpl_size)ny,(cpl_binary *)inbpm);
125 for (i = 0; i < nfiles; i++)
127 cpl_mask_unwrap(cplmask);
135 xskys = cpl_malloc(njit*
sizeof(xsky_struct));
136 for (i = 0; i < njit; i++) {
138 xskys[i].in = cpl_malloc(8*
sizeof(casu_fits *));
140 xskys[i].xsky = NULL;
141 xskys[i].status = CASU_OK;
143 xsky_fits = cpl_malloc(njit*
sizeof(casu_fits *));
151 for (i = 0; i < nfiles; i++) {
154 if (xskys[ji].n == xskys[ji].nalloc) {
155 xskys[ji].in = cpl_realloc(xskys[ji].in,
156 (xskys[ji].nalloc+8)*
sizeof(casu_fits *));
157 xskys[ji].nalloc += 8;
159 xskys[ji].in[xskys[ji].n] = inlist[i];
167 for (i = 0; i < njit; i++) {
169 if (xskys[i].n == 0) {
170 xskys[i].xsky = NULL;
172 }
else if (xskys[i].n == 1) {
173 xskys[i].xsky = NULL;
174 xsky_fits[ns++] = xskys[i].in[0];
179 "EXPTIME",&outim,NULL,&rejmask,
180 &rejplus,&drs,status);
183 freepropertylist(drs);
184 if (*status == CASU_OK) {
186 xsky_fits[ns++] = xskys[i].xsky;
196 (void)
casu_imcombine(xsky_fits,NULL,ns,1,1,0,1.0,
"EXPTIME",&outim,
197 NULL,&rejmask,&rejplus,&drs,status);
200 freepropertylist(drs);
201 if (*status == CASU_OK) {
214 freespace(xsky_fits);
215 for (i = 0; i < njit; i++) {
216 freespace(xskys[i].in);
217 freefits(xskys[i].xsky);
int casu_imcombine(casu_fits **fset, casu_fits **fsetv, int nfits, int combtype, int scaletype, int xrej, float thresh, const char *expkey, cpl_image **outimage, cpl_image **outvimage, unsigned char **rejmask, unsigned char **rejplus, cpl_propertylist **drs, int *status)
Stack images into a mean or median image with rejection.
int vircam_tilesky(casu_fits **inlist, int nfiles, casu_mask *mask, casu_fits **skyout, int *status)
Work sky estimate from an input tile series.