Changeset 2462
- Timestamp:
- 04/12/12 15:17:35 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/Scantable.cpp
r2437 r2462 70 70 #include "STUpgrade.h" 71 71 #include "Scantable.h" 72 73 #define debug 1 72 74 73 75 using namespace casa; … … 1918 1920 ***/ 1919 1921 //refval = refval - ( refpix + 0.5 * (1 - factor) ) * increment ; 1920 refpix = (refpix + 0.5)/factor - 0.5; 1922 if (factor >= 0 ) { 1923 refpix = (refpix + 0.5)/factor - 0.5; 1924 } else { 1925 refpix = (abcissa.size() + 0.5 - refpix)/abs(factor) - 0.5; 1926 } 1921 1927 freqTable_.setEntry( refpix, refval, increment*factor, currId ) ; 1922 1928 os << "ID" << currId << ": channel width (Orig) = " << oldincr << " [" << freqTable_.getUnitString() << "], scale factor = " << factor << LogIO::POST ; … … 1987 1993 int oldsize = abcissa.size() ; 1988 1994 double olddnu = abcissa[1] - abcissa[0] ; 1989 int ichan = 0 ;1995 //int ichan = 0 ; 1990 1996 double wsum = 0.0 ; 1991 1997 Vector<double> zi( nChan+1 ) ; 1992 1998 Vector<double> yi( oldsize + 1 ) ; 1993 zi[0] = abcissa[0] - 0.5 * olddnu ;1994 for ( int ii = 1 ; ii < nChan ; ii++ )1995 zi[ii] = zi[0] + dnu * ii ;1996 zi[nChan] = zi[nChan-1] + dnu ;1997 1999 yi[0] = abcissa[0] - 0.5 * olddnu ; 1998 2000 for ( int ii = 1 ; ii < oldsize ; ii++ ) … … 2000 2002 yi[oldsize] = abcissa[oldsize-1] \ 2001 2003 + 0.5 * (abcissa[oldsize-1] - abcissa[oldsize-2]) ; 2002 if ( dnu > 0.0 ) { 2003 for ( int ii = 0 ; ii < nChan ; ii++ ) { 2004 double zl = zi[ii] ; 2005 double zr = zi[ii+1] ; 2006 for ( int j = ichan ; j < oldsize ; j++ ) { 2007 double yl = yi[j] ; 2008 double yr = yi[j+1] ; 2009 if ( yl <= zl ) { 2010 if ( yr <= zl ) { 2011 continue ; 2012 } 2013 else if ( yr <= zr ) { 2014 if (!oldflag[j]) { 2015 newspec[ii] += oldspec[j] * ( yr - zl ) ; 2016 if (regridTsys) newtsys[ii] += oldtsys[j] * ( yr - zl ) ; 2017 wsum += ( yr - zl ) ; 2018 } 2019 newflag[ii] = newflag[ii] && oldflag[j] ; 2020 } 2021 else { 2022 if (!oldflag[j]) { 2023 newspec[ii] += oldspec[j] * dnu ; 2024 if (regridTsys) newtsys[ii] += oldtsys[j] * dnu ; 2025 wsum += dnu ; 2026 } 2027 newflag[ii] = newflag[ii] && oldflag[j] ; 2028 ichan = j ; 2029 break ; 2030 } 2031 } 2032 else if ( yl < zr ) { 2033 if ( yr <= zr ) { 2034 if (!oldflag[j]) { 2035 newspec[ii] += oldspec[j] * ( yr - yl ) ; 2036 if (regridTsys) newtsys[ii] += oldtsys[j] * ( yr - yl ) ; 2037 wsum += ( yr - yl ) ; 2038 } 2039 newflag[ii] = newflag[ii] && oldflag[j] ; 2040 } 2041 else { 2042 if (!oldflag[j]) { 2043 newspec[ii] += oldspec[j] * ( zr - yl ) ; 2044 if (regridTsys) newtsys[ii] += oldtsys[j] * ( zr - yl ) ; 2045 wsum += ( zr - yl ) ; 2046 } 2047 newflag[ii] = newflag[ii] && oldflag[j] ; 2048 ichan = j ; 2049 break ; 2050 } 2051 } 2052 else { 2053 ichan = j - 1 ; 2054 break ; 2055 } 2056 } 2057 if ( wsum != 0.0 ) { 2058 newspec[ii] /= wsum ; 2059 if (regridTsys) newtsys[ii] /= wsum ; 2060 } 2061 wsum = 0.0 ; 2062 } 2063 } 2064 else if ( dnu < 0.0 ) { 2065 for ( int ii = 0 ; ii < nChan ; ii++ ) { 2066 double zl = zi[ii] ; 2067 double zr = zi[ii+1] ; 2068 for ( int j = ichan ; j < oldsize ; j++ ) { 2069 double yl = yi[j] ; 2070 double yr = yi[j+1] ; 2071 if ( yl >= zl ) { 2072 if ( yr >= zl ) { 2073 continue ; 2074 } 2075 else if ( yr >= zr ) { 2076 if (!oldflag[j]) { 2077 newspec[ii] += oldspec[j] * abs( yr - zl ) ; 2078 if (regridTsys) newtsys[ii] += oldtsys[j] * abs( yr - zl ) ; 2079 wsum += abs( yr - zl ) ; 2080 } 2081 newflag[ii] = newflag[ii] && oldflag[j] ; 2082 } 2083 else { 2084 if (!oldflag[j]) { 2085 newspec[ii] += oldspec[j] * abs( dnu ) ; 2086 if (regridTsys) newtsys[ii] += oldtsys[j] * abs( dnu ) ; 2087 wsum += abs( dnu ) ; 2088 } 2089 newflag[ii] = newflag[ii] && oldflag[j] ; 2090 ichan = j ; 2091 break ; 2092 } 2093 } 2094 else if ( yl > zr ) { 2095 if ( yr >= zr ) { 2096 if (!oldflag[j]) { 2097 newspec[ii] += oldspec[j] * abs( yr - yl ) ; 2098 if (regridTsys) newtsys[ii] += oldtsys[j] * abs( yr - yl ) ; 2099 wsum += abs( yr - yl ) ; 2100 } 2101 newflag[ii] = newflag[ii] && oldflag[j] ; 2102 } 2103 else { 2104 if (!oldflag[j]) { 2105 newspec[ii] += oldspec[j] * abs( zr - yl ) ; 2106 if (regridTsys) newtsys[ii] += oldtsys[j] * abs( zr - yl ) ; 2107 wsum += abs( zr - yl ) ; 2108 } 2109 newflag[ii] = newflag[ii] && oldflag[j] ; 2110 ichan = j ; 2111 break ; 2112 } 2113 } 2114 else { 2115 ichan = j - 1 ; 2116 break ; 2117 } 2118 } 2119 if ( wsum != 0.0 ) { 2120 newspec[ii] /= wsum ; 2121 if (regridTsys) newtsys[ii] /= wsum ; 2122 } 2123 wsum = 0.0 ; 2124 } 2125 } 2126 // //ofs << "olddnu = " << olddnu << ", dnu = " << dnu << endl ; 2127 // pile += dnu ; 2128 // wedge = olddnu * ( refChan + 1 ) ; 2129 // while ( wedge < pile ) { 2130 // newspec[0] += olddnu * oldspec[refChan] ; 2131 // newflag[0] = newflag[0] || oldflag[refChan] ; 2132 // //ofs << "channel " << refChan << " is included in new channel 0" << endl ; 2133 // refChan++ ; 2134 // wedge += olddnu ; 2135 // wsum += olddnu ; 2136 // //ofs << "newspec[0] = " << newspec[0] << " wsum = " << wsum << endl ; 2004 //zi[0] = abcissa[0] - 0.5 * olddnu ; 2005 zi[0] = ((olddnu*dnu > 0) ? yi[0] : yi[oldsize]) ; 2006 for ( int ii = 1 ; ii < nChan ; ii++ ) 2007 zi[ii] = zi[0] + dnu * ii ; 2008 zi[nChan] = zi[nChan-1] + dnu ; 2009 // Access zi and yi in ascending order 2010 int izs = ((dnu > 0) ? 0 : nChan ) ; 2011 int ize = ((dnu > 0) ? nChan : 0 ) ; 2012 int izincr = ((dnu > 0) ? 1 : -1 ) ; 2013 int ichan = ((olddnu > 0) ? 0 : oldsize ) ; 2014 int iye = ((olddnu > 0) ? oldsize : 0 ) ; 2015 int iyincr = ((olddnu > 0) ? 1 : -1 ) ; 2016 //for ( int ii = izs ; ii != ize ; ii+=izincr ){ 2017 int ii = izs ; 2018 while (ii != ize) { 2019 // always zl < zr 2020 double zl = zi[ii] ; 2021 double zr = zi[ii+izincr] ; 2022 // Need to access smaller index for the new spec, flag, and tsys. 2023 // Values between zi[k] and zi[k+1] should be stored in newspec[k], etc. 2024 int i = min(ii, ii+izincr) ; 2025 //for ( int jj = ichan ; jj != iye ; jj+=iyincr ) { 2026 int jj = ichan ; 2027 while (jj != iye) { 2028 // always yl < yr 2029 double yl = yi[jj] ; 2030 double yr = yi[jj+iyincr] ; 2031 // Need to access smaller index for the original spec, flag, and tsys. 2032 // Values between yi[k] and yi[k+1] are stored in oldspec[k], etc. 2033 int j = min(jj, jj+iyincr) ; 2034 if ( yr <= zl ) { 2035 jj += iyincr ; 2036 continue ; 2037 } 2038 else if ( yl <= zl ) { 2039 if ( yr < zr ) { 2040 if (!oldflag[j]) { 2041 newspec[i] += oldspec[j] * ( yr - zl ) ; 2042 if (regridTsys) newtsys[i] += oldtsys[j] * ( yr - zl ) ; 2043 wsum += ( yr - zl ) ; 2044 } 2045 newflag[i] = newflag[i] && oldflag[j] ; 2046 } 2047 else { 2048 if (!oldflag[j]) { 2049 newspec[i] += oldspec[j] * abs(dnu) ; 2050 if (regridTsys) newtsys[i] += oldtsys[j] * abs(dnu) ; 2051 wsum += abs(dnu) ; 2052 } 2053 newflag[i] = newflag[i] && oldflag[j] ; 2054 ichan = jj ; 2055 break ; 2056 } 2057 } 2058 else if ( yl < zr ) { 2059 if ( yr <= zr ) { 2060 if (!oldflag[j]) { 2061 newspec[i] += oldspec[j] * ( yr - yl ) ; 2062 if (regridTsys) newtsys[i] += oldtsys[j] * ( yr - yl ) ; 2063 wsum += ( yr - yl ) ; 2064 } 2065 newflag[i] = newflag[i] && oldflag[j] ; 2066 } 2067 else { 2068 if (!oldflag[j]) { 2069 newspec[i] += oldspec[j] * ( zr - yl ) ; 2070 if (regridTsys) newtsys[i] += oldtsys[j] * ( zr - yl ) ; 2071 wsum += ( zr - yl ) ; 2072 } 2073 newflag[i] = newflag[i] && oldflag[j] ; 2074 ichan = jj ; 2075 break ; 2076 } 2077 } 2078 else { 2079 ichan = jj - iyincr ; 2080 break ; 2081 } 2082 jj += iyincr ; 2083 } 2084 if ( wsum != 0.0 ) { 2085 newspec[i] /= wsum ; 2086 if (regridTsys) newtsys[i] /= wsum ; 2087 } 2088 wsum = 0.0 ; 2089 ii += izincr ; 2090 } 2091 // if ( dnu > 0.0 ) { 2092 // for ( int ii = 0 ; ii < nChan ; ii++ ) { 2093 // double zl = zi[ii] ; 2094 // double zr = zi[ii+1] ; 2095 // for ( int j = ichan ; j < oldsize ; j++ ) { 2096 // double yl = yi[j] ; 2097 // double yr = yi[j+1] ; 2098 // if ( yl <= zl ) { 2099 // if ( yr <= zl ) { 2100 // continue ; 2101 // } 2102 // else if ( yr <= zr ) { 2103 // if (!oldflag[j]) { 2104 // newspec[ii] += oldspec[j] * ( yr - zl ) ; 2105 // if (regridTsys) newtsys[ii] += oldtsys[j] * ( yr - zl ) ; 2106 // wsum += ( yr - zl ) ; 2107 // } 2108 // newflag[ii] = newflag[ii] && oldflag[j] ; 2109 // } 2110 // else { 2111 // if (!oldflag[j]) { 2112 // newspec[ii] += oldspec[j] * dnu ; 2113 // if (regridTsys) newtsys[ii] += oldtsys[j] * dnu ; 2114 // wsum += dnu ; 2115 // } 2116 // newflag[ii] = newflag[ii] && oldflag[j] ; 2117 // ichan = j ; 2118 // break ; 2119 // } 2120 // } 2121 // else if ( yl < zr ) { 2122 // if ( yr <= zr ) { 2123 // if (!oldflag[j]) { 2124 // newspec[ii] += oldspec[j] * ( yr - yl ) ; 2125 // if (regridTsys) newtsys[ii] += oldtsys[j] * ( yr - yl ) ; 2126 // wsum += ( yr - yl ) ; 2127 // } 2128 // newflag[ii] = newflag[ii] && oldflag[j] ; 2129 // } 2130 // else { 2131 // if (!oldflag[j]) { 2132 // newspec[ii] += oldspec[j] * ( zr - yl ) ; 2133 // if (regridTsys) newtsys[ii] += oldtsys[j] * ( zr - yl ) ; 2134 // wsum += ( zr - yl ) ; 2135 // } 2136 // newflag[ii] = newflag[ii] && oldflag[j] ; 2137 // ichan = j ; 2138 // break ; 2139 // } 2140 // } 2141 // else { 2142 // ichan = j - 1 ; 2143 // break ; 2144 // } 2145 // } 2146 // if ( wsum != 0.0 ) { 2147 // newspec[ii] /= wsum ; 2148 // if (regridTsys) newtsys[ii] /= wsum ; 2149 // } 2150 // wsum = 0.0 ; 2151 // } 2137 2152 // } 2138 // frac = ( wedge - pile ) / olddnu ; 2139 // wsum += ( 1.0 - frac ) * olddnu ; 2140 // newspec[0] += ( 1.0 - frac ) * olddnu * oldspec[refChan] ; 2141 // newflag[0] = newflag[0] || oldflag[refChan] ; 2142 // //ofs << "channel " << refChan << " is partly included in new channel 0" << " with fraction of " << ( 1.0 - frac ) << endl ; 2143 // //ofs << "newspec[0] = " << newspec[0] << " wsum = " << wsum << endl ; 2144 // newspec[0] /= wsum ; 2145 // //ofs << "newspec[0] = " << newspec[0] << endl ; 2146 // //ofs << "wedge = " << wedge << ", pile = " << pile << endl ; 2147 2148 // /*** 2149 // * ichan = 1 - nChan-2 2150 // ***/ 2151 // for ( int ichan = 1 ; ichan < nChan - 1 ; ichan++ ) { 2152 // pile += dnu ; 2153 // newspec[ichan] += frac * olddnu * oldspec[refChan] ; 2154 // newflag[ichan] = newflag[ichan] || oldflag[refChan] ; 2155 // //ofs << "channel " << refChan << " is partly included in new channel " << ichan << " with fraction of " << frac << endl ; 2156 // refChan++ ; 2157 // wedge += olddnu ; 2158 // wsum = frac * olddnu ; 2159 // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << " wsum = " << wsum << endl ; 2160 // while ( wedge < pile ) { 2161 // newspec[ichan] += olddnu * oldspec[refChan] ; 2162 // newflag[ichan] = newflag[ichan] || oldflag[refChan] ; 2163 // //ofs << "channel " << refChan << " is included in new channel " << ichan << endl ; 2164 // refChan++ ; 2165 // wedge += olddnu ; 2166 // wsum += olddnu ; 2167 // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << " wsum = " << wsum << endl ; 2153 // else if ( dnu < 0.0 ) { 2154 // for ( int ii = 0 ; ii < nChan ; ii++ ) { 2155 // double zl = zi[ii] ; 2156 // double zr = zi[ii+1] ; 2157 // for ( int j = ichan ; j < oldsize ; j++ ) { 2158 // double yl = yi[j] ; 2159 // double yr = yi[j+1] ; 2160 // if ( yl >= zl ) { 2161 // if ( yr >= zl ) { 2162 // continue ; 2163 // } 2164 // else if ( yr >= zr ) { 2165 // if (!oldflag[j]) { 2166 // newspec[ii] += oldspec[j] * abs( yr - zl ) ; 2167 // if (regridTsys) newtsys[ii] += oldtsys[j] * abs( yr - zl ) ; 2168 // wsum += abs( yr - zl ) ; 2169 // } 2170 // newflag[ii] = newflag[ii] && oldflag[j] ; 2171 // } 2172 // else { 2173 // if (!oldflag[j]) { 2174 // newspec[ii] += oldspec[j] * abs( dnu ) ; 2175 // if (regridTsys) newtsys[ii] += oldtsys[j] * abs( dnu ) ; 2176 // wsum += abs( dnu ) ; 2177 // } 2178 // newflag[ii] = newflag[ii] && oldflag[j] ; 2179 // ichan = j ; 2180 // break ; 2181 // } 2182 // } 2183 // else if ( yl > zr ) { 2184 // if ( yr >= zr ) { 2185 // if (!oldflag[j]) { 2186 // newspec[ii] += oldspec[j] * abs( yr - yl ) ; 2187 // if (regridTsys) newtsys[ii] += oldtsys[j] * abs( yr - yl ) ; 2188 // wsum += abs( yr - yl ) ; 2189 // } 2190 // newflag[ii] = newflag[ii] && oldflag[j] ; 2191 // } 2192 // else { 2193 // if (!oldflag[j]) { 2194 // newspec[ii] += oldspec[j] * abs( zr - yl ) ; 2195 // if (regridTsys) newtsys[ii] += oldtsys[j] * abs( zr - yl ) ; 2196 // wsum += abs( zr - yl ) ; 2197 // } 2198 // newflag[ii] = newflag[ii] && oldflag[j] ; 2199 // ichan = j ; 2200 // break ; 2201 // } 2202 // } 2203 // else { 2204 // ichan = j - 1 ; 2205 // break ; 2206 // } 2207 // } 2208 // if ( wsum != 0.0 ) { 2209 // newspec[ii] /= wsum ; 2210 // if (regridTsys) newtsys[ii] /= wsum ; 2211 // } 2212 // wsum = 0.0 ; 2168 2213 // } 2169 // frac = ( wedge - pile ) / olddnu ;2170 // wsum += ( 1.0 - frac ) * olddnu ;2171 // newspec[ichan] += ( 1.0 - frac ) * olddnu * oldspec[refChan] ;2172 // newflag[ichan] = newflag[ichan] || oldflag[refChan] ;2173 // //ofs << "channel " << refChan << " is partly included in new channel " << ichan << " with fraction of " << ( 1.0 - frac ) << endl ;2174 // //ofs << "wedge = " << wedge << ", pile = " << pile << endl ;2175 // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << " wsum = " << wsum << endl ;2176 // newspec[ichan] /= wsum ;2177 // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << endl ;2178 2214 // } 2179 2180 // /*** 2181 // * ichan = nChan-1 2182 // ***/ 2183 // // NOTE: Assumed that all spectra have the same bandwidth 2184 // pile += dnu ; 2185 // newspec[nChan-1] += frac * olddnu * oldspec[refChan] ; 2186 // newflag[nChan-1] = newflag[nChan-1] || oldflag[refChan] ; 2187 // //ofs << "channel " << refChan << " is partly included in new channel " << nChan-1 << " with fraction of " << frac << endl ; 2188 // refChan++ ; 2189 // wedge += olddnu ; 2190 // wsum = frac * olddnu ; 2191 // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << " wsum = " << wsum << endl ; 2192 // for ( int jchan = refChan ; jchan < oldsize ; jchan++ ) { 2193 // newspec[nChan-1] += olddnu * oldspec[jchan] ; 2194 // newflag[nChan-1] = newflag[nChan-1] || oldflag[jchan] ; 2195 // wsum += olddnu ; 2196 // //ofs << "channel " << jchan << " is included in new channel " << nChan-1 << " with fraction of " << frac << endl ; 2197 // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << " wsum = " << wsum << endl ; 2198 // } 2199 // //ofs << "wedge = " << wedge << ", pile = " << pile << endl ; 2200 // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << " wsum = " << wsum << endl ; 2201 // newspec[nChan-1] /= wsum ; 2202 // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << endl ; 2203 2204 // // ofs.close() ; 2215 // // //ofs << "olddnu = " << olddnu << ", dnu = " << dnu << endl ; 2216 // // pile += dnu ; 2217 // // wedge = olddnu * ( refChan + 1 ) ; 2218 // // while ( wedge < pile ) { 2219 // // newspec[0] += olddnu * oldspec[refChan] ; 2220 // // newflag[0] = newflag[0] || oldflag[refChan] ; 2221 // // //ofs << "channel " << refChan << " is included in new channel 0" << endl ; 2222 // // refChan++ ; 2223 // // wedge += olddnu ; 2224 // // wsum += olddnu ; 2225 // // //ofs << "newspec[0] = " << newspec[0] << " wsum = " << wsum << endl ; 2226 // // } 2227 // // frac = ( wedge - pile ) / olddnu ; 2228 // // wsum += ( 1.0 - frac ) * olddnu ; 2229 // // newspec[0] += ( 1.0 - frac ) * olddnu * oldspec[refChan] ; 2230 // // newflag[0] = newflag[0] || oldflag[refChan] ; 2231 // // //ofs << "channel " << refChan << " is partly included in new channel 0" << " with fraction of " << ( 1.0 - frac ) << endl ; 2232 // // //ofs << "newspec[0] = " << newspec[0] << " wsum = " << wsum << endl ; 2233 // // newspec[0] /= wsum ; 2234 // // //ofs << "newspec[0] = " << newspec[0] << endl ; 2235 // // //ofs << "wedge = " << wedge << ", pile = " << pile << endl ; 2236 2237 // // /*** 2238 // // * ichan = 1 - nChan-2 2239 // // ***/ 2240 // // for ( int ichan = 1 ; ichan < nChan - 1 ; ichan++ ) { 2241 // // pile += dnu ; 2242 // // newspec[ichan] += frac * olddnu * oldspec[refChan] ; 2243 // // newflag[ichan] = newflag[ichan] || oldflag[refChan] ; 2244 // // //ofs << "channel " << refChan << " is partly included in new channel " << ichan << " with fraction of " << frac << endl ; 2245 // // refChan++ ; 2246 // // wedge += olddnu ; 2247 // // wsum = frac * olddnu ; 2248 // // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << " wsum = " << wsum << endl ; 2249 // // while ( wedge < pile ) { 2250 // // newspec[ichan] += olddnu * oldspec[refChan] ; 2251 // // newflag[ichan] = newflag[ichan] || oldflag[refChan] ; 2252 // // //ofs << "channel " << refChan << " is included in new channel " << ichan << endl ; 2253 // // refChan++ ; 2254 // // wedge += olddnu ; 2255 // // wsum += olddnu ; 2256 // // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << " wsum = " << wsum << endl ; 2257 // // } 2258 // // frac = ( wedge - pile ) / olddnu ; 2259 // // wsum += ( 1.0 - frac ) * olddnu ; 2260 // // newspec[ichan] += ( 1.0 - frac ) * olddnu * oldspec[refChan] ; 2261 // // newflag[ichan] = newflag[ichan] || oldflag[refChan] ; 2262 // // //ofs << "channel " << refChan << " is partly included in new channel " << ichan << " with fraction of " << ( 1.0 - frac ) << endl ; 2263 // // //ofs << "wedge = " << wedge << ", pile = " << pile << endl ; 2264 // // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << " wsum = " << wsum << endl ; 2265 // // newspec[ichan] /= wsum ; 2266 // // //ofs << "newspec[" << ichan << "] = " << newspec[ichan] << endl ; 2267 // // } 2268 2269 // // /*** 2270 // // * ichan = nChan-1 2271 // // ***/ 2272 // // // NOTE: Assumed that all spectra have the same bandwidth 2273 // // pile += dnu ; 2274 // // newspec[nChan-1] += frac * olddnu * oldspec[refChan] ; 2275 // // newflag[nChan-1] = newflag[nChan-1] || oldflag[refChan] ; 2276 // // //ofs << "channel " << refChan << " is partly included in new channel " << nChan-1 << " with fraction of " << frac << endl ; 2277 // // refChan++ ; 2278 // // wedge += olddnu ; 2279 // // wsum = frac * olddnu ; 2280 // // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << " wsum = " << wsum << endl ; 2281 // // for ( int jchan = refChan ; jchan < oldsize ; jchan++ ) { 2282 // // newspec[nChan-1] += olddnu * oldspec[jchan] ; 2283 // // newflag[nChan-1] = newflag[nChan-1] || oldflag[jchan] ; 2284 // // wsum += olddnu ; 2285 // // //ofs << "channel " << jchan << " is included in new channel " << nChan-1 << " with fraction of " << frac << endl ; 2286 // // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << " wsum = " << wsum << endl ; 2287 // // } 2288 // // //ofs << "wedge = " << wedge << ", pile = " << pile << endl ; 2289 // // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << " wsum = " << wsum << endl ; 2290 // // newspec[nChan-1] /= wsum ; 2291 // // //ofs << "newspec[" << nChan - 1 << "] = " << newspec[nChan-1] << endl ; 2292 2293 // // // ofs.close() ; 2205 2294 2206 2295 specCol_.put( irow, newspec ) ;
Note:
See TracChangeset
for help on using the changeset viewer.