55 (myrRotation->size() > 0)
56 ? myrRotation->getDDName(nmspace)
57 : ((myDDLRotation->size() > 0)
58 ? myDDLRotation->getDDName(nmspace)
59 : ((myDDLRefl->size() > 0) ? myDDLRefl->getDDName(nmspace)
60 : ((myrRefl->size() > 0) ? myrRefl->getDDName(nmspace) :
DDName(
"")))));
64 double x = 0.0,
y = 0.0,
z = 0.0;
65 if (myTranslation->size() > 0) {
67 x = ev.
eval(nmspace, atts.find(
"x")->second);
68 y = ev.
eval(nmspace, atts.find(
"y")->second);
69 z = ev.
eval(nmspace, atts.find(
"z")->second);
72 std::unique_ptr<DDRotation> myDDRotation;
74 if (!rotn.
name().empty() && !rotn.
ns().empty()) {
75 myDDRotation = std::make_unique<DDRotation>(rotn);
80 if (!myDDRotation->isValid()) {
82 std::make_unique<DDRotationMatrix>());
90 if (atts.find(
"copyNumber") != atts.end())
91 copyno = atts.find(
"copyNumber")->second;
102 myTranslation->clear();
103 myDDLRotation->clear();
104 myrRotation->clear();
void preProcessElement(const std::string &name, const std::string &nmspace, DDCompactView &cpv) override
Called by loadAttributes AFTER attributes are loaded.
DDLElementRegistry * myRegistry_
virtual const DDXMLAttribute & getAttributeSet(size_t aIndex=0) const
Get a "row" of attributes, i.e. one attribute set.
const std::string & ns() const
Returns the namespace.
DDName is used to identify DDD entities uniquely.
Compact representation of the geometrical detector hierarchy.
std::map< std::string, std::string > DDXMLAttribute
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
ClhepEvaluator & evaluator()
void processElement(const std::string &name, const std::string &nmspace, DDCompactView &cpv) override
Processing the element.
DDLPosPart(DDLElementRegistry *myreg)
std::shared_ptr< DDXMLElement > getElement(const std::string &name)
THE most important part. Getting the pointer to a given element type.
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
This is a base class for processing XML elements in the DDD.
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
double eval(const std::string &ns, const std::string &expr)
The main class for processing parsed elements.
virtual void clear(void)
clear this element's contents.
const std::string & name() const
Returns the name.