- const PhantomElement& rPElem = **pelem;
- double x, y, xi, yi;
- int ix, iy, kx, ky;
- for (ix = 0, x = x_start; ix < colCount; ix++, x += xinc) {
- int iColStore = ix;
- if (bStoreAtColumnPos)
- iColStore += colStart;
- for (iy = 0, y = ymin; iy < ny; iy++, y += yinc) {
- for (kx = 0, xi = x + kxofs; kx < nsample; kx++, xi += kxinc) {
- for (ky = 0, yi = y + kyofs; ky < nsample; ky++, yi += kyinc)
- if (rPElem.isPointInside (xi, yi, PHM_COORD) == TRUE)
- v[iColStore][iy] += rPElem.atten();
- } // for kx
- } /* for iy */
- } /* for ix */
+ const PhantomElement& rPElem = **pelem;
+ #pragma omp parallel for
+ for (int ix = 0; ix < colCount; ix++) {
+ double x = x_start + ix * xinc;
+ int iColStore = ix + iStorageOffset;
+ ImageFileColumn vCol = v[iColStore];
+
+ double y = ymin;
+ for (int iy = 0; iy < ny; iy++, y += yinc) {
+ double dAtten = 0;
+ double xi = x + kxofs;
+ for (int kx = 0; kx < nsample; kx++, xi += kxinc) {
+ double yi = y + kyofs;
+ for (int ky = 0; ky < nsample; ky++, yi += kyinc) {
+ if (rPElem.isPointInside (xi, yi, PHM_COORD))
+ dAtten += rPElem.atten();
+ } // ky
+ } // kx
+ *vCol++ += dAtten;
+ } /* iy */
+ } /* ix */
+ } /* pelem */
+
+#else
+
+ double x_start = xmin + (colStart * xinc);
+ for (PElemConstIterator pelem = m_listPElem.begin(); pelem != m_listPElem.end(); pelem++) {
+ const PhantomElement& rPElem = **pelem;
+ double x, y, xi, yi;
+ int ix, iy, kx, ky;
+ for (ix = 0, x = x_start; ix < colCount; ix++, x += xinc) {
+ int iColStore = ix + iStorageOffset;
+ ImageFileColumn vCol = v[iColStore];
+ for (iy = 0, y = ymin; iy < ny; iy++, y += yinc) {
+ double dAtten = 0;
+ for (kx = 0, xi = x + kxofs; kx < nsample; kx++, xi += kxinc) {
+ for (ky = 0, yi = y + kyofs; ky < nsample; ky++, yi += kyinc)
+ if (rPElem.isPointInside (xi, yi, PHM_COORD))
+ dAtten += rPElem.atten();
+ } // for kx
+ *vCol++ += dAtten;
+ } /* for iy */
+ } /* for ix */