Import Geant4 10.7.0.beta source tree
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4specsolids
|
||||
# Package: Geant4.src.G4geometry..G4specsolids
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -16,28 +16,42 @@ committal in the source repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
21-May-2020 G.Lima (geom-specific-V10-05-23)
|
||||
- Fix constructor signatures in G4UExtrudedSolid wrapper.
|
||||
May 21, 2020 Guilherme Lima (geom-specific-V10-06-08)
|
||||
----------------------------
|
||||
- Fix constructor signatures in G4UExtrudedSolid wrappers, to match those in G4 version.
|
||||
There were missing const and reference qualifiers in non-POD parameters.
|
||||
|
||||
17-January-2020 E.Tcherniaev (geom-specific-V10-05-22)
|
||||
30-April-2020 G.Cosmo (geom-specific-V10-06-07)
|
||||
- Adopt new convention for location of headers in VecGeom for all wrappers.
|
||||
|
||||
09-April-2020 E.Tcherniaev (geom-specific-V10-06-06)
|
||||
- Added G4GenericTrap::GetTwistedFaceSurfaceArea().
|
||||
- testG4GenericTrap.cc: fixed test for calculation of surface area.
|
||||
- testG4ExtrudedSolid.cc: fixed assert statements for cases where
|
||||
point flys along the surface (DistanceToIn() returns kInfinity).
|
||||
|
||||
17-January-2020 E.Tcherniaev (geom-specific-V10-06-05)
|
||||
- Implemented G4Tet::SetVertices(), it addresses request made
|
||||
at Geant4 Technical Forum.
|
||||
|
||||
14-January-2020 G.Cosmo
|
||||
14-January-2020 Gabriele Cosmo (geom-specific-V10-06-04)
|
||||
- Added protection in G4VFacet header for double definition of global
|
||||
symbols from Windows Kits code.
|
||||
|
||||
08-January-2020 E.Tcherniaev
|
||||
08-January-2020 E.Tcherniaev (geom-specific-V10-06-03)
|
||||
- Complete revision of G4Tet, speed up, new testG4Tet.cc.
|
||||
It also fixes issues spotted by new unit test.
|
||||
|
||||
16-December-2019 E.Tcherniaev
|
||||
16-December-2019 E.Tcherniaev (geom-specific-V10-06-02)
|
||||
- Complete revision of G4Ellipsoid, it fixes issues with former
|
||||
implementation, in particular it addresses problem report #2206.
|
||||
30%-70% speed-up in all main methods
|
||||
30%-70% speed-up in all main methods.
|
||||
|
||||
10-December-2019 G.Cosmo
|
||||
11-December-2019 B.Morgan (geom-specific-V10-06-01)
|
||||
- Cleanup CMake build, removing obsolete granular library options and
|
||||
explicit include_directories.
|
||||
|
||||
10-December-2019 G.Cosmo (geom-specific-V10-06-00)
|
||||
- Re-established parameterisation mechanism for G4Tet and G4UTet which was
|
||||
removed by mistake. Addressing problem report #2209.
|
||||
|
||||
|
||||
@@ -185,6 +185,10 @@ class G4GenericTrap : public G4VSolid
|
||||
const G4ThreeVector& p1,
|
||||
const G4ThreeVector& p2,
|
||||
const G4ThreeVector& p3) const;
|
||||
G4double GetTwistedFaceSurfaceArea(const G4ThreeVector& p0,
|
||||
const G4ThreeVector& p1,
|
||||
const G4ThreeVector& p2,
|
||||
const G4ThreeVector& p3) const;
|
||||
G4double GetFaceCubicVolume(const G4ThreeVector& p0,
|
||||
const G4ThreeVector& p1,
|
||||
const G4ThreeVector& p2,
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedEllipsoid.h>
|
||||
#include <VecGeom/volumes/UnplacedEllipsoid.h>
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedEllipticalCone.h>
|
||||
#include <VecGeom/volumes/UnplacedEllipticalCone.h>
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedEllipticalTube.h>
|
||||
#include <VecGeom/volumes/UnplacedEllipticalTube.h>
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedExtruded.h>
|
||||
#include <VecGeom/volumes/UnplacedExtruded.h>
|
||||
#include "G4TwoVector.hh"
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedGenericPolycone.h>
|
||||
#include <VecGeom/volumes/UnplacedGenericPolycone.h>
|
||||
|
||||
#include "G4TwoVector.hh"
|
||||
#include "G4PolyconeSide.hh"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedGenTrap.h>
|
||||
#include <VecGeom/volumes/UnplacedGenTrap.h>
|
||||
#include "G4TwoVector.hh"
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedHype.h>
|
||||
#include <VecGeom/volumes/UnplacedHype.h>
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedParaboloid.h>
|
||||
#include <VecGeom/volumes/UnplacedParaboloid.h>
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedPolycone.h>
|
||||
#include <VecGeom/volumes/UnplacedPolycone.h>
|
||||
|
||||
#include "G4TwoVector.hh"
|
||||
#include "G4PolyconeSide.hh"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedPolyhedron.h>
|
||||
#include <VecGeom/volumes/UnplacedPolyhedron.h>
|
||||
|
||||
#include "G4TwoVector.hh"
|
||||
#include "G4PolyhedraSide.hh"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedTessellated.h>
|
||||
#include <VecGeom/volumes/UnplacedTessellated.h>
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
#include "G4VFacet.hh"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
|
||||
|
||||
#include <volumes/UnplacedTet.h>
|
||||
#include <VecGeom/volumes/UnplacedTet.h>
|
||||
|
||||
#include "G4Polyhedron.hh"
|
||||
|
||||
|
||||
@@ -1,182 +1,154 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4specsolids
|
||||
# Package: Geant4.src.G4geometry.G4specsolids
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
include_directories(${USOLIDS_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/solids/CSG/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPNumerics/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/graphics_reps/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/intercoms/include)
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4specsolids
|
||||
HEADERS
|
||||
G4ClippablePolygon.hh
|
||||
G4ClippablePolygon.icc
|
||||
G4Ellipsoid.hh
|
||||
G4Ellipsoid.icc
|
||||
G4EllipticalCone.hh
|
||||
G4EllipticalCone.icc
|
||||
G4EllipticalTube.hh
|
||||
G4EllipticalTube.icc
|
||||
G4EnclosingCylinder.hh
|
||||
G4ExtrudedSolid.hh
|
||||
G4ExtrudedSolid.icc
|
||||
G4GenericPolycone.hh
|
||||
G4GenericPolycone.icc
|
||||
G4GenericTrap.hh
|
||||
G4GenericTrap.icc
|
||||
G4Hype.hh
|
||||
G4Hype.icc
|
||||
G4IntersectingCone.hh
|
||||
G4Paraboloid.hh
|
||||
G4Paraboloid.icc
|
||||
G4PolyPhiFace.hh
|
||||
G4PolyPhiFace.icc
|
||||
G4Polycone.hh
|
||||
G4Polycone.icc
|
||||
G4PolyconeHistorical.hh
|
||||
G4PolyconeSide.hh
|
||||
G4Polyhedra.hh
|
||||
G4Polyhedra.icc
|
||||
G4PolyhedraHistorical.hh
|
||||
G4PolyhedraSide.hh
|
||||
G4QuadrangularFacet.hh
|
||||
G4ReduciblePolygon.hh
|
||||
G4SolidExtentList.hh
|
||||
G4SolidsWorkspace.hh
|
||||
G4SurfBits.hh
|
||||
G4TessellatedGeometryAlgorithms.hh
|
||||
G4TessellatedSolid.hh
|
||||
G4Tet.hh
|
||||
G4TriangularFacet.hh
|
||||
G4TwistBoxSide.hh
|
||||
G4TwistTrapAlphaSide.hh
|
||||
G4TwistTrapFlatSide.hh
|
||||
G4TwistTrapParallelSide.hh
|
||||
G4TwistTubsFlatSide.hh
|
||||
G4TwistTubsHypeSide.hh
|
||||
G4TwistTubsSide.hh
|
||||
G4TwistedBox.hh
|
||||
G4TwistedTrap.hh
|
||||
G4TwistedTrd.hh
|
||||
G4TwistedTubs.hh
|
||||
G4UEllipsoid.hh
|
||||
G4UEllipticalCone.hh
|
||||
G4UEllipticalTube.hh
|
||||
G4UExtrudedSolid.hh
|
||||
G4UGenericPolycone.hh
|
||||
G4UGenericTrap.hh
|
||||
G4UHype.hh
|
||||
G4UParaboloid.hh
|
||||
G4UPolycone.hh
|
||||
G4UPolyhedra.hh
|
||||
G4UHype.hh
|
||||
G4UTessellatedSolid.hh
|
||||
G4UTet.hh
|
||||
G4VCSGface.hh
|
||||
G4VCSGfaceted.hh
|
||||
G4VFacet.hh
|
||||
G4Voxelizer.hh
|
||||
G4Voxelizer.icc
|
||||
G4VTwistSurface.hh
|
||||
G4VTwistSurface.icc
|
||||
G4VTwistedFaceted.hh
|
||||
SOURCES
|
||||
G4ClippablePolygon.cc
|
||||
G4Ellipsoid.cc
|
||||
G4EllipticalCone.cc
|
||||
G4EllipticalTube.cc
|
||||
G4EnclosingCylinder.cc
|
||||
G4ExtrudedSolid.cc
|
||||
G4GenericPolycone.cc
|
||||
G4GenericTrap.cc
|
||||
G4Hype.cc
|
||||
G4IntersectingCone.cc
|
||||
G4Paraboloid.cc
|
||||
G4PolyPhiFace.cc
|
||||
G4Polycone.cc
|
||||
G4PolyconeHistorical.cc
|
||||
G4PolyconeSide.cc
|
||||
G4Polyhedra.cc
|
||||
G4PolyhedraHistorical.cc
|
||||
G4PolyhedraSide.cc
|
||||
G4QuadrangularFacet.cc
|
||||
G4ReduciblePolygon.cc
|
||||
G4SolidExtentList.cc
|
||||
G4SolidsWorkspace.cc
|
||||
G4SurfBits.cc
|
||||
G4TessellatedGeometryAlgorithms.cc
|
||||
G4TessellatedSolid.cc
|
||||
G4Tet.cc
|
||||
G4TriangularFacet.cc
|
||||
G4TwistBoxSide.cc
|
||||
G4TwistTrapAlphaSide.cc
|
||||
G4TwistTrapFlatSide.cc
|
||||
G4TwistTrapParallelSide.cc
|
||||
G4TwistTubsFlatSide.cc
|
||||
G4TwistTubsHypeSide.cc
|
||||
G4TwistTubsSide.cc
|
||||
G4TwistedBox.cc
|
||||
G4TwistedTrap.cc
|
||||
G4TwistedTrd.cc
|
||||
G4TwistedTubs.cc
|
||||
G4UEllipsoid.cc
|
||||
G4UEllipticalCone.cc
|
||||
G4UEllipticalTube.cc
|
||||
G4UExtrudedSolid.cc
|
||||
G4UGenericPolycone.cc
|
||||
G4UGenericTrap.cc
|
||||
G4UHype.cc
|
||||
G4UParaboloid.cc
|
||||
G4UPolycone.cc
|
||||
G4UPolyhedra.cc
|
||||
G4UTessellatedSolid.cc
|
||||
G4UTet.cc
|
||||
G4VCSGfaceted.cc
|
||||
G4VFacet.cc
|
||||
G4Voxelizer.cc
|
||||
G4VTwistSurface.cc
|
||||
G4VTwistedFaceted.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4csg
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4graphics_reps
|
||||
G4hepnumerics
|
||||
G4intercoms
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4global
|
||||
G4graphics_reps
|
||||
G4intercoms
|
||||
LINK_LIBRARIES
|
||||
${VECGEOM_LIBRARIES}
|
||||
geant4_define_module(NAME G4specsolids
|
||||
HEADERS
|
||||
G4ClippablePolygon.hh
|
||||
G4ClippablePolygon.icc
|
||||
G4Ellipsoid.hh
|
||||
G4Ellipsoid.icc
|
||||
G4EllipticalCone.hh
|
||||
G4EllipticalCone.icc
|
||||
G4EllipticalTube.hh
|
||||
G4EllipticalTube.icc
|
||||
G4EnclosingCylinder.hh
|
||||
G4ExtrudedSolid.hh
|
||||
G4ExtrudedSolid.icc
|
||||
G4GenericPolycone.hh
|
||||
G4GenericPolycone.icc
|
||||
G4GenericTrap.hh
|
||||
G4GenericTrap.icc
|
||||
G4Hype.hh
|
||||
G4Hype.icc
|
||||
G4IntersectingCone.hh
|
||||
G4Paraboloid.hh
|
||||
G4Paraboloid.icc
|
||||
G4PolyPhiFace.hh
|
||||
G4PolyPhiFace.icc
|
||||
G4Polycone.hh
|
||||
G4Polycone.icc
|
||||
G4PolyconeHistorical.hh
|
||||
G4PolyconeSide.hh
|
||||
G4Polyhedra.hh
|
||||
G4Polyhedra.icc
|
||||
G4PolyhedraHistorical.hh
|
||||
G4PolyhedraSide.hh
|
||||
G4QuadrangularFacet.hh
|
||||
G4ReduciblePolygon.hh
|
||||
G4SolidExtentList.hh
|
||||
G4SolidsWorkspace.hh
|
||||
G4SurfBits.hh
|
||||
G4TessellatedGeometryAlgorithms.hh
|
||||
G4TessellatedSolid.hh
|
||||
G4Tet.hh
|
||||
G4TriangularFacet.hh
|
||||
G4TwistBoxSide.hh
|
||||
G4TwistTrapAlphaSide.hh
|
||||
G4TwistTrapFlatSide.hh
|
||||
G4TwistTrapParallelSide.hh
|
||||
G4TwistTubsFlatSide.hh
|
||||
G4TwistTubsHypeSide.hh
|
||||
G4TwistTubsSide.hh
|
||||
G4TwistedBox.hh
|
||||
G4TwistedTrap.hh
|
||||
G4TwistedTrd.hh
|
||||
G4TwistedTubs.hh
|
||||
G4UEllipsoid.hh
|
||||
G4UEllipticalCone.hh
|
||||
G4UEllipticalTube.hh
|
||||
G4UExtrudedSolid.hh
|
||||
G4UGenericPolycone.hh
|
||||
G4UGenericTrap.hh
|
||||
G4UHype.hh
|
||||
G4UParaboloid.hh
|
||||
G4UPolycone.hh
|
||||
G4UPolyhedra.hh
|
||||
G4UHype.hh
|
||||
G4UTessellatedSolid.hh
|
||||
G4UTet.hh
|
||||
G4VCSGface.hh
|
||||
G4VCSGfaceted.hh
|
||||
G4VFacet.hh
|
||||
G4Voxelizer.hh
|
||||
G4Voxelizer.icc
|
||||
G4VTwistSurface.hh
|
||||
G4VTwistSurface.icc
|
||||
G4VTwistedFaceted.hh
|
||||
SOURCES
|
||||
G4ClippablePolygon.cc
|
||||
G4Ellipsoid.cc
|
||||
G4EllipticalCone.cc
|
||||
G4EllipticalTube.cc
|
||||
G4EnclosingCylinder.cc
|
||||
G4ExtrudedSolid.cc
|
||||
G4GenericPolycone.cc
|
||||
G4GenericTrap.cc
|
||||
G4Hype.cc
|
||||
G4IntersectingCone.cc
|
||||
G4Paraboloid.cc
|
||||
G4PolyPhiFace.cc
|
||||
G4Polycone.cc
|
||||
G4PolyconeHistorical.cc
|
||||
G4PolyconeSide.cc
|
||||
G4Polyhedra.cc
|
||||
G4PolyhedraHistorical.cc
|
||||
G4PolyhedraSide.cc
|
||||
G4QuadrangularFacet.cc
|
||||
G4ReduciblePolygon.cc
|
||||
G4SolidExtentList.cc
|
||||
G4SolidsWorkspace.cc
|
||||
G4SurfBits.cc
|
||||
G4TessellatedGeometryAlgorithms.cc
|
||||
G4TessellatedSolid.cc
|
||||
G4Tet.cc
|
||||
G4TriangularFacet.cc
|
||||
G4TwistBoxSide.cc
|
||||
G4TwistTrapAlphaSide.cc
|
||||
G4TwistTrapFlatSide.cc
|
||||
G4TwistTrapParallelSide.cc
|
||||
G4TwistTubsFlatSide.cc
|
||||
G4TwistTubsHypeSide.cc
|
||||
G4TwistTubsSide.cc
|
||||
G4TwistedBox.cc
|
||||
G4TwistedTrap.cc
|
||||
G4TwistedTrd.cc
|
||||
G4TwistedTubs.cc
|
||||
G4UEllipsoid.cc
|
||||
G4UEllipticalCone.cc
|
||||
G4UEllipticalTube.cc
|
||||
G4UExtrudedSolid.cc
|
||||
G4UGenericPolycone.cc
|
||||
G4UGenericTrap.cc
|
||||
G4UHype.cc
|
||||
G4UParaboloid.cc
|
||||
G4UPolycone.cc
|
||||
G4UPolyhedra.cc
|
||||
G4UTessellatedSolid.cc
|
||||
G4UTet.cc
|
||||
G4VCSGfaceted.cc
|
||||
G4VFacet.cc
|
||||
G4Voxelizer.cc
|
||||
G4VTwistSurface.cc
|
||||
G4VTwistedFaceted.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4csg
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4graphics_reps
|
||||
G4hepnumerics
|
||||
G4intercoms
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4global
|
||||
G4graphics_reps
|
||||
G4intercoms
|
||||
LINK_LIBRARIES
|
||||
${VECGEOM_LIBRARIES}
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
|
||||
@@ -1383,31 +1383,36 @@ G4ThreeVector G4GenericTrap::GetPointOnSurface() const
|
||||
|
||||
G4double G4GenericTrap::GetSurfaceArea()
|
||||
{
|
||||
// Set vertices
|
||||
G4ThreeVector v0(fVertices[0].x(),fVertices[0].y(),-fDz);
|
||||
G4ThreeVector v1(fVertices[1].x(),fVertices[1].y(),-fDz);
|
||||
G4ThreeVector v2(fVertices[2].x(),fVertices[2].y(),-fDz);
|
||||
G4ThreeVector v3(fVertices[3].x(),fVertices[3].y(),-fDz);
|
||||
G4ThreeVector v4(fVertices[4].x(),fVertices[4].y(), fDz);
|
||||
G4ThreeVector v5(fVertices[5].x(),fVertices[5].y(), fDz);
|
||||
G4ThreeVector v6(fVertices[6].x(),fVertices[6].y(), fDz);
|
||||
G4ThreeVector v7(fVertices[7].x(),fVertices[7].y(), fDz);
|
||||
|
||||
// Find Surface Area
|
||||
if (fSurfaceArea == 0.0)
|
||||
{
|
||||
if(fIsTwisted)
|
||||
{
|
||||
fSurfaceArea = G4VSolid::GetSurfaceArea();
|
||||
fSurfaceArea = GetFaceSurfaceArea(v0,v1,v2,v3) // -fDz plane
|
||||
+ GetTwistedFaceSurfaceArea(v1,v0,v4,v5) // Lat plane
|
||||
+ GetTwistedFaceSurfaceArea(v2,v1,v5,v6) // Lat plane
|
||||
+ GetTwistedFaceSurfaceArea(v3,v2,v6,v7) // Lat plane
|
||||
+ GetTwistedFaceSurfaceArea(v0,v3,v7,v4) // Lat plane
|
||||
+ GetFaceSurfaceArea(v7,v6,v5,v4); // +fDz plane
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
// Set vertices
|
||||
G4ThreeVector vertix0(fVertices[0].x(),fVertices[0].y(),-fDz);
|
||||
G4ThreeVector vertix1(fVertices[1].x(),fVertices[1].y(),-fDz);
|
||||
G4ThreeVector vertix2(fVertices[2].x(),fVertices[2].y(),-fDz);
|
||||
G4ThreeVector vertix3(fVertices[3].x(),fVertices[3].y(),-fDz);
|
||||
G4ThreeVector vertix4(fVertices[4].x(),fVertices[4].y(), fDz);
|
||||
G4ThreeVector vertix5(fVertices[5].x(),fVertices[5].y(), fDz);
|
||||
G4ThreeVector vertix6(fVertices[6].x(),fVertices[6].y(), fDz);
|
||||
G4ThreeVector vertix7(fVertices[7].x(),fVertices[7].y(), fDz);
|
||||
|
||||
// Find Surface Area
|
||||
fSurfaceArea = GetFaceSurfaceArea(vertix0,vertix1,vertix2,vertix3) // -fDz plane
|
||||
+ GetFaceSurfaceArea(vertix1,vertix0,vertix4,vertix5) // Lat plane
|
||||
+ GetFaceSurfaceArea(vertix2,vertix1,vertix5,vertix6) // Lat plane
|
||||
+ GetFaceSurfaceArea(vertix3,vertix2,vertix6,vertix7) // Lat plane
|
||||
+ GetFaceSurfaceArea(vertix0,vertix3,vertix7,vertix4) // Lat plane
|
||||
+ GetFaceSurfaceArea(vertix7,vertix6,vertix5,vertix4); // +fDz plane
|
||||
fSurfaceArea = GetFaceSurfaceArea(v0,v1,v2,v3) // -fDz plane
|
||||
+ GetFaceSurfaceArea(v1,v0,v4,v5) // Lat plane
|
||||
+ GetFaceSurfaceArea(v2,v1,v5,v6) // Lat plane
|
||||
+ GetFaceSurfaceArea(v3,v2,v6,v7) // Lat plane
|
||||
+ GetFaceSurfaceArea(v0,v3,v7,v4) // Lat plane
|
||||
+ GetFaceSurfaceArea(v7,v6,v5,v4); // +fDz plane
|
||||
}
|
||||
}
|
||||
return fSurfaceArea;
|
||||
@@ -1426,22 +1431,22 @@ G4double G4GenericTrap::GetCubicVolume()
|
||||
else
|
||||
{
|
||||
// Set vertices
|
||||
G4ThreeVector vertix0(fVertices[0].x(),fVertices[0].y(),-fDz);
|
||||
G4ThreeVector vertix1(fVertices[1].x(),fVertices[1].y(),-fDz);
|
||||
G4ThreeVector vertix2(fVertices[2].x(),fVertices[2].y(),-fDz);
|
||||
G4ThreeVector vertix3(fVertices[3].x(),fVertices[3].y(),-fDz);
|
||||
G4ThreeVector vertix4(fVertices[4].x(),fVertices[4].y(), fDz);
|
||||
G4ThreeVector vertix5(fVertices[5].x(),fVertices[5].y(), fDz);
|
||||
G4ThreeVector vertix6(fVertices[6].x(),fVertices[6].y(), fDz);
|
||||
G4ThreeVector vertix7(fVertices[7].x(),fVertices[7].y(), fDz);
|
||||
G4ThreeVector v0(fVertices[0].x(),fVertices[0].y(),-fDz);
|
||||
G4ThreeVector v1(fVertices[1].x(),fVertices[1].y(),-fDz);
|
||||
G4ThreeVector v2(fVertices[2].x(),fVertices[2].y(),-fDz);
|
||||
G4ThreeVector v3(fVertices[3].x(),fVertices[3].y(),-fDz);
|
||||
G4ThreeVector v4(fVertices[4].x(),fVertices[4].y(), fDz);
|
||||
G4ThreeVector v5(fVertices[5].x(),fVertices[5].y(), fDz);
|
||||
G4ThreeVector v6(fVertices[6].x(),fVertices[6].y(), fDz);
|
||||
G4ThreeVector v7(fVertices[7].x(),fVertices[7].y(), fDz);
|
||||
|
||||
// Find Cubic Volume
|
||||
fCubicVolume = GetFaceCubicVolume(vertix0,vertix1,vertix2,vertix3) // -fDz plane
|
||||
+ GetFaceCubicVolume(vertix1,vertix0,vertix4,vertix5) // Lat plane
|
||||
+ GetFaceCubicVolume(vertix2,vertix1,vertix5,vertix6) // Lat plane
|
||||
+ GetFaceCubicVolume(vertix3,vertix2,vertix6,vertix7) // Lat plane
|
||||
+ GetFaceCubicVolume(vertix0,vertix3,vertix7,vertix4) // Lat plane
|
||||
+ GetFaceCubicVolume(vertix7,vertix6,vertix5,vertix4); // +fDz plane
|
||||
fCubicVolume = GetFaceCubicVolume(v0,v1,v2,v3) // -fDz plane
|
||||
+ GetFaceCubicVolume(v1,v0,v4,v5) // Lat plane
|
||||
+ GetFaceCubicVolume(v2,v1,v5,v6) // Lat plane
|
||||
+ GetFaceCubicVolume(v3,v2,v6,v7) // Lat plane
|
||||
+ GetFaceCubicVolume(v0,v3,v7,v4) // Lat plane
|
||||
+ GetFaceCubicVolume(v7,v6,v5,v4); // +fDz plane
|
||||
}
|
||||
}
|
||||
return fCubicVolume;
|
||||
@@ -1450,12 +1455,44 @@ G4double G4GenericTrap::GetCubicVolume()
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
G4double G4GenericTrap::GetFaceSurfaceArea(const G4ThreeVector& p0,
|
||||
const G4ThreeVector& p1,
|
||||
const G4ThreeVector& p1,
|
||||
const G4ThreeVector& p2,
|
||||
const G4ThreeVector& p3) const
|
||||
{
|
||||
// Returns area of the facet
|
||||
return (((p2-p0).cross(p3-p1)).mag()) / 2.;
|
||||
return 0.5*((p2-p0).cross(p3-p1)).mag();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
G4double
|
||||
G4GenericTrap::GetTwistedFaceSurfaceArea(const G4ThreeVector& p0,
|
||||
const G4ThreeVector& p1,
|
||||
const G4ThreeVector& p2,
|
||||
const G4ThreeVector& p3) const
|
||||
{
|
||||
G4int nstep = 100;
|
||||
G4ThreeVector dels1 = (p1 - p0)/nstep;
|
||||
G4ThreeVector dels2 = (p2 - p3)/nstep;
|
||||
G4double area = 0;
|
||||
for (G4int is = 0; is < nstep; ++is)
|
||||
{
|
||||
G4ThreeVector s0 = p0 + dels1*is;
|
||||
G4ThreeVector s1 = s0 + dels1;
|
||||
G4ThreeVector s3 = p3 + dels2*is;
|
||||
G4ThreeVector s2 = s3 + dels2;
|
||||
G4ThreeVector delt1 = (s3 - s0)/nstep;
|
||||
G4ThreeVector delt2 = (s2 - s1)/nstep;
|
||||
for (G4int it = 0; it < nstep; ++it)
|
||||
{
|
||||
G4ThreeVector t0 = s0 + delt1*it;
|
||||
G4ThreeVector t1 = t0 + delt1;
|
||||
G4ThreeVector t3 = s1 + delt2*it;
|
||||
G4ThreeVector t2 = t3 + delt2;
|
||||
area += 0.5*((t2-t0).cross(t3-t1)).mag();
|
||||
}
|
||||
}
|
||||
return area;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user