| 60 |  | seleMan2_.setSelectionSet(evaluator2_.evaluate()); | 
| 61 |  | } | 
| 62 |  |  | 
| 63 | + | if (!evaluator1_.isDynamic() && !evaluator2_.isDynamic()) { | 
| 64 | + | //if all selections are static,  we can precompute the number of real pairs | 
| 65 | + |  | 
| 66 | + | int nSelected1 = seleMan1_.getSelectionCount(); | 
| 67 | + | int nSelected2 = seleMan2_.getSelectionCount(); | 
| 68 | + |  | 
| 69 | + | BitSet bs = seleMan1_.getSelectionSet(); | 
| 70 | + | bs &= seleMan2_.getSelectionSet(); | 
| 71 | + | int nIntersect = bs.countBits(); | 
| 72 | + |  | 
| 73 | + | nRealPairs_ = nSelected1 * nSelected2 - (nIntersect +1) * nIntersect/2; | 
| 74 | + | } | 
| 75 | + |  | 
| 76 |  | } | 
| 77 |  |  | 
| 78 |  | void RadialDistrFunc::process() { | 
| 85 |  |  | 
| 86 |  | DumpReader reader(info_, dumpFilename_); | 
| 87 |  | int nFrames = reader.getNFrames(); | 
| 88 | < | nProcessed_ = nFrames / step_ + 1; | 
| 88 | > | nProcessed_ = nFrames / step_; | 
| 89 | > |  | 
| 90 |  | for (int i = 0; i < nFrames; i += step_) { | 
| 91 |  | reader.readFrame(i); | 
| 92 |  | currentSnapshot_ = info_->getSnapshotManager()->getCurrentSnapshot(); | 
| 115 |  | StuntDouble* sd2; | 
| 116 |  | int k; | 
| 117 |  | for (sd2 = seleMan2_.beginSelected(k); sd2 != NULL; sd2 = seleMan2_.nextSelected(k)) { | 
| 118 | < | collectHistogram(sd1, sd2); | 
| 118 | > | if (sd1 != sd2) { | 
| 119 | > | collectHistogram(sd1, sd2); | 
| 120 | > | } | 
| 121 |  | } | 
| 122 |  | } | 
| 123 |  |  | 
| 130 |  | writeRdf(); | 
| 131 |  | } | 
| 132 |  |  | 
| 133 | + | int RadialDistrFunc::getNRealPairs() { | 
| 134 | + | if (evaluator1_.isDynamic() || evaluator2_.isDynamic()) { | 
| 135 | + | //if one of the selection is dynamic,  need to recompute it | 
| 136 | + |  | 
| 137 | + | int nSelected1 = seleMan1_.getSelectionCount(); | 
| 138 | + | int nSelected2 = seleMan2_.getSelectionCount(); | 
| 139 | + |  | 
| 140 | + | BitSet bs = seleMan1_.getSelectionSet(); | 
| 141 | + | bs &= seleMan2_.getSelectionSet(); | 
| 142 | + | int nIntersect = bs.countBits(); | 
| 143 | + |  | 
| 144 | + | nRealPairs_ = nSelected1 * nSelected2 - (nIntersect +1) * nIntersect/2; | 
| 145 | + | } | 
| 146 | + |  | 
| 147 | + | return nRealPairs_; | 
| 148 |  | } | 
| 149 | + |  | 
| 150 | + | } |