G4GDMLWriteSolids.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 //
00029 //
00030 // class G4GDMLWriteSolids
00031 //
00032 // Class description:
00033 //
00034 // GDML class for writing solids.
00035 
00036 // History:
00037 // - Created.                                  Zoltan Torzsok, November 2007
00038 // -------------------------------------------------------------------------
00039 
00040 #ifndef _G4GDMLWRITESOLIDS_INCLUDED_
00041 #define _G4GDMLWRITESOLIDS_INCLUDED_
00042 
00043 #include "G4Types.hh"
00044 
00045 #include "G4GDMLWriteMaterials.hh"
00046 
00047 class G4BooleanSolid;
00048 class G4Box;
00049 class G4Cons;
00050 class G4EllipticalCone;
00051 class G4Ellipsoid;
00052 class G4EllipticalTube;
00053 class G4ExtrudedSolid;
00054 class G4Hype;
00055 class G4Orb;
00056 class G4Para;
00057 class G4Paraboloid;
00058 class G4Polycone;
00059 class G4Polyhedra;
00060 class G4Sphere;
00061 class G4TessellatedSolid;
00062 class G4Tet;
00063 class G4Torus;
00064 class G4GenericTrap;
00065 class G4Trap;
00066 class G4Trd;
00067 class G4Tubs;
00068 class G4CutTubs;
00069 class G4TwistedBox;
00070 class G4TwistedTrap;
00071 class G4TwistedTrd;
00072 class G4TwistedTubs;
00073 class G4VSolid;
00074 class G4OpticalSurface;
00075 
00076 class G4GDMLWriteSolids : public G4GDMLWriteMaterials
00077 {
00078   public:
00079 
00080    virtual void AddSolid(const G4VSolid* const);
00081    virtual void SolidsWrite(xercesc::DOMElement*);
00082 
00083   protected:
00084 
00085    G4GDMLWriteSolids();
00086    virtual ~G4GDMLWriteSolids();
00087 
00088    void BooleanWrite(xercesc::DOMElement*, const G4BooleanSolid* const);
00089    void BoxWrite(xercesc::DOMElement*, const G4Box* const);
00090    void ConeWrite(xercesc::DOMElement*, const G4Cons* const);
00091    void ElconeWrite(xercesc::DOMElement*, const G4EllipticalCone* const);
00092    void EllipsoidWrite(xercesc::DOMElement*, const G4Ellipsoid* const);
00093    void EltubeWrite(xercesc::DOMElement*, const G4EllipticalTube* const);
00094    void XtruWrite(xercesc::DOMElement*, const G4ExtrudedSolid* const);
00095    void HypeWrite(xercesc::DOMElement*, const G4Hype* const);
00096    void OrbWrite(xercesc::DOMElement*, const G4Orb* const);
00097    void ParaWrite(xercesc::DOMElement*, const G4Para* const);
00098    void ParaboloidWrite(xercesc::DOMElement*, const G4Paraboloid* const);
00099    void PolyconeWrite(xercesc::DOMElement*, const G4Polycone* const);
00100    void PolyhedraWrite(xercesc::DOMElement*, const G4Polyhedra* const);
00101    void SphereWrite(xercesc::DOMElement*, const G4Sphere* const);
00102    void TessellatedWrite(xercesc::DOMElement*, const G4TessellatedSolid* const);
00103    void TetWrite(xercesc::DOMElement*, const G4Tet* const);
00104    void TorusWrite(xercesc::DOMElement*, const G4Torus* const);
00105    void GenTrapWrite(xercesc::DOMElement*, const G4GenericTrap* const);
00106    void TrapWrite(xercesc::DOMElement*, const G4Trap* const);
00107    void TrdWrite(xercesc::DOMElement*, const G4Trd* const);
00108    void TubeWrite(xercesc::DOMElement*, const G4Tubs* const);
00109    void CutTubeWrite(xercesc::DOMElement*, const G4CutTubs* const);
00110    void TwistedboxWrite(xercesc::DOMElement*, const G4TwistedBox* const);
00111    void TwistedtrapWrite(xercesc::DOMElement*, const G4TwistedTrap* const);
00112    void TwistedtrdWrite(xercesc::DOMElement*, const G4TwistedTrd* const);
00113    void TwistedtubsWrite(xercesc::DOMElement*, const G4TwistedTubs* const);
00114    void ZplaneWrite(xercesc::DOMElement*, const G4double&,
00115                     const G4double&, const G4double&);
00116    void OpticalSurfaceWrite(xercesc::DOMElement*,
00117                     const G4OpticalSurface* const);
00118 
00119   protected:
00120 
00121    std::vector<const G4VSolid*> solidList;
00122    xercesc::DOMElement* solidsElement;
00123    static const G4int maxTransforms = 8; // Constant for limiting the number
00124                                          // of displacements/reflections
00125                                          // applied to a single solid
00126 };
00127 
00128 #endif

Generated on Mon May 27 17:48:20 2013 for Geant4 by  doxygen 1.4.7