Import Geant4 11.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2025-12-05 08:54:02 +01:00
parent a499fb82e9
commit b4a16de652
6484 changed files with 232674 additions and 221097 deletions
@@ -27,13 +27,13 @@
//
// Class description:
//
// Defines a list of (voxel) extents along one axis.
// Defines a list of (voxel) extents along one axis.
//
// This utility class is designed for one specific purpose:
// to calculate the extent of a CSG-like solid for a voxel
// (G4VSolid::CalculateExtent).
// This utility class is designed for one specific purpose:
// to calculate the extent of a CSG-like solid for a voxel
// (G4VSolid::CalculateExtent).
// Author: David C. Williams (davidw@scipp.ucsc.edu)
// Author: David C. Williams (UCSC), 1998
// --------------------------------------------------------------------
#ifndef G4SOLIDEXTENTLIST_HH
#define G4SOLIDEXTENTLIST_HH
@@ -42,28 +42,57 @@
#include "G4ClippablePolygon.hh"
/**
* @brief G4SolidExtentList is utility class designed for calculating
* the extent of a CSG-like solid for a voxel.
*/
class G4SolidExtentList
{
public:
/**
* Default Constructor.
*/
G4SolidExtentList();
/**
* Constructor provided axis and limits.
* @param[in] targetAxis Axis along which compute the extent.
* @param[in] voxelLimits The limiting space dictated by voxels.
*/
G4SolidExtentList( const EAxis targetAxis,
const G4VoxelLimits& voxelLimits );
~G4SolidExtentList();
/**
* Default Destructor.
*/
~G4SolidExtentList() = default;
/**
* Categorises polygon surfaces.
*/
void AddSurface( const G4ClippablePolygon& surface );
/**
* Returns extent after processing all surfaces.
* @param[out] min The minimum extent
* @param[out] max The maximum extent
* @returns false if no surfaces within limits or facing inwards.
*/
G4bool GetExtent( G4double& min, G4double& max ) const;
protected:
EAxis axis; // Target axis
G4bool limited = false; // True if limited
private:
/** Axis and limits... */
EAxis axis; // Target axis
G4bool limited = false; // True if limited
G4double minLimit; // ... min limit
G4double maxLimit; // ... max limit
/** Surfaces within the limits... */
G4ClippablePolygon minSurface, // Minimum surface within limits
maxSurface, // Maximum
maxSurface, // Maximum surface within limits
minAbove, // Minimum surface totally above max limit
maxBelow; // Maximum surface totally below min limit
};