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
@@ -29,7 +29,7 @@
//
// Wrapper class for G4Hype to make use of VecGeom Hyperboloid.
// 16.10.17 G.Cosmo, CERN
// Author: Gabriele Cosmo (CERN), 16.10.2017
// --------------------------------------------------------------------
#ifndef G4UHYPE_HH
#define G4UHYPE_HH
@@ -42,6 +42,11 @@
#include "G4Polyhedron.hh"
/**
* @brief G4UHype is a wrapper class for G4Hype to make use
* of VecGeom Hyperboloid.
*/
class G4UHype : public G4UAdapter<vecgeom::GenericUnplacedHype>
{
using Shape_t = vecgeom::GenericUnplacedHype;
@@ -49,44 +54,96 @@ class G4UHype : public G4UAdapter<vecgeom::GenericUnplacedHype>
public:
/**
* Constructs a hyperbolic tube, given its parameters.
* @param[in] name The solid name.
* @param[in] newInnerRadius Inner radius.
* @param[in] newOuterRadius Outer radius.
* @param[in] newInnerStereo Inner stereo angle in radians.
* @param[in] newOuterStereo Outer stereo angle in radians.
* @param[in] newHalfLenZ Half length in Z.
*/
G4UHype(const G4String& name,
G4double newInnerRadius,
G4double newOuterRadius,
G4double newInnerStereo,
G4double newOuterStereo,
G4double newHalfLenZ);
~G4UHype() override;
void ComputeDimensions( G4VPVParameterisation* p,
/**
* Default destructor.
*/
~G4UHype() override = default;
/**
* Dispatch method for parameterisation replication mechanism and
* dimension computation.
*/
void ComputeDimensions(G4VPVParameterisation* p,
const G4int n,
const G4VPhysicalVolume* pRep) override;
/**
* Makes a clone of the object for use in multi-treading.
* @returns A pointer to the new cloned allocated solid.
*/
G4VSolid* Clone() const override;
/**
* Accessors.
*/
G4double GetInnerRadius () const;
G4double GetOuterRadius () const;
G4double GetZHalfLength () const;
G4double GetInnerStereo () const;
G4double GetOuterStereo () const;
/**
* Modifiers.
*/
void SetInnerRadius (G4double newIRad);
void SetOuterRadius (G4double newORad);
void SetZHalfLength (G4double newHLZ);
void SetInnerStereo (G4double newISte);
void SetOuterStereo (G4double newOSte);
/**
* Returns the type ID, "G4Hype" of the solid.
*/
inline G4GeometryType GetEntityType() const override;
G4UHype( const G4UHype& source );
G4UHype& operator=( const G4UHype& source );
// Copy constructor and assignment operator.
/**
* Computes the bounding limits of the solid.
* @param[out] pMin The minimum bounding limit point.
* @param[out] pMax The maximum bounding limit point.
*/
void BoundingLimits(G4ThreeVector& pMin, G4ThreeVector& pMax) const override;
/**
* Calculates the minimum and maximum extent of the solid, when under the
* specified transform, and within the specified limits.
* @param[in] pAxis The axis along which compute the extent.
* @param[in] pVoxelLimit The limiting space dictated by voxels.
* @param[in] pTransform The internal transformation applied to the solid.
* @param[out] pMin The minimum extent value.
* @param[out] pMax The maximum extent value.
* @returns True if the solid is intersected by the extent region.
*/
G4bool CalculateExtent(const EAxis pAxis,
const G4VoxelLimits& pVoxelLimit,
const G4AffineTransform& pTransform,
G4double& pmin, G4double& pmax) const override;
/**
* Returns a generated polyhedron as graphical representations.
*/
G4Polyhedron* CreatePolyhedron() const override;
/**
* Copy constructor and assignment operator.
*/
G4UHype( const G4UHype& source );
G4UHype& operator=( const G4UHype& source );
};
// --------------------------------------------------------------------