G4ExtrudedSolid


Directory: source/geometry/solids/specific/include
File Name: G4ExtrudedSolid.hh






Class Description :

  
  
   G4ExtrudedSolid is a solid which represents the extrusion of an arbitrary
   polygon with fixed outline in the defined Z sections.
   The z-sides of the solid are the scaled versions of the same polygon.
   The solid is implemented as a specification of G4TessellatedSolid.
    
   Parameters in the constructor:
   const G4String& pName             - solid name
   std::vector polygon  - the vertices of the outlined polygon
                                       defined in clockwise or anti-clockwise order     
   std::vector             - the z-sections defined by
                                       z position, offset and scale
                                       in increasing z-position order
  
   Parameters in the special constructor (for solid with 2 z-sections:
   G4double halfZ                    - the solid half length in Z
   G4TwoVector off1                  - offset of the side in -halfZ
   G4double scale1                   - scale of the side in -halfZ
   G4TwoVector off2                  - offset of the side in +halfZ
   G4double scale2                   - scale of the side in -halfZ


Public members :

     G4ExtrudedSolid( const G4String&                 pName,
                            std::vector  polygon,
                            std::vector     zsections);
       // General constructor

     G4ExtrudedSolid( const G4String&                 pName,
                            std::vector  polygon,
                            G4double                  halfZ,
                            G4TwoVector off1, G4double scale1,
                            G4TwoVector off2, G4double scale2 );
       // Special constructor for solid with 2 z-sections

     virtual ~G4ExtrudedSolid();
       // Destructor

    // Accessors

    inline G4int       GetNofVertices() const;
    inline G4TwoVector GetVertex(G4int index) const;
    inline std::vector GetPolygon() const;

    inline G4int       GetNofZSections() const;
    inline ZSection    GetZSection(G4int index) const;
    inline std::vector GetZSections() const;

    // Solid methods                                

    EInside  Inside (const G4ThreeVector &p) const;
    G4double DistanceToOut(const G4ThreeVector &p,
                           const G4ThreeVector &v,
                           const G4bool calcNorm=false,
                                 G4bool *validNorm=0, G4ThreeVector *n=0) const;
    G4double DistanceToOut (const G4ThreeVector &p) const;
    G4GeometryType GetEntityType () const;
    G4VSolid* Clone() const;

    std::ostream& StreamInfo(std::ostream &os) const;