/** * Set the new detector position given the r,theta and phi. * @param detectorInfo :: Reference to the DetectorInfo * @param index :: Index into detectorInfo * @param l2 :: A single l2 * @param theta :: A single theta * @param phi :: A single phi */ void UpdateInstrumentFromFile::setDetectorPosition( Geometry::DetectorInfo &detectorInfo, const size_t index, const float l2, const float theta, const float phi) { if (m_ignoreMonitors && detectorInfo.isMonitor(index)) return; Kernel::V3D pos; pos.spherical(l2, theta, phi); detectorInfo.setPosition(index, pos); }
void IntegrateEllipsoids::calculateE1( const Geometry::DetectorInfo &detectorInfo) { for (size_t i = 0; i < detectorInfo.size(); ++i) { if (detectorInfo.isMonitor(i)) continue; // skip monitor if (!detectorInfo.isMasked(i)) continue; // edge is masked so don't check if not masked const auto &det = detectorInfo.detector(i); double tt1 = det.getTwoTheta(V3D(0, 0, 0), V3D(0, 0, 1)); // two theta double ph1 = det.getPhi(); // phi V3D E1 = V3D(-std::sin(tt1) * std::cos(ph1), -std::sin(tt1) * std::sin(ph1), 1. - std::cos(tt1)); // end of trajectory E1 = E1 * (1. / E1.norm()); // normalize E1Vec.push_back(E1); } }