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 // G4GDMLReadSolids 27 // 28 // Class description: 29 // 30 // GDML class for loading solids according to specifications in Geant4. 31 32 // Author: Zoltan Torzsok, November 2007 33 // -------------------------------------------------------------------- 34 #ifndef G4GDMLREADSOLIDS_HH 35 #define G4GDMLREADSOLIDS_HH 1 36 37 #include "G4Types.hh" 38 #include "G4GDMLReadMaterials.hh" 39 #include "G4ExtrudedSolid.hh" 40 #include "G4MultiUnion.hh" 41 #include "G4MaterialPropertiesTable.hh" 42 43 class G4VSolid; 44 class G4QuadrangularFacet; 45 class G4TriangularFacet; 46 class G4SurfaceProperty; 47 class G4OpticalSurface; 48 49 class G4GDMLReadSolids : public G4GDMLReadMaterials 50 { 51 enum BooleanOp 52 { 53 UNION, 54 SUBTRACTION, 55 INTERSECTION 56 }; 57 58 // typedef struct { G4double rmin,rmax,z; } zplaneType; 59 typedef struct 60 { 61 G4double r, z; 62 } rzPointType; 63 64 public: 65 66 G4VSolid* GetSolid(const G4String&) const; 67 G4SurfaceProperty* GetSurfaceProperty(const G4String&) const; 68 69 virtual void SolidsRead(const xercesc::DOMElement* const); 70 71 protected: 72 73 typedef struct 74 { 75 G4double rmin, rmax, z; 76 } zplaneType; 77 78 G4GDMLReadSolids(); 79 virtual ~G4GDMLReadSolids(); 80 81 void BooleanRead(const xercesc::DOMElement* const, const BooleanOp); 82 void BoxRead(const xercesc::DOMElement* const); 83 void ConeRead(const xercesc::DOMElement* const); 84 void ElconeRead(const xercesc::DOMElement* const); 85 void EllipsoidRead(const xercesc::DOMElement* const); 86 void EltubeRead(const xercesc::DOMElement* const); 87 void XtruRead(const xercesc::DOMElement* const); 88 void HypeRead(const xercesc::DOMElement* const); 89 void MultiUnionNodeRead(const xercesc::DOMElement* const, 90 G4MultiUnion* const); 91 void MultiUnionRead(const xercesc::DOMElement* const); 92 void OrbRead(const xercesc::DOMElement* const); 93 void ParaRead(const xercesc::DOMElement* const); 94 void ParaboloidRead(const xercesc::DOMElement* const); 95 void PolyconeRead(const xercesc::DOMElement* const); 96 void GenericPolyconeRead(const xercesc::DOMElement* const); 97 void PolyhedraRead(const xercesc::DOMElement* const); 98 void GenericPolyhedraRead(const xercesc::DOMElement* const); 99 G4QuadrangularFacet* QuadrangularRead(const xercesc::DOMElement* const); 100 void ReflectedSolidRead(const xercesc::DOMElement* const); 101 void ScaledSolidRead(const xercesc::DOMElement* const); 102 G4ExtrudedSolid::ZSection SectionRead(const xercesc::DOMElement* const, 103 G4double); 104 void SphereRead(const xercesc::DOMElement* const); 105 void TessellatedRead(const xercesc::DOMElement* const); 106 void TetRead(const xercesc::DOMElement* const); 107 void TorusRead(const xercesc::DOMElement* const); 108 void GenTrapRead(const xercesc::DOMElement* const); 109 void TrapRead(const xercesc::DOMElement* const); 110 void TrdRead(const xercesc::DOMElement* const); 111 void TubeRead(const xercesc::DOMElement* const); 112 void CutTubeRead(const xercesc::DOMElement* const); 113 void TwistedboxRead(const xercesc::DOMElement* const); 114 void TwistedtrapRead(const xercesc::DOMElement* const); 115 void TwistedtrdRead(const xercesc::DOMElement* const); 116 void TwistedtubsRead(const xercesc::DOMElement* const); 117 G4TriangularFacet* TriangularRead(const xercesc::DOMElement* const); 118 G4TwoVector TwoDimVertexRead(const xercesc::DOMElement* const, G4double); 119 zplaneType ZplaneRead(const xercesc::DOMElement* const); 120 rzPointType RZPointRead(const xercesc::DOMElement* const); 121 void OpticalSurfaceRead(const xercesc::DOMElement* const); 122 void PropertyRead(const xercesc::DOMElement* const, G4OpticalSurface*); 123 124 private: 125 126 std::map<G4String, G4MaterialPropertyVector*> mapOfMatPropVects; 127 }; 128 129 #endif 130