Changeset 2141


Ignore:
Timestamp:
04/15/11 21:15:19 (13 years ago)
Author:
WataruKawasaki
Message:

New Development: No

JIRA Issue: No

Ready for Test: Yes

Interface Changes: No

What Interface Changed:

Test Programs:

Put in Release Notes: No

Module(s):

Description: bugfix in RowAccumulator::add()


Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/RowAccumulator.cpp

    r2135 r2141  
    9090                                   const Double interval,
    9191                                   const Double time,
    92                                    const Bool ignoreMask)
     92                                   const Bool inverseMask)
    9393{
    9494  Vector<Float> vUse = v.copy();
    9595  Vector<Bool> mUse = m.copy();
    96   if (ignoreMask) mUse = !mUse;
    97 
     96  if (inverseMask) mUse = !mUse;
    9897  MaskedArray<Float> vadd(vUse, mUse);
    99   Float totalWeight = getTotalWeight(vadd, tsys, interval, time, ignoreMask);
     98  Float totalWeight = getTotalWeight(vadd, tsys, interval, time, inverseMask);
    10099  vadd *= totalWeight;
    101100  MaskedArray<Float> wadd(Vector<Float>(mUse.nelements(), totalWeight), mUse);
    102101  MaskedArray<uInt> inc(Vector<uInt>(mUse.nelements(), 1), mUse);
    103102
    104   if (ignoreMask) {
     103  if (inverseMask) {
    105104    spectrumNoMask_ += vadd;
    106105    weightSumNoMask_ += wadd;
     
    117116                                     const Double interval,
    118117                                     const Double time,
    119                                      const Bool ignoreMask)
     118                                     const Bool inverseMask)
    120119{
    121120  Float totalWeight = 1.0;
    122 
    123121  Vector<Bool> m = data.getMask();
    124122  if (!allEQ(m, False)) {  // only add these if not everything masked
    125     totalWeight *= addTsys(tsys, ignoreMask);
    126     totalWeight *= addInterval(interval, ignoreMask);
    127     addTime(time, ignoreMask);
    128   }
    129 
    130   if (weightType_ == W_VAR) {
    131     Float fac = 1.0/variance(data);
    132     if (!ignoreMask && (m.nelements() == userMask_.nelements()))
    133       fac = 1.0/variance(data(userMask_));
    134 
    135     totalWeight *= fac;
     123    totalWeight *= addTsys(tsys, inverseMask);
     124    totalWeight *= addInterval(interval, inverseMask);
     125    addTime(time, inverseMask);
     126
     127    if (weightType_ == W_VAR) {
     128      Float fac = 1.0/variance(data);
     129      if (!inverseMask && (m.nelements() == userMask_.nelements()))
     130        fac = 1.0/variance(data(userMask_));
     131
     132      totalWeight *= fac;
     133    }
    136134  }
    137135
     
    139137}
    140138
    141 Float RowAccumulator::addTsys(const Vector<Float>& v, Bool ignoreMask)
     139Float RowAccumulator::addTsys(const Vector<Float>& v, Bool inverseMask)
    142140{
    143141  // @fixme this assume tsys is the same for all channels
    144142
    145143  Float w = 1.0;
    146   if (ignoreMask) {
     144  if (inverseMask) {
    147145    tsysSumNoMask_ += v[0];
    148146  } else {
     
    155153}
    156154
    157 void RowAccumulator::addTime(Double t, Bool ignoreMask)
    158 {
    159   if (ignoreMask) {
     155void RowAccumulator::addTime(Double t, Bool inverseMask)
     156{
     157  if (inverseMask) {
    160158    timeSumNoMask_ += t;
    161159  } else {
     
    164162}
    165163
    166 Float RowAccumulator::addInterval(Double inter, Bool ignoreMask)
     164Float RowAccumulator::addInterval(Double inter, Bool inverseMask)
    167165{
    168166  Float w = 1.0;
    169   if (ignoreMask) {
     167  if (inverseMask) {
    170168    intervalSumNoMask_ += inter;
    171169  } else {
  • trunk/src/RowAccumulator.h

    r2125 r2141  
    108108                     const casa::Double interval,
    109109                     const casa::Double time,
    110                      const casa::Bool ignoreMask);
     110                     const casa::Bool inverseMask);
    111111  casa::Float getTotalWeight(const casa::MaskedArray<casa::Float>& data,
    112112                             const casa::Vector<casa::Float>& tsys,
    113113                             const casa::Double interval,
    114114                             const casa::Double time,
    115                              const casa::Bool ignoreMask);
    116   casa::Float addTsys(const casa::Vector<casa::Float>& v, casa::Bool ignoreMask);
    117   casa::Float addInterval(casa::Double inter, casa::Bool ignoreMask);
    118   void addTime(casa::Double t, casa::Bool ignoreMask);
     115                             const casa::Bool inverseMask);
     116  casa::Float addTsys(const casa::Vector<casa::Float>& v, casa::Bool inverseMask);
     117  casa::Float addInterval(casa::Double inter, casa::Bool inverseMask);
     118  void addTime(casa::Double t, casa::Bool inverseMask);
    119119
    120120  WeightType weightType_;
Note: See TracChangeset for help on using the changeset viewer.