| 185 | RV compositepdf::getrv(bool checkoverlap){ |
| 186 | RV rv; //empty rv |
| 187 | bool rvaddok; |
| 188 | for (int i = 0;i < n;i++ ) { |
| 189 | rvaddok=rv.add ( mpdfs ( i )->_rv() ); //add rv to common rvs. |
| 190 | // If rvaddok==false, mpdfs overlap => assert error. |
| 191 | it_assert_debug(rvaddok||(!checkoverlap),"mprod::mprod() input mpdfs overlap in rv!"); |
| 192 | }; |
| 193 | return rv; |
| 194 | } |
| 195 | |
| 196 | void compositepdf::setrvc(const RV &rv, RV &rvc){ |
| 197 | for (int i = 0;i < n;i++ ) { |
| 198 | rvc.add ( mpdfs ( i )->_rvc().subt ( rv ) ); //add rv to common rvc |
| 199 | }; |
| 200 | } |
| 201 | |
| 202 | void compositepdf::setindices(const RV &rv){ |
| 203 | for (int i = 0;i < n;i++ ) { |
| 204 | // find ith rv in common rv |
| 205 | rvsinrv ( i ) = mpdfs ( i )->_rv().dataind ( rv ); |
| 206 | rvcsinrv ( i ) = mpdfs ( i )->_rvc().dataind ( rv ); |
| 207 | } |
| 208 | } |
| 209 | |
| 210 | void compositepdf::setrvcinrv(const RV &rvc, Array<ivec> &rvinds){ |
| 211 | for (int i = 0;i < n;i++ ) { |
| 212 | // find ith rv in common rv |
| 213 | rvinds ( i ) = mpdfs ( i )->_rvc().dataind ( rvc ); |
| 214 | } |
| 215 | } |
| 216 | |
| 217 | |