{
int id = PHM_INVALID;
- for (int i = 0; i < s_iPhantomCount; i++)
+ for (int i = 0; i < s_iPhantomCount; i++) {
if (strcasecmp (phmName, s_aszPhantomName[i]) == 0) {
id = i;
break;
}
-
- return (id);
+ }
+ return (id);
}
*vCol++ = 0;
}
+#if HAVE_OPENMP
+ double x_start = xmin + (colStart * xinc);
+ for (PElemConstIterator pelem = m_listPElem.begin(); pelem != m_listPElem.end(); pelem++) {
+ 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];
+ for (int iy = 0; iy < ny; iy++) {
+ double y = ymin + iy * yinc;
+ double dAtten = 0;
+ for (int kx = 0; kx < nsample; kx++) {
+ double xi = x + kxofs + kxinc * kx;
+ for (int ky = 0; ky < nsample; ky++) {
+ double yi = y + kyofs + ky * 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;
} /* for iy */
} /* for ix */
} /* for pelem */
-
+#endif
if (nsample > 1) {
double factor = 1.0 / static_cast<double>(nsample * nsample);
-
-
+#if HAVE_OPENMP
+ #pragma omp parallel for
+#endif
for (int ix = 0; ix < colCount; ix++) {
int iColStore = ix + iStorageOffset;
ImageFileColumn vCol = v[iColStore];