Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // G4GDMLWriteDefine 27 // 28 // Class description: 29 // 30 // GDML writer class for positionings and transformations. 31 32 // Author: Zoltan Torzsok, November 2007 33 // -------------------------------------------------------------------- 34 #ifndef G4GDMLWRITEDEFINE_HH 35 #define G4GDMLWRITEDEFINE_HH 1 36 37 #include "G4Types.hh" 38 #include "G4ThreeVector.hh" 39 #include "G4RotationMatrix.hh" 40 41 #include "G4GDMLWrite.hh" 42 43 class G4GDMLWriteDefine : public G4GDMLWrite 44 { 45 public: 46 47 G4ThreeVector GetAngles(const G4RotationMatrix&); 48 void ScaleWrite(xercesc::DOMElement* element, const G4String& name, 49 const G4ThreeVector& scl) 50 { 51 Scale_vectorWrite(element, "scale", name, scl); 52 } 53 void RotationWrite(xercesc::DOMElement* element, const G4String& name, 54 const G4ThreeVector& rot) 55 { 56 Rotation_vectorWrite(element, "rotation", name, rot); 57 } 58 void PositionWrite(xercesc::DOMElement* element, const G4String& name, 59 const G4ThreeVector& pos) 60 { 61 Position_vectorWrite(element, "position", name, pos); 62 } 63 void FirstrotationWrite(xercesc::DOMElement* element, const G4String& name, 64 const G4ThreeVector& rot) 65 { 66 Rotation_vectorWrite(element, "firstrotation", name, rot); 67 } 68 void FirstpositionWrite(xercesc::DOMElement* element, const G4String& name, 69 const G4ThreeVector& pos) 70 { 71 Position_vectorWrite(element, "firstposition", name, pos); 72 } 73 void AddPosition(const G4String& name, const G4ThreeVector& pos) 74 { 75 Position_vectorWrite(defineElement, "position", name, pos); 76 } 77 78 virtual void DefineWrite(xercesc::DOMElement*); 79 80 protected: 81 82 G4GDMLWriteDefine(); 83 virtual ~G4GDMLWriteDefine(); 84 85 void Scale_vectorWrite(xercesc::DOMElement*, const G4String&, 86 const G4String&, const G4ThreeVector&); 87 void Rotation_vectorWrite(xercesc::DOMElement*, const G4String&, 88 const G4String&, const G4ThreeVector&); 89 void Position_vectorWrite(xercesc::DOMElement*, const G4String&, 90 const G4String&, const G4ThreeVector&); 91 92 protected: 93 94 static const G4double kRelativePrecision; 95 static const G4double kAngularPrecision; 96 static const G4double kLinearPrecision; 97 98 xercesc::DOMElement* defineElement = nullptr; 99 }; 100 101 #endif 102