# Category geom-specific History

See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
which **must** added in reverse chronological order (newest at the top).
It must **not** be used as a substitute for writing good git commit messages!

-------------------------------------------------------------------------------

## 2025-03-07 Soon Yung Jun (geom-specific-V11-02-09)
- G4Polyhedra, G4UPolyhedra: Verify the validity of the delta phi to restore
  visualization of HepPolyhedronPgon

## 2025-02-03 Gabriele Cosmo
- Removed fake default constructor from G4U* wrappers, clearing compilation
  warnings on gcc-14.

## 2024-10-01 Evgueni Tcherniaev (geom-specific-V11-02-08)
- G4GenericTrap: Fixed minor defect reported by Coverity.

## 2024-07-18 Alvaro Tolosa-Delgado (geom-specific-V11-02-07)
- Remove internal state of G4TwistedTubs and G4VTwistedFaceted.

## 2024-07-10 Evgueni Tcherniaev (geom-specific-V11-02-06)
- G4ExtrudedSolid: Fixed defects reported by Coverity

## 2024-07-08 Gabriele Cosmo (geom-specific-V11-02-05)
- Fixed reported Coverity defect; in G4Voxelizer, use std::move instead of
  plain vector copy in methods BuildReduceVoxels(..), BuildReduceVoxels2(..),
  BuildBoundaries() and CreateMiniVoxels(..).

## 2024-05-29 Evgueni Tcherniaev (geom-specific-V11-02-04)
- Added new methods GetNumOfConstituents() and IsFaceted().

## 2024-05-27 Evgueni Tcherniaev (geom-specific-V11-02-03)
- Completely revised G4GeneriTrap, it addresses the problem report #2547

## 2024-05-26 Evgueni Tcherniaev (geom-specific-V11-02-02)
- New testG4GenericTrap.cc

## 2024-04-02 Gabriele Cosmo (geom-specific-V11-02-01)
- Applied trivial clang-tidy fixes to classes, i.e. use of 'override' and
  'default' keywords.

## 2024-02-01 Gabriele Cosmo (geom-specific-V11-02-00)
- Use std::size_t for array sizes in G4PolyhedraSide and G4PolyPhiFace.

## 2023-07-10 Evgueni Tcherniaev (geom-specific-V11-01-06)
- Fixed bounding box calculation in G4VTwistedFaceted::BoundingLimits().

## 2023-06-16 Stephan Hageboeck (geom-specific-V11-01-05)
- Fix an uninitialised value in G4VCSGfaceted::SurfaceNormal().

## 2023-06-12 Gabriele Cosmo (geom-specific-V11-01-04)
- Use const iterator in G4Voxelizer::GetPointVoxel().
- Fixed use of index in G4Tet::GetPointOnSurface().

## 2023-05-10 Gabriele Cosmo (geom-specific-V11-01-03)
- Applied clang-tidy fixes (readability, modernization, performance, ...).

## 2023-03-20 Gabriele Cosmo (geom-specific-V11-01-02)
- Fixed more potential uninitialised values in G4PolyconeSide,
  G4SolidExtentList and G4VTwistSurface.

## 2023-03-13 Gabriele Cosmo (geom-specific-V11-01-01)
- Fixed potential uninitialised value for boundary type in
  G4VTwistSurface::GetBoundaryAtPZ().

## 2023-01-02 Evgueni Tcherniaev (geom-specific-V11-01-00)
- G4QuadrangularFacet: Fixed warning message

## 2022-11-10 Gabriele Cosmo (geom-specific-V11-00-10)
- Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1.

## 2022-10-05 Gabriele Cosmo (geom-specific-V11-00-09)
- Fixed compilation warnings in Intel/icx compiler for variables set
  but never used.

## 2022-04-03 Evgueni Tcherniaev (geom-specific-V11-00-08)
- G4GenericTrap.cc, G4UGenericTrap.cc, G4UExtrudedSolid.cc,
  G4TessellatedSolid.cc, G4TessellatedSolid.cc:
  revision of CreatePolyhedron()

## 2022-02-04 Evgueni Tcherniaev (geom-specific-V11-00-07)
- G4VTwistedFaceted: used numerical evaluation of a single
  integral to calculate lateral face surface area

## 2022-02-01 Evgueni Tcherniaev (geom-specific-V11-00-06)
- G4ExtrudedSolid, G4UExtrudedSolid: added default values for
  parameters in the constructor with two z-sections
- G4ExtrudedSolid::ZSection, G4UExtrudedSolid::ZSection:
  added default constructor

## 2022-01-26 Evgueni Tcherniaev (geom-specific-V11-00-05)
- G4GenericTrap::GetCubicVolume(): calculation of volume
  using analytical expression; removed private function
  GetFaceCubicVolume();
- G4GenericTrap::GetSurfaceArea(): improved calculation
  of the area of lateral faces; private functions
  GetFaceSurfaceArea(), GetTwistedFaceSurfaceArea()
  replaced with private function GetLateralFaceArea()

## 2022-01-21 Evgueni Tcherniaev (geom-specific-V11-00-04)
- G4Ellipsoid::LateralSurfaceArea(): Enhanced calculation of
  the lateral surface area

## 2022-01-11 Evgueni Tcherniaev (geom-specific-V11-00-03)
- G4VTwistedFaceted: fCubicVolume, fSurfaceArea made protected,
  GetCubicVolume(), GetSurfaceArea() moved to *.cc
- G4VTwistedFaceted, G4TwistedBox, G4TwistedTrd: optimized
  calculation of volume and surface area

## 2022-01-06 Evgueni Tcherniaev (geom-specific-V11-00-02)
- G4TwistedTubs: Implemented GetSurfaceArea() based on
  analytical expressions; added private functions
  GetLateralArea() and GetPhiCutArea()

## 2021-12-19 Evgueni Tcherniaev (geom-specific-V11-00-01)
- G4Hype: Used analytical expression in GetCubicVolume()
  and GetSurfaceArea()

## 2021-12-10 Ben Morgan (geom-specific-V11-00-00)
- Change to new Markdown History format

---

# History entries prior to 11.0

03-December-2021 E.Tcherniaev      (geom-specific-V10-07-13)
- G4TwistedTubs: Accurate calculation of the bounding box in
  BoundingLimits() and GetExtent(), fixing measured performance
  penalty. Addressing problem report #2450.
- G4TwistedTubs, G4VTwistedFaceted: Fixed GetCubicVolume()

15-October-2021 E.Tcherniaev       (geom-specific-V10-07-12)
- G4Tet, G4UTet: Added SetBoundingLimits()

06-October-2021 E.Tcherniaev       (geom-specific-V10-07-11)
- G4Tet: some changes in calculation of bounding box
- G4UTet: added CheckDegeneracy() and SetVertices()

27-September-2021 E.Tcherniaev     (geom-specific-V10-07-10)
- Added degeneracyFlag to the list of parameters of G4Tet::SetVertices(),
  it addresses first part of the problem report #2427

24-September-2021 E.Tcherniaev     (geom-specific-V10-07-09)
- Implemented G4TesselatedSolid::GetFacetIndex(p)

10-September-2021 E.Tcherniaev     (geom-specific-V10-07-08)
- Implemented G4TesselatedSolid::CheckStructure()
- Optimisation in G4TessellatedSolid::SetExtremeFacets():
  shuffle of vertices and checking of six extreme vertices

21-July-2021 E.Tcherniaev          (geom-specific-V10-07-07)
- More accurate calculation of distance from point to triangle
  in G4TriangularFacet, it addresses problem report #2401

25-June-2021 G.Cosmo               (geom-specific-V10-07-06)
- Added missing accessor in G4UTet.

12-May-2021 E.Tcherniaev           (geom-specific-V10-07-05)
- Reimplemented	CreatePolyhedron() in
  G4Polyhedra, G4Polycone, G4GenericPolycone,
  G4UPolyhedra, G4UPolycone, G4UGenericPolycone

30-April-2021 G.Cosmo              (geom-specific-V10-07-04)
- Fixed use of conversion factor in G4UPolyhedra wrapper for "generic"
  polyhedra constructs.

19-April-2021 E.Tcherniaev         (geom-specific-V10-07-03)
- G4Polyhedra, G4Polycone: Fix calculation of endPhi for the case
  of negative phiStart, it addresses also problem report #2362

30-March-2021 B.Morgan             (geom-specific-V10-07-02)
- Migrate sources.cmake to modular build API

18-March-2021 E.Tcherniaev         (geom-specific-V10-07-01)
- Fix calculation of bounding box position in G4Voxelizer::BuildVoxelLimits(),
  it addresses problem report #2301

13-January-2021 G.Cosmo            (geom-specific-V10-07-00)
- Reduce cases of bad speculation in G4PolyhedraSide::Inside() and
  G4PolyPhiFace::InsideEdges(), based on report in profiling analysis
  by G.Amadio.

30-October-2020 E.Tcherniaev       (geom-specific-V10-06-10)
- G4Polycone: Revised GetPointOnSurface();
  Added protected auxiliary method SetSurfaceElements();
  Removed GetPointOnCone(), GetPointOnTubs(), GetPointOnCut(), GetPointOnRing();
- G4GenericPolycone: Revised GetPointOnSurface();
  Added protected auxiliary method SetSurfaceElements();
- G4Polyhedra: Revised GetPointOnSurface();
  Added protected auxiliary method SetSurfaceElements();
  Removed GetPointOnPlane(), GetPointOnTriangle();

01-October-2020 E.Tcherniaev       (geom-specific-V10-06-09)
- G4Polycone, G4GenericPolycone, G4Polyhedra:
  implemented GetSurfaceArea(), GetCubicVolume().

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.

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 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       (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      (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.

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.

26-November-2019 G.Cosmo           (geom-specific-V10-05-21)
- Fixed cases of implicit type conversions from size_t to G4int.

05-November-2019 E.Tcherniaev      (geom-specific-V10-05-20)
- G4TesselatedSolid.cc: fixed minor Coverity defect (uninitialized array)

07-October-2019 E.Tcherniaev       (geom-specific-V10-05-19)
- G4TesselatedSolid.cc: fixed minor Coverity defect

16-September-2019 G.Cosmo          (geom-specific-V10-05-18)
- Rationalise header inclusions for faceted solids.

06-September-2019 G.Cosmo          (geom-specific-V10-05-17)
- Removed unnecessary forward declaration in G4VFacet header.

29-August-2019 G.Cosmo             (geom-specific-V10-05-16)
- Minor c++11 revision and headers cleanup. Code formatting.
- Use pre-increment wherever possible.

19-August-2019 G.Lima              (geom-specific-V10-05-15)
- G4ExtrudedSolid: fixed a bug in DistanceToOut(), affecting extruded solids
  defined off-center along the z-axis.

19-August-2019 G.Cosmo             (geom-specific-V10-05-14)
- G4GenericTrap: fixed compilation warnings for variable shadowing on clang-8.

13-August-2019 G.Cosmo             (geom-specific-V10-05-13)
- Enabled wrappers for VecGeom implementation of G4EllipticalTube,
  G4EllipticalCone and G4Ellipsoid.

10-July-2019 E.Tcherniaev          (geom-specific-V10-05-12)
- Fixed G4UExtrudedSolid::CreatePolyhedron().
  Addressing visualization part of the problem report #2171.

04-July-2019 G.Cosmo               (geom-specific-V10-05-11)
- Avoid defining kCarTolerance as 'static const' in G4VFacet.
  Addressing problem report #2172.

11-June-2019 E.Tcherniaev          (geom-specific-V10-05-10)
- Use GetVertices() instead of GetParametersList() in the wrapper G4UTet.

29-May-2019 G.Cosmo                (geom-specific-V10-05-09)
- Fixed minor Coverity defects.

20-May-2019 G.Cosmo                (geom-specific-V10-05-08)
- Defined move constructor and move assignment operator for G4TriangularFacet.

14-May-2019 B.Morgan               (geom-specific-V10-05-07)
- Add inclusion of new G4GeomTypes.hh header to those headers allowing
  VecGeom replacement.
- See also geommng-10-05-05

23-April-2019  G.Cosmo             (geom-specific-V10-05-06)
- Modified G4PolyconeSide and G4PolyhedraSide to use only trivial types for
  MT splitted data in G4PlSideData and G4PhSideData respectively.

16-April-2019  G.Cosmo             (geom-specific-V10-05-05)
- Protected check in G4TwistTubsSide::DistanceToPlane() withing debug flag.

4-April-2019  G.Cosmo              (geom-specific-V10-05-04)
- Enabled wrapper for VecGeom implementation of G4GenericPolycone.

15-February-2019  E.Tcherniaev     (geom-specific-V10-05-03)
- Accurate calculation of radical in G4IntersectingCone.
  It addresses the problem report #2111.

4-February-2019  G.Cosmo           (geom-specific-V10-05-02)
- Fix in G4EllipticalTube::CheckParameters() for typo in condition.

30-January-2019  G.Cosmo           (geom-specific-V10-05-01)
- Disabled precise computation of extent and use simple bounding-box
  in CalculateExtent() for G4Tet and G4TessellatedSolid, to speed up
  intialisation in setups with relatively complex meshes.
- Apply bounding-box calculation for extent also for corresponding
  VecGeom wrappers.

24-January-2019  E.Tcherniaev      (geom-specific-V10-05-00)
- Completely revised, more robust and performant G4EllipticalTube;
  new exhaustive test/testEllipticalTube.cc based on Shape Conventions.

20-September-2018  G.Cosmo         (geom-specific-V10-04-15)
- Make G4UPolycone wrapper inheriting from vecgeom::GenericUnplacedPolycone,
  following the latest changes in VecGeom.

13-September-2018  G.Cosmo         (geom-specific-V10-04-14)
- G4UTessellatedSolid, G4UExtrudedSolid: removed leftover use of
  UVector3 and replaced with U3Vector.

23-August-2018  G.Cosmo            (geom-specific-V10-04-13)
- Enabled VecGeom wrapper for G4Tet.

10-August-2018  A.Gheata           (geom-specific-V10-04-12)
- Make G4UHype wrapper inheriting from vecgeom::GenericUnplacedHype,
  following the latest changes in VecGeom.

12-July-2018  G.Cosmo              (geom-specific-V10-04-11)
- Removed G4SolidsWorkspacePool class. Adapted G4SolidsWorkspace to
  use templated class G4TWorkspacePool.
- Coworks with tags in geometry/volumes, run and visualization/management.

25-Jun-2018  G.Cosmo               (geom-specific-V10-04-10)
- Use dynamic_cast to attempt fix for spurious compilation warnings on
  CentOS7/gcc-5.3 on G4UTessellatedSolid wrapper.

17-May-2018  J.Madsen              (geom-specific-V10-04-09)
- Updated "thread-local-static-var" model to
  "function-returning-thread-local-static-reference" model
  which fixes Windows DLL + MT

11-April-2018  G.Cosmo             (geom-specific-V10-04-08)
- Replaced USOLIDS_LIBRARIES with VECGEOM_LIBRARIES in sources.cmake.

13-February-2018  E.Tcherniaev     (geom-specific-V10-04-07)
- Corrected conversion of input parameters to internal structure (used for
  caching for adoption in GDML persistency) in G4UPolycone and G4UPolyhedra
  wrappers.

9-February-2018  G.Cosmo           (geom-specific-V10-04-06)
- Caching facets and vertices in G4UTessellatedSolid wrapper for properly
  treating indexing in facets.

31-January-2018  G.Cosmo           (geom-specific-V10-04-05)
- Corrected use of facets indeces in G4UTessellatedSolid for visualization.
- Minor cleanup in G4TessellatedSolid::CreatePolyhedron(), no functional
  changes.

15-January-2018  G.Cosmo           (geom-specific-V10-04-04)
- Added validity checks in G4UTessellatedSolid::AddFacet().

11-January-2018  G.Cosmo           (geom-specific-V10-04-03)
- Added and enabled VecGeom wrapper for G4TessellatedSolid.
  Requires tags cmake-V10-04-01 and config-V10-04-00.

20-December-2017  G.Cosmo          (geom-specific-V10-04-02)
- Enabled VecGeom wrappers for G4ExtrudedSolid and G4Hype.

13-December-2017  E.Tcherniaev     (geom-specific-V10-04-01)
- Removed redundant data initialistion in G4ExtrudedSolid constructors.

11-December-2017  E.Tcherniaev     (geom-specific-V10-04-00)
- Added missing initialisation of two data-members in copy-ctor and
  assignment operator of G4ExtrudedSolid. Addressing problem report #2016.

22-November-2017  G.Cosmo         (geom-specific-V10-03-25)
- Fix in SurfaceNormal() for G4ExtrudedSolid to assure explicit
  counting of the surfaces where the point is placed on edg

2-November-2017  G.Cosmo          (geom-specific-V10-03-24)
- Fixed compilation warning introduced with last tag.

31-October-2017  E.Tcherniaev     (geom-specific-V10-03-23)
- Added specialised implementation for constructs defining a non-convex right
  prism in G4ExtrudedSolid.

20-October-2017  G.Cosmo          (geom-specific-V10-03-22)
- G4TessellatedSolid: print also solid's name in StreamInfo().

17-October-2017  G.Cosmo          (geom-specific-V10-03-21)
- Added VecGeom wrapper G4UHype for G4Hype, not yet activated, pending
  fixes in VecGeom.

16-October-2017  G.Cosmo          (geom-specific-V10-03-20)
- Temporarly disabled wrappers for G4Tet and G4GenericPolycone, pending
  their corresponding implementation in VecGeom.

28-September-2017  G.Cosmo        (geom-specific-V10-03-19)
- Corrected initialisation of polyhedra by vertices in G4UPolyhdra wrapper
  following the changes in VecGeom.

15-September-2017  G.Cosmo        (geom-specific-V10-03-18)
- G4SolidsWorkspacePool: use DLL export flag for static thread-local
  symbol of the workspace.

12-September-2017  G.Cosmo        (geom-specific-V10-03-17)
- G4Voxelizer: directly set components for bounding-box instead of
  recreating it in BuildBoundingBox(..).

8-September-2017  E.Tcherniaev    (geom-specific-V10-03-16)
- Added specialised implementation for constructs defining a convex right
  prism in G4ExtrudedSolid.

4-September-2017  G.Cosmo         (geom-specific-V10-03-15, 14)
- Temporarly disabled wrapper for extruded-solid, pending implementation
  of extruded-solid in VecGeom.

16-August-2017  J.Allison         (geom-specific-V10-03-13)
- Twisted solids: Fixed bug in drawing polyhedra with negative twist angle.
  Addressing problem report #1995.

27-July-2017  E.Tcherniaev        (geom-specific-V10-03-12)
- G4EllipticalCone: corrected samping of random points on lateral surface in
  function GetPointOnSurface().

24-July-2017  E.Tcherniaev        (geom-specific-V10-03-11)
- G4EllipticalCone: improved GetPointOnSurface() to have uniform sampling of
  points, using function G4RandomPointOnEllipse().

20-July-2017  E.Tcherniaev        (geom-specific-V10-03-10, 09)
- G4EllipticalCone: reviewed implementation of Inside(), DistanceToIn/Out(p),
  SurfaceNormal() and GetPointOnSurface(); made more compact and performant.
  Addressing problem report #1974.

15-June-2017  G.Cosmo             (geom-specific-V10-03-08)
- Enabled adapter also in G4UPolycone wrapper.
- Added check on open solid for G4UPolyhedra wrapper.

6-June-2017  G.Cosmo              (geom-specific-V10-03-07)
- Enable adapter for VecGeom shapes in G4U* wrappers for: paraboloid,
  polyhedra and GenericTrap. From now on, wrappers depends directly on
  VecGeom shapes implementation. USolids API is deprecated and no longer
  supported.

24-May-2017  G.Cosmo              (geom-specific-V10-03-06)
- Renamed ambiguous name Extent() in all solids and G4U* wrappers to
  BoundingLimits(). Change required in order to avoid signature conflict
  with VecGeom in G4U* wrappers.
  Requires tag geommng-V10-03-16.

11-May-2017  G.Cosmo              (geom-specific-V10-03-05)
- Removed potential race condition in G4VTwistSurface::AmIOnLeftSide().
  Addressing problem report #1972.

7-April-2017  G.Cosmo             (geom-specific-V10-03-04)
- Renamed G4SurfaceVoxelizer to G4Voxelizer and extended to support
  voxelisation of shapes in 3D space. Adapted G4TessellatedSolid accordingly.

13-March-2017  G.Cosmo            (geom-specific-V10-03-03)
- G4SolidsWorkspacePool: implemented CleanUpAndDestroyAllWorkspaces(),
  to be called by worker threads. Removed declaration (i.e. not implemented)
  of protected method ReleaseAndDestroyWorkspace().

2-March-2017  E.Tcherniaev        (geom-specific-V10-03-02)
- Fixed possible rounding off error in calculation of 'astep' (max angle
  for one step) in CalculateExtent() for G4Polycone, G4GenericPolycone
  and related USolids wrappers.

27-February-2017  E.Tcherniaev    (geom-specific-V10-03-01)
- Revised implementation of GetCubicVolume() and GetSurfaceArea() for
  G4EllipticalTube, to return exact values.
- Revised implementation of GetSurfaceArea() for G4EllipticalCone, to
  return exact value; moved both GetCubicVolume() and GetSurfaceArea() to
  be not inline.

13-December-2016  G.Cosmo         (geom-specific-V10-03-00)
- Correction in G4UExtrudedSolid to signature for CalculateExtent().
  Fixes issue of undefined symbol if extruded-solid not included in the
  list of VecGeom wrappers to activate.

30-November-2016  E.Tcherniaev    (geom-specific-V10-02-25)
- Call RemoveRedundantVertices() from G4GeomTools in CalculateExtent()
  for G4Polycone, G4Polyhedra and related USolids wrappers.
- Fix in G4Parabolid and G4UParaboloid for correct computation of extent.

18-November-2016  E.Tcherniaev    (geom-specific-V10-02-24)
- Added consistency checks for extent computation in USolids wrappers.
- Fix in cached parameters in G4UPolyhedra.

10-November-2016  G.Cosmo         (geom-specific-V10-02-23)
- G4UPolyhedra re-introduced new implementation of CalculateExtent() using
  G4BoundingEnvelope and extended wrapper to cache corners and start/end
  Phi parameters, to overcome issues in VecGeom on treatment of angles.

10-November-2016  E.Tcherniaev    (geom-specific-V10-02-22)
- Added caching of corners and implementation of GetCorner() in G4UPolycone
  in order to assure correct translation.
- Withdrawn changes in G4UPolyhedra introduced in tag geom-specific-V10-02-16
  until understood proper conversion from VecGeom.

7-November-2016  E.Tcherniaev    (geom-specific-V10-02-21)
- Correction in G4EllipticalCone::DistanceToOut(p) to make it more accurate.
- Added optional debug flag G4BBOX_EXTENT in GNUMake build to compare
  extent calculation by simply using bounding-box.

3-November-2016  G.Cosmo         (geom-specific-V10-02-20, 19)
- Fix in G4PolyPhiFace for potential unitialised data in Inside().

31-October-2016  E.Tcherniaev    (geom-specific-V10-02-18)
- Re-implemented CalculateExtent() to make use of G4BoundingEnvelope and
  removed no-longer used method CreateRotatedVertices() in G4Polyhedra,
  G4EllipticalCone, G4Polycone, G4Paraboloid, G4ExtrudedSolid, G4Hype,
  G4GenericPolycone, G4TessellatedSolid, G4TwistedTubs and related USolids
  wrappers.
- Use G4RandFlat instead of RandFlat.

21-October-2016  G.Cosmo         (geom-specific-V10-02-17)
- Moved initialisation of G4GeomSplitter thread-local data to be inline
  along with generic template type.
  Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.

19-October-2016  E.Tcherniaev      (geom-specific-V10-02-16)
- Reimplemented CalculateExtent() in G4Polycone, G4Polyhedra, G4GenericPolycone
  and associated USolids wrappers, to make use of G4BoundingEnvelope.

5-October-2016  E.Tcherniaev       (geom-specific-V10-02-15, 14)
- Reimplemented CalculateExtent() in G4Tet, G4UTet, G4GenericTrap,
  G4UGenericTrap, G4EllipticalTube and G4VTwistedFaceted, to make use
  of G4BoundingEnvelope; removed no-longer used method CreateRotatedVertices().

20-September-2016  G.Cosmo         (geom-specific-V10-02-13)
- Moved accessors/modifiers for splitter data to non-inline in
  G4PolyhedraSide and G4PolyconeSide.
  Explicitly initialise G4GeomSplitter data in G4SolidsWorkspace
  translation unit.
  Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.

06-July-2016  E.Tcherniaev         (geom-specific-V10-02-12)
- Fixed monir typo in function Create() for G4Polycone, G4Polyhedra and
  G4GenericPolycone.
  Fixed minor typos in G4GenericTrap::SurfaceNormal() and
  G4VTwistSurface::CurrentStatus::ResetfDone().
  Issues detected by PVS-Studio static code analyzer.
  Addressing problem report #1876.

24-May-2016  G.Cosmo               (geom-specific-V10-02-11)
- Correction in G4UExtrudedSolid for definition of CreatePolyhedron().

20-May-2016  G.Cosmo               (geom-specific-V10-02-10)
- Moved accessors and modifiers in USolids wrappers to be not inlined.
  Required modification in order to allow correct dispatching to VecGeom
  types.

15-Apr-2016  G.Cosmo               (geom-specific-V10-02-09)
- Added flag in USolids wrappers for partial use of USolids/VecGeom types.

31-Mar-2016  G.Cosmo               (geom-specific-V10-02-08, 07)
- Added overloaded CreatePolyhedron() method to USolids wrappers.
  It is now possible to visualize supported VecGeom shapes.
- Added implementation of CreatePolyhedron() in UExtrudedSolid wrapper.

10-Mar-2016  G.Cosmo               (geom-specific-V10-02-06)
- Added overloaded GetEntityType() method to USolids wrappers.

07-Mar-2016  E.Tcherniaev          (geom-specific-V10-02-05)
- Fix in G4IntersectingCone for smaller precision constant in LineHitsCone1()
  and LineHitsCone2(). Fixes issue observed in G4GenericPolycone.
  Addressing problem report #1794.

03-Mar-2016  G.Cosmo               (geom-specific-V10-02-04)
- Fixed compilation warnings for potential uninitialised values in
  G4ExtrudedSolid::CheckPolygon() function introduced in previous tag.

03-Mar-2016  E.Tcherniaev          (geom-specific-V10-02-03)
- Added 'const' qualifier for methods in G4ExtrudedSolid.
  Added CheckPolygon() to remove collinear and coincident points from polygons.
- G4QuadrangularFacet: added exhaustive tests in constructor to catch potential
  problems with a quadrangular facet: collinear vertices, non planar surface,
  degenerate, concave or self intersecting quadrilateral.
- G4TriangularFacet: Improved test in constructor to detect degenerate (too
  small or too narrow) triangles.

25-Feb-2016  E.Tcherniaev          (geom-specific-V10-02-02)
- Correction in G4ExtrudedSolid::AddGeneralPolygonFacets() for precision
  treatment in construction of tessels to avoid cases of collinear points
  and consequent degenerating triangles.
  Address problem report #1777.
- Use pre-computed kCarToleranceHalf constant in G4ExtrudedSolid, now
  protected in G4TessellatedSolid.
- Improved algorithms for computation of area in G4TriangularFacet and
  G4QuadrangularFacet. Added post-const qualifier to GetArea().

16-Feb-2016  G.Cosmo               (geom-specific-V10-02-01)
- Revised implementation for GetSurfaceArea() and GetCubicVolume() in
  G4GenericTrap (E.Tcherniaev).
- Protected debug warning in G4GenericTrap::SurfaceNormal() within G4SPECSDEBUG.

02-Feb-2016  E.Tcherniaev          (geom-specific-V10-02-00)
- Fix in G4GenericTrap for compuation of extent.
  Addressing problem report #1809.
- Use dot() in formula for computation of GetCubicVolume() in
  G4TessellatedSolid.

18-Nov-2015  G.Cosmo               (geom-specific-V10-01-15)
- Added specialised implementation for GetCubicVolume() in
  G4TessellatedSolid (J.Allison).

29-Oct-2015  G.Cosmo               (geom-specific-V10-01-14)
- Added debug printouts within G4SPECSDEBUG in G4TessellatedSolid for
  DistanceToIn/Out(p,v) to identify potential wrong responses.

26-Oct-2015  G.Cosmo               (geom-specific-V10-01-13)
- Removed redundant condition in G4Polyhedra and G4polycone
  SetOriginalParameters() method.

23-Oct-2015  G.Cosmo               (geom-specific-V10-01-12)
- G4PolyhedraSide: moved internal struct definitions to public section
  to overcome deficiencies in object-persistency class parsing.

07-Oct-2015  G.Cosmo               (geom-specific-V10-01-11)
- Protected compilation of USolid wrappers with G4GEOM_USE_USOLIDS flag.

01-Sep-2015  G.Cosmo               (geom-specific-V10-01-10)
- Corrected conditional compilation flag in G4UParaboloid.cc.

31-Aug-2015  G.Cosmo               (geom-specific-V10-01-09)
- Added USolids/VecGeom wrapper for G4Paraboloid (G.Lima/FNAL).
  Activated only for external USolids/VecGeom installation.

13-Aug-2015  G.Cosmo               (geom-specific-V10-01-08)
- Checked for potential never-ending loops.
  No issues found, only added annotations.

05-Aug-2015  G.Cosmo               (geom-specific-V10-01-07)
- Minor code cleanup in G4SurfaceVoxelizer.

03-Mar-2015  G.Cosmo               (geom-specific-V10-01-06)
- Use accessors x(), y() and z() from UVector3, instead of directly accessing
  its data-members. Co-work with tag "geom-usolids-V10-01-09".

23-Feb-2015  T.Nikitina            (geom-specific-V10-01-05)
- Fix in SetOriginalParameters() for G4Polycone and G4Polyhedra, in case
  of presence of 'rings' structures. Addressing problem report #1705.

26-Jan-2015  G.Cosmo               (geom-specific-V10-01-04)
- Renamed DistanceAwayForInside() to DistanceAway() and use polymorphism.

26-Jan-2015  T.Nikitina            (geom-specific-V10-01-03, 02)
- Added special method for Inside 'DistanceAwayForInside()' in order to fix
  precision problem of calculation of DistanceToSide() in G4PolyconeSide.

21-Jan-2015  T.Nikitina            (geom-specific-V10-01-01)
- Fixed triangularisation method AddGeneralPOlygoneFacets() in
  G4ExtrudedSolid by avoiding flat triangles.
- Added warning message to G4TriangularFacet constructor if Area is 0;
  i.e., case of flat triangle.
- Addressing problem report #1703.

12-Dec-2014  G.Cosmo               (geom-specific-V10-01-00)
- Use canonical form for operator=() in G4PolyconeHistorical and
  G4PolyhedraHistorical.

17-Sep-2014  G.Cosmo               (geom-specific-V10-00-11)
- Added wrappers for UExtrudedSolid and UGenericTrap; adapted switches to
  original G4 types accordingly. Requires tag "geom-usolids-V10-00-16".

01-Sep-2014  G.Cosmo               (geom-specific-V10-00-10)
- Fixed use of polyhedron pointer, to avoid race condition in MT
  when parameterised volumes are visualised.

22-May-2014  G.Cosmo               (geom-specific-V10-00-09)
- Added protection in generic constructor of G4Polyhedra for the case when
  improper number of sides is given as input.

10-Apr-2014  G.Cosmo               (geom-specific-V10-00-08)
- Get rid of deprecated 'register' storage class specifier in source files.

31-Mar-2014  G.Cosmo               (geom-specific-V10-00-07)
- Fixed signature of assignment operator to G4VCSGfaceted.

31-Mar-2014  G.Cosmo               (geom-specific-V10-00-06)
- Fixed signature of assignment operator to G4Polycone, G4Polyhedra and
  and G4GenericPolycone.

05-Mar-2014  G.Cosmo               (geom-specific-V10-00-05)
- Fixed proper handling of polyhedron pointer in solids, to avoid memory
  leak for visualization of parameterised volumes.

12-Feb-2014  G.Cosmo               (geom-specific-V10-00-04)
- Simply reset polyhedron pointer to zero for modifiers of G4U* wrappers
  in parameterisation. Resolves crash in MT visualization when using USolids.

12-Feb-2014  G.Cosmo               (geom-specific-V10-00-03 [and -02])
- Added correct cloning mechanism in G4U* wrappers.
  Addressing problem report #1553.

18-Dec-2013  T.Nikitina            (geom-specific-V10-00-01)
- Fix in G4GenericTrap::InsidePolygone() to check if p lies between the two
  extremes of the segment. Addressing problem report #1541.

17-Dec-2013  G.Cosmo               (geom-specific-V10-00-00)
- Corrected left-over debug printout in G4Polycone::SetOriginalParameters().

04-Dec-2013  G.Cosmo               (geom-specific-V09-06-36)
- Corrected left-over debug printout in G4Polyhedra::SetOriginalParameters().

22-Nov-2013  G.Cosmo               (geom-specific-V09-06-35)
- Correction to USolids wrappers for proper setting of name to base class.

19-Nov-2013  J.Apostolakis         (geom-specific-V09-06-34)
- Fix for issue identified by Coverity: fixed implementation of
  G4SolidsWorkspacePool singleton.

20-Nov-2013  T.Mikitina            (geom-specific-V09-06-33)
- Fixed Coverity defects to USolids wrappers.

14-Nov-2013  G.Cosmo               (geom-specific-V09-06-32, 31)
- Enabled use of Reset() in G4UPolycone.
- Corrections to G4UPolycone and G4UPolyhedra to allow for visualization
  of parameterisations on these solids.

13-Nov-2013  G.Cosmo               (geom-specific-V09-06-30)
- Correction to G4UTet and G4UGenericPolycone to explicitly include
  symbols re-definitions from G4Tet and G4GenericPolycone respectively.

12-Nov-2013  G.Cosmo               (geom-specific-V09-06-29)
- Added dummy method G4UPolycone::Reset().
  NOTE: Required related implementation (currently missing!) in UPolycone.

12-Nov-2013  G.Cosmo               (geom-specific-V09-06-28)
- Correction to USolids switch mechanism for G4Polycone.

08-Nov-2013  J.Apostolakis         (geom-specific-V09-06-27)
- G4SolidsWorkspace: cleanup of verbosity.
  Reduced verbosity by making it optional.
  Added Set/Get Verbose methods to toggle and view it.
  Added parameter to constructor for verbosity (default=off).

07-Nov-2013  G.Cosmo (geom-specific-V09-06-26)
- Moved wrappers from usolids module.
  Fixed internal dispatcher method for parameterisation in all wrappers.
- Added switching mechanism for G4GenericPolycone, G4Polycone, G4Polyhedra
  and G4Tet.

06-Nov-2013  G.Cosmo (geom-specific-V09-06-25)
- Added switch mechanism for USolids (G4GenericPolycone, G4Polycone,
  G4Polyhedra, G4Tet). Renamed related G4 types to 'G4O'.
- Moved wrappers from USolids module.

01-Nov-2013  G.Cosmo (geom-specific-V09-06-24)
- Corrected CMake script.

31-Oct-2013  G.Cosmo (geom-specific-V09-06-23)
- Fix for in G4Polyhedra::SetOriginalParameters(). (T.Nikitina)
- Moved G4PolyconeHistorical and G4PolyhedraHistorical in separate
  translation units.

29-Oct-2013  T.Nikitina (geom-specific-V09-06-22)
- Split G4Polycone for polycones with decreasing Z-sections.
  Introduced new class G4GenericPolycone.
- Fixed conversion of generic construct for G4Polyhedra.

17-Oct-2013  J.Apostolakis/A.Dotti (geom-specific-V09-06-21)
- Cleanup of code for workspace.

16-Oct-2013  J.Apostolakis/A.Dotti (geom-specific-V09-06-20)
- Created G4SolidsWorkspacePool class, to manage Workspaces
  Fixed Singleton G4SolidsWorkspacePool for thread safe creation of object.

04-Oct-2013  J.Apostolakis (geom-specific-V09-06-19)
- Retagged.
  NOTE: requires tag "geommng-V09-06-12" and co-works with "geomvol-V09-06-13".

04-Oct-2013  J.Apostolakis (geom-specific-V09-06-18)
- Created G4SolidsWorkspace class, to create, initialize and destroy
  per-thread state of PolyCone Sides and PolyHedra Sides.

27-Aug-2013  G.Cosmo (geom-specific-V09-06-17)
- Enabled G4Ellipsoid for parameterisation.

14-Aug-2013  G.Cosmo (geom-specific-V09-06-16)
- Move function-scoped 'static const' values for half-tolerances to private
  data members of classes, to overcome false-positive race-conditions defects
  reported by Valgrind in MT mode.
- Fix in G4TessellatedSolid::DistanceToIn(p,v) for specific cases where points
  are located near surface (T.Nikitina).

16-Jul-2013  M.Gayer (geom-specific-V09-06-15)
- Fix in G4SurfaceVoxelizer affecting tessellated-solid (and extruded-solid)
  for wrong computation of DistanceToIn(p,v) for points outside, when
  optimisation is active.

11-Jul-2013  G.Cosmo (geom-specific-V09-06-14)
- Fixed compilation warning in G4Polycone on MacOS/clang.

09-Jul-2013  T.Nikitina (geom-specific-V09-06-13)
- Extended method SetOriginalParameters() in G4Polycone in order to handle
  all possible cases of conversion of generic polycone to polycone with
  (Rmin,Rmaz,Z) parameters.
  Addressing problem report #1462.

03-Jun-2013  G.Cosmo (geom-specific-V09-06-12)
- Fixed minor Coverity defect in G4PolyhedraSide and G4PolyconeSide.

22-Apr-2013  J.Apostolakis (geom-specific-V09-06-11)
- Revised G4ExtrudedSolid::IsSameLine to use the perpendicular
  distance to a line when deciding - not the y-intercept difference.
  ( Issue responsible for a problem in Subtraction Solid in Atlas.
     Tatiana & Ivana contributed to debugging. )
- Changed GNUmakefile in test directory to work with Cmake and granular
  builds.

16-Apr-2013  T.Nikitina (geom-specific-V09-06-10)
- Fix in calculation of normal in G4Tet::DistanceToOut(p,v,..) and
  SurfaceNormal(p).
- Fix in G4Polycone::GetPointOnCone() for cases of shape with decreasing Z.
  Fixes cases of false report for overlaps detection. Problem report #1462.
  Added check with exception in constructor for polycone with rInner > rOuter
  for the same Z.

18-Mar-2013  G.Cosmo (geom-specific-V09-06-09)
- G4TessellatedSolid: fixed problem with navigation in tessellated solids
  with concave surfaces. Addresses problem report #1456.
- More cleanup from MT changes in G4VTwistSurface and G4Tet.

12-Mar-2013  G.Cosmo (geom-specific-V09-06-08)
- Added public accessors for MT data to G4PolyconeSide and G4PolyhedraSide.

11-Mar-2013  G.Cosmo (geom-specific-V09-06-07)
- Redefined G4DLL_API to G4GEOM_DLL to avoid cases of macro redefinition.

08-Mar-2013  G.Cosmo (geom-specific-V09-06-06)
- Renamed G4MT macros to safer ID in G4PolyconeSide and G4PolyhedraSide.

07-Mar-2013  G.Cosmo (geom-specific-V09-06-05)
- Adopt G4GeomSplitter instead of G4MTTransitory in G4PolyconeSide and
  G4PolyhedraSide. Fixed import/export of static symbols for WIN32 DLLs build.

22-Feb-2013  G.Cosmo (geom-specific-V09-06-04)
- Cleanup changes for multi-threading in G4Tet, G4VTwistSurface,
  G4PolyconeSide and G4PolyhedraSide.
- Removed unused private data member in G4TwistTrapParallelSide.

07-Mar-2013  G.Cosmo (geom-specific-V09-06-05)
- Adopt G4GeomSplitter instead of G4MTTransitory in G4PolyconeSide and
  G4PolyhedraSide. Fixed import/export of static symbols for WIN32 DLLs build.

22-Feb-2013  G.Cosmo (geom-specific-V09-06-04)
- Cleanup changes for multi-threading in G4Tet, G4VTwistSurface,
  G4PolyconeSide and G4PolyhedraSide.
- Removed unused private data member in G4TwistTrapParallelSide.

11-Jan-2013  G.Cosmo (geom-specific-V09-06-03)
- Fixed condition in G4VTwistSurface::GetBoundaryLimit() for logical error.
  Addressing problem report #1420.

20-Dec-2012  M.Gayer (geom-specific-V09-06-02)
- Fixed cases of hang-ups in G4ExtrudedSolid on 32-bits platforms, due to
  G4TessellatedSolid and G4SurfVoxelizer, caused by accessing bitmask arrays
  with negative indexes. The problem was related to floating-point rounding,
  which can be different even on same platform with debug/release version.
  Assure same number of computed voxels on 32-bit/64-bit platforms.
  Fixed error in SetVertexIndex() method, which might cause problems on
  certain configurations even for 64-bit systems. Fixed minor memory leaks.
- Code cleanup for use of G4endl and tabs...

14-Dec-2012  G.Cosmo (geom-specific-V09-06-01)
- Restored SVN id headers.

02-Dec-2012  J.Allison (geom-specific-V09-06-00)
- Removed NURBS.

29-Nov-2012  G.Cosmo (geom-specific-V09-05-24)
- Remove inclusion of G4PhysicalConstants.hh from G4SurfaceVoxelizer.hh.
- Fixed unit test for compilation errors.

28-Nov-2012  G.Cosmo (geom-specific-V09-05-23)
- Fixed more cases of inclusion of constants header.

23-Nov-2012  G.Cosmo (geom-specific-V09-05-22)
- Added 'const' qualifiers to signature in G4VoxelComparator::operator()
  for porting on AIX-xlC compiler.

14-Nov-2012  P.Mato (geom-specific-V09-05-21)
- Added #undef NDEBUG in unit tests to ensure assert works also in
  full optimised mode.

14-Nov-2012  P. Mato (geom-specific-V09-05-20)
- Added #undef NDEBUG in unit tests to ensure that assert always works

13-Nov-2012  M.Gayer (geom-specific-V09-05-19)
- More fixes for out-of-bound array accesses in G4SurfaceVoxelizer.

12-Nov-2012  M.Gayer (geom-specific-V09-05-18)
- Fixed out-of-bound array access in BuildReduceVoxels2().

06-Nov-2012  G.Cosmo (geom-specific-V09-05-17)
- Correction in sources.cmake script for missing .icc file.

06-Nov-2012  G.Cosmo (geom-specific-V09-05-16)
- Fixed Coverity defects in new code (M.Gayer).
- Minor fixes for porting on AIX.

01-Nov-2012  G.Cosmo (geom-specific-V09-05-15)
- Fixed compilation of debug code under G4SPECSDEBUG.

01-Nov-2012  M.Gayer (geom-specific-V09-05-14)
- Corrected signature for voxels count methods in G4SurfaceVoxelizer.

31-Oct-2012  M.Gayer (geom-specific-V09-05-13)
- Added set/get methods for voxels count in G4SurfaceVoxelizer.

30-Oct-2012  M.Gayer (geom-specific-V09-05-12)
- Fixed indexing of vertices in facets for tessellated-solid and some cleanup.

27-Oct-2012  G.Cosmo (geom-specific-V09-05-11)
- Fixed initialization of data in G4SurfaceVoxelizer (M.Gayer).
- Added post-const qualifier to G4VertextComparator::operator() in
  G4TessellatedSolid.
- Fixed more compilation warnings on unused variable.

26-Oct-2012  G.Cosmo (geom-specific-V09-05-10)
- Corrected compilation problem on G4SurfBits for use of fprint().
- Polished comments in disclaimer in new updated classes.

25-Oct-2012  G.Cosmo (geom-specific-V09-05-09)
- Corrected compilation warnings on Linux and fixed use of memset/memcpy.

25-Oct-2012  G.Cosmo (geom-specific-V09-05-08)
- Correction to sources.cmake.

19-Oct-2012  M.Gayer (geom-specific-V09-05-07)
- Complete rewrite of G4TessellatedSolid resulting in reduced memory
  requirements by 50%, and factor of tens or more speedup for number of facets
  of the order of thousands, thanks to ad-hoc voxelization of the surface.
  Factor of thousands speedup when number of facets of the order of hundreds
  thousand. New classes introduced, G4SurfBits and G4SurfaceVoxelizer.

12-Jun-2012  G.Cosmo (geom-specific-V09-05-06)
- Explicitly use inclusion of headers for system of units and physical
  constants, in plan to remove implicit inclusion from globals.hh.

14-May-2012  G.Cosmo (geom-specific-V09-05-05)
- Fixed spurious cases of hidden variable visibility, detected with
  '-Wshadow' compilation option on gcc compiler.

06-Apr-2012  M.Kelsey (geom-specific-V09-05-04)
- Modified GetPointOnSurface() to throw sqrt(r) uniformly for disk surfaces,
  in G4Paraboloid, G4Polycone and G4TwistedTubs.

13-Dec-2011  G.Cosmo (geom-specific-V09-05-03, 02, 01)
- Fixed trivial Coverity defects in G4TwistedTubs and G4VTwisteFaceted for
  missing protection against self-assignment.

09-Dec-2011  T.Nikitina (geom-specific-V09-05-00)
- Fix in G4EllipticalCone in DistanceToIn(p,v) to exclude imaginary solution
  (virtual cone) when distance is calculated.

10-Nov-2011  G.Cosmo (geom-specific-V09-04-09)
- Fixed trivial Coverity defects on assignment operators...

25-Oct-2011  G.Cosmo (geom-specific-V09-04-08)
- Fixed logic in G4VTwistSurface::GetEdgeVisibility() in treatment of corners.

16-Sep-2011  G.Cosmo (geom-specific-V09-04-07)
- Fix compilation error in code within G4SPECSDEBUG. No functional changes.

13-Sep-2011  I.Hrivnacova (geom-specific-V09-04-06)
- G4TriangularFacet: fixed tests where square root was compared to
  half Cartesian tolerance; now compared to kCarTolerance.
  Addressing problem report #1242.

25-Aug-2011  G.Cosmo
- Migrated to new G4Exception scheme for warnings and errors.
- Defined scheme for warnings/errors coding:
  + 1xxx for warnings, 0xxx for errors.
  Code numbering:
  + 0001: not supported or implemented features;
  + 0002: invalid setup/construct;
  + 0003: invalid run condition;
  + 1001: incorrect setup; automatically adapted.
  + 1002: notification.
- Added unit test for G4ExtrudedSolid (J.Apostolakis).

22-Aug-2011  I.Hrivnacova (geom-specific-V09-04-05)
- Fix in G4TriangularFacet::Intersect() to take into account geometrical
  tolerance and cases of zero distance from surface's facet.
- Fix in G4TessellatedSolid::DistanceToOut(p) and DistanceToIn(p) to exactly
  compute distance from facet avoiding use of 'outgoing' flag shortcut variant.
- Addressing problem report #1242.

17-Aug-2011  T.Nikitina (geom-specific-V09-04-04)
- Fix in G4Paraboloid::DistanceToIn(p,v) and DistanceToIn(p) to properly
  take into account tolerance and provide better estimation of distance
  respectively. Addresses problem report #1234.

04-Aug-2011  T.Nikitina (geom-specific-V09-04-03)
- Added SetReferences() and InvertFacets() to G4GenericTrap::CreatePolyhedron()
  for proper visualisation of Boolean compositions with G4GenericTrap.
- Added SetReferences() to G4TessellatedSolid::CreatePolyhedron()
  for proper visualisation of Boolean compositions with G4TessellatedSolid.
- Requires tag "greps-V09-04-04", for addressing problem report #1235.

17-May-2011  I.Hrivnacova (geom-specific-V09-04-02)
- G4ExtrudedSolid: fix in Inside(p) for false overlap reporting.
  Addressing problem report #1211.

12-May-2011  G.Cosmo (geom-specific-V09-04-01)
- Fixed compilation warnings from gcc-4.6.0 for variables set but not used.

06-May-2011  G.Cosmo (geom-specific-V09-04-00)
- Use G4 typedef for CLHEP types.

26-Nov-2010  T.Nikitina (geom-specific-V09-03-20)
- Fixes in G4GenericTrap reported by SBT unit test in SurfaceNormal(),
  DistanceToPlane() and VisExtent().

16-Nov-2010  T.Nikitina (geom-specific-V09-03-19)
- G4EllipticalCone: fixes in DistanceToIn(p,v) and DistanceToOut(p,v) for
  correct handling of point on the surface.
  Corrected formula for SurfaceNormal(p).

10-Nov-2010  T.Nikitina (geom-specific-V09-03-18)
- Added checks on crossing of vertices and too big twisted angle in
  G4GenericTrap.
- Fixed case of division by zero in G4TwistedTubs.
- Added unit test for G4Polyhedra.

02-Nov-2010  G.Cosmo (geom-specific-V09-03-17)
- More fixes on Coverity reports for G4TessellatedSolid and G4ReduciblePolygon.

20-Oct-2010  G.Cosmo (geom-specific-V09-03-16)
- Implemented Clone() virtual method for all solids, returning a pointer
  to a dynamically allocated copy of the solid. To be used by Geant4-MT.

23-Sep-2010  G.Cosmo (geom-specific-V09-03-15)
- Initialize fpPolyhedron to zero in copy-ctor and operator=().
- Completed implementation of copy-ctor and operator=() for facets.

20-Sep-2010  G.Cosmo (geom-specific-V09-03-14)
- Implemented copy-constructor and assignment operator for all solids
  to facilitate conversion to Geant4-MT.

08-Sep-2010  G.Cosmo (geom-specific-V09-03-13)
- Correction to previous fix in G4ReduciblePolygon to avoid deleting current
  'vertexHead' pointer.

07-Sep-2010  G.Cosmo (geom-specific-V09-03-12)
- Fix within G4CSGDEBUG code for restoring cout precision.
- Fix in G4ReduciblePolygon::RemoveRedundantVertices() to avoid potential
  case of dereferencing freed pointer.

19-Aug-2010  T.Nikitina (geom-specific-V09-03-11)
- G4EllipticalTube: extended implementation of SurfaceNormal(p) in agreement
  with canonical form. Added unit test testG4EllipticalTube.cc.

16-Jul-2010  G.Cosmo (geom-specific-V09-03-10)
- Fixed cases of division by zero in G4VTwistSurface and G4TwistBoxSide.
- Use INT_MAX as initialisation for max limits in G4SolidExtentList.

12-Jul-2010  G.Cosmo (geom-specific-V09-03-09)
- Added dummy initialization to members in struct
  G4PolyPhiFace::G4PolyPhiFaceEdge, struct G4ReduciblePolygon::ABVertex.
  G4Ellipsoid, G4EllipticalTube, G4EnclosingCylinder, G4ExtrudedSolid, G4Hype,
  G4IntersectingCone, G4Paraboloid, G4PolyPhiFace, G4Polycone, G4PolyconeSide,
  G4Polyhedra, G4PolyhedraSide, G4QuadrangularFacet, G4ReduciblePolygon,
  G4TessellatedSolid, G4TriangularFacet, G4TwistBoxSide, G4TwistTrapAlphaSide,
  G4TwistTrapFlatSide, G4TwistTrapParallelSide, G4TwistTubsFlatSide,
  G4TwistTubsHypeSide, G4TwistTubsSide, G4TwistedTubs, G4VCSGfaceted, G4VFacet,
  G4VTwistSurface, G4VTwistedFaceted.
- Fixed case of dereferencing null pointer in methods
  G4EllipticalTube::DistanceToOut(p,v), G4VCSGfaceted::DistanceToIn(p,v)
  and G4VCSGfaceted::DistanceToOut(p,v).
- Fixed unecessary object copy as argument in method
  G4PolyhedraSide::IntersectSidePlane().
- Avoid possible case of derefencing null pointer in G4ReduciblePolygon
  RemoveDuplicateVertices() and RemoveRedundantVertices() methods.
- Replaced calls to std::abs() with std::fabs() where suitable.

16-Jun-2010  G.Cosmo (geom-specific-V09-03-08)
- Fixed deletion of internal arrays in CreatePolyhedron() for G4Polycone
  and G4Polyhedra.

11-Jun-2010  T.Nikitina (geom-specific-V09-03-07)
- G4GenericTrap: fixed cases of zero dToIn/sToOut when vertices are collapsed
  to triangle, line or point. Added new methods handling those specific cases.
- Added unit test for G4GenericTrap.

10-Jun-2010  I.Hrivnacova
- G4GenericTrap: fixed parameter names in CalculateExtent() for the test
  case construction through tessellated facets.

09-Jun-2010  G.Cosmo
- G4GenericTrap: moved internal methods to private section and reordered
  in source file. Added missing implementation for IsTwisted() method.

03-Jun-2010  T.Nikitina, G.Cosmo (geom-specific-V09-03-06)
- G4GenericTrap:
  o Fixed initialization of fSurfaceArea and fCubicVolume and
    calculation of surface area.
  o Fixed error in Inside(p) function, and corrected use std::fabs() instead
    of std::abs() for floating point values.
  o Added missing initialisation of fpPolyhedron pointer.
  o More corrected signatures for use of non-const references for vectors
    passed as arguments to functions.

02-Jun-2010  G.Cosmo (geom-specific-V09-03-05)
- G4GenericTrap: use const reference for vector of vertices passed as argument
  in constructor and accessor.

27-May-2010  T.Nikitina (geom-specific-V09-03-04)
- First implementation of G4GenericTrap shape, a new solid representing an
  arbitrary trapezoid with up to 8 vertices standing on two parallel planes
  perpendicular to the Z axis.

28-Apr-2010  P.R.Truscott (geom-specific-V09-03-03)
- Fix in G4TriangularFacet and G4TessellatedSolid to correct treatment of
  optical photon transport related to internal reflection at surface.
  Addresses problem report #1103.

15-Apr-2010  I.Hrivnacova (geom-specific-V09-03-02)
- G4ExtrudedSolid: eliminated requirement for clockwise ordering of polygon
  vertices. Added a check for vertices ordering; if vertices are defined
  anti-clockwise their ordering is reverted.
  Fix in polygon facet triangularization for consequent concave vertices.

24-Feb-2010  G.Cosmo (geom-specific-V09-03-01)
- Adopt caching of Phi in G4PolyconeSide and G4PolyhedraSide to avoid
  unnecessary consecutive computations on the same point.

10-Feb-2010  G.Cosmo (geom-specific-V09-03-00)
- Use kInfinity for initialising minimum and maximum allowed extent for
  G4SolidExtentList of faceted solids.

11-Nov-2009  G.Cosmo (geom-specific-V09-02-08)
- Avoid fake (and redundant) assignment of value to 3-vector in
  G4PolyconeSide and G4TwistTubsSide.

24-Sep-2009  T.Nikitina (geom-specific-V09-02-07)
- G4Ellipsoid: refined fix in DistanceToIn(p,v) for points located on the
  curved surface, and correct treatment of geometrical tolerance.

09-Sep-2009  G.Cosmo (geom-specific-V09-02-06)
- G4Ellipsoid: fixed usage of half-tolerances (radial and Cartesian) in
  DistanceToIn(p,v), based on incorrect assumptions introduced in tag
  "geom-specific-V09-02-04", responsible for zero steps on configurations
  with cut in Z. Addresses problem report #1076.

04-Aug-2009  T.Nikitina (geom-specific-V09-02-05)
- G4Ellipsoid:
  o Fixes in Inside(p) and in DistanceToIn(p,v) for points
    located on the curved surface within tolerance. Final fix for issue
    reported in problem report #1050 and concerning warnings reported by
    grid_test.
  o Adopt pre-computed half-tolerance values for optimisation.

23-Jul-2009  T.Nikitina (geom-specific-V09-02-04)
- G4Ellipsoid: fix to DistanceToIn(p,v) in the calculation of the roots of
  the quadratic equation and in DistanceToOut(p,v) in the calculation of the
  normal on cut surfaces. Final fix for problem report #1022 and #1050.
- G4PolyconeSide: added protection in method Normal(), addressing problem
  report #1073.

30-Jun-2009  T.Nikitina (geom-specific-V09-02-03)
- G4Ellipsoid: introduced to DistanceToIn(p,v) splitting of the distance for
  point very far from intersection area and big difference between solid
  dimensions and distance to it; resolves issue observed on 64 bits problem.
  Also addressing problem report #1022.

08-May-2009, G.Cosmo (geom-specific-V09-02-02)
- Corrected typo in base implementation of G4VCSGfaceted::GetSurfaceArea(),
  which was erroneously returning cubic volume estimation.
  Addresses problem report #1062.

27-Apr-2009, G.Cosmo (geom-specific-V09-02-01)
- Relaxed error condition in G4TessellatedSolid::Inside(p) to warning, for
  excess of max trials and anomalous conditions in distance calculation.
  Added more printout information when error condition is detected.

27-Feb-2009, T.Nikitina (geom-specific-V09-02-00)
- Fix in G4Paraboloid::DistanceToOut(p,v,..) for the computation of normal
  to surface; added missing normalisation to unit, following remark in the
  Geometry Forum Hypernews posting #953.

21-Nov-2008, G.Cosmo (geom-specific-V09-01-19)
- Added missing accessors to G4EllipticalCone, required for detector
  persistency.

13-Nov-2008, G.Cosmo (geom-specific-V09-01-18)
- Corrected initialisation of algorithm in G4TriangularFacet constructor.

30-Oct-2008, I.Hrivnacova (geom-specific-V09-01-17)
- G4ExtrudedSolid: fixed bug in the decomposition of polygonal sides for
  quadrangular facets in MakeFacets(). Addresses problem report #1029.

23-Sep-2008, T.Nikitina (geom-specific-V09-01-16)
- Corrected algorithm in G4TriangularFacet::GetPointOnFace() according to
  suggestion advanced in problem report #1025. Fixes a problem of false
  overlaps detection related to G4ExtrudedSolid and G4TessellatedSolid.

12-Sep-2008, G.Cosmo (geom-specific-V09-01-15)
- G4VFacet: corrected increment of indeces in operator==(), following
  problem report #1024.

25-Jul-2008, I.Hrivnacova (geom-specific-V09-01-14)
- G4ExtrudedSolid: fix in polygon decomposition; systematically use
  half kCarTolerance instead of kCarTolerance; added solid name in the
  error messages coming from fatal exceptions.

16-Jul-2008, T.Nikitina (geom-specific-V09-01-13)
- G4Paraboloid: revised DistanceToOut(p,v,...) in answer to problem report
  #1015. Fixed precision problem when solving quadratic equation; apply
  comparison with kCarTolerance and not with zero; fixed logic problem in
  algoritm for points on surface and direction inside, relative to directions
  along Z, (0,0,Vz).

22-May-2008, G.Cosmo (geom-specific-V09-01-12)
- Removed left-over debug printout in G4VCSGFaceted::DistanceToIn().

15-May-2008, T.Nikitina (geom-specific-V09-01-11)
- Enhanced GetPointOnSurface() for generic G4Polycone and G4Polyhedra
  constructs; the method uses new triangulation algorithm for G4PolyPhiFace.
- G4ExtrudedSolid: added missing 'std' namespace to standard mathematical
  function calls.

28-Apr-2008, T.Nikitina (geom-specific-V09-01-10)
- Added kCarTolerance in definition of "low" and "high" cone limits in R
  and in Z in order to protect against numerical errors. This fixes cases of
  DistanceToIn(p,v) returning 'kInfinity' when p+t*v cross intersection
  between two cones.

25-Apr-2008, T.Nikitina (geom-specific-V09-01-09)
- Added protection against NaN in G4IntersectingCone::LineHitsCone1() in
  case of configuration where a conic section becomes a tube.
- G4EllipticalCone: removed some debug printouts.

14-Apr-2008, T.Nikitina (geom-specific-V09-01-08)
- G4Hype: refined polyhedron representation for correct visualization of
  the shape. Coworks with tag "greps-V09-01-04".

13-Mar-2008, G.Cosmo (geom-specific-V09-01-07)
- Cleared compilation warnings in G4Paraboloid and G4TessellatedSolid
  on gcc-4.3.0 for ambiguous use of parentheses in condition statements.

28-Feb-2008, I.Hrivnacova (geom-specific-V09-01-06)
- Correction to previous fix in G4ExtrudedSolid: testing on the edges has
  to be limited to the line segment, for this purpose a new internal method
  IsSameLineSegment() has been introduced for use instead of IsSameLine().
- Updated and extended unit test testG4ExtrudedSolid.cc.

27-Feb-2008, I.Hrivnacova (geom-specific-V09-01-05)
- Fix in G4TessellatedSolid::DistanceToOut(p,v,..) to compute normal only
  if specified by flag in input.
- Fix in G4ExtrudedSolid::Inside(p) for correctly handling the case of
  points located on the edges of triangles which are not the outline edges
  of the polygon.

21-Feb-2008, T.Nikitina (geom-specific-V09-01-04)
- G4Polyhedra: fixed problem of out-of-bound access to vectors in
  GetPointOnSurface().

20-Feb-2008, I.Hrivnacova (geom-specific-V09-01-03)
- G4TessellatedSolid: fixed bug in copy-constructor and internal method
  CopyObjects() for cloning of facets.

05-Feb-2008, I.Hrivnacova (geom-specific-V09-01-02)
- G4ExtrudedSolid: bug fix in MakeFacets() to fill 'fTriangles' also in case
  of polygon with 3 or 4 vertices, as they are needed for Inside(p).

02-Feb-2008, I.Hrivnacova (geom-specific-V09-01-01)
- Corrected triangularization of polygon, now correctly handling case
  of concave shapes.
- Corrected order of arguments in G4Paraboloid constructor.

16-Jan-2008, I.Hrivnacova (geom-specific-V09-01-00)
- In G4ExtrudedSolid::MakeFacets(), now adding triangular facets before quadrangular
  ones, following logic behind G4TessellatedSolid.

12-Dec-2007, G.Cosmo (geom-specific-V09-00-08a)
- Remove use of global static constant from singleton initialisation in
  G4TessellatedGeometryAlgorithms class. Use 'sqrEpsilon' as local value.

15-Nov-2007, P.Truscott (geom-specific-V09-00-08)
- Reviewed implementation of G4TessellatedSolid::CalculateExtent() to
  make it more robust and precise, following suggestion by S.Seibert
  addressed in problem report #983, now fixed.

12-Oct-2007, G.Cosmo (geom-specific-V09-00-07)
- Corrected wrong boolean condition in method IntersectLineAndTriangle2D()
  of G4TessellatedGeometryAlgorithms causing compilation error on VC++8.

09-Oct-2007, G.Cosmo (geom-specific-V09-00-06)
- Reviewed G4TessellatedSolid classes in order not to make use of random
  numbers for selection of direction (by P.Truscott).

02-Oct-2007, G.Cosmo
- Removed debug printout in G4Polycone::GetPointOnCone().

23-Aug-2007, G.Cosmo (geom-specific-V09-00-05)
- Revision of G4TessellatedSolid classes:
  o Fixed problem report #931 by P.Truscott, based on suggestion of
    R.Holmberg. Modified classes G4TessellatedSolid and G4TriangularFacet.
  o Modified data and accessor 'centroid' and 'GetCentroid()' for G4VFacet;
    replaced by 'circumcentre' and 'GetCircumcentre()' respectively.
  o Added utility class G4TessellatedGeometryAlgorithms.
- Added formulas for calculating SemiAxis and Zheight in G4EllipticalCone
  (by T.Nikitina).

20-Aug-2007, T.Nikitina & L.Lindroos (geom-specific-V09-00-04)
- Revision of G4EllipticalCone:
  o DistanceToIn(p): corrected answer for p.z()<-zTopCut and for the point
    p on the surface.
  o DistanceToOut(p,v): now returning positive solution or zero when crossing
    the elliptical surface.
  o Fix in DistanceToOut(p) which was giving always zero.
  o Corrected visualisation error of solid in graphics_reps.
  o Added some formulas on how to pre-calculate 'SemiAxis' and 'zheight'.
  o Added checkDistanceToOut() method to unit test.
- Corrections to G4Paraboloid:
  o Fixed bug in CalculateSurfaceArea() method
  o Added correct initialisation of 'fPolyhedron' in constructor.
  o Added unit test testG4Paraboloid.

13-Aug-2007, W.Pokorski (geom-specific-V09-00-03)
- G4PolyconeSide: added workaround to initialisation of 'corners' vector,
  to allow for object persistency with Root-I/O (W.Pokorski).

18-Jul-2007, G.Cosmo (geom-specific-V09-00-02)
- New specific G4Paraboloid with cuts along the Z axis (by L.Lindroos).
- Fixed dummy constructors of G4Polycone and G4PolyPhiFace for initialisation
  of 'edges' and 'corners'.
- Coworks with tag "greps-V09-00-01".

12-Jul-2007, T.Nikitina (geom-specific-V09-00-01)
- Fix in G4Polyhedra::GetPointOnSurface() to correctly treat 'totalPhi' instead of
  'endPhi' for the case of open shapes and 'twopi' for not open shapes.

05-Jul-2007, T.Nikitina (geom-specific-V09-00-00)
- Fix in G4Polyhedra::GetPointOnSurface() for the case when number of sectors
  (numSide) is equal to 1. At the origin of problems observed when checking
  overlaps for polyhedra solids defined as such.

31-May-2007, G.Cosmo (geom-specific-V08-03-03)
- Fixed initialisation of constants in constructor for - G4VTwistSurface,
  G4PolyPhiFace, G4PolyconeSide, G4PolyhedraSide - following latest changes
  for tunable tolerance.

25-May-2007, G.Cosmo (geom-specific-V08-03-02)
- Fixed default response of DistToIn/DistToOut for twisted solids.
- Use G4TWISTDEBUG instead of G4SPECSDEBUG as debug conditional flag
  for twisted solids.
- Some cleanup in G4TwistTrapAlphaSide code.

18-May-2007, G.Cosmo (geom-specific-V08-03-01)
- Use kAngTolerance and kRadTolerance from G4GeometryTolerance class.
- Coworks with tag "global-V08-03-03".

11-May-2007, T.Nikitina (geom-specific-V08-03-00)
- Use call to G4GeometryTolerance instead of kCarTolerance where needed.
- Requires tag "global-V08-03-00" and related tag set.

26-Apr-2007, T.Nikitina (geom-specific-V08-02-05)
- Fix in GetPointOnSurface() for G4Polycone to consider also points laying
  on rings when consecutive Z-sections are coincident.
  Added method GetPointOnRing().
- Added unit test testPointOnSurfacePoly.cc.

27-Feb-2007, I.Hrivnacova (geom-specific-V08-02-04)
- Added specialised constructor for handling Z-sections in G4ExtrudedSolid.
- Cleared unecessary declaration of IsInside() methods in G4TriangularFacet
  and G4QuadrangularFacet.
- Updated unit test for G4ExtrudedSolid.

26-Feb-2007, I.Hrivnacova (geom-specific-V08-02-04)
- Added specialised constructor for handling Z-sections in G4ExtrudedSolid.
- Cleared unecessary declaration of IsInside() methods in G4TriangularFacet
  and G4QuadrangularFacet.
- Updated unit test for G4ExtrudedSolid.

15-Feb-2007, I.Hrivnacova (geom-specific-V08-02-03)
- Corrected caching of values in G4ExtrudedSolid.
- Bug fix in G4TriangularFacet::Intersect() to allow for correct update of
  'Distance' in condition.
- Updated unit test for G4ExtrudedSolid.

09-Feb-2007, G.Cosmo (geom-specific-V08-02-02)
- Introduced new shape G4ExtrudedSolid, a solid representing the extrusion
  of an arbitrary polygon with fixed outline in the two Z sections.
  New files: G4ExtrudedSolid[.hh.icc.cc] and testG4ExtrudedSolid.cc
  by I.Hrivnacova.
- G4TessellatedSolid:
  o Made relevant solid's methods virtual, to be used as base class.
  o Added implementation for GetSurfaceArea() and GetPointOnSurface() methods.
  o Added protection in SurfaceNormal() method in case of facet not found.
  o Check and return kOutside in Inside() if point out of solid's extent.

01-Feb-2007, G.Cosmo (geom-specific-V08-02-01)
- Fix in G4PolyconeSide::DistanceAway() for correct estimation of distance
  for the case of Phi sections (T.Nikitina).
  Addresses problem report #598.
- Updated unit test for G4Polycone to consider new test case.

22-Jan-2007, G.Cosmo (geom-specific-V08-02-00)
- Do not scale reducible-polygon in G4Polyhedra::Reset() method.
  The 'original_parameters' structure offered as input through the accessors
  are always assumed to be already scaled by the 'cos(0.5*phiTotal/theNumSide)'
  factor. Addresses problem report #873.
- Fixed warning printout in G4Polycone::Reset().

15-Nov-2006, J.Allison (geom-specific-V08-01-04)
- Fixed typo in G4Polycone::CreatePolyhedron() introduced by mistake in
  the last cleanup of the source code.

13-Nov-2006, G.Cosmo (geom-specific-V08-01-03)
- Added concrete implementation of GetSurfaceArea() in G4Tet (M.H.Mendenhall).

08-Nov-2006, G.Cosmo (geom-specific-V08-01-02)
- Cleared compilation warnings on SUN-CC for changes in the last tag.
  Fixed overloaded class variables in G4Polyhedra and G4Polycone
  implementation of CreatePolyhedron().

31-Oct-2006, J.Allison (geom-specific-V08-01-01)
- Implemented CreatePolyhedron() for G4Polyhedra and G4Polycone.

20-Oct-2006, G.Cosmo (geom-specific-V08-01-00)
- Implemented caching mechanism for computation of surface area in
  all solids and base classes, as done for the geometrical volume
  computation.
- Added missing fake constructor for object persistency to G4TessellatedSolid.

20-Jun-2006, G.Cosmo (geom-specific-V08-00-10)
- Added accessor method GetVertices() in G4Tet to return the list of
  vertices composing the solid. Required for GDML persistency.

06-Jun-2006, G.Cosmo (geom-specific-V08-00-09)
- Added protection against NaNs in G4PolyconeSide::Normal() for points at
  the origin.

19-May-2006, G.Cosmo (geom-specific-V08-00-08)
- Fix in G4Ellipsoid::SetZCuts() and G4EllipticalTube::SetZCut() for usage
  of uninitialised variables.

08-May-2006, G.Cosmo (geom-specific-V08-00-07)
- Cleared compilation warning on SUN-CC in G4TriangularFacet.cc.

04-May-2006, G.Cosmo (geom-specific-V08-00-06)
- Use different names for unit tests to avoid confusing liblist ...

03-May-2006, G.Cosmo (geom-specific-V08-00-05)
- Added four unit tests for G4TessellatedSolid.

24-Mar-2006, G.Cosmo (geom-specific-V08-00-04)
- G4TwistedTubs: defined exact estimation for GetCubicVolume(),
  similar to the one adopted for G4Tubs.

03-Mar-2006, G.Cosmo (geom-specific-V08-00-03)
- Corrected boolean condition in G4TriangularFacet::Intersect().
  Use '&&' operator in condition. Allows for porting on WIN32-VC.

01-Mar-2006, G.Cosmo (geom-specific-V08-00-02)
- Introducing first implementation of a tessellated solid, contribution
  of P.R.Truscott (QinetiQ Ltd, UK).
  New classes: G4QuadrangularFacet, G4TessellatedSolid, G4TriangularFacet
  and G4VFacet.
- Requires tag "greps-V08-00-00".

12-Jan-2006, J.Allison (geom-specific-V08-00-01)
- G4TwistedTubs and G4VTwistedFaceted::CreatePolyhedron():
  parameterised polyhedron mesh approximation in terms of
  G4Polyhedron::GetNumberOfRotationSteps().
  This is (a) more economical and (b) amenable to user control.

19-Dec-2005, O.Link (geom-specific-V08-00-00)
- Fixes in G4EllipticalCone:
  o Changed GetPointOnSurface(), which was not uniform in endcaps.
  o Bug fix in Inside(), which was not correct for the elliptic mantel.
    Made test similar as in G4EllipticTube.
  o Several fixes in DistanceToIn/Out(): for looping events (shortest
    distance was taken, even if 0); now comparing the distance to the endcap
    and to the mantel and decide afterwards which distance is shortest;
    added check n*v.
  o The code is now "good" at 90%. Still 10% wrong reconstructed events.
    e.g there is a problem is DistanceToOut(): missed the intersection
    (reconstruction took the encap instead of the mantel).

09-Dec-2005, O.Link
- Fixed visibility of soft edges on the twisted solids.

08-Dec-2005, O.Link (geom-specific-V07-01-14)
- Fixed bug in G4VTwistSurface::ComputeLocalPoint(p) for point coordinate
  transformation. The bug affected only G4TwistTrapFlatSide.

06-Dec-2005, G.Cosmo (geom-specific-V07-01-13)
- Fixed compilation errors on WIN32-VC for last tag changes.

05-Dec-2005, O.Link (geom-specific-V07-01-12)
- Added polyhedron definition for twisted solids (G4TwistedTrap,
  G4TwistedTrd, G4TwistedBox, G4TwistedTubs) for visualization.

30-Nov-2005, G.Cosmo (geom-specific-V07-01-11)
- Trivial fixes for porting on CLHEP-2.0.X series.

18-Nov-2005, O.Link (geom-specific-V07-01-10)
- Renamed classes for twisted solids set, to identify them in the
  twisted framework.

17-Nov-2005, O.Link
- G4VTwistedFacted:
  o corrected bug in DistanceToSurface() implementation
  o added GetPointOnSurface() method
- G4TwistedTubs:
  o added GetPointOnSurface() method
- G4Hype:
  o corrected surface area calculation used in GetPointOnSurface()

17-Nov-2005, G.Cosmo (geom-specific-V07-01-09)
- More fixes required for direct object persistency to G4Polycone,
  G4polyhedra and related utility classes.

10-Nov-2005, J.Allison (geom-specific-V07-01-08)
- G4Tet:
  o Added implementation for GetPolyhedron() and GetCubicVolume().
  o Corrected order of specifying vertices in CreatePolyhedron().

09-Nov-2005, G.Cosmo (geom-specific-V07-01-07)
- Added fake default constructor for all concrete solids and relevant
  utility classes, for usage of direct object persistency.
- Implemented changes to support CLHEP-2.0.X for explicit usage of the
  CLHEP/HepGeom namespaces for CLHEP types.

07-Nov-2005, G.Cosmo (geom-specific-V07-01-06)
- G4Ellipsoid: replaced call to hypot(x,y) with std::sqrt(x*x+y*y)
  for porting to ISO standard.

02-Nov-2005, G.Cosmo (geom-specific-V07-01-05)
- G4Polyhedra, G4Polycone:
  o Protected case of generic construct for visualization.
  o Introduced explicit flag and method IsGeneric() to identify the kind
    of constructor used.

29-Sep-2005, G.Cosmo (geom-specific-V07-01-04)
- Fix in G4EllipticalCone methods DistanceToIn() and DistanceToOut().
  Added unit test for it (by D.Anninos).
- Coworks with tag "greps-V07-01-02".

10-Aug-2005, G.Cosmo (geom-specific-V07-01-03)
- Introduced new solid G4EllipticalCone, a full cone with elliptical base
  that can be cut in Z (by D.Anninos).
  Coworks with tag "greps-V07-01-02".

08-Aug-2005, D.Anninos (geom-specific-V07-01-02)
- Added GetPointOnSurface() for all solids except twisted ones.
  The method returns a random point according to a quasi-uniform
  distribution along the surface.

18-Jul-2005, G.Cosmo (geom-specific-V07-01-01)
- Fixed compilation warning on WIN32-VC for G4VSurface.cc.
- Not including G4Tet.

06-Jul-2005, G.Cosmo (geom-specific-V07-01-00)
- Added new shape G4Ellipsoid. Coworks with tag "greps-V07-01-00".
  Contribution of G.Horton-Smith and G.Guerrieri.
  Code cleanup, and added default arguments for cuts, added first
  implementation of unit test.
- Corrected unit tests for twisted-box/trap.
- Not including G4Tet.

15-Jun-2005, J.Apostolakis
- Introduced new solid G4Tet, contribution of M.H.Mendenhall
  and R.A.Weller, Vanderbilt University, USA.

29-Apr-2005, O.Link (geom-specific-V07-00-04)
- G4TwistedSurface: fixed bug in GetAreaCode() affecting G4TwistedTubs.

04-Apr-2005, G.Cosmo (geom-specific-V07-00-03)
- Added test for Number-Of-Rotation-Steps in GetPolyhedron() for
  G4VCSGfaceted, G4Hype and G4EllipticalTube (by J.Allison).
  Requires tag "greps-V07-00-02".
- Added elementary implementation of CreatePolyhedron() for G4Hype,
  G4TwistedBox, G4TwistedTubs, G4TwistedTrd, G4TwistedTrap.
- Some code cleanup.

18-Mar-2005, O.Link (geom-specific-V07-00-02)
- New generic framework for twisted solids G4TwistedBox, G4TwistedTrd and
  G4TwistedTrap: inheriting now from the base class G4VTwistedFaceted.
- Extended G4TwistedTrap to support setups with different trapezoidal
  endcaps with centres not necessarily on a line parallel to the z axis.
- Added G4TwistedTrd and general G4TwistedTrap as test cases in test.

03-Mar-2005, J.Allison
- Changed AddThis() to AddSolid() for all solids in the implementation
  of DescribeYourselfTo(G4VGraphicsScene&).

01-Mar-2005, O.Link (geom-specific-V07-00-01)
- Fixed compilation warnings on WIN32-VC for G4VSurface.cc.

14-Feb-2005, O.Link (geom-specific-V07-00-00)
- Use new polynom approximations based on new solver based on Jenkins-Traub
  algorithm, for twisted-box and twisted-trap.
- Fixed bug in the usage of 'fmod' and adopt special treatment for 'parallel'
  events in G4TwistedBoxSide and G4TwistedTrapSide.
- Coworks with tag "global-V07-00-00".

08-Dec-2004, O.Link (geom-specific-V06-02-07)
- Extensions to twisted box/trap shapes to consider all 4 solutions
  for determining correct intersections.

29-Nov-2004, O.Link (geom-specific-V06-02-06)
- G4TwistedTrapSide, G4TwistedBoxSide: improved (analytical) version
  of GetPhiUAtX() method.

24-Nov-2004, O.Link (geom-specific-V06-02-05)
- Fixed bug in description of twisted trapezoid side.

12-Nov-2004, O.Link (geom-specific-V06-02-04)
- Added G4TwistedBox  - a twisted box with twist angle alpha,
                        length a/2,b/2,L/2.
- Added G4TwistedTrap - a twisted trapezoid (still in debug state)
- Changed in G4VSurface.icc:
    - GetNeighbours(): corrected axiscode (was returning the wrong neighbours)
    - SetNeighbours(): fixed problem #685 (index out of range)
- Added tests for G4TwistedBox and G4TwistedTrap in specific/test.
- Added G4TwistedBox and G4TwistedTrap in system testing, test10.

22-Oct-2004, D.C.Williams (geom-specific-V06-02-03)
- Fix in G4PolyconeSide::Inside for points at radius = 0 for phi slides
  solids with an inner radius. Addresses problem report #598.

10-Oct-2004, J.Allison (geom-specific-V06-02-02)
- Added GetPolyhedron, a smart access function that creates a G4Polyhedron
  on request and stores for future access.  A null pointer means "not
  available".

22-Sep-2004, G.Cosmo (geom-specific-V06-02-01)
- Added implementation of GetCubicVolume() with cashing mechanism for
  solids: G4EllipticalTube, G4Hype, G4Polyhedra, G4Polycone, G4TwistedTubs.

01-Sep-2004, D.C.Williams (geom-specific-V06-02-00)
- G4VCSGfaceted: fix for rare anomalous situation in which
  DistanceToOut(p,v,..) will report kInfinity, make an additional check
  for the point p on the surface, in which case will report zero.
  Addresses problem observed in G4Polyhedra and reported in #650.

07-Jun-2004, G.Cosmo (geom-specific-V06-01-04)
- Fixed compilation problem in G4TwistedSurface.cc on WIN32-VC.

28-May-2004, G.Cosmo (geom-specific-V06-01-03)
- Fixed archiving problem on WIN32-VC7: replaced structs with classes
  in G4VSurface.
- Replaced misleading names for masks in G4VSurface and moved inlined
  methods of nested classes to .cc.

25-May-2004, G.Cosmo (geom-specific-V06-01-02)
- Fixed compilation problem on SUN-CC. Made EValidate enum public in
  G4VSurface.hh.

24-May-2004, G.Cosmo (geom-specific-V06-01-01)
- Removed compilation warnings and minor cleanup...

19-May-2004, O.Link (geom-specific-V06-01-00)
- First implementation of a framework for twisted surfaces, integrated from
  the original version of Kotoyo Hoshina (hoshina@hepburn.s.chiba-u.ac.jp)
  implemented in the 'Jupiter' application.
  o Includes new specific twisted shape: G4TwistedTubs.
  o New classes: G4VSurface, G4TwistedSurface, G4HyperbolicSurface,
                 G4FlatSurface, G4TwistedTubs.
  o Cleanup of original code (debugging messages, compiler errors, migration
    of g4std to new convention...)
  o New organisation of class G4TwistedTubs: now independent of XXXSurface;
    removed backpointer 'fSolid' from XXXSurface to G4TwistedTubs.
  o New form of constructors in G4TwistedSurface, G4HyperbolicSurface and
    G4FlatSurface.
  o Change in G4TwistedSurface::DistanceToIn(p,v,...): roundoff correction.

12-Jan-2004, G.Cosmo (geom-specific-V06-00-00)
- G4PolyhedraSide.cc: fixed bug in which particles could "leak" out the
  center of a face if inner radius = 0.
  Fixes problem report #547. (D.Williams)

22-Nov-2003, G.Cosmo (geom-specific-V05-02-07)
- Fixed upper bound for protection check introduced in G4Polycone and
  G4Polyhedra constructors.

17-Nov-2003, G.Cosmo (geom-specific-V05-02-06)
- Added protections in G4Polycone and G4Polyhedra constructors for
  invalid constructs with no contiguous segments in Z planes as input.

04-Nov-2003, G.Cosmo (geom-specific-V05-02-05)
- Added SetOriginalParameters() method to G4Polycone and G4Polyhedra.

03-Nov-2003, G.Cosmo (geom-specific-V05-02-04)
- Code cleanup and headers inclusion review
  (replaced by forward declarations where necessary).

28-Oct-2003, G.Cosmo (geom-specific-V05-02-03)
- Migrated to new G4Exception scheme.

20-Oct-2003, G.Cosmo (geom-specific-V05-02-02)
- Added Reset() method in G4Polycone and G4Polyhedra to allow
  recalculation and reshape of the solid if new original_parameters
  are provided.

30-Sep-2003, G.Cosmo (geom-specific-V05-02-01)
- Updated GNUmakefile for unit tests, according to new structure
  introduced in "geometry-V05-02-00".

16-Jun-2003, G.Cosmo (geom-specific-V05-02-00)
- Added accessors to original_parameters for G4Polycone and G4Polyhedra.
  Made G4PolyconeHistorical and G4PolyhedraHistorical classes in global
  scope (temporary solution).

28-Mar-2003, G.Cosmo (geom-specific-V05-00-00)
- Fixed initialisation of base class in copy contructor for:
  G4PolyPhiFace, G4PolyconeSide, G4PolyhedraSide.
- Fixed trivial pedantic warnings on G4Polycone and G4Polyhedra.

30-Oct-2002, G.Cosmo (geom-specific-V04-01-01)
- Fixed un-initialised data members in constructors of classes:
  G4ClippablePolygon, G4EnclosingCylinder, G4PolyconeSide,
  G4ReduciblePolygon, G4VCSGfaceted.

28-Oct-2002, G.Cosmo (geom-specific-V04-01-00)
- Added implementation of StreamInfo() to comply with new interface for
  G4VSolid in "geommng-V04-01-03".
- Created .icc files for G4EllipticalTube, G4Polyhedra and G4Polycone.
- Some cosmetic changes to code formatting: removed <TAB> characters and adopt
  uniform code indentation.

08-May-2002, J.Allison (geom-solids-specific-V04-00-01)
- Implemented G4EllipticalTube::CreatePolyhedron.

10-Jan-2002, G.Cosmo (geom-solids-specific-V04-00-00)
- Updated unit tests.

20-Apr-2001, G.Cosmo (geom-solids-specific-V03-01-00)
- Migration to STL vector:
  o In G4ClippablePolygon, migrated G4ThreeVectorList typedef and
    made private to class.

03-Apr-2001, D.Williams  (geom-solids-specific-V03-00-01)
-----------------------
- G4IntersectingCone.cc: make small adjustment to help with roundoff error
  in LineHitsCone1() and LineHitsCone2().

08-Jan-2001, D.Williams  (geom-solids-specific-V03-00-00)
-----------------------
- G4Hype.cc: Added protecton against zero v.z in DistanceToOut.

20-Nov-2000, G.Cosmo     (geom-solids-specific-V02-00-04)
---------------------
- Fixes to remove warnings from "-Wall -ansi -pedantic" g++ compiler options:
  o commented out variables declared and not used.
  o fixed declaration of variables used before being initialised.
  o fixed order of initialisation of member data in constructors.
  o fixed usage of unsigned-int (size_t) for array indeces.

13-Nov-2000, G.Cosmo     (geom-solids-specific-V02-00-03)
--------------------
- Added definition of empty constructor for G4ClippablePolygon which
  went lost by mistake...

02-Nov-2000, G.Cosmo     (geom-solids-specific-V02-00-02)
--------------------
- QA code revision and cleanup (+fixes from CodeWizard filtering):
  o Avoid inline virtual methods.
  o General cosmetics for Software Reference Manual.

23-Oct-2000, D.Williams  (geom-solids-specific-V02-00-01)
-----------------------
- G4IntersectingCone.cc: the check for a zero radical has been adjusted to be
  less sensitive to round off error in LineHitsCone1(), LineHitsCone2().
  This fixes a problem discovered in BaBar.

12-Sep-2000, G.Cosmo  (geom-solids-specific-V02-00-00)
--------------------
- Organised comments to headers for Software Reference Manual.

27-Jun-2000, G.Cosmo  (geom-solids-specific-V01-01-02)
--------------------
- G4Polycone[.hh.cc]: better fix for bug-report #110.
  Removed struct and replaced with class.

26-Jun-2000, G.Cosmo  (geom-solids-specific-V01-01-01)
--------------------
- G4Polycone.cc: fixed memory leak by invoking destruction of member
  enclosingCylinder, which was not cleaned up in the destructor.
  This fixes problem report #107.
- G4Polycone.hh: added forward declaration of struct G4PolyconeHistorical
  and made it friend, for porting on KCC --strict. This fixes report #110.
- G4Polyhedra.hh: fixed typo in method name. Changed GetNumSIde() to
  GetNumSide(). This fixes problem report #105.

08-Jun-2000, G.Gracia
---------------------
- G4VCSGfaceted.cc: fix for Win/NT in function GetExtent().

27-Apr-2000, G.Cosmo
--------------------
- Removed dependency over the CSG domain in GNUmakefile.

18-Apr-2000, D.Williams
-----------------------
- Removed meaningless "const" specifiers from methods in G4ClippablePolygon,
  and G4EllipticalTube.
- G4EllipticalTube, G4Hype and G4VCSGfaceted now inherit directly
  from G4VSolid (before was G4CSGSolid).
- Reintroduced GetExtent() in G4EllipticalTube, G4Hype and G4VCSGfaceted
  (in principle, not needed).
- Modified assertations in unit test testG4Hype.cc.

11-Apr-2000, J.Allison
----------------------
- Removed implementations of GetExtent in most sub-classes of G4VSolid (a
  default implementation exists in G4VSolid).
- All implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const
  now correctly written: scene.AddThis(*this).

05-Apr-2000, G.Cosmo   (geom-solids-specific-V01-01-00)
--------------------
- Restructured solids/CSG domain, by moving to "specific" the following
  classes: G4ClippablePolygon, G4EnclosingCylinder, G4Hype, G4PolyPhiFace,
  G4Polycone, G4PolyconeSide, G4Polyhedra, G4PolyhedraSide, G4ReduciblePolygon,
  G4IntersectingCone, G4SolidExtentList, G4VCSGface, G4VCSGfaceted.
  The new module's library for "specific" is now called 'G4specsolids'.
- Created specific/test directory and moved testG4Hype.cc and testG4Polycone,cc
  from CSG/test.
- Organised class description comments for the Software Reference Manual
  and added CVS headers to files.

29-Mar-2000, D.Williams
-----------------------
- Added first implementation of G4EllipticalTube.
  It defines a simple elliptical tube, as in geant3 "ELTU".
  Files introduced: G4EllipticalTube[.hh.cc].

25-Mar-2000, G.Cosmo
--------------------
- History file created.
