55 const G4double cosb = std::sqrt(mat.xx()*mat.xx()+mat.yx()*mat.yx());
59 x = std::atan2(mat.zy(),mat.zz());
60 y = std::atan2(-mat.zx(),cosb);
61 z = std::atan2(mat.yx(),mat.xx());
65 x = std::atan2(-mat.yz(),mat.yy());
66 y = std::atan2(-mat.zx(),cosb);
84 xercesc::DOMElement* scaleElement =
NewElement(tag);
85 scaleElement->setAttributeNode(
NewAttribute(
"name",name));
89 element->appendChild(scaleElement);
100 xercesc::DOMElement* rotationElement =
NewElement(tag);
101 rotationElement->setAttributeNode(
NewAttribute(
"name",name));
105 rotationElement->setAttributeNode(
NewAttribute(
"unit",
"deg"));
106 element->appendChild(rotationElement);
117 xercesc::DOMElement* positionElement =
NewElement(tag);
118 positionElement->setAttributeNode(
NewAttribute(
"name",name));
122 positionElement->setAttributeNode(
NewAttribute(
"unit",
"mm"));
123 element->appendChild(positionElement);
static const G4double kAngularPrecision
void Scale_vectorWrite(xercesc::DOMElement *, const G4String &, const G4String &, const G4ThreeVector &)
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
xercesc::DOMElement * defineElement
xercesc::DOMElement * NewElement(const G4String &)
void Position_vectorWrite(xercesc::DOMElement *, const G4String &, const G4String &, const G4ThreeVector &)
virtual void DefineWrite(xercesc::DOMElement *)
G4GLOB_DLL std::ostream G4cout
static const G4double kRelativePrecision
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)
static const G4double kLinearPrecision
G4ThreeVector GetAngles(const G4RotationMatrix &)
static const double degree
void Rotation_vectorWrite(xercesc::DOMElement *, const G4String &, const G4String &, const G4ThreeVector &)
virtual ~G4GDMLWriteDefine()
static const G4double pos