$Id: History,v 1.186 2010/11/26 13:36:35 gcosmo Exp $
-------------------------------------------------------------------

     =========================================================
     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
     =========================================================

                      Sub-Category History file
                      -------------------------
This file should be used by G4 developers and category coordinators
to briefly summarize all major modifications introduced in the code
and keep track of all directory-tags.
It DOES NOT substitute the  CVS log-message one should put at every
committal in the CVS repository !

     ----------------------------------------------------------
     * Reverse chronological order (last date on top), please *
     ----------------------------------------------------------

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.
