$Id: History,v 1.15 2000/05/31 14:44:14 gcosmo Exp $
----------------------------------------------------------------------------

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

             History file for geometry/solids/BREPS
	     --------------------------------------
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 category-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 *
     ----------------------------------------------------------

13/05/2000 : G. Cosmo            breps-V01-01-00
- Added protection to arguments fed to atan2(x,y) in G4Ellipse::Project().

11/04/2000 : J. Allison
- Removed implementations of G4VisExtent GetExtent() in most sub-classes
  of G4VSolid (a default implementation exists in G4VSolid).
  Files changed: G4BREPSolid[.hh.cc].
- All implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const
  now correctly written: scene.AddThis(*this).
  Files changed: G4BREPSolidOpenPCone.cc.

25/02/2000 : G. Cosmo		  breps-V01-00-02
 G4BSplineSurface[.hh.cc]
   - fixed dynamic memory allocation problem with creation of temporary
     hits and manipulation of knots.
   - rationalized dependencies over G4UVHit, G4ControlPoints and
     G4BoundingBox3D classes.
   - added initialization of pointers in constructor where missing.
 G4BSplineSurfaceWithKnots[.hh.cc]
   - created dummy classes.
 G4ConicalSurface.cc
   - Modified diagnostic message.
 G4PointRat.hh
   - Removed useless inclusion of G4UVHit.hh.
 G4UVHit.hh
   - Added missing initialization of data-members where needed.
   - Initialized 'next' pointer to zero in costructor.
 test/stepfiles
   - G4msgc_barrel_solid.stp was corrupted. Fixed.
   - Enhanced PERL script correct.pl to parse more complex STEP files.

14/02/2000 : G. Cosmo		  breps-V01-00-01
 G4BSplineSurface.cc - fixed warnings on HP-aCC
   - removed cast of G4Surface* to G4SurfaceList* (!) in function
     FinalIntersection().
   - replaced wherever needed explicit cast to G4PointRat from G4Point3D
     and viceversa, by using appropriate access functions instead.
 G4SurfaceList.cc
   - initialised 'next' and 'temp' pointers in default constructor.
 Changed 'char*' to 'const char*' as return-type for methods returning the
 concrete type name; removed temporary cast to char*. Updated files:
   - G4ThreeMat.hh, G4Surface.hh, G4SphericalSurface.hh, 
     G4RectangularTrimmedSurface.hh, G4FPlane.hh, G4FCylindricalSurface.hh,
     G4FConicalSurface.hh, G4CylindricalSurface.hh, G4ConicalSurface.hh,
     G4Curve.hh, G4BSplineSurface[.hh.cc].

21/01/2000 : G. Cosmo		  breps-V01-00-00
 Decoupling from NIST STEP reader completed:
   - G4RectangularTrimmedSurface.cc: removed inclusion of
     SdaiCONFIG_CONTROL_DESIGN.h
   - G4PointRat[.hh.cc]: removed unused function
     CopyRationalValue(const RealNode&).
   - G4Conic[.hh.cc]: removed constructor G4Conic(STEPentity&).
   - G4BREPSolid[.hh.cc]: removed unused function CreateSTEPData() and
     any references to STEP/instmgr.h.
   - G4Parabola.hh: removed declared and NOT defined constructors
     G4Parabola(STEPentity&) and G4Parabola(STEPentity&, InstMgr&).
   - G4Hyperbola.hh: removed declared and NOT defined constructors
     G4Hyperbola(STEPentity&) and G4Hyperbola(STEPentity&, InstMgr&).
   - G4Ellipse.hh: removed declared and NOT defined constructors
     G4Ellipse(STEPentity&) and G4Ellipse(STEPentity&, InstMgr&).
   - G4ControlPoints.hh: removed declared and NOT defined constructor
     G4ControlPoints(STEaggregate&, const int).
 Temporary fixes for porting on SUN-CC 5.0 compiler. Casts to char*:
   - G4ThreeMat.hh, G4Surface.hh, G4SphericalSurface.hh, 
     G4RectangularTrimmedSurface.hh, G4FPlane.hh, G4FCylindricalSurface.hh,
     G4FConicalSurface.hh, G4CylindricalSurface.hh, G4ConicalSurface.hh.

08/11/1999 : G. Cosmo             breps-V00-01-00
 First step for decoupling BREPS from NIST STEP reader:
   - Moved G4NISTStepReader[.hh.cc] and G4StepFileReader[.hh] to
     STEPinterface.
   - Removed unused references to STEP in G4KnotVector and G4PointRat.
   >> Still remaining: reference to STEPaggregate in G4PointRat;
                       reference to instMgr in G4BREPSolid.cc.


28/05/1999 : J. Apostolakis       breps-01-00-03a
 Tagged.


28/05/1999 : S. Giani 
 G4BREPSolidPolyhedra.cc  
   DistanceToOut: Introduced treatment for ray leaving from a boundary. 


27/05/1999 : J. Apostolakis       breps-01-00-03
 Cosmetic change to G4FCylindricalSurface.cc


25/05/1999 : S. Giani
 G4BREPSolidPolyhedra.cc(1.8) 
	Modified comparison of square distance to use the squared tolerance 
        (rather than the tolerance).          And used <=, instead of <.
 G4FPlane.cc(1.5): 
        Corrected the use of the tolerance in the intersect function
 G4SurfaceBoundary.cc(1.4): Return 1 by convention if on surface.


25/05/1999 : S. Magni
 G4BREPSolidPCone.cc v1.12: 
	New version of Inside function, 
      	     that uses first intersection & dot prod with normal 
             (instead of counting the number of distinct intersections)


21/05/1999 : J. Apostolakis       breps-01-00-02
 Tagged.


21/05/1999 : S. Magni
 G4BREPSolidPCone: Further minor corrections several methods
        - protecting HowNear with fabs when cheching against tolearance ..


21/05/1999 : J. Apostolakis
 G4BSplineSurface.hh,
 G4PointRat.hh,
 G4BREPSolid.cc,
 G4ProjectedSurface.cc
 G4Surface.cc
 G4BREPSolid.cc
        - changed INFINITY to kInfinity


20/05/1999 : S. Giani
 G4Line.cc:
        - A preliminary fix to avoid 0-lenght segments has been introduced.


19/05/1999 : S. Magni
 G4BREPSolidPCone: Corrected several methods 
        - constructor          to take into account the changed G4FPlane 

	- Inside
	- SurfaceNormal
	- DistanceToIn( p, v)
	- DistanceToOut( p, v) 
            for 
                corrected behaviour of HowNear, which is for finite surfaces.
		...
 G4FCylindricalSurface, 
 G4FConicalSurface.cc: 
        Corrected the following methods:
	- Intersect
	- HowNear


12/05/1999 : S.Giani  
 G4BREPSolidPolyhedra Corrections by S.Giani:
        - Xaxis now corresponds to phi=0
        - partial angle = phiTotal / Nsides
        - end planes exact boundary calculation for phiTotal < 2pi 
           (also including case with RMIN=RMAX) 
        - Xaxis now properly rotated to compute correct scope of vertixes
        - corrected surface orientation for outer faces parallel to Z
        - completed explicit setting of the orientation for all faces
        - some comparison between doubles avoided by using tolerances. 

  G4FPlane corrections 
	- The constructor using iVec now properly stores both the internal
	  and external boundaries in the bounds vector.
	- Proper initialization of sameSense in both the constructors. 
	- Addition of third argument (sense) in the second constructor 
	  to ensure consistent setting of the normal in all the client code.



27/01/1999 : L. Broglia ( new tag : breps-01-00-01 )
 - functions Inside, DistanceToIn and DistanceToOut
   are re-written to satisfy requirements

 - these functions are identical into G4BREPSolid
   and into G4BREPSolidPCone & Polyhedra because
   there are general (see ToDo.txt)

 - corrections of G4BREPSolid::CalculExtent by
   Stefano Magni 



14/01/1999 : L. Broglia
 - modification of the IntersectRay2D function

     before : void IntersectRay2D(const G4Ray& ray,  
                                  G4CurveRayIntersection& is)

     now :  G4int IntersectRay2D(const G4Ray& ray)

  return the number of intersections into the curve boundaries,

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

December, 1998 : L. Broglia

 - bugs fixed in order to run correctly test05 
   for the first product version 

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

November 11, 1998 : L. Broglia

 - correct Inside function for G4SphericalSurface
 - create (but now is empty) Inside function for
   G4CylindricalSurface
 - new implementation into G4CylindricalSurface::Intersect


November 04, 1998  L. Broglia    geometry-00-03-04

- Cleaned up trivial errors on DEC (undefined loop variables).
- Removed old CurveTest, now separate in G4BREPSolidxxxTest files
- Changing the name of the output files. All the tests run correctly with
  Linux, Sun, HP and DEC compilers

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

date: 1998/10/30 22:20:16;  author: japost;  state: Exp;  lines: +11 -5
Changed

<           HitDistance = closest_point.distance2(RayStart);

to
>           HitDistance = closest_point.distance2((G4Point3D &)RayStart);

   because
              distance2( HepPoint3D &p )
   in CLHEP/Point3D
   should be
              distance2( const HepPoint3D &p )
   as it is const!


October 29, 1998  L. Broglia

 - Changed all the occurences of G4Placement into G4Axis2Placement3D.
 - Modified G4FPlane - new implementation, inheriting from G4Axis2Placement3D
 - Create in G4PointRat INFINITY which is a double and PINFINITY which is a 
   HepVector3D
 - Corrected a bug into G4BREPSolidCylinder
 - Created  a test for the curves
 - Created tests for all BREP solids.
   For the moment, only test for the sphere and test for the torus 
   run correctly
 - Created a test which read a STEP file and created the BREP solid




October 20, 1998  L. Broglia    Breps-lionel-tag1-point3D

- Changed all the occurences of G4Point3d, G4Point2d into G4Point3D, which 
  is a HepPoint3D.
- Modified G4PointRat - new implementation, inheriting from G4Point3D.
- Changed ThreeVec into Vector3D or Point3D, depending on its use.

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

October 13, 1998  J. Apostolakis  geometry-00-03-01

- Tag created.

October 12, 1998  J. Apostolakis  geometry-00-03-01

- Small (cosmetic) changes to aid in compilation on Sun, HP.  
   Renamed local variables, whose name was the same as a class variable or method.

July   9, 1998: J. Apostolakis  breps-00-01-02

- Fixes to G4Assembly, to aid STEPinterface.  (Jari).
- Fix to G4Placement equality operator.   (J.A.)
  Compiles on AIX.


July   8, 1998: J. Apostolakis  breps-00-01-01

- Tagged. 


July   5, 1998: P. Urban

  - Fixes to compile on AIX-AFS.


July   2, 1998: J. Apostolakis (for P. Urban)

- All of Peter Urban's development of Curves is added from 
  the head of the alpha repository.


July   1, 1998: J. Apostolakis (pre-beta01-01)

- Geant4beta created from alpha07 tag (which was on a branch).


-----------------------------------------------------------------
These fixes were added to alpha07 - which was on a branch from
  the head

June  12, 1998: J. Apostolakis (for J. Sulkimo) 

- Correction to constructor of BREPSolidPCone. 
   (An out-of-date version was mistakenly included in fix to
    Conical Surface). 

June  10, 1998: J. Apostolakis (for J. Sulkimo) 

- Bug fixes to Conical Surface (FConical and Conical) to get
 PCone to work.  

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

June   8, 1998: J. Apostolakis breps-00-06-01

- Tagged what seems to be the last version before the merge 
of Peter Urban's code. Found this by using day before merge,
May 27th. 

April 28, 1998: G. Cosmo, breps-00-05-07

- Cleaned up trivial warnings on DEC (Extraneous semicolons).
- Removed -cfront option from GNUmakefile for DEC. -cfront
  overrides ANSI standard rules in cxx-6.0.

April 24, 1998: J. Sulkimo, breps-00-05-06

- fixed scope bugs in for loops

April 24, 1998: J. Sulkimo, breps-00-05-05-assembly

- G4Assembly.cc bug fixes in STEP file interaction & placed solids
  creation. Heavy changes in method G4Assembly::CopySTEPData

April 24, 1998: J. Sulkimo, breps-00-05-05-point3d

- rerenamed G4Point3d.hh to G4Point3d.h to avoid file name conflict on
  NT

April 23, 1998: G. Cosmo
- Added missing canonical implementation of operator== in G4PlacedSolid.hh


April 22, 1998: J. Sulkimo, breps-00-05-03-assembly (recorded by J.Apostolakis)

- Bug Fixes to G4Assembly, requiring changes to the files:

  include/G4Assembly.hh
  include/G4PlacedSolid.hh
  include/G4StepFileReader.hh
  src/G4Assembly.cc
  src/G4BREPSolid.cc
  src/G4CurveBoundary.cc
  src/G4PlacedSolid.cc
  src/G4Surface.cc


March 18, 1998: P. Urban, breps-00-05-02

- Names of lots of member functions changed:

  BoxOrNo to IsBox
  ConvexOrConcave to IsConvex
  + removing _ and capitalization.

  Cleanup of the code will continue later.


March 18, 1998: P. Urban, breps-00-05-01d

- Some member functions were removed. Renamed G4B_SplineCurve.

March 18, 1998: P. Urban, breps-00-05-01c

- the following classes have been renamed:

  from to

  G4B_SplineCurve G4BSplineCurve
  G4B_SplineCurve_With_Knots G4BSplineCurveWithKnots
  G4B_SplineSurface G4BSplineSurface
  G4Conic G4ConicalSurface
  G4Cylinder G4CylindricalSurface
  G4EllipticCurve G4Ellipse
  G4FConic G4FConicalSurface
  G4FCylinder G4FCylindricalSurface
  G4HyperbolicCurve G4Hyperbola
  G4ParabolicCurve G4Parabola
  G4PlaneSurface G4FPlane
  G4Rational_B_SplineCurve G4RationalBSplineCurve
  G4SpheShell G4SphericalSurface
  plane G4Plane
  uv_hit G4UVHit

March 18, 1998: P. Urban, breps-00-05-01b

- some class names will be changed; renaming the files (but not the classes!)
  was done.

March 18, 1998: P. Urban, breps-00-05-01a

- *.h files renamed to *.hh.

March 18, 1998: P. Urban, breps-00-05-01

- Modifications made before alpha05 which are not part of alpha05
  for some reason.











