$Id: History,v 1.50 2002/06/19 10:22:27 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 *
     ----------------------------------------------------------

Jun 19, 2002   V.Grichine                geom-csg-V04-00-05
- G4Sphere.cc: bug fixed in Inside() for treatment of point p on z-axis.
  Added new condition [(rho2 || p.z()) && fDTheta < M_PI - kAngTolerance*0.5)]
  for treating special case. Fixes problem report #378.

May 15, 2002   G.Cosmo                   geom-csg-V04-00-04
- G4Trap.cc, G4Tubs.cc: changed local enum 'kUndefined' to 'kUndef',
  to co-work with tag "global-V04-00-06", where 'kUndefined' is now
  defined for EAxis.

Apr 16, 2002   V.Grichine                geom-csg-V04-00-03
- G4Tubs.cc: restored "vertices" algorithm for CalculateExtent() which
  was temporarly disabled (see reference to tag geom-solids-csg-V03-00-03).
- Updated unit test for G4Tubs, testG4Tubs.cc.

Feb 15, 2002   V.Grichine                geom-csg-V04-00-02
- G4Para.cc: fixed bug in G4Para::Inside() in calculation of xt,
  according to problem report #357.

Jan 31, 2002   V.Grichine                geom-csg-V04-00-01
- G4Sphere.cc: bug fix in Inside() function.
  Fix problem report #216.
- Updated unit test for G4Sphere.

Jan 10, 2002   G.Cosmo                   geom-solids-csg-V04-00-00
- Moved all verbosity mode warnings to G4CSGDEBUG and commented exceptions.
- Activated G4CSGDEBUG mechanism in GNUmakefile.
- G4Sphere.cc: fixed a problem with tolerances in the case of large Radius.
  The case (test18) involves an Rmax = 250 000 000.00 mm
  The ratio                         -9
              tolerance       1.0 10              -17
              ----------- =  ------------ = 0.4 10
                  Rmax                +8
                                2.5 10
  which is smaller than the precision of doubles.
  Solution (for DistanceToOut(), where problem occured):
  use a flexible tolerance, equal to the maximum of (kRadTolerance, 10 * R )
  (J.Apostolakis).
- Upgraded unit tests and fixed warnings on gcc-2.95-2.

Aug 27, 2001   V.Grichine                geom-solids-csg-V03-02-00
- G4Sphere.cc: bug fixed in G4Sphere::SurfaceNormal for the case kNETheta.
  Fixes problem report #290.

May 18, 2001   G.Cosmo                   geom-solids-csg-V03-01-02
- Added G4CSGDEBUG preprocessor flag to discriminate for debug verbosity
  specific to CSG solids. Included in G4Exception of DistanceToOut() for
  "point p is outside" in G4Box, G4Cons, G4Tubs.

Apr 20, 2001   G.Cosmo                   geom-solids-csg-V03-01-01
- Updates for migration to STL vector.
  Modified files: G4Box.cc, G4Cons.cc, G4Para.cc, G4Sphere.cc,
                  G4Torus.cc, G4Trap.cc, G4Trd.cc, G4Tubs.cc.
  Require coworking with the rest of geometry-V03-01-00.

Apr 18,   01   V. Grichine               geom-solids-csg-V03-01-00
- G4Trap.cc:
  o Fixed memory leak in CalculateExtent() for creation of vertices in
    case of finite rotation. (courtesy of D.Williams)
  o Removed useless inclusion of math.h.

Feb 21,   01   V. Grichine               geom-solids-csg-V03-00-03
- G4Tubs.cc:
  o Fixed bug in function Inside(p) in computation of pPhi
    for points at phi = 0 if the (start phi)+(delta phi) is at phi = 0.
  o Temporarly modified CalculateExtent(...), now simply based on
    G4Box::CalculateExtent(...). Updated unit test testG4Tubs.cc.

Feb 01,   01   V. Grichine               geom-solids-csg-V03-00-02
- G4Box: introduced checks against negative (or <2*kCarTolerance) dimensions
  in methods SetXHalfLength(), SetYHalfLength() and SetZHalfLength().

Jan 29,   00   G. Cosmo                  geom-solids-csg-V03-00-01
- G4Box: introduced fixes to algorithm for computation of rotated vertices
  in CalculateExtent() as previously committed in tag geom-solids-csg-V02-00-10.
- G4Torus: extracted logic for G4PolynomialSolver now included in
  global/HEPNumerics. Coworks with tag global-V03-00-02.
- Added dependency to global/HEPNumerics in GNUmakefile.

Jan 18,   00   V. Grichine               geom-solids-csg-V03-00-00
- Fixed condition from (pPhi<0) to (pPhi<-0.5*kAngleTolerance) in
  G4Tubs::Inside(p). Fixes problem report #198.

Dec 07,   00   V. Grichine               geom-solids-csg-V02-00-14
- G4Tubs.cc: corrections in phi-section algorithm of Inside(p).

Dec 01,   00   G. Cosmo                  geom-solids-csg-V02-00-13
- Increased basic number of iterations from 8 to 12 for Newton algorithm
  in G4Torus.cc to assure root retrivial.

Nov 28,   00   V. Grichine               geom-solids-csg-V02-00-12
- Bug fixed in G4Tubs::Inside(p) for analysis of phi positioning when
  on +-fDz surface.

Nov 20,   00   G. Cosmo                  geom-solids-csg-V02-00-11
- 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.
- NB: based on tag geom-solids-csg-V02-00-09.

Nov 16,   00   V. Grichine               geom-solids-csg-V02-00-10
- G4Box.cc: introduced fixes to algorithm for computation of rotated vertices
  in CalculateExtent(). (D.Williams)

Nov 10,   00   G. Cosmo                  geom-solids-csg-V02-00-09
- G4Torus.cc: removed debug print-out which was still included by mistake
  in constructor.

Nov 02,   00   G. Cosmo                  geom-solids-csg-V02-00-08
- QA code revision and cleanup (+fixes from CodeWizard filtering):
  o Removed virtual keyword from GetEntityType() concrete function.
  o General cosmetics.

Oct 31,   00   V. Grichine               geom-solids-csg-V02-00-07
- G4Tubs::DistanceToOut(p,v,...):
  o Initialised sr and sphi to kInfinity and re-introduced additional
    condition on check for Rmin intersection (t2 >= 0).

Oct 26,   00   G. Cosmo                  geom-solids-csg-V02-00-06
- G4Cons::DistanceToOut(p,v): leave out warning if point is outside.

Oct 23,   00   G. Cosmo                  geom-solids-csg-V02-00-05
- G4Tubs::DistanceToOut(p,v,...):
  o Still correction to thickness of conical surfaces. (V.Grichine)
  o Commented-out additional condition on check for Rmin intersection
    (t2 >= 0), recently introduced (roi2).
    Requires further investigation !!
- G4Torus:
  o Introduced more stable numerical method (Newton-based) for computing
    roots of equations in DistanceToIn() and DistanceToOut(). (E.Medernach)

Oct 18,   00   V. Grichine               geom-solids-csg-V02-00-04
- G4Cons.cc, G4Tubs.cc:
  added check against negative distance returned by DistanceToIn/DistanceToOut.
- G4Cons.cc:
  added correction for thickness of conical surfaces, remarkable for big
  opening angles, in DistanceToIn/DistanceToOut functions.

Oct 05,   00   V. Grichine               geom-solids-csg-V02-00-03
- G4Cons.cc:
  o fix in DistanceToIn(p,v): corrected condition on conical surface to
    consider a real projection of the conical surface thickness on XY
    plane (0.5*kCarTolerance*secRMin instead of 0.5*kCarTolerance), when
    dealing with cons with large opening angle.
  o Updated unit test testG4Cons2.cc.

Aug 16,   00   V. Grichine		 geom-solids-csg-V02-00-02
- G4Cons.cc:
  o fix in constructor to check if one of the Rmin is equal to 0,
    if so, it will be set to 1e3*kRadTolerance.
  o Deactivated call to G4Exception in DistanceToOut(p) if p is outside,
    replaced by simple warning.
- G4Tubes.cc, G4Box.cc:
  o Deactivated call to G4Exception in DistanceToOut(p) if p is outside,
    replaced by simple warning.

Aug 08,   00   V. Grichine               geom-solids-csg-V02-00-01
- G4Cons.cc, G4Tubs.cc:
  o fixes to DistanceToOut(p,v,...) to make roots of quadratic equations
    more stable.
  o added check if point is outside in G4Tubes::DistanceToOut(p),
    some code formatting.

Jul 27,   00   V. Grichine               geom-solids-csg-V02-00-00
- G4Cons.cc:
  o added more diagnostics in DistanceToOut(p)
  o cosmetics changes
- Updated unit test for G4Cons.

Jun 22,   00   V. Grichine               geom-solids-csg-V01-01-04
- G4Box.cc:
  o added safety against call from outside in DistanceToOut(p)
  o added more diagnostics before exception in DistanceToOut(p,v,...)
  o cosmetics changes
- G4Torus[.hh.cc]:
  o added new alternative functions SolveBiQuadratic/CubicNew.
  o fix in SolveBiQuadratic() for ambiguous expression in looping index
    detected by Insure++.
- Updated unit tests testG4Torus and testG4Trd.

May 17,   00   V. Grichine               geom-solids-csg-V01-01-03

- G4Tubs.cc:
  o introduced fix in DistanceToOut(p,v,...) in computation of xi, yi for
    (sphi >= -0.5*kCarTolerance). This fixes problem reports #76 and #91.
  o added more diagnostics in case of invalid enum for DistanceToOut.
- Updated unit test for G4Tubs.

May 05,   00   V. Grichine               geom-solids-csg-V01-01-02

- G4Box.cc, G4Trd.cc:
  o modified DistanceToIn(p,v) to return 0 distance in case computed
    value is less than 0.5*kCarTolerance.
  o Cosmetic changes.
- Updated unit tests for G4Box and G4Trd.

Apr 11,   00   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).

Apr 05,   00   G. Cosmo                  geom-solids-csg-V01-01-01
 - G4Tubs.cc: fixed bug in function Inside(p).
              Removed (commented) in the code umproper addition of 2PI
	      to Phi-angle particle (V.Grichine)
 - G4Hype[.hh.cc]: fixed several longstanding issues and bring methods
                   into compliance with specifications  (D.Williams)
 - Moved to "specific" the following classes:
   G4ClippablePolygon, G4EnclosingCylinder, G4Hype, G4PolyPhiFace,
   G4Polycone, G4PolyconeSide, G4Polyhedra, G4PolyhedraSide,
   G4ReduciblePolygon, G4IntersectingCone, G4SolidExtentList,
   G4VCSGface, G4VCSGfaceted.
 - Moved testG4Hype.cc and testG4Polycone.cc from CSG/test to
   specific/test
 - Moved generic tests "SBT" and "Fred" one level up to solids/test.
 - Organised class description comments for the Software Reference Manual
   in all headers.

Mar 23,   00   G. Cosmo                  geom-solids-csg-V01-01-00
 - Tagged.

Mar 22,   00   D. Williams
 - G4PolyhedraSide.cc: fixed bug in G4PolyhedraSide::Normal(...).
   The method Normal(...) (used by G4VCSGfaceted::SurfaceNormal) was not
   filling in the argument bestDistance. This fixes a bug observed in
   G4Polyhedra::SurfaceNormal.

Mar 14,   00   V. Grichine
 - Added diagnostics in G4Cons, G4Sphere and G4Torus in function
   DistanceToOut(p,v,...).

Mar 03,   00   G. Cosmo                   geom-solids-csg-V01-00-05
 - Minor fixes to unit tests to make them up-to-date with recent
   development versions (already included in tag geometry-V01-00-00a).
 - G4PolyconeSide.cc, G4PolyhedraSide.cc: added explicit cast to G4int
   to avoid warnings on Linux.

Jan 19,   00   G. Cosmo			  geom-solids-csg-01-00-04
 - Fixed bug in DistanceToIn(p,v). Modified files: G4Trap.cc and
   testG4Trap.cc. (V.Grichine)
 - Syncronized file versions with HEAD (essentially CVS headers changes).
 - Fixes for missing migration on HEAD related to some files in test/fred
   and test/SBT.
 
Nov 17,   99   J. Apostolakis             geom-solids-csg-01-00-03
 - Tagged

Nov 17,   99   V. Grichine
 - Added initialisation to Eside "side" variable in DistanceToOut(p,v)
   in CSG solids   -->   Problem report from D.C. Williams, BaBar
 - A check in G4Trap Makeplane added.

Nov 10,   99   J. Apostolakis             geom-solids-csg-01-00-02-cand
 - Included  David Williams' modifications to 
   G4IntersectingCone.cc, G4PolyconeSide.cc and G4VCSGfaceted.cc
   and to  test/SBT/SBT.cc  and  test/SBT/polycone.geant4

Nov 10,   99   J. Apostolakis             geom-solids-csg-01-00-01
 - Tagged

May 18,   99   David Williams
 - Replaced 1/DBL_MAX with DBL_MIN (valid correction, seen in tests for STL) 
   in G4PolyPhiFace.cc, G4PolyconeSide.cc and G4PolyhedraSide.cc

Apr 29,   99   David Williams
 - G4Polyhedra and G4Polycone (and G4VCSGfaceted) modified:
         1. Implemented correct copy constructors and assignment operators.
         2. Fix some leaks for tracks that pass exactly through an edge. 
            Some leaks still remain: particularly if a track passes through
	     a corner and between the curved edges of G4Polycone.
         3. G4Polyhedra argument numSide changed to G4int (from G4double)

Apr 13,   99   Vladimir Grichine and Simone Giani
 - Minor consistency fix to 8 basic CSG solids: 
   Tolerance used in calculation of extent but not in one place,
   and not another - this tripped up the client code. 

Feb 16,   99   David Williams
 - Repaired bugs in G4Polycone (G4PolyconeSide.cc) as found in
   test/testG4Polycone and missed in below.
 - Updated definition of DistanceToIn(p) and DistanceToOut(p) to
   return zero when the point p is on the surface of the solid.

Feb 12,   99   David Williams
 - src/G4PolyconeSide.cc updated (revision 1.4) to fix a bug discovered by
   test/testG4Polycone.

Feb   9,  99   David C. Williams      (davidw@scipp.ucsc.edu)
 - I've committed new versions of the CSG Polycone and Polyhedra in the
   geant4 repository, including a new utility class called
   G4ReduciblePolygon. The new versions fix several subtle bugs which my  
   "test3" batch geometry testing code uncovered. In addition, the new class
   G4ReduciblePolygon is used to run strict tests on the validity of input
   parameters.
   To fix a bug in Polyhedra, I had to back out some fancy code that
   allowed it to calculate intersections at a speed that was independent of
   the number of sides. The new version now runs at a speed proportional to
   the number of sides, and is thus much slower for polyhedras with many
   sides. I can fix this, but I thought it would be best to get the bug fixes
   in as soon as possible.

Feb  10,  99   John Apostolakis
 - History file created.
