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