当前位置: 首页>>代码示例>>C++>>正文


C++ Instrument_const_sptr::getName方法代码示例

本文整理汇总了C++中geometry::Instrument_const_sptr::getName方法的典型用法代码示例。如果您正苦于以下问题:C++ Instrument_const_sptr::getName方法的具体用法?C++ Instrument_const_sptr::getName怎么用?C++ Instrument_const_sptr::getName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在geometry::Instrument_const_sptr的用法示例。


在下文中一共展示了Instrument_const_sptr::getName方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: findPixelID

int MaskPeaksWorkspace::findPixelID(std::string bankName, int col, int row) {
  Geometry::Instrument_const_sptr Iptr = m_inputW->getInstrument();
  boost::shared_ptr<const IComponent> parent =
      Iptr->getComponentByName(bankName);
  if (parent->type().compare("RectangularDetector") == 0) {
    boost::shared_ptr<const RectangularDetector> RDet =
        boost::dynamic_pointer_cast<const RectangularDetector>(parent);

    boost::shared_ptr<Detector> pixel = RDet->getAtXY(col, row);
    return pixel->getID();
  } else {
    std::string bankName0 = bankName;
    // Only works for WISH
    bankName0.erase(0, 4);
    std::ostringstream pixelString;
    pixelString << Iptr->getName() << "/" << bankName0 << "/" << bankName
                << "/tube" << std::setw(3) << std::setfill('0') << col
                << "/pixel" << std::setw(4) << std::setfill('0') << row;
    boost::shared_ptr<const Geometry::IComponent> component =
        Iptr->getComponentByName(pixelString.str());
    boost::shared_ptr<const Detector> pixel =
        boost::dynamic_pointer_cast<const Detector>(component);
    return pixel->getID();
  }
}
开发者ID:mducle,项目名称:mantid,代码行数:25,代码来源:MaskPeaksWorkspace.cpp

示例2: printToXML

void SaveDetectorsGrouping::printToXML(std::map<int, std::vector<detid_t> > groupdetidrangemap, std::string xmlfilename) {

    // 1. Get Instrument information
    Geometry::Instrument_const_sptr instrument = mGroupWS->getInstrument();
    std::string name = instrument->getName();
    g_log.debug() << "Instrument " << name << std::endl;

    // 2. Start document (XML)
    AutoPtr<Document> pDoc = new Document;
    AutoPtr<Element> pRoot = pDoc->createElement("detector-grouping");
    pDoc->appendChild(pRoot);
    pRoot->setAttribute("instrument", name);

    // Set description if was specified by user
    if(mGroupWS->run().hasProperty("Description"))
    {
        std::string description = mGroupWS->run().getProperty("Description")->value();
        pRoot->setAttribute("description", description);
    }

    // 3. Append Groups
    for (std::map<int, std::vector<detid_t> >::iterator it = groupdetidrangemap.begin();
            it != groupdetidrangemap.end(); ++it) {

        // a) Group Node
        int groupid = it->first;
        std::stringstream sid;
        sid << groupid;

        AutoPtr<Element> pChildGroup = pDoc->createElement("group");
        pChildGroup->setAttribute("ID",  sid.str());
        // Set name if was specified by user
        std::string groupNameProp = "GroupName_" + sid.str();
        if(mGroupWS->run().hasProperty(groupNameProp))
        {
            std::string groupName = mGroupWS->run().getProperty(groupNameProp)->value();
            pChildGroup->setAttribute("name", groupName);
        }

        pRoot->appendChild(pChildGroup);

        g_log.debug() << "Group ID = " << groupid << std::endl;

        // b) Detector ID Child Nodes
        std::stringstream ss;

        for (size_t i = 0; i < it->second.size()/2; i ++)
        {
            // i. Generate text value

            bool writedata = true;
            detid_t ist = it->second[i*2];
            detid_t ied = it->second[i*2+1];
            // "a-b" or "a"
            if (ist < ied) {
                ss << ist << "-" << ied;
            } else if (ist == ied) {
                ss << ist;
            } else {
                writedata = false;
                g_log.error() << "Impossible to have this situation!" << std::endl;
                throw std::invalid_argument("Impossible to have this sitaution!");
            }
            // add ","
            if (writedata && i < it->second.size()/2-1) {
                ss << ",";
            }

            g_log.debug() << "Detectors:  " << it->second[i*2] << ", " << it->second[i*2+1] << std::endl;
        } // FOREACH Detectors Range Set


        std::string textvalue = ss.str();

        g_log.debug() << "Detector IDs Node: " << textvalue << std::endl;

        // c) Create element
        AutoPtr<Element> pDetid = pDoc->createElement("detids");
        AutoPtr<Text> pText1 = pDoc->createTextNode(textvalue);
        pDetid->appendChild(pText1);
        pChildGroup->appendChild(pDetid);

    } // FOREACH GroupID

    // 4. Write file
    DOMWriter writer;
    writer.setNewLine("\n");
    writer.setOptions(XMLWriter::PRETTY_PRINT);

    std::ofstream ofs;
    ofs.open(xmlfilename.c_str(), std::fstream::out);

    ofs << "<?xml version=\"1.0\"?>\n";

    writer.writeNode(std::cout, pDoc);
    writer.writeNode(ofs, pDoc);
    ofs.close();

}
开发者ID:jkrueger1,项目名称:mantid,代码行数:99,代码来源:SaveDetectorsGrouping.cpp

示例3: processDetectorsPositions

/** method does preliminary calculations of the detectors positions to convert
results into k-dE space ;
and places the results into static cash to be used in subsequent calls to this
algorithm */
void PreprocessDetectorsToMD::processDetectorsPositions(
    const API::MatrixWorkspace_const_sptr &inputWS,
    DataObjects::TableWorkspace_sptr &targWS) {
  g_log.information()
      << "Preprocessing detector locations in a target reciprocal space\n";
  //
  Geometry::Instrument_const_sptr instrument = inputWS->getInstrument();
  // this->pBaseInstr                = instrument->baseInstrument();
  //
  Geometry::IComponent_const_sptr source = instrument->getSource();
  Geometry::IComponent_const_sptr sample = instrument->getSample();
  if ((!source) || (!sample)) {
    g_log.error() << " Instrument is not fully defined. Can not identify "
                     "source or sample\n";
    throw Kernel::Exception::InstrumentDefinitionError(
        "Instrument not sufficiently defined: failed to get source and/or "
        "sample");
  }

  // L1
  try {
    double L1 = source->getDistance(*sample);
    targWS->logs()->addProperty<double>("L1", L1, true);
    g_log.debug() << "Source-sample distance: " << L1 << '\n';
  } catch (Kernel::Exception::NotFoundError &) {
    throw Kernel::Exception::InstrumentDefinitionError(
        "Unable to calculate source-sample distance for workspace",
        inputWS->getTitle());
  }
  // Instrument name
  std::string InstrName = instrument->getName();
  targWS->logs()->addProperty<std::string>(
      "InstrumentName", InstrName,
      true); // "The name which should unique identify current instrument");
  targWS->logs()->addProperty<bool>("FakeDetectors", false, true);

  // get access to the workspace memory
  auto &sp2detMap = targWS->getColVector<size_t>("spec2detMap");
  auto &detId = targWS->getColVector<int32_t>("DetectorID");
  auto &detIDMap = targWS->getColVector<size_t>("detIDMap");
  auto &L2 = targWS->getColVector<double>("L2");
  auto &TwoTheta = targWS->getColVector<double>("TwoTheta");
  auto &Azimuthal = targWS->getColVector<double>("Azimuthal");
  auto &detDir = targWS->getColVector<Kernel::V3D>("DetDirections");

  // Efixed; do we need one and does one exist?
  double Efi = targWS->getLogs()->getPropertyValueAsType<double>("Ei");
  float *pEfixedArray(nullptr);
  const Geometry::ParameterMap &pmap = inputWS->constInstrumentParameters();
  if (m_getEFixed)
    pEfixedArray = targWS->getColDataArray<float>("eFixed");

  // check if one needs to generate masked detectors column.
  int *pMasksArray(nullptr);
  if (m_getIsMasked)
    pMasksArray = targWS->getColDataArray<int>("detMask");

  //// progress message appearance
  size_t div = 100;
  size_t nHist = targWS->rowCount();
  Mantid::API::Progress theProgress(this, 0, 1, nHist);
  //// Loop over the spectra
  uint32_t liveDetectorsCount(0);
  const auto &spectrumInfo = inputWS->spectrumInfo();
  for (size_t i = 0; i < nHist; i++) {
    sp2detMap[i] = std::numeric_limits<uint64_t>::quiet_NaN();
    detId[i] = std::numeric_limits<int32_t>::quiet_NaN();
    detIDMap[i] = std::numeric_limits<uint64_t>::quiet_NaN();
    L2[i] = std::numeric_limits<double>::quiet_NaN();
    TwoTheta[i] = std::numeric_limits<double>::quiet_NaN();
    Azimuthal[i] = std::numeric_limits<double>::quiet_NaN();
    //     detMask[i]  = true;

    if (!spectrumInfo.hasDetectors(i) || spectrumInfo.isMonitor(i))
      continue;

    // if masked detectors state is not used, masked detectors just ignored;
    bool maskDetector = spectrumInfo.isMasked(i);
    if (m_getIsMasked)
      *(pMasksArray + liveDetectorsCount) = maskDetector ? 1 : 0;
    else if (maskDetector)
      continue;

    const auto &spDet = spectrumInfo.detector(i);

    // calculate the requested values;
    sp2detMap[i] = liveDetectorsCount;
    detId[liveDetectorsCount] = int32_t(spDet.getID());
    detIDMap[liveDetectorsCount] = i;
    L2[liveDetectorsCount] = spectrumInfo.l2(i);

    double polar = spectrumInfo.twoTheta(i);
    double azim = spDet.getPhi();
    TwoTheta[liveDetectorsCount] = polar;
    Azimuthal[liveDetectorsCount] = azim;

//.........这里部分代码省略.........
开发者ID:peterfpeterson,项目名称:mantid,代码行数:101,代码来源:PreprocessDetectorsToMD.cpp


注:本文中的geometry::Instrument_const_sptr::getName方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。