本文整理汇总了C++中dataobjects::Workspace2D_sptr::replaceAxis方法的典型用法代码示例。如果您正苦于以下问题:C++ Workspace2D_sptr::replaceAxis方法的具体用法?C++ Workspace2D_sptr::replaceAxis怎么用?C++ Workspace2D_sptr::replaceAxis使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类dataobjects::Workspace2D_sptr
的用法示例。
在下文中一共展示了Workspace2D_sptr::replaceAxis方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadFQT
/**
* Create one workspace to hold the real part and another to hold the imaginary
* part.
* We symmetrize the structure factor to negative times
* Y-values are structure factor for each Q-value
* X-values are time bins
* @param h5file file identifier
* @param gws pointer to WorkspaceGroup being filled
* @param setName string name of dataset
* @param qvmod vector of Q-vectors' moduli
* @param sorting_indexes permutation of qvmod indexes to render it in increasing
* order of momemtum transfer
*/
void LoadSassena::loadFQT(const hid_t &h5file, API::WorkspaceGroup_sptr gws,
const std::string setName, const MantidVec &qvmod,
const std::vector<int> &sorting_indexes) {
const std::string gwsName = this->getPropertyValue("OutputWorkspace");
int nq = static_cast<int>(qvmod.size()); // number of q-vectors
const double dt =
getProperty("TimeUnit"); // time unit increment, in picoseconds;
hsize_t dims[3];
if (dataSetInfo(h5file, setName, dims) < 0) {
throw Kernel::Exception::FileError(
"Unable to read " + setName + " dataset info:", m_filename);
}
int nnt = static_cast<int>(dims[1]); // number of non-negative time points
int nt = 2 * nnt - 1; // number of time points
int origin = nnt - 1;
double *buf = new double[nq * nnt * 2];
this->dataSetDouble(h5file, setName, buf);
DataObjects::Workspace2D_sptr wsRe =
boost::dynamic_pointer_cast<DataObjects::Workspace2D>(
API::WorkspaceFactory::Instance().create("Workspace2D", nq, nt, nt));
const std::string wsReName =
gwsName + std::string("_") + setName + std::string(".Re");
wsRe->setTitle(wsReName);
DataObjects::Workspace2D_sptr wsIm =
boost::dynamic_pointer_cast<DataObjects::Workspace2D>(
API::WorkspaceFactory::Instance().create("Workspace2D", nq, nt, nt));
const std::string wsImName =
gwsName + std::string("_") + setName + std::string(".Im");
wsIm->setTitle(wsImName);
for (int iq = 0; iq < nq; iq++) {
MantidVec &reX = wsRe->dataX(iq);
MantidVec &imX = wsIm->dataX(iq);
MantidVec &reY = wsRe->dataY(iq);
MantidVec &imY = wsIm->dataY(iq);
const int index = sorting_indexes[iq];
double *curr = buf + index * nnt * 2;
for (int it = 0; it < nnt; it++) {
reX[origin + it] = it * dt; // time point for the real part
reY[origin + it] =
*curr; // real part of the intermediate structure factor
reX[origin - it] = -it * dt; // symmetric negative time
reY[origin - it] = *curr; // symmetric value for the negative time
curr++;
imX[origin + it] = it * dt;
imY[origin + it] = *curr;
imX[origin - it] = -it * dt;
imY[origin - it] = -(*curr); // antisymmetric value for negative times
curr++;
}
}
delete[] buf;
// Set the Time unit for the X-axis
wsRe->getAxis(0)->unit() = Kernel::UnitFactory::Instance().create("Label");
auto unitPtr = boost::dynamic_pointer_cast<Kernel::Units::Label>(
wsRe->getAxis(0)->unit());
unitPtr->setLabel("Time", "picoseconds");
wsIm->getAxis(0)->unit() = Kernel::UnitFactory::Instance().create("Label");
unitPtr = boost::dynamic_pointer_cast<Kernel::Units::Label>(
wsIm->getAxis(0)->unit());
unitPtr->setLabel("Time", "picoseconds");
// Create a numeric axis to replace the default vertical one
API::Axis *const verticalAxisRe = new API::NumericAxis(nq);
API::Axis *const verticalAxisIm = new API::NumericAxis(nq);
wsRe->replaceAxis(1, verticalAxisRe);
wsIm->replaceAxis(1, verticalAxisIm);
// Now set the axis values
for (int i = 0; i < nq; ++i) {
verticalAxisRe->setValue(i, qvmod[i]);
verticalAxisIm->setValue(i, qvmod[i]);
}
// Set the axis units
verticalAxisRe->unit() =
Kernel::UnitFactory::Instance().create("MomentumTransfer");
verticalAxisRe->title() = "|Q|";
verticalAxisIm->unit() =
Kernel::UnitFactory::Instance().create("MomentumTransfer");
verticalAxisIm->title() = "|Q|";
//.........这里部分代码省略.........