Back to home page

EIC code displayed by LXR

 
 

    


Warning, /geant4/source/geometry/solids/CSG/History is written in an unsupported language. File is not indexed.

0001 # Category geom-csg History
0002 
0003 See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
0004 which **must** added in reverse chronological order (newest at the top).
0005 It must **not** be used as a substitute for writing good git commit messages!
0006 
0007 -------------------------------------------------------------------------------
0008 
0009 ## 2025-04-04 Evgueni Tcherniaev (geom-csg-V11-03-04)
0010 - G4Box: Code restructuring in DistanceToOut().
0011 
0012 ## 2025-03-11 Evgueni Tcherniaev (geom-csg-V11-03-03)
0013 - G4Orb: Faster algorithm in GetPointOnSurface().
0014 - G4Para: Faster calculation of surface area in
0015   GetSurfaceArea() and GetPointOnSurface().
0016 
0017 ## 2025-03-05 Evgueni Tcherniaev (geom-csg-V11-03-02)
0018 - G4Box, G4Para, G4Trd: Code optimization in GetPointOnSurface().
0019 - G4Torus: Implemented uniform sampling of random points on surface.
0020 
0021 ## 2025-03-04 Ben Morgan (geom-csg-V11-03-01)
0022 - Hide all ENorm/ESide enums in anonymous namespaces to prevent ODR warnings.
0023   - Identified in ATLAS Athena code built against v11.3.0.
0024 
0025 ## 2025-02-03 Gabriele Cosmo (geom-csg-V11-03-00)
0026 - Removed fake default constructor from G4U* wrappers, clearing compilation
0027   warnings on gcc-14.
0028 
0029 ## 2024-05-29 Evgueni Tcherniaev (geom-csg-V11-02-03)
0030 - Added new methods GetNumOfConstituents() and IsFaceted().
0031 
0032 ## 2024-04-02 Gabriele Cosmo (geom-csg-V11-02-02)
0033 - Applied trivial clang-tidy fixes to G4CSGSolid, i.e. use of 'override'.
0034 
0035 ## 2023-12-22 Evgueni Tcherniaev (geom-csg-V11-02-01)
0036 - Use GetThetaCosPhi() and GetThetaSinPhi() in wrapper method G4UTrap::GetVertices(),
0037   this fixes the problem with trapezoid arised in CMSSW after migration to VecGeom 1.2.6
0038 
0039 ## 2023-12-18 Gabriele Cosmo (geom-csg-V11-02-00)
0040 - Fixed typo in wrapper method G4UTrap::SetAllParameters(), setter used in
0041   parameterisation of shape dimensions.
0042 
0043 ## 2023-05-10 Gabriele Cosmo (geom-csg-V11-01-01)
0044 - Applied clang-tidy fixes (readability, modernization, performance, ...).
0045 
0046 ## 2023-03-23 Jonas Hahnfeld (geom-csg-V11-01-00)
0047 - G4UTrap: Fixed constructor for Right Angular Wedge with VecGeom
0048 
0049 ## 2022-11-10 Gabriele Cosmo (geom-csg-V11-00-02)
0050 - Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1.
0051 
0052 ## 2022-09-19 Ben Morgan (geom-csg-V11-00-01)
0053 - G4Cons: define private enums within unnamed namespace, to overcome
0054   C++ ODR (One Definition Rule) violation.
0055 
0056 ## 2021-12-10 Ben Morgan (geom-csg-V11-00-00)
0057 - Change to new Markdown History format
0058 
0059 ---
0060 
0061 # History entries prior to 11.0
0062 
0063 November 24, 2021 G.Cosmo geom-csg-V10-07-06
0064 - Corrected typo in G4UPara::GetXHalfLength().
0065   Addressing problem report #2446.
0066 
0067 November 01, 2021 E.Tcherniaev geom-csg-V10-07-05
0068 - Revision of G4UTrap:
0069   o List of accessors and modifiers made consistent with G4Trap
0070   o Implemented check of parameters similar to G4Trap
0071 
0072 August 31, 2021 B.Morgan geom-csg-V10-07-04
0073 - Remove old Get-er methods that simply forward to the new main Get-er
0074   methods
0075 
0076 May 18, 2021 J.Apostolakis geom-csg-V10-07-03
0077 - Added method to enable simpler conversion of G4 solids to VecGeom:
0078   o G4Trap: added methods to calculate Phi & Theta
0079   o G4Para: added methods to calculate original alpha, theta, phi
0080 
0081 May 17, 2021 E.Tcherniaev geom-csg-V10-07-02
0082 - Bux fix in G4Sphere::GetSurfaceArea()
0083 - G4Sphere::GetCubicVolume() moved to source
0084 - Revised G4Sphere::GetPointOnSurface()
0085 
0086 March 30, 2021 B.Morgan geom-csg-V10-07-01
0087 - Migrate sources.cmake to modular build API
0088 
0089 February 1, 2021 G.Cosmo geom-csg-V10-07-00
0090 - G4Trap, G4Para: removed spurious character in printout in StreamInfo().
0091   Addressed problem report #2318.
0092 
0093 November 12, 2020 E.Tcherniaev geom-csg-V10-06-05
0094 - G4Sphere::InitializeThetaTrigonometry(): tan() replaced with sin()/cos(),
0095   it addresses problem report #2289
0096 
0097 October 08, 2020 E.Tcherniaev geom-csg-V10-06-04
0098 - G4Box: Migration to G4QuickRand in GetPointOnSurface();
0099 - G4Trd: Added two precalculated values fHx, fHy for fast calculation
0100   of lateral areas; Revision of GetPointOnSurface();
0101 - G4Trap: Added array fAreas[6] with precalculated face areas;
0102   Added SetCachedValues() method; Revision of GetPointOnSurface();
0103 - G4Tubs: Revision of GetPointOnSurface();
0104 - G4CSGSolid: Explicit implementation of G4RandomRadiusInRing(rmin,rmax)
0105   based on G4QuickRand
0106 
0107 October 06, 2020 E.Tcherniaev geom-csg-V10-06-03
0108 - Improved G4CutTubs:
0109   o Implemented GetCubicVolume(), GetSurfaceArea();
0110   o Reimplemented GetPointOnSurface(), it's now faster and uniform;
0111   o Reimplemented IsCrossingCutPlanes(), it now reports a problem
0112     only in case if cut planes are crossing inside the lateral surface;
0113   o Removed GetMaxMinZ() as obsolete;
0114 
0115 April 30, 2020 G.Cosmo geom-csg-V10-06-02
0116 - Adopt new convention for location of headers in VecGeom for all wrappers.
0117 
0118 April 09, 2020 E.Tcherniaev geom-csg-V10-06-01
0119 - G4Trap.cc: fixed calculation of normal for points on edge in
0120   SurfaceNormal(), improved code for Inside().
0121 - testG4Sphere.cc: removed obsolete code for testing CalculateExtent().
0122 
0123 December 10, 2019 B.Morgan geom-csg-V10-06-00
0124 - Cleanup CMake build, removing obsolete granular library options and
0125   explicit include_directories.
0126 
0127 August 23, 2019 G.Cosmo geom-csg-V10-05-05
0128 - Minor c++11 revision and headers cleanup.
0129 - Use pre-increment wherever possible.
0130 
0131 July 1, 2019 G.Cosmo geom-csg-V10-05-04
0132 - G4CutTubs: fixed minor Coverity defects for non initialised data in
0133   constructors.
0134 
0135 May 31, 2019 J.Apostolakis geom-csg-V10-05-03
0136 - G4Tubs: Fixed normal from DistanceToOut (to be unit vector) for abnormal
0137   exit points. Added inverse-Rmax and -Rmin as data members.
0138 
0139 May 31, 2019 G.Cosmo geom-csg-V10-05-02
0140 - More reuse of pre-calculated values for sin() and cos() in G4Tubs,
0141   G4Cons, G4CutTubs, G4Sphere.
0142 
0143 May 28, 2019 J.Apostolakis geom-csg-V10-05-01
0144 - G4Tubs: reused pre-calculated values instead of using std::cos(), std::sin().
0145 
0146 May 14, 2019 B.Morgan geom-csg-V10-05-00
0147 - Add inclusion of new G4GeomTypes.hh header to those headers allowing
0148   VecGeom replacement.
0149 - See also geommng-10-05-05
0150 
0151 November 13, 2018 E.Tcherniaev geom-csg-V10-04-07
0152 - G4Orb: improved check if point is too far in DistanceToIn(p,v).
0153 - G4Torus: added check if point is too far in DistanceToIn(p,v).
0154   Addressing problem report #2100.
0155 
0156 November 12, 2018 E.Tcherniaev geom-csg-V10-04-06
0157 - G4Cons: fix in GetPointOnSurface() when sampling on inner and outer
0158   conical surfaces.
0159 
0160 September 13, 2018 G.Cosmo geom-csg-V10-04-05
0161 - G4UTorus: removed leftover use of UVector3 and replaced with U3Vector.
0162 
0163 August 10, 2018 A.Gheata geom-csg-V10-04-04
0164 - Make G4UTrd wrapper inheriting from vecgeom::GenericUnplacedTrd,
0165   following the latest changes in VecGeom.
0166 
0167 May 7, 2018 G.Cosmo geom-csg-V10-04-03
0168 - Make G4UCons wrapper inheriting from vecgeom::GenericUnplacedCone,
0169   following the latest changes in VecGeom.
0170 
0171 April 11, 2018 G.Cosmo geom-csg-V10-04-02
0172 - G4Box: simplified and optimised calculation of normal in method
0173   DistanceToOut(p,v,..). (E.Tcherniaev)
0174 - Replaced USOLIDS_LIBRARIES with VECGEOM_LIBRARIES in sources.cmake.
0175 
0176 February 5, 2018 G.Cosmo geom-csg-V10-04-01
0177 - Correction in G4UPara::ComputeDimensions() to add explicit cast for the
0178   solid type to parameterise.
0179 
0180 December 11, 2017 E.Tcherniaev geom-csg-V10-04-00
0181 - Fixed typo in G4Trd::GetPointOnSurface() for the area settings.
0182 
0183 November 22, 2017 G.Cosmo geom-csg-V10-03-38
0184 - Fix in SurfaceNormal() for G4Trap, G4Para, G4Trd to assure explicit
0185   counting of the surfaces where the point is placed on edges.
0186 
0187 October 20, 2017 G.Cosmo geom-csg-V10-03-37
0188 - Removed redundant overloaded implementation for StreamInfo() in G4UBox
0189   wrapper.
0190 
0191 October 9, 2017 G.Cosmo geom-csg-V10-03-36
0192 - Enabled adapter for G4UTorus wrapper, according to migration done in
0193   VecGeom for UnplacedTorus2.
0194 
0195 September 1, 2017 E.Tcherniaev geom-csg-V10-03-35
0196 - G4Trap: use specialization (fTrapType 3) for traps that could be also
0197   defined as G4Trd, where isosceles trapeziod is in the XY section, instead
0198   of XZ (faces at Xmin/Xmax symmetrical and have Z-component of normals equal
0199   to zero). Factorised code with case statements for the different
0200   specialisations.
0201 
0202 August 14, 2017 E.Tcherniaev geom-csg-V10-03-34
0203 - Reviewed implementation of G4Orb, made more compact and performant.
0204 
0205 July 20, 2017 E.Tcherniaev geom-csg-V10-03-33, 32
0206 - Use G4RandomRadiusInRing() in G4CSGSolid::GetRadiusInRing().
0207 
0208 July 19, 2017 G.Cosmo geom-csg-V10-03-31
0209 - Enabled adapter also in G4USphere wrapper.
0210 
0211 July 13, 2017 E.Tcherniaev geom-csg-V10-03-30
0212 - Improved calculation of bounding box in G4CutTubs and related wrapper.
0213 
0214 July 11, 2017 G.Cosmo geom-csg-V10-03-29
0215 - Added G4UPara wrapper for enabling VecGeom Parallelepiped shape.
0216 - Removed inheritance from G4Tubs for G4CutTubs.
0217 
0218 July 10, 2017 G.Cosmo geom-csg-V10-03-28
0219 - Added G4UCutTubs wrapper for enabling VecGeom CutTube shape.
0220 - Removed clone class G4OTubs no longer necessary and make G4CutTubs
0221   directly inheriting (temporary) from G4Tubs.
0222 
0223 July 4, 2017 E.Tcherniaev geom-csg-V10-03-27
0224 - G4Box: minor optimisation in DistanceToOut(p).
0225 - G4Para: optimisation in Inside(), DistanceToIn/Out(p), use std::abs(xx)
0226   in place of std::max(xx,-xx).
0227 
0228 June 26, 2017 E.Tcherniaev geom-csg-V10-03-26
0229 - G4Trd: allow Dx and Dy parameters be equal to zero where appropriate.
0230 
0231 June 15, 2017 G.Cosmo geom-csg-V10-03-25
0232 - Enabled adapter also in G4UCons wrapper.
0233 
0234 June 6, 2017 G.Cosmo geom-csg-V10-03-24
0235 - Enable adapter for VecGeom shapes in G4U* wrappers for: box, trap, trd,
0236   tubs and orb. From now on, wrappers depends directly on VecGeom shapes
0237   implementation. USolids API is deprecated and no longer supported.
0238 
0239 June 1, 2017 E.Tcherniaev geom-csg-V10-03-23
0240 - G4Trap: added more strict condition for trap definition in case when
0241   YZ section is a rectangle.
0242 
0243 May 31, 2017 E.Tcherniaev geom-csg-V10-03-22
0244 - Reviewed implementation of G4Para, made more compact and performant.
0245 - G4Trap: fix in the calculation of side planes.
0246 - G4Trd: speedup further DistanceToIn(p,v) making it similar to the
0247   implementation in G4Para. Fix in the calculation of side planes.
0248 
0249 May 29, 2017 E.Tcherniaev geom-csg-V10-03-21
0250 - G4Trd: fixed issue in GetPointOnSurface().
0251 - Updated unit tests.
0252 
0253 May 26, 2017 E.Tcherniaev geom-csg-V10-03-20
0254 - Reviewed implementation of G4Trd, made more compact and performant.
0255   Removed obsolete method CheckAndSetAllParameters().
0256 
0257 May 24, 2017 G.Cosmo geom-csg-V10-03-19
0258 - Renamed ambiguous name Extent() in all solids and G4U* wrappers to
0259   BoundingLimits(). Change required in order to avoid signature conflict
0260   with VecGeom in G4U* wrappers.
0261   Requires tag geommng-V10-03-16.
0262 
0263 May 23, 2017 E.Tcherniaev geom-csg-V10-03-18
0264 - G4Trap: some code improvements.. use std::copysign(); replace division
0265   with multiplication by inverse value; code formatting.
0266 
0267 May 21, 2017 E.Tcherniaev geom-csg-V10-03-17
0268 - Fix in G4CutTubs::Inside() for case where inside points were concidered
0269   as points on surface. Addressing problem report #1973.
0270 
0271 May 8, 2017 E.Tcherniaev geom-csg-V10-03-16
0272 - G4Box: use std::copysign() to improve performance on Linux.
0273   Some code formatting.
0274 
0275 May 4, 2017 E.Tcherniaev geom-csg-V10-03-15
0276 - G4Trap: fixed cases of division by zero reported by testing.
0277 
0278 May 1, 2017 E.Tcherniaev geom-csg-V10-03-14
0279 - Reviewed implementation of G4Trap, made more compact and performant.
0280 
0281 April 18, 2017 E.Tchernieav geom-csg-V10-03-13, 12
0282 - Reviewed implementation of G4Box, made more compact and performant.
0283 
0284 April 11, 2017 G.Cosmo geom-csg-V10-03-11, 10, 09
0285 - Added accessor for radial tolerance also in G4UOrb wrapper.
0286 
0287 April 7, 2017 G.Cosmo geom-csg-V10-03-08
0288 - Added accessor to G4Orb for retrieving cached max radius tolerance.
0289 - Added private members halfCarTolerance and fTrapType to G4Trap (E.Tcherniaev).
0290 
0291 April 1, 2017 E.Tcherniaev geom-csg-V10-03-07
0292 - G4Trap: Fix in GetPointOnSurface(), the method could generate points laying
0293   outside the surface. Added private method GetVertices(), calculating vertices
0294   of the trap from its side planes; removed private methods GetFaceArea() and
0295   GetPointOnPlane(). Improved GetCubicVolume() and GetSurfaceArea();
0296   calculation of the volume and surface area is now done by using vertices
0297   calculated by GetVertices(). Improved/simplified other methods: StreamInfo(),
0298   MakePlanes(), MakePlanes(pt), Extent() and CalculateExtent().
0299 
0300 March 16, 2017 E.Tcherniaev geom-csg-V10-03-06, 05, 04
0301 - G4Trap: modified computation of side planes; bounding box/envelope
0302   are computed directly from side planes. Added CheckParameters() and
0303   MakePlanes(pt), simplified constructors and SetAllParameters().
0304 - G4UTrap: bounding box/envelope are computed directly from side planes
0305   as for G4Trap. Increased tolerance in the check of consistency of
0306   bounding boxes in Extent().
0307 
0308 March 2, 2017 E.Tcherniaev geom-csg-V10-03-03
0309 - Fixed possible rounding off error in calculation of 'astep' (max angle
0310   for one step) in CalculateExtent() for G4Cons, G4Tubsm, G4CutTubs
0311   and related USolids wrappers.
0312 - Increased tolerance in the check of consistency of bounding boxes in
0313   G4UTrap::Extent().
0314 
0315 February 22, 2017 E.Tcherniaev geom-csg-V10-03-02
0316 - Fix in GetCubicVolume() and GetSurfaceArea() for G4CutTubs, to make
0317   use of the cached values. Addressing problem report #1943.
0318 
0319 February 2, 2017 G.Cosmo geom-csg-V10-03-01
0320 - Removed redundant code/checks in G4Orb::SurfaceNormal().
0321 
0322 December 20, 2016 H.Burkhardt, E.Tcherniaev geom-csg-V10-03-00
0323 - Use radius differences and hypot to improve precision in G4Torus.
0324   Addressing problem report #1931.
0325 
0326 November 18, 2016 E.Tcherniaev geom-csg-V10-02-19
0327 - Added consistency checks for extent computation in USolids wrappers.
0328 
0329 November 7, 2016 E.Tcherniaev geom-csg-V10-02-18
0330 - Added optional debug flag G4BBOX_EXTENT in GNUMake build to compare
0331   extent calculation by simply using bounding-box.
0332 
0333 November 3, 2016 E.Tcherniaev geom-csg-V10-02-17
0334 - Disabled check for intersection of cut planes in G4CutTubs constructor,
0335   as too strict and not necessary. Addressing problem report #1887.
0336 
0337 October 31, 2016 E.Tcherniaev geom-csg-V10-02-16
0338 - Re-implemented CalculateExtent() to make use of G4BoundingEnvelope and
0339   removed no-longer used method CreateRotatedVertices() in G4Sphere, G4OTubs,
0340   G4Torus, G4Orb, and related USolids wrappers.
0341 - Use G4GeomTools::DiskExtent() for calculation of bounding box in Extent()
0342   for G4Tubs, G4Cons and related USolids wrappers.
0343 - Use G4RandFlat instead of RandFlat.
0344 
0345 October 5, 2016 E.Tcherniaev geom-csg-V10-02-15
0346 - G4Cons, G4UCons: re-implemented CalculateExtent() to make use of
0347   G4BoundingEnvelope; removed no-longer used method CreateRotatedVertices().
0348 - G4Tubs, G4UTubs: revised implementation of CalculateExtent() to avoid use
0349   of addresses to vectors elements. Attempting fix for reported Coverity defect.
0350 
0351 September 27, 2016 G.Cosmo geom-csg-V10-02-14
0352 - Reduced number of segments in G4Tubs and G4UTubs for CalculateExtent() from
0353   48 to 24.
0354 
0355 September 27, 2016 E.Tcherniaev geom-csg-V10-02-13
0356 - Corrected vertices order for definition of bounding envelope in
0357   G4Trap, G4UTrap and G4Para.
0358 
0359 September 26, 2016 E.Tcherniaev geom-csg-V10-02-12
0360 - More corrections in G4Trap and G4UTrap in Extent() for use of 'alpha'
0361   accessors.
0362 
0363 September 26, 2016 G.Cosmo, E.Tcherniaev geom-csg-V10-02-11, 10
0364 - Re-implemented CalculateExtent() of G4Para, G4Trd, G4Trap to make use of
0365   G4BoundingEnvelope; removed no-longer used method CreateRotatedVertices()
0366   implementation. Use same algorithm in G4UTrd and G4UTrap wrappers.
0367 - Fix in G4UBox in computation of the extent for problem introduced in
0368   previous tags.
0369 
0370 September 22, 2016 E.Tcherniaev          geom-csg-V10-02-09, 08, 07
0371 - G4Box, G4Tubs: added Extent() method and checks on extent validity.
0372 - G4UBox, G4UTubs: use same CalculateExtent() technique as for G4Box
0373   and G4Tubs.
0374 
0375 August 30, 2016 E.Tcherniaev             geom-csg-V10-02-06
0376 - G4Tubs: added construction of bounding envelope in CalculateExtent().
0377 
0378 August 29, 2016 G.Cosmo                  geom-csg-V10-02-05
0379 - Removed no-longer used method CreateRotatedVertices() implementation in
0380   G4Box and G4Tubs. Simplified code in G4Tubs::CalculateExtent().
0381 
0382 August 26, 2016 E.Tcherniaev
0383 - Re-implemented CalculateExtent() of G4Box and G4Tubs to make use of
0384   G4BoundingEnvelope. Implemented bounding-box in G4Tubs to take into
0385   consideration cuts in phi.
0386 
0387 May 20, 2016 G.Cosmo                     geom-csg-V10-02-04
0388 - Moved accessors and modifiers in USolids wrappers to be not inlined.
0389   Required modification in order to allow correct dispatching to VecGeom
0390   types.
0391 
0392 April 15, 2016 G.Cosmo                   geom-csg-V10-02-03
0393 - Added flag in USolids wrappers for partial use of USolids/VecGeom types.
0394 
0395 April 5, 2016 J.Allison                  geom-csg-V10-02-02
0396 - G4Orb.cc: Fixed typo in G4Exception message.
0397 
0398 March 31, 2016 G.Cosmo                   geom-csg-V10-02-01
0399 - Added overloaded CreatePolyhedron() method to USolids wrappers.
0400   It is now possible to visualize supported VecGeom shapes.
0401 
0402 March 10, 2016 G.Cosmo                   geom-csg-V10-02-00
0403 - Added overloaded GetEntityType() method to USolids wrappers.
0404 
0405 October 23, 2015 G.Cosmo                 geom-csg-V10-01-10
0406 - Fixed Coverity defect in G4CutTubs::GetMaxMinZ().
0407 
0408 October 22, 2015 G.Cosmo                 geom-csg-V10-01-09
0409 - Reintroduced check, now corrected, in G4Sphere::DistanceToIn(p,v) for
0410   concave Theta and point located on the origin. Also make proper use of
0411   radial tolerance in DistanceToOut(p,v).
0412 
0413 October 7, 2015 G.Cosmo                  geom-csg-V10-01-08
0414 - Protected compilation of USolid wrappers with G4GEOM_USE_USOLIDS flag.
0415 - Restored G4Sphere code to tag "geom-csg-V10-01-06".
0416 
0417 September 3, 2015  T.Nikitina            geom-csg-V10-01-07
0418 - Fix in DistanceToIn(p,v) and DistanceToOut(p,v) for G4Sphere with concave
0419   Theta. Follow-up of fix previously introduced to G4Sphere for point (0,0,0).
0420 - Updated unit test for sphere.
0421 
0422 September 1, 2015  G.Cosmo               geom-csg-V10-01-06
0423 - Corrected conditional compilation flag in G4UTorus.cc.
0424 
0425 August 31, 2015  G.Cosmo                 geom-csg-V10-01-05
0426 - Added USolids/VecGeom wrapper for G4Torus (G.Lima/FNAL).
0427   Activated only for external USolids/VecGeom installation.
0428 
0429 May 20, 2015  T.Nikitina                 geom-csg-V10-01-04
0430 - Fixed DistanceToOut(p) and Inside(p) in G4Sphere for sphere cut in theta
0431   for point (0,0,0) and for cases when Start/End angle have not to be taken
0432   in account (STheta==0 || eTheta==pi).
0433   Added corresponding test cases to unit test for testG4Sphere.
0434   Fix triggered by analysing setup provided in problem report #1702.
0435 
0436 May 5, 2015  G.Cosmo
0437 - Fixed Coverity defect for unused variable quantity in G4Cons.
0438 
0439 April 28, 2015  T.Nikitina               geom-csg-V10-01-03
0440 - Fixed calculation of Normal in G4Para for kPX and kMX sides in
0441   DistanceToOut(p,v) and ApproxSurfaceNormal(p).
0442   Addressing problem report #1736.
0443 
0444 March 3, 2015  G.Cosmo                   geom-csg-V10-01-02
0445 - Use accessors x(), y() and z() from UVector3, instead of directly accessing
0446   its data-members. Co-work with tag "geom-usolids-V10-01-09".
0447 
0448 February 16, 2015  G.Cosmo               geom-csg-V10-01-01
0449 - Fixed typo in copy-ctor and assignment operator for G4Tubs and G4OTubs.
0450 
0451 December 5, 2014  G.Cosmo                geom-csg-V10-01-00
0452 - Fix in temporary class G4OTubs to include symbol in library in any case.
0453 
0454 September 17, 2014  G.Cosmo              geom-csg-V10-00-06
0455 - Added wrapper for UTrap shape; adapted switch to original G4Trap accordingly.
0456   Requires tag "geom-usolids-V10-00-16".
0457 
0458 September 4, 2014  T.Nikitina            geom-csg-V10-00-05
0459 - G4Cons: fixed typo error in GetPointOnSurface() in the call
0460   to GetRadiusInRing(). Responsible for occasionally wrong reports
0461   when checking for overlaps.
0462 - G4Cons: fix in DistanceToIn(p,v) for points on the Surface, to resolve
0463   error reported in unit testing by the OpticalEscape test.
0464 
0465 September 1, 2014  G.Cosmo               geom-csg-V10-00-04
0466 - Fixed use of polyhedron pointer, to avoid race condition in MT
0467   when parameterised volumes are visualised.
0468 
0469 March 5, 2014  G.Cosmo                   geom-csg-V10-00-03
0470 - Fixed proper handling of polyhedron pointer in solids, to avoid memory
0471   leak for visualization of parameterised volumes.
0472 
0473 February 12, 2014  G.Cosmo               geom-csg-V10-00-02
0474 - Simply reset polyhedron pointer to zero for modifiers of G4U* wrappers
0475   in parameterisation. Resolves crash in MT visualization when using USolids.
0476 
0477 February 12, 2014  G.Cosmo               geom-csg-V10-00-01 (and -00)
0478 - Added correct cloning mechanism in G4U* wrappers.
0479   Addressing problem report #1553.
0480 
0481 November 22, 2013  G.Cosmo               geom-csg-V09-06-09
0482 - Correction to USolids wrappers for proper setting of name to base class.
0483 
0484 November 20, 2013  T.Mikitina            geom-csg-V09-06-08
0485 - Fixed Coverity defects to USolids wrappers.
0486 
0487 November 14, 2013  T.Nikitina            geom-csg-V09-06-07
0488 - Corrections to G4U* wrappers to allow for visualization of parameterisations.
0489 
0490 November 7, 2013  G.Cosmo                geom-csg-V09-06-06
0491 - Moved wrappers from usolids module.
0492   Fixed internal dispatcher method for parameterisation in all wrappers.
0493 - Added switching mechanism for G4Box, G4Cons, G4Orb, G4Sphere, G4Trd
0494   and G4Tubs.
0495 - Defined temporary class G4OTubs to be used internally by G4CutTubs,
0496   in provision to have UCutTubs in the USolids library.
0497 
0498 November 6, 2013  G.Cosmo                geom-csg-V09-06-05
0499 - Added switch mechanism for USolids (box, cons, orb, sphere, trd, tubs).
0500   Renamed related G4 types to 'G4O'.
0501 - Moved wrappers from USolids module.
0502 
0503 October 2, 2013  G.Cosmo                 geom-csg-V09-06-04
0504 - Correctly initialise fSPhi to zero in G4Sphere constructor.
0505 
0506 August 14, 2013  G.Cosmo                 geom-csg-V09-06-03
0507 - Move function-scoped 'static const' values for half-tolerances to private
0508   data members of classes, to overcome false-positive race-conditions defects
0509   reported by Valgrind in MT mode.
0510 - Corrected sanity check for wrong/small dimensions in G4Box constructor.
0511 
0512 April 16, 2013  T.Nikitina               geom-csg-V09-06-02
0513 - Fix in G4Cons::DistanceToIn(p,v) for initialisation of dRmax for the
0514   case of shape with Rmin1=Rmax1=0.
0515 
0516 December 14, 2012  G.Cosmo               geom-csg-V09-06-01
0517 - Restored SVN id headers.
0518 
0519 Dec 02, 2012  J.Allison                  geom-csg-V09-06-00
0520 - Removed NURBS.
0521 
0522 Nov 14, 2012   P. Mato                   geom-csg-V09-05-09
0523 - Added #undef NDEBUG in unit tests to ensure that assert always works
0524 
0525 Oct 19, 2012   G.Cosmo                   geom-csg-V09-05-08
0526 - G4Torus: include printout within G4CSGDEBUG. Some code formatting...
0527 
0528 Oct 11, 2012   J.Apostolakis             geom-csg-V09-05-07
0529 - G4Torus: small additional changes, to reorder a few computation
0530   for better FP accuracy.
0531 
0532 Oct  4, 2012   J.Apostolakis             geom-csg-V09-05-06
0533 - G4Torus: revised the values of delta, to account for precision loss
0534   in calculating radius 'pt'.
0535   Added printing in case of not finding normal when on surface.
0536 
0537 Oct  3, 2012   J.Apostolakis             geom-csg-V09-05-05
0538 - G4Para::SurfaceNormal(): fixed calculation of sin(alpha) from cosine
0539   and tangent.
0540 
0541 June 12, 2012 G.Cosmo                    geom-csg-V09-05-04
0542 - Explicitly use inclusion of headers for system of units and physical
0543   constants, in plan to remove implicit inclusion from globals.hh.
0544 
0545 May 14, 2012   G.Cosmo                   geom-csg-V09-05-03
0546 - Fixed spurious cases of hidden variable visibility, detected with
0547   '-Wshadow' compilation option on gcc compiler.
0548 
0549 May 4, 2012    G.Cosmo                   geom-csg-V09-05-02
0550 - Restored G4CSGSolid::GetRadiusInRing() to non-inline to avoid propagating
0551   dependency on random generators.
0552 
0553 May 3, 2012    G.Cosmo                   geom-csg-V09-05-01
0554 - Made utility method GetRadiusInRing() inline and corrected implementation.
0555 
0556 April 6, 2012  M.Kelsey                  geom-csg-V09-05-00
0557 - Modified GetPointOnSurface() methods for solids using polar coordinate
0558   parametrizations, to generate more uniform distributions, using a
0559   function to generate proper radial coordinate included in G4CSGSolid.
0560 
0561 November 15, 2011  G.Cosmo               geom-csg-V09-04-11
0562 - Correction in G4CutTubs for missing implementation of GetCubicVolume()
0563   and GetSurfaceArea() utility methods, to be temporarly replaced by
0564   default G4VSolid implementation.
0565 
0566 November 2, 2011  G.Cosmo                geom-csg-V09-04-10
0567 - Removed declaration of methods not implemented in G4CutTubs and included
0568   by mistake.
0569 
0570 October 31, 2011  T.Nikitina             geom-csg-V09-04-09
0571 - First implementation of G4CutTubs solid, a tube with possible cuts in +-Z.
0572 
0573 October 6, 2011  G.Cosmo                 geom-csg-V09-04-08, geom-csg-V09-04-07
0574 - Fixed Coverity defect for uninitialised static data in G4Sphere.
0575 
0576 October 3, 2011  G.Cosmo                 geom-csg-V09-04-06
0577 - Fix in G4Sphere for setting of relative radial tolerances when setters
0578   for radiuses are explicitely called.
0579 - Relaxed validity condition in construction for the minimum size of the
0580   outer radius.
0581 
0582 August 25, 2011  G.Cosmo                 geom-csg-V09-04-05
0583 - Migrated to new G4Exception scheme for warnings and errors.
0584 - Defined scheme for warnings/errors coding:
0585   + 1xxx for warnings, 0xxx for errors.
0586   Code numbering:
0587   + 0001: not supported or implemented features;
0588   + 0002: invalid setup/construct;
0589   + 0003: invalid run condition;
0590   + 1001: incorrect setup; automatically adapted.
0591   + 1002: notification.
0592 
0593 June 1, 2011  G.Cosmo                    geom-csg-V09-04-04
0594 - Made radial tolerance a local constant instead of a static data member
0595   in G4Orb and G4Sphere.
0596 
0597 May 27, 2011  T.Nikitina                 geom-csg-V09-04-03
0598 - G4Tubs: use safe formula for quadratic equation solution, in order to avoid
0599   numerical errors.
0600 - G4Torus: use relative radial tolerances to avoid loss of precision issues
0601   for shapes of big dimensions. Addresses problem report #1175.
0602 
0603 May 12, 2011  G.Cosmo                    geom-csg-V09-04-02
0604 - Fixed compilation warnings from gcc-4.6.0 for variables set but not used.
0605 
0606 Apr 27, 2011  T.Nikitina                 geom-csg-V09-04-01
0607 - Added protection for potential negative argument to sqrt() in
0608   CalculateExtent() for G4Orb, G4Cons and G4Sphere.
0609 
0610 Jan 7, 2011  T.Nikitina                  geom-csg-V09-04-00
0611 - G4Cons: fix in DistanceToIn(p,v,..) to squared tolerance in comparision.
0612   Replaced calculation of the solution for the quadratic equation, to use safe
0613   formula, in order to avoid numerical errors when b is almost equal to sqrt(d).
0614   Addresses problem report #1153.
0615 
0616 Nov 23, 2010  G.Cosmo                    geom-csg-V09-03-14 & V09-03-12
0617 - Fixed one left cases of cout precision restoring in G4Sphere.
0618 
0619 Oct 19, 2010  G.Cosmo                    geom-csg-V09-03-11
0620 - Implemented Clone() virtual method for all solids, returning a pointer to a
0621   dynamically allocated copy of the solid. To be used by Geant4-MT.
0622 
0623 Sep 23, 2010  G.Cosmo                    geom-csg-V09-03-10
0624 - Initialize fpPolyhedron to zero in G4CSGSolid copy-ctor and operator=().
0625 
0626 Sep 22, 2010  G.Cosmo                    geom-csg-V09-03-09
0627 - Relaxed checking condition on SetOuterRadius() method to avoid
0628   restrictions in order of calls for modifiers.
0629 
0630 Sep 17, 2010  G.Cosmo                    geom-csg-V09-03-08
0631 - Implemented copy-constructor and assignment operator for all solids
0632   to facilitate conversion to Geant4-MT.
0633 
0634 Sep 17, 2010  G.Cosmo                    geom-csg-V09-03-07
0635 - Added missing validity checks on radii to modifiers in G4Tubs.
0636 
0637 Sep 07, 2010  G.Cosmo                    geom-csg-V09-03-06
0638 - Fix within G4CSGDEBUG code for restoring cout precision.
0639 
0640 Aug 23, 2010  G.Cosmo                    geom-csg-V09-03-05
0641 - G4Cons: fixed trivial compilation warning on Linux.
0642 
0643 Aug 19, 2010  T.Nikitina                 geom-csg-V09-03-04
0644 - G4Torus: fix in DistanceToOut(p,v,...) to address problem report #1081.
0645 
0646 Jul 12, 2010  G.Cosmo                    geom-csg-V09-03-03
0647 - Fixed condition in G4Tubs::Inside(p) for point on surface (T.Nikitina).
0648 - Corrected use of std::fabs() in place of std::abs() in G4Tubs, G4Cons,
0649   G4Sphere and G4Torus. Use pre-computed half-tolerance constants in G4Torus.
0650 
0651 Jul 08, 2010  G.Cosmo                    geom-csg-V09-03-02
0652 - Improved initialisation logic in constructor for: G4Box, G4Cons, G4Orb,
0653   G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs.
0654 - Corrected cases of not-restored cout precision in: G4Box, G4Cons, G4Orb,
0655   G4Para, G4Torus, G4Trap, G4Tubs.
0656 - G4Torus: fixed call to internal method for finding roots, to avoid copy
0657   of sdt::vector() by parameters. Some cleanup to avoid unnecessary protected
0658   section and virtual table.
0659 - Updated unit test for G4Sphere (V.Grichine).
0660 
0661 May 25, 2010  G.Cosmo                    geom-csg-V09-03-01
0662 - G4Box: more minor fixes in coding style, following code review discussion.
0663 
0664 May 18, 2010  G.Cosmo                    geom-csg-V09-03-00
0665 - G4Box: first implementation of speed improvements and corrections from joint
0666   code review of G4Box class: introduced half-tolerance constants and better
0667   logic in some conditional statements.
0668 - Some code cleanup.
0669 
0670 Dec 04, 2009  V.Grichine
0671 - G4Orb: modified DistanceToIn(p,v) to be more consistent with Inside(p).
0672 
0673 Nov 30, 2009  V.Grichine                 geom-csg-V09-02-08
0674 - G4Orb: moved debug warning in DistanceToIn(p,v) within G4CSGDEBUG flag.
0675 
0676 Nov 26, 2009  T.Nikitina                 geom-csg-V09-02-07
0677 - G4Torus: fix in SolveNumericJT() in order to take in account the difference
0678   in the value of theta for different intervals, [0:pi] or [-pi:0], and for
0679   SPhi in [0:twopi] or [-twopi:0]. Addresses problem report #1086.
0680 
0681 Nov 12, 2009  T.Nikitina                 geom-csg-V09-02-06
0682 - G4Cons: fix to DistanceToIn(p,v), added a check on the direction in case
0683   of point on surface. Fixes a problem of stuck tracks observed in CMS, due
0684   to wrong reply from the solid for points on the inner radius surface base
0685   with direction along the imaginary extension of the cone.
0686 - Added test case to internal test testG4Cons2.
0687 
0688 Aug 07, 2009  T.Nikitina                 geom-csg-V09-02-05
0689 - G4Sphere: fix for the calculation of the normal in DistanceToOut()
0690   to avoid cases of division by zero in specific configurations.
0691   Addresses problem report #977.
0692 
0693 Jun 30, 2009  T.Nikitina                 geom-csg-V09-02-04
0694 - Introduced to DistanceToIn(p,v) splitting of the distance for point very far
0695   from intersection area and big difference between solid dimensions and
0696   distance to it; resolves issue observed on 64 bits problem. Affected solids:
0697   G4Tubs, G4Cons, G4Sphere, G4Orb. Addresses problem report #1022.
0698 - Fixed rare cases of NaN on G4Sphere.
0699 
0700 Jun 09, 2009  G.Cosmo                    geom-csg-V09-02-03
0701 - Fixed case of non-initialised start-Phi value in G4Tubs and G4Cons,
0702   problem introduced following modifications in tag "geom-csg-V09-02-00".
0703 
0704 May 14, 2009  T.Nikitina                 geom-csg-V09-02-02
0705 - G4Sphere: initialise flags for full sphere in constructor.
0706 
0707 May 14, 2009  T.Nikitina                 geom-csg-V09-02-01
0708 - G4Sphere: correction di DistanceToOut(p,v, ...) for phi sections for
0709   rays passing though zero.
0710 - More minor refiniments to G4Sphere following review.
0711 
0712 May 08, 2009  G.Cosmo                    geom-csg-V09-02-00
0713 - G4Sphere: implemented speed improvements and corrections from joint
0714   code review of G4Sphere class. Cached computation for half-tolerances
0715   and use of Boolean flag for identifying if full-sphere, shell or section.
0716   Implemented caching of trigonometric values, now directly computed inside
0717   modifiers for Phi and Theta angles as required for parametrised cases.
0718   Rationalised usage of relative radial tolerances.
0719 - G4Tubs, G4Cons: rationalised usage of modifiers for Phi angles and
0720   simplified constructors.
0721 - Added new test case for relatively big spheres in unit tests testG4Orb
0722   and testG4Sphere, based on problem report #1046.
0723 
0724 Nov 21, 2008  G.Cosmo                    geom-csg-V09-01-08
0725 - G4Sphere: defined Get/SetInnerRadius() accessors to be compliant with
0726   other CSG solids and allow consistent treatment in persistency code...
0727 
0728 Nov 06, 2008  G.Cosmo                    geom-csg-V09-01-07
0729 - G4Tubs, G4Cons: implemented caching of trigonometric values, now directly
0730   computed inside modifiers for Phi angles and required for parametrised
0731   cases. Improvement bringing up to 20% speedup in normal tracking for
0732   tube/cone-sections placements.
0733 
0734 Nov 05, 2008  G.Cosmo                    geom-csg-V09-01-06
0735 - G4Cons: implemented first speed improvements and corrections from joint
0736   code review of G4Cons class. Cached computation for half-tolerance and
0737   use of Boolean flag for identifying if full-cone or section.
0738 - G4Tubs: more refinements to previous review; corrected implementation
0739   of constructor to conform to implementation as in G4Cons. Fixed issue in
0740   SetDeltaPhi() method after changes introduced in the previous tag.
0741 
0742 Sep 18, 2008  T.Nikitina                 geom-csg-V09-01-05
0743 - G4Tubs: implemented first speed improvements and corrections from joint
0744   code review of G4Tubs class. Cached computation for half-tolerance and
0745   use of Boolean flag for identifying if full-tube or section.
0746 
0747 Jul 07, 2008  V.Grichine                 geom-csg-V09-01-04
0748 - G4Sphere: fixed bug in DistanceToOut(p, v, ...) for normal 'fSTheta'
0749   greater than 90*deg, and use of tangent giving negative value.
0750   Completes series of corrections introduced in previous tag.
0751 
0752 Jun 23, 2008  T.Nikitina                 geom-csg-V09-01-03
0753 - G4Tubs: fix in DistanceToIn(p,v, ...) in case of point on surface with
0754   very small tangent direction; now returning kInfinity and no longer zero.
0755   It fixes rare observed cases of zero value returned by both DistanceToIn()
0756   and DistanceToOut(), causing stuck tracks with zero step length.
0757 
0758 Jun 20, 2008  V.Grichine
0759 - G4Sphere: fixed calculation of roots in DistanceToOut(p,v,...) for
0760   theta-conical surfaces interserctions and for sTheta<=90 degree intersection.
0761   Addresses issue reported when running PET application with optical photons
0762   about mis-computation of distance on half-sphere constructs.
0763 - Updated unit test for sphere.
0764 
0765 Apr 22, 2008  V.Grichine                 geom-csg-V09-01-02
0766 - G4Trap: corrections for arithmetic operations in 8-point constructor.
0767   Addressing problem report #934.
0768 
0769 Mar 13, 2008  G.Cosmo                    geom-csg-V09-01-01
0770 - Cleared compilation warnings in G4Sphere on gcc-4.3.0 for
0771   ambiguous use of parentheses in condition statements.
0772 
0773 Feb 20, 2008  T.Nikitina                 geom-csg-V09-01-00
0774 - G4Cons:
0775   o Added protection against NaN in GetPointOnSurface() in the case the
0776     check is run for Rmax1==Rmax2.
0777 
0778 Nov 23, 2007  T.Nikitina                 geom-csg-V09-00-02
0779 - Fixed problem of undefined side for valid surface normal in case of Phi
0780   section and direction through the center of either A G4Tubs or G4Cons shape.
0781 
0782 Oct 2, 2007  T.Nikitina                  geom-csg-V09-00-01
0783 - G4Torus:
0784   o Fixed bug in CalculateExtent() for case of non-rotated full-phi
0785     torus definition: added protection against negative value for sqrt()
0786     and corrected formula for 'delta'. Fixes problem of NaN detected in
0787     initialisation by CMS.
0788   o Fixed bug in SolveNumericJT(): corrected handling of complex roots,
0789     'rootsrefined' is used only if the number of refined roots is the same
0790     as for primary roots. Addresses problem report #969.
0791 
0792 Aug 16, 2007  T.Nikitina                 geom-csg-V09-00-00
0793 - G4Tubs: fixed bug in DistanceToOut(p,v,..) for negative value under sqrt()
0794   for the case of point p on the surface and v tangent to the surface.
0795   Responsible for rare cases of NaN.
0796 
0797 May 18, 2007  G.Cosmo                    geom-csg-V08-03-01
0798 - Use kAngTolerance and kRadTolerance from G4GeometryTolerance class.
0799 - Coworks with tag "global-V08-03-03".
0800 
0801 May 16, 2007  T.Nikitina                 geom-csg-V08-03-00
0802 - G4Tubs: fixed bug for DistanceToOut(p,v) for phi section.
0803   Bug was causing segmentation fault in recursive_test (problem report #784).
0804   For v crossing the center of the tub DistanceToOut was always giving
0805   Radial distance and not distance in Phi.
0806 - G4Cons: fixed bug for DistanceToOut(p,v) for phi section,
0807   the same as for G4Tubs.
0808 - Updated unit tests.
0809 
0810 Oct 19, 2006  G.Cosmo                    geom-csg-V08-01-00
0811 - Added explicit computation for GetSurfaceArea() for all solids
0812   (by H.Dierckx).
0813 - Implemented caching mechanism for computation of surface area in
0814   G4CSGSolid, as done for the geometrical volume computation.
0815 
0816 Jun 06, 2006  V.Grichine                 geom-csg-V08-00-01
0817 - G4Tubs: added protection against NaNs in CalculateExtent() to avoid
0818   sqrt() of negative numbers due to round-off.
0819 - Updated unit tests testG4Sphere and testDistanceAccuracy.
0820 
0821 Jan 16, 2006  V.Grichine                 geom-csg-V08-00-00
0822 - G4Sphere: fixed bug in DistanceToOut() for theta intersections.
0823 
0824 Nov 20, 2005  V.Grichine                 geom-csg-V07-01-05
0825 - G4Torus: fixed bug in Inside(p) for phi sections.
0826   Fixes problem report #810.
0827 
0828 Nov 9, 2005  G.Cosmo                     geom-csg-V07-01-04
0829 - Added fake default constructor for all concrete solids and relevant
0830   utility classes, for usage of direct object persistency.
0831 - Implemented changes to support CLHEP-2.0.X for explicit usage of the
0832   CLHEP/HepGeom namespaces for CLHEP types.
0833 
0834 Oct 23, 2005  V.Grichine                 geom-csg-V07-01-03
0835 - G4Para: fixed bug in DistanceToOut(p,v) for the case v.x()<0.
0836   Following problem report from user posted on Hypernews (#452).
0837 
0838 Sep 5, 2005  O.Link                      geom-csg-V07-01-02
0839 - Moved implementation for DistanceToIn/Out() in G4Torus to make use of
0840   G4JTPolynomialSolver for precise calculation of the intersections.
0841 - Reviewed unit tests and reduced statistics.
0842 
0843 Aug 8, 2005  D.Anninos                   geom-csg-V07-01-01
0844 - Added GetPointOnSurface() to all solids. The method returns a random
0845   point according to a quasi-uniform distribution along the surface.
0846 
0847 Jul 25, 2005  O.Link                     geom-csg-V07-01-00
0848 - Fixed bug in G4Sphere::DistanceToOut(p,v):
0849   added check for intersection with double cone.
0850 - Added new unit test testDistanceAccuracy (V.Grichine).
0851 
0852 Jun 8, 2005  V.Grichine                  geom-csg-V07-00-09
0853 - Keep old specification for SurfaceNormal() to treat usage of the
0854   function for points not at the surface.
0855 
0856 Jun 6, 2005  V.Grichine                  geom-csg-V07-00-08
0857 - Correction to SurfaceNormal() for G4Cons, G4Sphere, G4Torus, G4Tubs
0858   for properly handling location on z-axis and in the frame origin.
0859   Fixed bug in G4Cons::SurfaceNormal(p) for normals returned from
0860   rmax and rmin.
0861 - Moved debug printouts for surface-normals to G4CSGDEBUG.
0862 - Cleared compilation warnings in unit tests and updates.
0863 
0864 May 27, 2005  J.Allison                  geom-csg-V07-00-07
0865 - Fixed polyhedron representation of G4Torus.
0866 
0867 May 26, 2005  G.Cosmo                    geom-csg-V07-00-06
0868 - G4Box.cc: restored call to AddSolid() and replaced old AddThis() in
0869   DescribeYourselfTo().
0870 
0871 May 11, 2005  V.Grichine                 geom-csg-V07-00-05
0872 - G4Para: bug fixed in SurfaceNormal(p) for x-distance, to be now in
0873   accordance with the surface selection using Inside(p).
0874 - Updated unit test testSurfaceNormal.cc.
0875 
0876 May 09, 2005  V.Grichine                 geom-csg-V07-00-04
0877 - Updated implementation of SurfaceNormal(p) to get consistence with
0878   Inside(p) functions for the treatment of phi/theta surfaces.
0879   They are treated now in both functions in terms of kAngTolerance.
0880   The reason is that historically SurfaceNormal(p) was using only
0881   kCarTolerance for estimation of shortest distance to a surface. Now,
0882   following the new updated specification, the surface selection is made
0883   according to Inside(p) approach (as kSurface is selected), i.e. - for
0884   phi/theta surfaces in terms of kAngTolerance.
0885 
0886 Apr 26, 2005  V.Grichine, J.Apostolakis
0887 - Simplified and revised the new implementation for SurfaceNormal(p)
0888   with edges/vertices and made becoming the default one for all solids.
0889 
0890 Apr 20, 2005  V.Grichine                 geom-csg-V07-00-03
0891 - G4Trap: fix in p.x() centering to sum over all vertices.
0892 
0893 Mar 23, 2005  J.Allison                  geom-csg-V07-00-02
0894 - Added test for Number-Of-Rotation-Steps in G4CSGSolid::GetPolyhedron().
0895   Requires tag "greps-V07-00-02".
0896 
0897 Mar 03, 2005  J.Allison                  geom-csg-V07-00-01
0898 - Changed AddThis() with AddSolid() for all solids in DescribeYourselfTo()
0899   implementation.
0900 
0901 Dec 02, 2004  V.Grichine                 geom-csg-V07-00-00
0902 - New alternative implementation of SurfaceNormal(p) with edges/vertices
0903   for G4Box, G4Para, G4Trap, G4Trd. Old implementation is still the default.
0904   Can be activated by setting G4NEW_SURF_NORMAL variable before compilation.
0905 
0906 Nov 15, 2004  V.Grichine                 geom-csg-V06-02-06
0907 - G4Trap: added check for X-centering for constructor by verteces.
0908   Fixes problem report #687.
0909 - New unit test for surface-normal and updated unit tests for sphere
0910   and trap.
0911 
0912 Oct 10, 2004  J.Allison                  geom-csg-V06-02-05
0913 - Added GetPolyhedron, a smart access function that creates a G4Polyhedron
0914   on request and stores for future access.  A null pointer means "not
0915   available".
0916 
0917 Sep 22, 2004  V.Grichine                 geom-csg-V06-02-04
0918 - Added specific implementation of GetCubicVolume() for all CSG solids.
0919   The method compute the exact geometrical values and stores it.
0920   The value is reset each time a parameter of the solid is modified.
0921 - Moved inline methods for G4Orb to .icc file.
0922 - Added unit test testSurfaceInOut.cc.
0923 
0924 Sep 16, 2004  V.Grichine                 geom-csg-V06-02-03
0925 - Bug fix in G4Sphere::SurfaceNormal(p) for theta normals.
0926 
0927 Jul 28, 2004  V.Grichine                 geom-csg-V06-02-02
0928 - Fix in G4Cons::DistanceToIn(p,v) on fRmax surface and move in,
0929   the condition became a bit more strict && determinant >=0, i.e.
0930   intersections in addition to go in.
0931   Fixes a rare problem of dIn=dOut=0 observed in 3 events over a
0932   statistics of 10^8..
0933 - Updated unit test testSurfaceInOut.cc to consider the test-case above.
0934 
0935 Jul 16, 2004  V.Grichine                 geom-csg-V06-02-01
0936 - Fix in G4Sphere::DistanceToOut(p,v,...) on fRmin moving outside.
0937   The bug showed 3 events of dIn=dOut=0 for 10^7 statistics in
0938   testSurfaceInOut.
0939 - Added new unit test testSurfaceInOut.cc.
0940 
0941 Jul 02, 2004  V.Grichine                 geom-csg-V06-02-00
0942 - Fixes curing rare conditions of loops at boundaries for G4Orb and G4Sphere:
0943   o G4Orb.cc: bug fix in DistanceToIn(p,v) on fRmax surface allowing
0944     move near fRmax-fCarTolerance/2.
0945   o G4Sphere.cc: bug fix in DistanceToIn(p,v) on Rmax/min surface for
0946     condition of intersection with (Rmax/min-kCarTolerance) artificial
0947     surface.
0948 - Updated unit test for G4Orb.
0949 
0950 Mar 18, 2004  V.Grichine                 geom-csg-V06-00-01
0951 - G4Torus.cc: bug fix in Inside(p) fixing warnings reported in
0952   debug-mode of 'point p is outside'.
0953 
0954 Jan 26, 2004  V.Grichine                 geom-csg-V06-00-00
0955 - Converted strong exceptions in warning notifications for rare anomalous
0956   conditions in DistanceToOut(p,v,..).
0957 - G4Cons.cc: bug fix in DistanceToIn(p,v) to resolve situations of calls
0958   to DistanceToOut() for points outside.
0959 
0960 Dec 4, 2003   V.Grichine                 geom-csg-V05-02-06
0961 - G4Trap.cc: fixed initialisation of planes in default constructor.
0962 - Added new unit test for G4Sphere and new test case for G4Cons.
0963 
0964 Nov 5, 2003   V.Grichine                 geom-csg-V05-02-05
0965 - G4Orb[.hh.cc]: introduced relative tolerance accuracy on fRmax surface
0966   in all methods.
0967 
0968 Nov 3, 2003   G.Cosmo                    geom-csg-V05-02-04
0969 - Code cleanup and headers inclusion review
0970   (replaced by forward declarations where necessary).
0971 
0972 Nov 2, 2003   V.Grichine
0973 - G4Sphere, G4Orb: revision of algorithm for Phi sections in
0974   method Inside().
0975 
0976 Oct 29, 2003   J.Apostolakis             geom-csg-V05-02-03
0977 - G4Sphere.cc: fix for in Inside() for a point with Phi angle:
0978   0.5 kAngTol < phi < Phi_start
0979 
0980 Oct 28, 2003   G.Cosmo                   geom-csg-V05-02-02
0981 - Migrated to new G4Exception scheme.
0982 
0983 Oct 09, 2003   V.Grichine                geom-csg-V05-02-01
0984 - Initialise safe=0.0 in DistanceToIn/Out(p) in all solids.
0985 - Introduced G4Orb solid: a simple sphere with only outer radius.
0986 
0987 Sep 30, 2003   G.Cosmo                   geom-csg-V05-02-00
0988 - Updated GNUmakefile for unit tests, according to new structure
0989   introduced in "geometry-V05-02-00".
0990 
0991 Jun 25, 2003   G.Folger                  geom-csg-V05-01-00
0992 - Added disclaimer of liability where needed.
0993 
0994 Feb 03, 2003   G.Cosmo                   geom-csg-V05-00-00
0995 - G4Cons.cc: enhanced treatment of phi-sections,
0996   according to algorithm used also in G4Tubs (V.Grichine).
0997 - Updated unit tests.
0998 
0999 Oct 28, 2002   G.Cosmo                   geom-csg-V04-01-01
1000 - Added implementation of StreamInfo() to comply with new interface for
1001   G4VSolid in "geommng-V04-01-03".
1002 - Moved inline functions to .icc files, reorganised comments for the Software
1003   Reference Manual.
1004 - Some cosmetic changes to code formatting, removed all <TAB> characters and
1005   adopted uniform code indentation.
1006 - Extended unit tests for G4Cons and G4Sphere (V.Grichine).
1007 
1008 Jun 26, 2002   V.Grichine                geom-csg-V04-01-00
1009 - G4Cons.cc: bug fixed in DistanceToIn(p,v) concerning z-crossing at the
1010   edge with Rmin,Rmax.
1011 
1012 Jun 19, 2002   V.Grichine                geom-csg-V04-00-05
1013 - G4Sphere.cc: bug fixed in Inside() for treatment of point p on z-axis.
1014   Added new condition [(rho2 || p.z()) && fDTheta < M_PI - kAngTolerance*0.5)]
1015   for treating special case. Fixes problem report #378.
1016 
1017 May 15, 2002   G.Cosmo                   geom-csg-V04-00-04
1018 - G4Trap.cc, G4Tubs.cc: changed local enum 'kUndefined' to 'kUndef',
1019   to co-work with tag "global-V04-00-06", where 'kUndefined' is now
1020   defined for EAxis.
1021 
1022 Apr 16, 2002   V.Grichine                geom-csg-V04-00-03
1023 - G4Tubs.cc: restored "vertices" algorithm for CalculateExtent() which
1024   was temporarly disabled (see reference to tag geom-solids-csg-V03-00-03).
1025 - Updated unit test for G4Tubs, testG4Tubs.cc.
1026 
1027 Feb 15, 2002   V.Grichine                geom-csg-V04-00-02
1028 - G4Para.cc: fixed bug in G4Para::Inside() in calculation of xt,
1029   according to problem report #357.
1030 
1031 Jan 31, 2002   V.Grichine                geom-csg-V04-00-01
1032 - G4Sphere.cc: bug fix in Inside() function.
1033   Fix problem report #216.
1034 - Updated unit test for G4Sphere.
1035 
1036 Jan 10, 2002   G.Cosmo                   geom-solids-csg-V04-00-00
1037 - Moved all verbosity mode warnings to G4CSGDEBUG and commented exceptions.
1038 - Activated G4CSGDEBUG mechanism in GNUmakefile.
1039 - G4Sphere.cc: fixed a problem with tolerances in the case of large Radius.
1040   The case (test18) involves an Rmax = 250 000 000.00 mm
1041   The ratio                         -9
1042               tolerance       1.0 10              -17
1043               ----------- =  ------------ = 0.4 10
1044                   Rmax                +8
1045                                 2.5 10
1046   which is smaller than the precision of doubles.
1047   Solution (for DistanceToOut(), where problem occured):
1048   use a flexible tolerance, equal to the maximum of (kRadTolerance, 10 * R )
1049   (J.Apostolakis).
1050 - Upgraded unit tests and fixed warnings on gcc-2.95-2.
1051 
1052 Aug 27, 2001   V.Grichine                geom-solids-csg-V03-02-00
1053 - G4Sphere.cc: bug fixed in G4Sphere::SurfaceNormal for the case kNETheta.
1054   Fixes problem report #290.
1055 
1056 May 18, 2001   G.Cosmo                   geom-solids-csg-V03-01-02
1057 - Added G4CSGDEBUG preprocessor flag to discriminate for debug verbosity
1058   specific to CSG solids. Included in G4Exception of DistanceToOut() for
1059   "point p is outside" in G4Box, G4Cons, G4Tubs.
1060 
1061 Apr 20, 2001   G.Cosmo                   geom-solids-csg-V03-01-01
1062 - Updates for migration to STL vector.
1063   Modified files: G4Box.cc, G4Cons.cc, G4Para.cc, G4Sphere.cc,
1064                   G4Torus.cc, G4Trap.cc, G4Trd.cc, G4Tubs.cc.
1065   Require coworking with the rest of geometry-V03-01-00.
1066 
1067 Apr 18,   01   V. Grichine               geom-solids-csg-V03-01-00
1068 - G4Trap.cc:
1069   o Fixed memory leak in CalculateExtent() for creation of vertices in
1070     case of finite rotation. (courtesy of D.Williams)
1071   o Removed useless inclusion of math.h.
1072 
1073 Feb 21,   01   V. Grichine               geom-solids-csg-V03-00-03
1074 - G4Tubs.cc:
1075   o Fixed bug in function Inside(p) in computation of pPhi
1076     for points at phi = 0 if the (start phi)+(delta phi) is at phi = 0.
1077   o Temporarly modified CalculateExtent(...), now simply based on
1078     G4Box::CalculateExtent(...). Updated unit test testG4Tubs.cc.
1079 
1080 Feb 01,   01   V. Grichine               geom-solids-csg-V03-00-02
1081 - G4Box: introduced checks against negative (or <2*kCarTolerance) dimensions
1082   in methods SetXHalfLength(), SetYHalfLength() and SetZHalfLength().
1083 
1084 Jan 29,   00   G. Cosmo                  geom-solids-csg-V03-00-01
1085 - G4Box: introduced fixes to algorithm for computation of rotated vertices
1086   in CalculateExtent() as previously committed in tag geom-solids-csg-V02-00-10.
1087 - G4Torus: extracted logic for G4PolynomialSolver now included in
1088   global/HEPNumerics. Coworks with tag global-V03-00-02.
1089 - Added dependency to global/HEPNumerics in GNUmakefile.
1090 
1091 Jan 18,   00   V. Grichine               geom-solids-csg-V03-00-00
1092 - Fixed condition from (pPhi<0) to (pPhi<-0.5*kAngleTolerance) in
1093   G4Tubs::Inside(p). Fixes problem report #198.
1094 
1095 Dec 07,   00   V. Grichine               geom-solids-csg-V02-00-14
1096 - G4Tubs.cc: corrections in phi-section algorithm of Inside(p).
1097 
1098 Dec 01,   00   G. Cosmo                  geom-solids-csg-V02-00-13
1099 - Increased basic number of iterations from 8 to 12 for Newton algorithm
1100   in G4Torus.cc to assure root retrivial.
1101 
1102 Nov 28,   00   V. Grichine               geom-solids-csg-V02-00-12
1103 - Bug fixed in G4Tubs::Inside(p) for analysis of phi positioning when
1104   on +-fDz surface.
1105 
1106 Nov 20,   00   G. Cosmo                  geom-solids-csg-V02-00-11
1107 - Fixes to remove warnings from "-Wall -ansi -pedantic" g++ compiler options:
1108   o commented out variables declared and not used.
1109   o fixed declaration of variables used before being initialised.
1110   o fixed order of initialisation of member data in constructors.
1111   o fixed usage of unsigned-int (size_t) for array indeces.
1112 - NB: based on tag geom-solids-csg-V02-00-09.
1113 
1114 Nov 16,   00   V. Grichine               geom-solids-csg-V02-00-10
1115 - G4Box.cc: introduced fixes to algorithm for computation of rotated vertices
1116   in CalculateExtent(). (D.Williams)
1117 
1118 Nov 10,   00   G. Cosmo                  geom-solids-csg-V02-00-09
1119 - G4Torus.cc: removed debug print-out which was still included by mistake
1120   in constructor.
1121 
1122 Nov 02,   00   G. Cosmo                  geom-solids-csg-V02-00-08
1123 - QA code revision and cleanup (+fixes from CodeWizard filtering):
1124   o Removed virtual keyword from GetEntityType() concrete function.
1125   o General cosmetics.
1126 
1127 Oct 31,   00   V. Grichine               geom-solids-csg-V02-00-07
1128 - G4Tubs::DistanceToOut(p,v,...):
1129   o Initialised sr and sphi to kInfinity and re-introduced additional
1130     condition on check for Rmin intersection (t2 >= 0).
1131 
1132 Oct 26,   00   G. Cosmo                  geom-solids-csg-V02-00-06
1133 - G4Cons::DistanceToOut(p,v): leave out warning if point is outside.
1134 
1135 Oct 23,   00   G. Cosmo                  geom-solids-csg-V02-00-05
1136 - G4Tubs::DistanceToOut(p,v,...):
1137   o Still correction to thickness of conical surfaces. (V.Grichine)
1138   o Commented-out additional condition on check for Rmin intersection
1139     (t2 >= 0), recently introduced (roi2).
1140     Requires further investigation !!
1141 - G4Torus:
1142   o Introduced more stable numerical method (Newton-based) for computing
1143     roots of equations in DistanceToIn() and DistanceToOut(). (E.Medernach)
1144 
1145 Oct 18,   00   V. Grichine               geom-solids-csg-V02-00-04
1146 - G4Cons.cc, G4Tubs.cc:
1147   added check against negative distance returned by DistanceToIn/DistanceToOut.
1148 - G4Cons.cc:
1149   added correction for thickness of conical surfaces, remarkable for big
1150   opening angles, in DistanceToIn/DistanceToOut functions.
1151 
1152 Oct 05,   00   V. Grichine               geom-solids-csg-V02-00-03
1153 - G4Cons.cc:
1154   o fix in DistanceToIn(p,v): corrected condition on conical surface to
1155     consider a real projection of the conical surface thickness on XY
1156     plane (0.5*kCarTolerance*secRMin instead of 0.5*kCarTolerance), when
1157     dealing with cons with large opening angle.
1158   o Updated unit test testG4Cons2.cc.
1159 
1160 Aug 16,   00   V. Grichine               geom-solids-csg-V02-00-02
1161 - G4Cons.cc:
1162   o fix in constructor to check if one of the Rmin is equal to 0,
1163     if so, it will be set to 1e3*kRadTolerance.
1164   o Deactivated call to G4Exception in DistanceToOut(p) if p is outside,
1165     replaced by simple warning.
1166 - G4Tubes.cc, G4Box.cc:
1167   o Deactivated call to G4Exception in DistanceToOut(p) if p is outside,
1168     replaced by simple warning.
1169 
1170 Aug 08,   00   V. Grichine               geom-solids-csg-V02-00-01
1171 - G4Cons.cc, G4Tubs.cc:
1172   o fixes to DistanceToOut(p,v,...) to make roots of quadratic equations
1173     more stable.
1174   o added check if point is outside in G4Tubes::DistanceToOut(p),
1175     some code formatting.
1176 
1177 Jul 27,   00   V. Grichine               geom-solids-csg-V02-00-00
1178 - G4Cons.cc:
1179   o added more diagnostics in DistanceToOut(p)
1180   o cosmetics changes
1181 - Updated unit test for G4Cons.
1182 
1183 Jun 22,   00   V. Grichine               geom-solids-csg-V01-01-04
1184 - G4Box.cc:
1185   o added safety against call from outside in DistanceToOut(p)
1186   o added more diagnostics before exception in DistanceToOut(p,v,...)
1187   o cosmetics changes
1188 - G4Torus[.hh.cc]:
1189   o added new alternative functions SolveBiQuadratic/CubicNew.
1190   o fix in SolveBiQuadratic() for ambiguous expression in looping index
1191     detected by Insure++.
1192 - Updated unit tests testG4Torus and testG4Trd.
1193 
1194 May 17,   00   V. Grichine               geom-solids-csg-V01-01-03
1195 
1196 - G4Tubs.cc:
1197   o introduced fix in DistanceToOut(p,v,...) in computation of xi, yi for
1198     (sphi >= -0.5*kCarTolerance). This fixes problem reports #76 and #91.
1199   o added more diagnostics in case of invalid enum for DistanceToOut.
1200 - Updated unit test for G4Tubs.
1201 
1202 May 05,   00   V. Grichine               geom-solids-csg-V01-01-02
1203 
1204 - G4Box.cc, G4Trd.cc:
1205   o modified DistanceToIn(p,v) to return 0 distance in case computed
1206     value is less than 0.5*kCarTolerance.
1207   o Cosmetic changes.
1208 - Updated unit tests for G4Box and G4Trd.
1209 
1210 Apr 11,   00   J. Allison
1211 
1212 - Removed implementations of GetExtent in most sub-classes of G4VSolid (a
1213   default implementation exists in G4VSolid).
1214 - All implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const
1215   now correctly written: scene.AddThis(*this).
1216 
1217 Apr 05,   00   G. Cosmo                  geom-solids-csg-V01-01-01
1218  - G4Tubs.cc: fixed bug in function Inside(p).
1219               Removed (commented) in the code umproper addition of 2PI
1220               to Phi-angle particle (V.Grichine)
1221  - G4Hype[.hh.cc]: fixed several longstanding issues and bring methods
1222                    into compliance with specifications  (D.Williams)
1223  - Moved to "specific" the following classes:
1224    G4ClippablePolygon, G4EnclosingCylinder, G4Hype, G4PolyPhiFace,
1225    G4Polycone, G4PolyconeSide, G4Polyhedra, G4PolyhedraSide,
1226    G4ReduciblePolygon, G4IntersectingCone, G4SolidExtentList,
1227    G4VCSGface, G4VCSGfaceted.
1228  - Moved testG4Hype.cc and testG4Polycone.cc from CSG/test to
1229    specific/test
1230  - Moved generic tests "SBT" and "Fred" one level up to solids/test.
1231  - Organised class description comments for the Software Reference Manual
1232    in all headers.
1233 
1234 Mar 23,   00   G. Cosmo                  geom-solids-csg-V01-01-00
1235  - Tagged.
1236 
1237 Mar 22,   00   D. Williams
1238  - G4PolyhedraSide.cc: fixed bug in G4PolyhedraSide::Normal(...).
1239    The method Normal(...) (used by G4VCSGfaceted::SurfaceNormal) was not
1240    filling in the argument bestDistance. This fixes a bug observed in
1241    G4Polyhedra::SurfaceNormal.
1242 
1243 Mar 14,   00   V. Grichine
1244  - Added diagnostics in G4Cons, G4Sphere and G4Torus in function
1245    DistanceToOut(p,v,...).
1246 
1247 Mar 03,   00   G. Cosmo                   geom-solids-csg-V01-00-05
1248  - Minor fixes to unit tests to make them up-to-date with recent
1249    development versions (already included in tag geometry-V01-00-00a).
1250  - G4PolyconeSide.cc, G4PolyhedraSide.cc: added explicit cast to G4int
1251    to avoid warnings on Linux.
1252 
1253 Jan 19,   00   G. Cosmo                   geom-solids-csg-01-00-04
1254  - Fixed bug in DistanceToIn(p,v). Modified files: G4Trap.cc and
1255    testG4Trap.cc. (V.Grichine)
1256  - Syncronized file versions with HEAD (essentially CVS headers changes).
1257  - Fixes for missing migration on HEAD related to some files in test/fred
1258    and test/SBT.
1259 
1260 Nov 17,   99   J. Apostolakis             geom-solids-csg-01-00-03
1261  - Tagged
1262 
1263 Nov 17,   99   V. Grichine
1264  - Added initialisation to Eside "side" variable in DistanceToOut(p,v)
1265    in CSG solids   -->   Problem report from D.C. Williams, BaBar
1266  - A check in G4Trap Makeplane added.
1267 
1268 Nov 10,   99   J. Apostolakis             geom-solids-csg-01-00-02-cand
1269  - Included  David Williams' modifications to
1270    G4IntersectingCone.cc, G4PolyconeSide.cc and G4VCSGfaceted.cc
1271    and to  test/SBT/SBT.cc  and  test/SBT/polycone.geant4
1272 
1273 Nov 10,   99   J. Apostolakis             geom-solids-csg-01-00-01
1274  - Tagged
1275 
1276 May 18,   99   David Williams
1277  - Replaced 1/DBL_MAX with DBL_MIN (valid correction, seen in tests for STL)
1278    in G4PolyPhiFace.cc, G4PolyconeSide.cc and G4PolyhedraSide.cc
1279 
1280 Apr 29,   99   David Williams
1281  - G4Polyhedra and G4Polycone (and G4VCSGfaceted) modified:
1282          1. Implemented correct copy constructors and assignment operators.
1283          2. Fix some leaks for tracks that pass exactly through an edge.
1284             Some leaks still remain: particularly if a track passes through
1285              a corner and between the curved edges of G4Polycone.
1286          3. G4Polyhedra argument numSide changed to G4int (from G4double)
1287 
1288 Apr 13,   99   Vladimir Grichine and Simone Giani
1289  - Minor consistency fix to 8 basic CSG solids:
1290    Tolerance used in calculation of extent but not in one place,
1291    and not another - this tripped up the client code.
1292 
1293 Feb 16,   99   David Williams
1294  - Repaired bugs in G4Polycone (G4PolyconeSide.cc) as found in
1295    test/testG4Polycone and missed in below.
1296  - Updated definition of DistanceToIn(p) and DistanceToOut(p) to
1297    return zero when the point p is on the surface of the solid.
1298 
1299 Feb 12,   99   David Williams
1300  - src/G4PolyconeSide.cc updated (revision 1.4) to fix a bug discovered by
1301    test/testG4Polycone.
1302 
1303 Feb   9,  99   David C. Williams      (davidw@scipp.ucsc.edu)
1304  - I've committed new versions of the CSG Polycone and Polyhedra in the
1305    geant4 repository, including a new utility class called
1306    G4ReduciblePolygon. The new versions fix several subtle bugs which my
1307    "test3" batch geometry testing code uncovered. In addition, the new class
1308    G4ReduciblePolygon is used to run strict tests on the validity of input
1309    parameters.
1310    To fix a bug in Polyhedra, I had to back out some fancy code that
1311    allowed it to calculate intersections at a speed that was independent of
1312    the number of sides. The new version now runs at a speed proportional to
1313    the number of sides, and is thus much slower for polyhedras with many
1314    sides. I can fix this, but I thought it would be best to get the bug fixes
1315    in as soon as possible.
1316 
1317 Feb  10,  99   John Apostolakis
1318  - History file created.