93 CheckCopyNo( copyNo );
99 ComputeVoxelIndices( copyNo, nx, ny, nz );
120 CheckCopyNo( copyNo );
131 CheckCopyNo( copyNo );
163void G4PhantomParameterisation::
164ComputeVoxelIndices(
const G4int copyNo, std::size_t& nx,
165 std::size_t& ny, std::size_t& nz )
const
167 CheckCopyNo( copyNo );
193 std::ostringstream message;
194 message <<
"Voxels do not fully fill the container: "
199 <<
" Maximum difference is: " << toleranceForError;
200 G4Exception(
"G4PhantomParameterisation::CheckVoxelsFillContainer()",
208 std::ostringstream message;
209 message <<
"Voxels do not fully fill the container: "
214 <<
" Maximum difference is: " << toleranceForWarning;
215 G4Exception(
"G4PhantomParameterisation::CheckVoxelsFillContainer()",
234 std::ostringstream message;
235 message <<
"Point outside voxels!" <<
G4endl
236 <<
" localPoint - " << localPoint
237 <<
" - is outside container solid: "
239 <<
"DIFFERENCE WITH PHANTOM WALLS X: "
243 G4Exception(
"G4PhantomParameterisation::GetReplicaNo()",
"GeomNav0003",
278 if( localDir.
x() < 0 )
295 if( localDir.
y() < 0 )
312 if( localDir.
z() < 0 )
368 std::ostringstream message;
369 message <<
"Corrected the copy number! It was negative or too big" <<
G4endl
370 <<
" LocalPoint: " << localPoint <<
G4endl
371 <<
" LocalDir: " << localDir <<
G4endl
374 <<
" LocalPoint - wall: "
378 G4Exception(
"G4PhantomParameterisation::GetReplicaNo()",
390void G4PhantomParameterisation::CheckCopyNo(
const G4long copyNo )
const
394 std::ostringstream message;
395 message <<
"Copy number is negative or too big!" <<
G4endl
396 <<
" Copy number: " << copyNo <<
G4endl
397 <<
" Total number of voxels: " <<
fNoVoxels;
398 G4Exception(
"G4PhantomParameterisation::CheckCopyNo()",
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
CLHEP::Hep3Vector G4ThreeVector
G4TouchableHistory G4VTouchable
G4VTouchable is a G4TouchableHistory object.
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
G4VSolid * GetSolid() const
virtual G4int GetReplicaNo(const G4ThreeVector &localPoint, const G4ThreeVector &localDir)
void BuildContainerSolid(G4VPhysicalVolume *pPhysicalVol)
G4VSolid * ComputeSolid(const G4int, G4VPhysicalVolume *) override
void CheckVoxelsFillContainer(G4double contX, G4double contY, G4double contZ) const
G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=nullptr) override
G4Material * GetMaterial(std::size_t nx, std::size_t ny, std::size_t nz) const
std::size_t GetMaterialIndex(std::size_t nx, std::size_t ny, std::size_t nz) const
G4ThreeVector GetTranslation(const G4int copyNo) const
void ComputeTransformation(const G4int, G4VPhysicalVolume *) const override
std::size_t * fMaterialIndices
std::vector< G4Material * > fMaterials
~G4PhantomParameterisation() override
G4PhantomParameterisation()
G4VSolid * fContainerSolid
G4VPhysicalVolume is an abstract base class for the representation of a positioned volume....
G4LogicalVolume * GetLogicalVolume() const
void SetTranslation(const G4ThreeVector &v)
G4VSolid is an abstract base class for solids, physical shapes that can be tracked through....