140 size_t& ny,
size_t& nz )
const 144 std::multimap<G4int,G4int>::const_iterator ite =
150 G4int ifmin = (*ite).second;
154 nvoxXprev = (*ite).first;
159 nx = ifmin+copyNo-nvoxXprev-1;
197 if( localDir.
x() < 0 )
214 if( localDir.
y() < 0 )
231 if( localDir.
z() < 0 )
282 std::ostringstream message;
283 message <<
"Corrected the copy number! It was negative or too big." 285 <<
" LocalPoint: " << localPoint <<
G4endl 286 <<
" LocalDir: " << localDir <<
G4endl 289 <<
" LocalPoint - wall: " 293 G4Exception(
"G4PartialPhantomParameterisation::GetReplicaNo()",
298 std::multimap<G4int,G4int>::iterator ite =
fFilledIDs.begin();
309 std::multimap<G4int,G4int>::iterator iteant = ite; iteant--;
310 G4int copyNo = (*iteant).first + 1 + ( nx - (*ite).second );
329 std::ostringstream message;
330 message <<
"Copy number is negative or too big!" <<
G4endl 331 <<
" Copy number: " << copyNo <<
G4endl 332 <<
" Total number of voxels: " <<
fNoVoxel;
333 G4Exception(
"G4PartialPhantomParameterisation::CheckCopyNo()",
G4Material * GetMaterial(size_t nx, size_t ny, size_t nz) const
void CheckCopyNo(const G4int copyNo) const
size_t * fMaterialIndices
G4int GetReplicaNo(const G4ThreeVector &localPoint, const G4ThreeVector &localDir)
G4ThreeVector GetTranslation(const G4int copyNo) const
void SetTranslation(const G4ThreeVector &v)
G4PartialPhantomParameterisation()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void ComputeTransformation(const G4int, G4VPhysicalVolume *) const
std::multimap< G4int, G4int > fFilledIDs
void BuildContainerWalls()
size_t GetMaterialIndex(size_t nx, size_t ny, size_t nz) const
~G4PartialPhantomParameterisation()
std::vector< G4Material * > fMaterials
G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=0)
void ComputeVoxelIndices(const G4int copyNo, size_t &nx, size_t &ny, size_t &nz) const