/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
DetectorDescription/Parser/src/DDLTubs.cc
70 строк
4 KB
Cms Build
Clang-Format
11 май 2019, 12:09
11 май 2019, 12:09
02cea70
Код
Авторство
О чём код?
#include "DetectorDescription/Parser/src/DDLTubs.h" #include "DetectorDescription/Core/interface/DDSolid.h" #include "DetectorDescription/Core/interface/ClhepEvaluator.h" #include "DataFormats/Math/interface/GeantUnits.h" #include "DetectorDescription/Parser/interface/DDLElementRegistry.h" #include "DetectorDescription/Parser/src/DDLSolid.h" #include "DetectorDescription/Parser/src/DDXMLElement.h" #include <map> #include <utility> class DDCompactView; using namespace geant_units::operators; DDLTubs::DDLTubs(DDLElementRegistry* myreg) : DDLSolid(myreg) {} // Upon encountering the end of a Tubs element, call DDCore. void DDLTubs::processElement(const std::string& name, const std::string& nmspace, DDCompactView& cpv) { ClhepEvaluator& ev = myRegistry_->evaluator(); DDXMLAttribute atts = getAttributeSet(); bool cutInside(false); if (atts.find("cutInside") != atts.end()) { cutInside = (atts.find("cutInside")->second == "true") ? true : false; } if (name == "Tubs") { DDSolid myTubs = DDSolidFactory::tubs(getDDName(nmspace), ev.eval(nmspace, atts.find("dz")->second), ev.eval(nmspace, atts.find("rMin")->second), ev.eval(nmspace, atts.find("rMax")->second), ev.eval(nmspace, atts.find("startPhi")->second), ev.eval(nmspace, atts.find("deltaPhi")->second)); } else if (name == "Tube") { DDSolid myTubs = DDSolidFactory::tubs(getDDName(nmspace), ev.eval(nmspace, atts.find("dz")->second), ev.eval(nmspace, atts.find("rMin")->second), ev.eval(nmspace, atts.find("rMax")->second), 0_deg, 360_deg); } else if (name == "TruncTubs") { DDSolid myTT = DDSolidFactory::truncTubs(getDDName(nmspace), ev.eval(nmspace, atts.find("zHalf")->second), ev.eval(nmspace, atts.find("rMin")->second), ev.eval(nmspace, atts.find("rMax")->second), ev.eval(nmspace, atts.find("startPhi")->second), //0. // startPhi ev.eval(nmspace, atts.find("deltaPhi")->second), ev.eval(nmspace, atts.find("cutAtStart")->second), ev.eval(nmspace, atts.find("cutAtDelta")->second), cutInside); // cutInside } else if (name == "CutTubs") { DDSolid myTubs = DDSolidFactory::cuttubs(getDDName(nmspace), ev.eval(nmspace, atts.find("dz")->second), ev.eval(nmspace, atts.find("rMin")->second), ev.eval(nmspace, atts.find("rMax")->second), ev.eval(nmspace, atts.find("startPhi")->second), ev.eval(nmspace, atts.find("deltaPhi")->second), ev.eval(nmspace, atts.find("lx")->second), ev.eval(nmspace, atts.find("ly")->second), ev.eval(nmspace, atts.find("lz")->second), ev.eval(nmspace, atts.find("tx")->second), ev.eval(nmspace, atts.find("ty")->second), ev.eval(nmspace, atts.find("tz")->second)); } else { std::string msg = "\nDDLTubs::processElement could not process element."; throwError(msg); } DDLSolid::setReference(nmspace, cpv); }