Geant4-11
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
G4ReplicatedSlice Class Reference

#include <G4ReplicatedSlice.hh>

Inheritance diagram for G4ReplicatedSlice:
G4PVReplica G4VPhysicalVolume

Public Member Functions

virtual G4bool CheckOverlaps (G4int res=1000, G4double tol=0., G4bool verbose=true, G4int errMax=1)
 
EVolume DeduceVolumeType () const
 
 G4ReplicatedSlice (const G4ReplicatedSlice &)=delete
 
 G4ReplicatedSlice (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMotherLogical, const EAxis pAxis, const G4double width, const G4double half_gap, const G4double offset)
 
 G4ReplicatedSlice (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMotherLogical, const EAxis pAxis, const G4int nReplicas, const G4double half_gap, const G4double offset)
 
 G4ReplicatedSlice (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMotherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double half_gap, const G4double offset)
 
 G4ReplicatedSlice (const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMotherPhysical, const EAxis pAxis, const G4double width, const G4double half_gap, const G4double offset)
 
 G4ReplicatedSlice (const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMotherPhysical, const EAxis pAxis, const G4int nReplicas, const G4double half_gap, const G4double offset)
 
 G4ReplicatedSlice (const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMotherPhysical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double half_gap, const G4double offset)
 
virtual G4int GetCopyNo () const
 
EAxis GetDivisionAxis () const
 
const G4RotationMatrixGetFrameRotation () const
 
G4ThreeVector GetFrameTranslation () const
 
G4int GetInstanceID () const
 
G4LogicalVolumeGetLogicalVolume () const
 
G4LogicalVolumeGetMotherLogical () const
 
virtual G4int GetMultiplicity () const
 
const G4StringGetName () const
 
G4RotationMatrixGetObjectRotation () const
 
G4RotationMatrix GetObjectRotationValue () const
 
G4ThreeVector GetObjectTranslation () const
 
virtual G4VPVParameterisationGetParameterisation () const
 
G4int GetRegularStructureId () const
 
virtual void GetReplicationData (EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const
 
G4RotationMatrixGetRotation ()
 
const G4RotationMatrixGetRotation () const
 
const G4ThreeVector GetTranslation () const
 
void InitialiseWorker (G4PVReplica *pMasterObject)
 
virtual G4bool IsMany () const
 
G4bool IsParameterised () const
 
G4bool IsRegularStructure () const
 
virtual G4bool IsReplicated () const
 
G4ReplicatedSliceoperator= (const G4ReplicatedSlice &)=delete
 
G4bool operator== (const G4VPhysicalVolume &p) const
 
virtual void SetCopyNo (G4int CopyNo)
 
void SetLogicalVolume (G4LogicalVolume *pLogical)
 
void SetMotherLogical (G4LogicalVolume *pMother)
 
void SetName (const G4String &pName)
 
virtual void SetRegularStructureId (G4int code)
 
void SetRotation (G4RotationMatrix *)
 
void SetTranslation (const G4ThreeVector &v)
 
void TerminateWorker (G4PVReplica *pMasterObject)
 
EVolume VolumeType () const final
 
virtual ~G4ReplicatedSlice ()
 

Static Public Member Functions

static void Clean ()
 
static const G4PVRManagerGetSubInstanceManager ()
 

Protected Member Functions

void InitialiseWorker (G4VPhysicalVolume *pMasterObject, G4RotationMatrix *pRot, const G4ThreeVector &tlate)
 
void TerminateWorker (G4VPhysicalVolume *pMasterObject)
 

Protected Attributes

EAxis faxis
 
EAxis fdivAxis
 
G4int fnReplicas = 0
 
G4double foffset = 0.0
 
G4VDivisionParameterisationfparam = nullptr
 
G4double fwidth = 0.0
 

Private Member Functions

void CheckAndSetParameters (const EAxis pAxis, const G4int nDivs, const G4double width, const G4double half_gap, const G4double offset, DivisionType divType, G4LogicalVolume *pMotherLogical, const G4LogicalVolume *pLogical)
 
void CheckOnlyDaughter (G4LogicalVolume *pMotherLogical)
 
void ErrorInAxis (EAxis axis, G4VSolid *solid)
 
void SetParameterisation (G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double half_gap, const G4double offset, DivisionType divType)
 

Private Attributes

G4LogicalVolumeflmother = nullptr
 
G4LogicalVolumeflogical = nullptr
 
G4String fname
 
G4int fRegularVolsId = 0
 
G4int instanceID
 
G4PVDatapvdata = nullptr
 

Static Private Attributes

static G4GEOM_DLL G4PVRManager subInstanceManager
 

Detailed Description

Definition at line 66 of file G4ReplicatedSlice.hh.

Constructor & Destructor Documentation

◆ G4ReplicatedSlice() [1/7]

G4ReplicatedSlice::G4ReplicatedSlice ( const G4String pName,
G4LogicalVolume pLogical,
G4LogicalVolume pMotherLogical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  half_gap,
const G4double  offset 
)

Definition at line 44 of file G4ReplicatedSlice.cc.

52 : G4PVReplica(pName, nDivs, pAxis, pLogical, pMotherLogical)
53{
54 CheckAndSetParameters(pAxis, nDivs, width, half_gap, offset,
55 DivNDIVandWIDTH, pMotherLogical, pLogical);
56}
G4PVReplica(const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMother, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset=0.)
Definition: G4PVReplica.cc:88
void CheckAndSetParameters(const EAxis pAxis, const G4int nDivs, const G4double width, const G4double half_gap, const G4double offset, DivisionType divType, G4LogicalVolume *pMotherLogical, const G4LogicalVolume *pLogical)

References CheckAndSetParameters(), and DivNDIVandWIDTH.

◆ G4ReplicatedSlice() [2/7]

G4ReplicatedSlice::G4ReplicatedSlice ( const G4String pName,
G4LogicalVolume pLogical,
G4LogicalVolume pMotherLogical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  half_gap,
const G4double  offset 
)

Definition at line 59 of file G4ReplicatedSlice.cc.

66 : G4PVReplica(pName, nDivs, pAxis, pLogical, pMotherLogical)
67{
68 CheckAndSetParameters(pAxis, nDivs, 0., half_gap, offset,
69 DivNDIV, pMotherLogical, pLogical);
70}

References CheckAndSetParameters(), and DivNDIV.

◆ G4ReplicatedSlice() [3/7]

G4ReplicatedSlice::G4ReplicatedSlice ( const G4String pName,
G4LogicalVolume pLogical,
G4LogicalVolume pMotherLogical,
const EAxis  pAxis,
const G4double  width,
const G4double  half_gap,
const G4double  offset 
)

Definition at line 73 of file G4ReplicatedSlice.cc.

80 : G4PVReplica(pName, 0, pAxis, pLogical, pMotherLogical)
81{
82 CheckAndSetParameters(pAxis, 0, width, half_gap, offset,
83 DivWIDTH, pMotherLogical, pLogical);
84}

References CheckAndSetParameters(), and DivWIDTH.

◆ G4ReplicatedSlice() [4/7]

G4ReplicatedSlice::G4ReplicatedSlice ( const G4String pName,
G4LogicalVolume pLogical,
G4VPhysicalVolume pMotherPhysical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  half_gap,
const G4double  offset 
)

Definition at line 87 of file G4ReplicatedSlice.cc.

95 : G4PVReplica(pName, nDivs, pAxis, pLogical,
96 pMotherPhysical ? pMotherPhysical->GetLogicalVolume() : nullptr)
97{
98 if (pMotherPhysical == nullptr)
99 {
100 std::ostringstream message;
101 message << "Invalid setup." << G4endl
102 << "NULL pointer specified as mother for volume: " << pName;
103 G4Exception("G4ReplicatedSlice::G4ReplicatedSlice()", "GeomDiv0002",
104 FatalException, message);
105 return;
106 }
107 CheckAndSetParameters(pAxis, nDivs, width, half_gap, offset,
108 DivNDIVandWIDTH, pMotherPhysical->GetLogicalVolume(), pLogical);
109}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
#define G4endl
Definition: G4ios.hh:57
G4LogicalVolume * GetLogicalVolume() const

References CheckAndSetParameters(), DivNDIVandWIDTH, FatalException, G4endl, G4Exception(), and G4VPhysicalVolume::GetLogicalVolume().

◆ G4ReplicatedSlice() [5/7]

G4ReplicatedSlice::G4ReplicatedSlice ( const G4String pName,
G4LogicalVolume pLogical,
G4VPhysicalVolume pMotherPhysical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  half_gap,
const G4double  offset 
)

Definition at line 112 of file G4ReplicatedSlice.cc.

119 : G4PVReplica(pName, nDivs, pAxis, pLogical,
120 pMotherPhysical ? pMotherPhysical->GetLogicalVolume() : nullptr)
121{
122 if (pMotherPhysical == nullptr)
123 {
124 std::ostringstream message;
125 message << "Invalid setup." << G4endl
126 << "NULL pointer specified as mother for volume: " << pName;
127 G4Exception("G4ReplicatedSlice::G4ReplicatedSlice()", "GeomDiv0002",
128 FatalException, message);
129 return;
130 }
131 CheckAndSetParameters(pAxis, nDivs, 0., half_gap, offset,
132 DivNDIV, pMotherPhysical->GetLogicalVolume(), pLogical);
133}

References CheckAndSetParameters(), DivNDIV, FatalException, G4endl, G4Exception(), and G4VPhysicalVolume::GetLogicalVolume().

◆ G4ReplicatedSlice() [6/7]

G4ReplicatedSlice::G4ReplicatedSlice ( const G4String pName,
G4LogicalVolume pLogical,
G4VPhysicalVolume pMotherPhysical,
const EAxis  pAxis,
const G4double  width,
const G4double  half_gap,
const G4double  offset 
)

Definition at line 136 of file G4ReplicatedSlice.cc.

143 : G4PVReplica(pName, 0, pAxis, pLogical,
144 pMotherPhysical ? pMotherPhysical->GetLogicalVolume() : nullptr)
145{
146 if (pMotherPhysical == nullptr)
147 {
148 std::ostringstream message;
149 message << "Invalid setup." << G4endl
150 << "NULL pointer specified as mother for volume: " << pName;
151 G4Exception("G4ReplicatedSlice::G4ReplicatedSlice()", "GeomDiv0002",
152 FatalException, message);
153 return;
154 }
155 CheckAndSetParameters(pAxis, 0, width, half_gap, offset,
156 DivWIDTH, pMotherPhysical->GetLogicalVolume(), pLogical);
157}

References CheckAndSetParameters(), DivWIDTH, FatalException, G4endl, G4Exception(), and G4VPhysicalVolume::GetLogicalVolume().

◆ ~G4ReplicatedSlice()

G4ReplicatedSlice::~G4ReplicatedSlice ( )
virtual

Definition at line 279 of file G4ReplicatedSlice.cc.

280{
281 delete GetRotation();
282}
const G4RotationMatrix * GetRotation() const

References G4VPhysicalVolume::GetRotation().

◆ G4ReplicatedSlice() [7/7]

G4ReplicatedSlice::G4ReplicatedSlice ( const G4ReplicatedSlice )
delete

Member Function Documentation

◆ CheckAndSetParameters()

void G4ReplicatedSlice::CheckAndSetParameters ( const EAxis  pAxis,
const G4int  nDivs,
const G4double  width,
const G4double  half_gap,
const G4double  offset,
DivisionType  divType,
G4LogicalVolume pMotherLogical,
const G4LogicalVolume pLogical 
)
private

!!!! axis has to be x/y/z in G4VoxelLimits::GetMinExtent

Definition at line 161 of file G4ReplicatedSlice.cc.

169{
170 if(pMotherLogical == nullptr)
171 {
172 std::ostringstream message;
173 message << "Invalid setup." << G4endl
174 << "NULL pointer specified as mother! Volume: " << GetName();
175 G4Exception("G4ReplicatedSlice::CheckAndSetParameters()", "GeomDiv0002",
176 FatalException, message);
177 }
178 if(pLogical == pMotherLogical)
179 {
180 std::ostringstream message;
181 message << "Invalid setup." << G4endl
182 << "Cannot place a volume inside itself! Volume: " << GetName();
183 G4Exception("G4ReplicatedSlice::CheckAndSetParameters()", "GeomDiv0002",
184 FatalException, message);
185 }
186
187 //----- Check that mother solid is of the same type as
188 // daughter solid (otherwise, the corresponding
189 // Parameterisation::ComputeDimension() will not be called)
190 //
191 G4String msolType = pMotherLogical->GetSolid()->GetEntityType();
192 G4String dsolType = pLogical->GetSolid()->GetEntityType();
193 if( msolType != dsolType && ( msolType != "G4Trd" || dsolType != "G4Trap" ) )
194 {
195 std::ostringstream message;
196 message << "Invalid setup." << G4endl
197 << "Incorrect solid type for division of volume: "
198 << GetName() << G4endl
199 << " It is: " << msolType
200 << ", while it should be: " << dsolType;
201 G4Exception("G4ReplicatedSlice::CheckAndSetParameters()",
202 "GeomDiv0002", FatalException, message);
203 }
204
205 pMotherLogical->AddDaughter(this);
206 SetMotherLogical(pMotherLogical);
207 SetParameterisation(pMotherLogical, pAxis, nDivs,
208 width, half_gap, offset, divType);
209
210 if( divType == DivWIDTH )
211 {
213 }
214 else
215 {
216 fnReplicas = nDivs;
217 }
218 if (fnReplicas < 1 )
219 {
220 G4Exception("G4ReplicatedSlice::CheckAndSetParameters()", "GeomDiv0002",
221 FatalException, "Illegal number of replicas!");
222 }
223 if( divType != DivNDIV)
224 {
226 }
227 else
228 {
229 fwidth = width;
230 }
231 if( fwidth < 0 )
232 {
233 G4Exception("G4ReplicatedSlice::CheckAndSetParameters()", "GeomDiv0002",
234 FatalException, "Width must be positive!");
235 }
236 if( fwidth < 2.*half_gap )
237 {
238 G4Exception("G4ReplicatedSlice::CheckAndSetParameters()", "GeomDiv0002",
239 FatalException, "Half_gap is too large!");
240 }
241
242 foffset = offset;
243 fdivAxis = pAxis;
244
246 //
247 if( pAxis == kRho || pAxis == kRadial3D || pAxis == kPhi )
248 {
249 faxis = kZAxis;
250 }
251 else
252 {
253 faxis = pAxis;
254 }
255
256 switch (faxis)
257 {
258 case kPhi:
259 case kRho:
260 case kXAxis:
261 case kYAxis:
262 case kZAxis:
263 break;
264 default:
265 G4Exception("G4ReplicatedSlice::CheckAndSetParameters()", "GeomDiv0002",
266 FatalException, "Unknown axis of replication.");
267 break;
268 }
269
270 // Create rotation matrix: for phi axis it will be changed
271 // in G4VPVParameterisation::ComputeTransformation, for others
272 // it will stay the unity
273 //
274 G4RotationMatrix* pRMat = new G4RotationMatrix();
275 SetRotation(pRMat);
276}
CLHEP::HepRotation G4RotationMatrix
G4VSolid * GetSolid() const
void AddDaughter(G4VPhysicalVolume *p)
void SetParameterisation(G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double half_gap, const G4double offset, DivisionType divType)
G4VDivisionParameterisation * fparam
G4double GetWidth() const
const G4String & GetName() const
void SetRotation(G4RotationMatrix *)
void SetMotherLogical(G4LogicalVolume *pMother)
virtual G4GeometryType GetEntityType() const =0
@ kPhi
Definition: geomdefs.hh:60
@ kYAxis
Definition: geomdefs.hh:56
@ kRadial3D
Definition: geomdefs.hh:59
@ kXAxis
Definition: geomdefs.hh:55
@ kZAxis
Definition: geomdefs.hh:57
@ kRho
Definition: geomdefs.hh:58

References G4LogicalVolume::AddDaughter(), DivNDIV, DivWIDTH, FatalException, faxis, fdivAxis, fnReplicas, foffset, fparam, fwidth, G4endl, G4Exception(), G4VSolid::GetEntityType(), G4VPhysicalVolume::GetName(), G4VDivisionParameterisation::GetNoDiv(), G4LogicalVolume::GetSolid(), G4VDivisionParameterisation::GetWidth(), kPhi, kRadial3D, kRho, kXAxis, kYAxis, kZAxis, G4VPhysicalVolume::SetMotherLogical(), SetParameterisation(), and G4VPhysicalVolume::SetRotation().

Referenced by G4ReplicatedSlice().

◆ CheckOnlyDaughter()

void G4PVReplica::CheckOnlyDaughter ( G4LogicalVolume pMotherLogical)
privateinherited

Definition at line 182 of file G4PVReplica.cc.

183{
184 if (pMotherLogical->GetNoDaughters() != 0)
185 {
186 std::ostringstream message;
187 message << "Replica or parameterised volume must be the only daughter !"
188 << G4endl
189 << " Mother logical volume: " << pMotherLogical->GetName()
190 << G4endl
191 << " Replicated volume: " << this->GetName() << G4endl
192 << " Existing 'sister': " << pMotherLogical->GetDaughter(0)
193 ->GetName();
194 G4Exception("G4PVReplica::G4PVReplica()", "GeomVol0002",
195 FatalException, message);
196 return;
197 }
198}
size_t GetNoDaughters() const
G4VPhysicalVolume * GetDaughter(const G4int i) const
const G4String & GetName() const

References FatalException, G4endl, G4Exception(), G4LogicalVolume::GetDaughter(), G4LogicalVolume::GetName(), G4VPhysicalVolume::GetName(), and G4LogicalVolume::GetNoDaughters().

Referenced by G4PVReplica::G4PVReplica().

◆ CheckOverlaps()

G4bool G4VPhysicalVolume::CheckOverlaps ( G4int  res = 1000,
G4double  tol = 0.,
G4bool  verbose = true,
G4int  errMax = 1 
)
virtualinherited

◆ Clean()

void G4VPhysicalVolume::Clean ( )
staticinherited

◆ DeduceVolumeType()

EVolume G4VPhysicalVolume::DeduceVolumeType ( ) const
inlineinherited

◆ ErrorInAxis()

void G4ReplicatedSlice::ErrorInAxis ( EAxis  axis,
G4VSolid solid 
)
private

Definition at line 528 of file G4ReplicatedSlice.cc.

529{
530 G4String error = "Trying to divide solid " + solid->GetName()
531 + " of type " + solid->GetEntityType() + " along axis ";
532 switch( axis )
533 {
534 case kXAxis:
535 error += "X.";
536 break;
537 case kYAxis:
538 error += "Y.";
539 break;
540 case kZAxis:
541 error += "Z.";
542 break;
543 case kRho:
544 error += "Rho.";
545 break;
546 case kRadial3D:
547 error += "Radial3D.";
548 break;
549 case kPhi:
550 error += "Phi.";
551 break;
552 default:
553 break;
554 }
555 G4Exception("G4ReplicatedSlice::ErrorInAxis()", "GeomDiv0002",
557}
G4String GetName() const
static PROLOG_HANDLER error
Definition: xmlrole.cc:127

References error, FatalException, G4Exception(), G4VSolid::GetEntityType(), G4VSolid::GetName(), kPhi, kRadial3D, kRho, kXAxis, kYAxis, and kZAxis.

Referenced by SetParameterisation().

◆ GetCopyNo()

G4int G4PVReplica::GetCopyNo ( ) const
virtualinherited

Implements G4VPhysicalVolume.

Definition at line 267 of file G4PVReplica.cc.

268{
269 return G4MT_copyNo;
270}
#define G4MT_copyNo
Definition: G4PVReplica.cc:38

References G4MT_copyNo.

◆ GetDivisionAxis()

EAxis G4ReplicatedSlice::GetDivisionAxis ( ) const

Definition at line 285 of file G4ReplicatedSlice.cc.

286{
287 return fdivAxis;
288}

References fdivAxis.

◆ GetFrameRotation()

const G4RotationMatrix * G4VPhysicalVolume::GetFrameRotation ( ) const
inherited

◆ GetFrameTranslation()

G4ThreeVector G4VPhysicalVolume::GetFrameTranslation ( ) const
inherited

Definition at line 213 of file G4VPhysicalVolume.cc.

214{
216}
CLHEP::Hep3Vector G4ThreeVector
#define G4MT_ty
#define G4MT_tz
#define G4MT_tx

References G4MT_tx, G4MT_ty, and G4MT_tz.

◆ GetInstanceID()

G4int G4PVReplica::GetInstanceID ( ) const
inlineinherited

Definition at line 149 of file G4PVReplica.hh.

149{ return instanceID; }
G4int instanceID
Definition: G4PVReplica.hh:193

References G4PVReplica::instanceID.

◆ GetLogicalVolume()

G4LogicalVolume * G4VPhysicalVolume::GetLogicalVolume ( ) const
inlineinherited

Referenced by G4AdjointCrossSurfChecker::AddanExtSurfaceOfAvolume(), G4VSceneHandler::AddCompound(), G4VtkSceneHandler::AddCompound(), G4LogicalVolume::AddDaughter(), G4OpenGLStoredSceneHandler::AddPrimitivePreambleInternal(), G4GMocrenFileSceneHandler::AddSolid(), G4VtkSceneHandler::AddSolid(), G4ParallelWorldProcess::AtRestDoIt(), G4ParallelWorldScoringProcess::AtRestDoIt(), G4FastSimulationManagerProcess::AtRestGetPhysicalInteractionLength(), G4ReplicaNavigation::BackLocate(), G4Region::BelongsTo(), G4PhantomParameterisation::BuildContainerSolid(), G4SmartVoxelHeader::BuildNodes(), G4GeometryManager::BuildOptimisations(), G4Track::CalculateVelocityForOpticalPhoton(), G4PVDivision::CheckAndSetParameters(), G4PVPlacement::CheckOverlaps(), G4GeometryWorkspace::CloneReplicaSolid(), G4AdjointPrimaryGenerator::ComputeAccumulatedDepthVectorAlongBackRay(), G4VPVParameterisation::ComputeMaterial(), G4Navigator::ComputeSafety(), G4ITNavigator1::ComputeSafety(), G4ITNavigator2::ComputeSafety(), G4NormalNavigation::ComputeSafety(), G4VoxelNavigation::ComputeSafety(), G4ReplicaNavigation::ComputeSafety(), G4ParameterisedNavigation::ComputeSafety(), G4VoxelSafety::ComputeSafety(), G4PolarizedAnnihilation::ComputeSaturationFactor(), G4PolarizedCompton::ComputeSaturationFactor(), G4PolarizedIonisation::ComputeSaturationFactor(), G4VNestedParameterisation::ComputeSolid(), G4VPVParameterisation::ComputeSolid(), G4PhantomParameterisation::ComputeSolid(), G4ParameterisedNavigation::ComputeStep(), G4RegularNavigation::ComputeStep(), G4VoxelNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4NormalNavigation::ComputeStep(), G4Navigator::ComputeStep(), G4ITNavigator1::ComputeStep(), G4ITNavigator2::ComputeStep(), G4PropagatorInField::ComputeStep(), G4RegularNavigation::ComputeStepSkippingEqualMaterials(), G4tgbVolume::ConstructG4Volumes(), G4TheRayTracer::CreateBitMap(), G4AdjointCrossSurfChecker::CrossingAnInterfaceBetweenTwoVolumes(), G4Radioactivation::DecayIt(), G4RadioactiveDecay::DecayIt(), G4AdjointPosOnPhysVolGenerator::DefinePhysicalVolume(), G4RunManagerKernel::DefineWorldVolume(), G4GeometryManager::DeleteOptimisations(), G4LogicalVolumeModel::DescribeYourselfTo(), G4PhysicalVolumeModel::DescribeYourselfTo(), G4VFieldModel::DescribeYourselfTo(), G4GeometryWorkspace::DestroyWorkspace(), G4GlobalFastSimulationManager::DisplayRegion(), G4GDMLWriteStructure::DivisionvolWrite(), G4VisManager::Draw(), G4TrajectoryDrawByOriginVolume::Draw(), G4tgbGeometryDumper::DumpPhysVol(), G4tgbGeometryDumper::DumpPVParameterised(), G4tgbGeometryDumper::DumpPVPlacement(), G4TrajectoryOriginVolumeFilter::Evaluate(), export_G4VPhysicalVolume(), G4PropagatorInField::FindAndSetFieldManager(), G4VReadOutGeometry::FindROTouchable(), G4FastTrack::FRecordsAffineTransformation(), G4Mesh::G4Mesh(), G4PVDivision::G4PVDivision(), G4PVParameterised::G4PVParameterised(), G4PVPlacement::G4PVPlacement(), G4PVReplica::G4PVReplica(), G4ReplicatedSlice(), G4VExternalPhysicalVolume::G4VExternalPhysicalVolume(), G4GDMLRead::GeneratePhysvolName(), G4RTPrimaryGeneratorAction::GeneratePrimaries(), G4Navigator::GetGlobalExitNormal(), G4Navigator::GetLocalExitNormal(), G4ITNavigator1::GetLocalExitNormal(), G4VIntersectionLocator::GetLocalSurfaceNormal(), G4LogicalVolume::GetMass(), G4Channeling::GetMatData(), G4Channeling::GetMeanFreePath(), G4VXTRenergyLoss::GetMeanFreePath(), G4NeutrinoElectronProcess::GetMeanFreePath(), G4ElNeutrinoNucleusProcess::GetMeanFreePath(), G4MuNeutrinoNucleusProcess::GetMeanFreePath(), G4VTransitionRadiation::GetMeanFreePath(), G4Navigator::GetMotherToDaughterTransform(), G4ITNavigator1::GetMotherToDaughterTransform(), G4ITNavigator2::GetMotherToDaughterTransform(), G4TransportationManager::GetParallelWorld(), G4ITTransportationManager::GetParallelWorld(), G4tgbGeometryDumper::GetTopPhysVol(), G4AdjointCrossSurfChecker::GoingInOrOutOfaVolumeByExtSurface(), G4GeometryWorkspace::InitialisePhysicalVolumes(), G4BOptnForceCommonTruncatedExp::Initialize(), G4IStore::IsInWorld(), G4WeightWindowStore::IsInWorld(), G4VEnergyLossProcess::IsRegionForCubcutProcessor(), G4ParameterisedNavigation::LevelLocate(), G4RegularNavigation::LevelLocate(), G4LatticeManager::LoadLattice(), G4ITNavigator1::LocateGlobalPointAndSetup(), G4ITNavigator2::LocateGlobalPointAndSetup(), G4Navigator::LocateGlobalPointAndSetup(), G4Navigator::LocateGlobalPointWithinVolume(), G4ITNavigator1::LocateGlobalPointWithinVolume(), G4ITNavigator2::LocateGlobalPointWithinVolume(), G4FastSimHitMaker::make(), GFlashHitMaker::make(), G4GDMLWriteParamvol::ParametersWrite(), G4GDMLWriteParamvol::ParamvolAlgorithmWrite(), G4GDMLWriteParamvol::ParamvolWrite(), G4GDMLWriteStructure::PhysvolWrite(), G4ParallelWorldProcess::PostStepDoIt(), G4ParallelWorldScoringProcess::PostStepDoIt(), G4ScoreSplittingProcess::PostStepDoIt(), G4Channeling::PostStepDoIt(), G4NeutrinoElectronProcess::PostStepDoIt(), G4MicroElecSurface::PostStepDoIt(), G4ForwardXrayTR::PostStepDoIt(), G4VXTRenergyLoss::PostStepDoIt(), G4ElNeutrinoNucleusProcess::PostStepDoIt(), G4MuNeutrinoNucleusProcess::PostStepDoIt(), G4OpBoundaryProcess::PostStepDoIt(), G4ITTransportation::PostStepDoIt(), G4VTransitionRadiation::PostStepDoIt(), G4CoupledTransportation::PostStepDoIt(), G4Transportation::PostStepDoIt(), G4MaxTimeCuts::PostStepGetPhysicalInteractionLength(), G4MinEkineCuts::PostStepGetPhysicalInteractionLength(), G4BiasingProcessInterface::PostStepGetPhysicalInteractionLength(), G4FastSimulationManagerProcess::PostStepGetPhysicalInteractionLength(), G4StepLimiter::PostStepGetPhysicalInteractionLength(), G4UserSpecialCuts::PostStepGetPhysicalInteractionLength(), G4AdjointForcedInteractionForGamma::PostStepGetPhysicalInteractionLength(), G4LowECapture::PostStepGetPhysicalInteractionLength(), G4NavigationLogger::PreComputeStepLog(), G4PSFlatSurfaceCurrent::ProcessHits(), G4PSFlatSurfaceFlux::ProcessHits(), G4PSSphereSurfaceFlux::ProcessHits(), G4PSVolumeFlux::ProcessHits(), G4ErrorFreeTrajState::PropagateErrorIoni(), G4ErrorFreeTrajState::PropagateErrorMSC(), G4ITNavigator2::RecheckDistanceToCurrentBoundary(), G4ReflectionFactory::ReflectPVDivision(), G4ReflectionFactory::ReflectPVPlacement(), G4ReflectionFactory::ReflectPVReplica(), G4LatticeManager::RegisterLattice(), G4GDMLWriteStructure::ReplicavolWrite(), G4PropagatorInField::ReportLoopingParticle(), G4NavigationLogger::ReportOutsideMother(), G4NavigationLogger::ReportVolumeAndIntersection(), G4ASCIITreeSceneHandler::RequestPrimitives(), G4VoxelSafety::SafetyForVoxelHeader(), G4VoxelSafety::SafetyForVoxelNode(), G4PolarizedAnnihilationModel::SampleSecondaries(), G4PolarizedComptonModel::SampleSecondaries(), G4PolarizedIonisationModel::SampleSecondaries(), G4DNAIRT_geometries::Sampling(), G4ProductionCutsTable::ScanAndSetCouple(), G4Region::ScanVolumeTree(), G4LogicalVolume::SetFieldManager(), G4ITStepProcessor::SetInitialStep(), G4SteppingManager::SetInitialStep(), G4VVisCommandGeometrySet::SetLVVisAtts(), G4VisCommandsTouchable::SetNewValue(), G4RTPrimaryGeneratorAction::SetUp(), G4ScoringProbe::SetupGeometry(), G4ScoringBox::SetupGeometry(), G4ScoringCylinder::SetupGeometry(), G4Navigator::SetupHierarchy(), G4ITNavigator1::SetupHierarchy(), G4ITNavigator2::SetupHierarchy(), G4GlobalFastSimulationManager::ShowSetup(), G4SteppingManager::Stepping(), G4ParallelWorldProcess::SwitchMaterial(), G4GeomTestVolume::TestOverlapInTree(), G4GeomTestVolume::TestRecursiveOverlap(), G4LogicalVolume::TotalVolumeEntities(), G4GDMLWriteStructure::TraverseVolumeTree(), G4Channeling::UpdateParameters(), and G4MSSteppingAction::UserSteppingAction().

◆ GetMotherLogical()

G4LogicalVolume * G4VPhysicalVolume::GetMotherLogical ( ) const
inlineinherited

◆ GetMultiplicity()

G4int G4ReplicatedSlice::GetMultiplicity ( ) const
virtual

Reimplemented from G4PVReplica.

Definition at line 309 of file G4ReplicatedSlice.cc.

310{
311 return fnReplicas;
312}

References fnReplicas.

◆ GetName()

const G4String & G4VPhysicalVolume::GetName ( ) const
inlineinherited

Referenced by G4TransportationManager::ActivateNavigator(), G4VSceneHandler::AddCompound(), G4LogicalVolume::AddDaughter(), G4HepRepFileSceneHandler::AddHepRepInstance(), G4GDMLWrite::AddModule(), G4GMocrenFileSceneHandler::AddPrimitive(), G4GMocrenFileSceneHandler::AddSolid(), G4VtkSceneHandler::AddSolid(), G4DNABrownianTransportation::AlongStepGetPhysicalInteractionLength(), G4CoupledTransportation::AlongStepGetPhysicalInteractionLength(), G4GDMLWriteStructure::BorderSurfaceCache(), G4SmartVoxelHeader::BuildNodes(), CheckAndSetParameters(), G4PVDivision::CheckAndSetParameters(), G4PVReplica::CheckOnlyDaughter(), G4PVParameterised::CheckOverlaps(), G4PVPlacement::CheckOverlaps(), G4Navigator::CheckOverlapsIterative(), G4Navigator::ComputeSafety(), G4ITNavigator1::ComputeSafety(), G4ITNavigator2::ComputeSafety(), G4VoxelNavigation::ComputeSafety(), G4VoxelSafety::ComputeSafety(), G4PolarizedAnnihilation::ComputeSaturationFactor(), G4PolarizedCompton::ComputeSaturationFactor(), G4PolarizedIonisation::ComputeSaturationFactor(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4Navigator::ComputeStep(), G4ITNavigator1::ComputeStep(), G4ITNavigator2::ComputeStep(), G4PropagatorInField::ComputeStep(), G4tgbPlaceParamCircle::ComputeTransformation(), G4tgbPlaceParamLinear::ComputeTransformation(), G4tgbPlaceParamSquare::ComputeTransformation(), G4ImportanceConfigurator::Configure(), G4WeightCutOffConfigurator::Configure(), G4WeightWindowConfigurator::Configure(), G4tgbDetectorConstruction::Construct(), G4tgbDetectorBuilder::ConstructDetector(), G4tgbVolume::ConstructG4PhysVol(), G4FastSimulationPhysics::ConstructProcess(), G4Qt3DSceneHandler::CreateNewNode(), G4PathFinder::CreateTouchableHandle(), G4ITPathFinder::CreateTouchableHandle(), G4AdjointCrossSurfChecker::CrossingAnInterfaceBetweenTwoVolumes(), G4TransportationManager::DeActivateNavigator(), G4DNAMolecularDissociation::DecayIt(), G4PhysicalVolumeStore::DeRegister(), G4TransportationManager::DeRegisterNavigator(), G4TransportationManager::DeRegisterWorld(), G4ITTransportationManager::DeRegisterWorld(), G4PhysicalVolumeModel::DescribeAndDescend(), G4LogicalVolumeModel::DescribeYourselfTo(), G4GDMLWriteStructure::DivisionvolWrite(), G4TrajectoryDrawByOriginVolume::Draw(), G4tgbVolumeMgr::DumpG4PhysVolLeaf(), G4LogicalBorderSurface::DumpInfo(), G4tgbGeometryDumper::DumpPVParameterised(), G4tgbGeometryDumper::DumpPVPlacement(), G4tgbGeometryDumper::DumpPVReplica(), G4RunManagerKernel::DumpRegion(), G4HadronicProcess::DumpState(), G4MuonicAtomDecay::DumpState(), G4tgbVolumeMgr::DumpSummary(), G4ExceptionHandler::DumpTrackInfo(), G4ASCIITreeSceneHandler::EndModeling(), G4TrajectoryOriginVolumeFilter::Evaluate(), export_G4VPhysicalVolume(), G4FastTrack::FRecordsAffineTransformation(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4IStore::G4IStore(), G4PhysicalVolumeModel::G4PhysicalVolumeModel(), G4PVParameterised::G4PVParameterised(), G4PVReplica::G4PVReplica(), G4Navigator::GetGlobalExitNormal(), G4PSDoseDeposit3D::GetIndex(), G4PSEnergyDeposit3D::GetIndex(), G4LatticeManager::GetLattice(), G4Navigator::GetLocalExitNormal(), G4ITNavigator1::GetLocalExitNormal(), G4ModelingParameters::PVPointerCopyNo::GetName(), G4TransportationManager::GetNavigator(), G4ITTransportationManager::GetNavigator(), G4tgbVolumeMgr::GetTopPhysVol(), G4AdjointCrossSurfChecker::GoingInOrOutOfaVolume(), G4AdjointCrossSurfChecker::GoingInOrOutOfaVolumeByExtSurface(), G4SPSPosDistribution::IsSourceConfined(), G4LatticeManager::LoadLattice(), G4ITMultiNavigator::LocateGlobalPointAndSetup(), G4ITNavigator1::LocateGlobalPointAndSetup(), G4ITNavigator2::LocateGlobalPointAndSetup(), G4MultiNavigator::LocateGlobalPointAndSetup(), G4Navigator::LocateGlobalPointAndSetup(), operator<<(), G4GDMLWriteParamvol::ParametersWrite(), Path(), G4GDMLWriteStructure::PhysvolWrite(), G4UCNAbsorption::PostStepDoIt(), G4UCNBoundaryProcess::PostStepDoIt(), G4UCNMultiScattering::PostStepDoIt(), G4MicroElecSurface::PostStepDoIt(), G4OpBoundaryProcess::PostStepDoIt(), G4CoupledTransportation::PostStepDoIt(), G4ITSteppingVerbose::PostStepVerbose(), G4NavigationLogger::PreComputeStepLog(), G4MultiNavigator::PrepareNavigators(), G4ITMultiNavigator::PrepareNavigators(), G4ITSteppingVerbose::PreStepVerbose(), G4MultiNavigator::PrintLimited(), G4PathFinder::PrintLimited(), G4ITMultiNavigator::PrintLimited(), G4ITPathFinder::PrintLimited(), G4Navigator::PrintState(), G4ITNavigator1::PrintState(), G4PropagatorInField::printStatus(), G4PhysicalVolumeMassScene::ProcessVolume(), G4PhysicalVolumesSearchScene::ProcessVolume(), G4ReflectionFactory::ReflectPVDivision(), G4ReflectionFactory::ReflectPVParameterised(), G4ReflectionFactory::ReflectPVPlacement(), G4ReflectionFactory::ReflectPVReplica(), G4PhysicalVolumeStore::Register(), G4tgbVolumeMgr::RegisterMe(), G4PropagatorInField::ReportLoopingParticle(), G4PropagatorInField::ReportStuckParticle(), G4NavigationLogger::ReportVolumeAndIntersection(), G4ASCIITreeSceneHandler::RequestPrimitives(), G4VoxelSafety::SafetyForVoxelHeader(), G4Region::ScanVolumeTree(), G4VisCommandsTouchable::SetNewValue(), G4WeightCutOffProcess::SetParallelWorld(), G4WeightWindowProcess::SetParallelWorld(), G4ParallelWorldProcess::SetParallelWorld(), G4ParallelWorldScoringProcess::SetParallelWorld(), G4IStore::SetParallelWorldVolume(), G4IStore::SetWorldVolume(), G4WeightWindowStore::SetWorldVolume(), G4FastSimulationManagerProcess::SetWorldVolume(), G4GlobalFastSimulationManager::ShowSetup(), G4ITSteppingVerbose::ShowStep(), G4SteppingVerbose::ShowStep(), G4SteppingVerboseWithUnits::ShowStep(), G4ITSteppingVerbose::StepInfo(), G4SteppingVerbose::StepInfo(), G4SteppingVerboseWithUnits::StepInfo(), G4ITSteppingVerbose::StepInfoForLeadingTrack(), G4GDMLRead::StripNames(), G4ErrorGeomVolumeTarget::TargetReached(), G4GeomTestVolume::TestOverlapInTree(), G4ITSteppingVerbose::TrackingEnded(), G4SteppingVerbose::TrackingStarted(), G4SteppingVerboseWithUnits::TrackingStarted(), G4ITSteppingVerbose::TrackingStarted(), G4ParallelWorldScoringProcess::Verbose(), G4ScoreSplittingProcess::Verbose(), G4ITSteppingVerbose::VerboseTrack(), G4SteppingVerbose::VerboseTrack(), G4SteppingVerboseWithUnits::VerboseTrack(), G4VScoringMesh::WorkerConstruct(), and G4RunManagerKernel::WorkerUpdateWorldVolume().

◆ GetObjectRotation()

G4RotationMatrix * G4VPhysicalVolume::GetObjectRotation ( ) const
inherited

Definition at line 175 of file G4VPhysicalVolume.cc.

176{
177 static G4RotationMatrix aRotM;
178 static G4RotationMatrix IdentityRM;
179
180 G4RotationMatrix* retval = &IdentityRM;
181
182 // Insure against frot being a null pointer
183 if(this->GetRotation())
184 {
185 aRotM = GetRotation()->inverse();
186 retval= &aRotM;
187 }
188 return retval;
189}
HepRotation inverse() const

References G4VPhysicalVolume::GetRotation(), and CLHEP::HepRotation::inverse().

◆ GetObjectRotationValue()

G4RotationMatrix G4VPhysicalVolume::GetObjectRotationValue ( ) const
inherited

Definition at line 191 of file G4VPhysicalVolume.cc.

192{
193 G4RotationMatrix aRotM; // Initialised to identity
194
195 // Insure against G4MT_rot being a null pointer
196 if(G4MT_rot)
197 {
198 aRotM = G4MT_rot->inverse();
199 }
200 return aRotM;
201}

References G4MT_rot.

Referenced by G4PhysicalVolumeModel::CreateCurrentAttValues(), export_G4VPhysicalVolume(), G4GDMLWriteParamvol::ParametersWrite(), and G4ReflectionFactory::ReflectPVPlacement().

◆ GetObjectTranslation()

G4ThreeVector G4VPhysicalVolume::GetObjectTranslation ( ) const
inherited

◆ GetParameterisation()

G4VPVParameterisation * G4ReplicatedSlice::GetParameterisation ( ) const
virtual

Reimplemented from G4PVReplica.

Definition at line 315 of file G4ReplicatedSlice.cc.

316{
317 return fparam;
318}

References fparam.

◆ GetRegularStructureId()

G4int G4ReplicatedSlice::GetRegularStructureId ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 574 of file G4ReplicatedSlice.cc.

575{
576 return 0;
577}

◆ GetReplicationData()

void G4ReplicatedSlice::GetReplicationData ( EAxis axis,
G4int nReplicas,
G4double width,
G4double offset,
G4bool consuming 
) const
virtual

Reimplemented from G4PVReplica.

Definition at line 327 of file G4ReplicatedSlice.cc.

332{
333 axis = faxis;
334 nDivs = fnReplicas;
335 width = fwidth;
336 offset = foffset;
337 consuming = false;
338}

References faxis, fnReplicas, foffset, and fwidth.

◆ GetRotation() [1/2]

G4RotationMatrix * G4VPhysicalVolume::GetRotation ( )
inherited

Definition at line 165 of file G4VPhysicalVolume.cc.

166{
167 return G4MT_rot;
168}

References G4MT_rot.

◆ GetRotation() [2/2]

const G4RotationMatrix * G4VPhysicalVolume::GetRotation ( ) const
inherited

◆ GetSubInstanceManager()

const G4PVRManager & G4PVReplica::GetSubInstanceManager ( )
staticinherited

Definition at line 343 of file G4PVReplica.cc.

344{
345 return subInstanceManager;
346}
static G4GEOM_DLL G4PVRManager subInstanceManager
Definition: G4PVReplica.hh:195

References G4PVReplica::subInstanceManager.

Referenced by G4GeometryWorkspace::G4GeometryWorkspace().

◆ GetTranslation()

const G4ThreeVector G4VPhysicalVolume::GetTranslation ( ) const
inherited

◆ InitialiseWorker() [1/2]

void G4PVReplica::InitialiseWorker ( G4PVReplica pMasterObject)
inherited

Definition at line 355 of file G4PVReplica.cc.

356{
357
358 G4VPhysicalVolume::InitialiseWorker( pMasterObject, nullptr, G4ThreeVector());
360 G4MT_copyNo = -1;
361
362 // This call causes "self-assignment" of the input parameters
363 // Issue reported by DRD since TerminateWorker() below can be called
364 // at the same time by another thread.
365 // What we need here is the split-class component of CheckAndSetParameters()
366 // funciton copied here.
367
368 // Create rotation matrix for phi axis case & check axis is valid
369 //
370 G4RotationMatrix* pRMat = nullptr;
371 switch (faxis)
372 {
373 case kPhi:
374 pRMat = new G4RotationMatrix();
375 if (pRMat == nullptr)
376 {
377 G4Exception("G4PVReplica::InitialiseWorker(...)", "GeomVol0003",
378 FatalException, "Rotation matrix allocation failed.");
379 }
380 SetRotation(pRMat);
381 break;
382 case kRho:
383 case kXAxis:
384 case kYAxis:
385 case kZAxis:
386 case kUndefined:
387 break;
388 default:
389 G4Exception("G4PVReplica::InitialiseWorker(...)", "GeomVol0002",
390 FatalException, "Unknown axis of replication.");
391 break;
392 }
393}
void SlaveCopySubInstanceArray()
void InitialiseWorker(G4VPhysicalVolume *pMasterObject, G4RotationMatrix *pRot, const G4ThreeVector &tlate)
@ kUndefined
Definition: geomdefs.hh:61

References FatalException, G4PVReplica::faxis, G4Exception(), G4MT_copyNo, G4VPhysicalVolume::InitialiseWorker(), kPhi, kRho, kUndefined, kXAxis, kYAxis, kZAxis, G4VPhysicalVolume::SetRotation(), G4GeomSplitter< T >::SlaveCopySubInstanceArray(), and G4PVReplica::subInstanceManager.

Referenced by G4GeometryWorkspace::InitialisePhysicalVolumes().

◆ InitialiseWorker() [2/2]

void G4VPhysicalVolume::InitialiseWorker ( G4VPhysicalVolume pMasterObject,
G4RotationMatrix pRot,
const G4ThreeVector tlate 
)
protectedinherited

Definition at line 111 of file G4VPhysicalVolume.cc.

115{
117
118 this->SetRotation( pRot ); // G4MT_rot = pRot;
119 this->SetTranslation( tlate ); // G4MT_trans = tlate;
120 // G4PhysicalVolumeStore::Register(this);
121}
void SetTranslation(const G4ThreeVector &v)

References G4VPhysicalVolume::SetRotation(), G4VPhysicalVolume::SetTranslation(), G4GeomSplitter< T >::SlaveCopySubInstanceArray(), and G4VPhysicalVolume::subInstanceManager.

Referenced by G4PVReplica::InitialiseWorker().

◆ IsMany()

G4bool G4ReplicatedSlice::IsMany ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 297 of file G4ReplicatedSlice.cc.

298{
299 return false;
300}

◆ IsParameterised()

G4bool G4ReplicatedSlice::IsParameterised ( ) const
virtual

Reimplemented from G4PVReplica.

Definition at line 291 of file G4ReplicatedSlice.cc.

292{
293 return true;
294}

◆ IsRegularStructure()

G4bool G4ReplicatedSlice::IsRegularStructure ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 566 of file G4ReplicatedSlice.cc.

567{
568 return false;
569}

◆ IsReplicated()

G4bool G4ReplicatedSlice::IsReplicated ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 303 of file G4ReplicatedSlice.cc.

304{
305 return true;
306}

◆ operator=()

G4ReplicatedSlice & G4ReplicatedSlice::operator= ( const G4ReplicatedSlice )
delete

◆ operator==()

G4bool G4VPhysicalVolume::operator== ( const G4VPhysicalVolume p) const
inlineinherited

◆ SetCopyNo()

void G4PVReplica::SetCopyNo ( G4int  CopyNo)
virtualinherited

Implements G4VPhysicalVolume.

Definition at line 273 of file G4PVReplica.cc.

274{
275 G4MT_copyNo = newCopyNo;
276}

References G4MT_copyNo.

◆ SetLogicalVolume()

void G4VPhysicalVolume::SetLogicalVolume ( G4LogicalVolume pLogical)
inlineinherited

◆ SetMotherLogical()

void G4VPhysicalVolume::SetMotherLogical ( G4LogicalVolume pMother)
inlineinherited

◆ SetName()

void G4VPhysicalVolume::SetName ( const G4String pName)
inherited

◆ SetParameterisation()

void G4ReplicatedSlice::SetParameterisation ( G4LogicalVolume motherLogical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  half_gap,
const G4double  offset,
DivisionType  divType 
)
private

Definition at line 342 of file G4ReplicatedSlice.cc.

349{
350 G4VSolid* mSolid = motherLogical->GetSolid();
351 G4String mSolidType = mSolid->GetEntityType();
352 fparam = nullptr;
353
354 // If the solid is a reflected one, update type to its
355 // real constituent solid.
356 //
357 if (mSolidType == "G4ReflectedSolid")
358 {
359 mSolidType = ((G4ReflectedSolid*)mSolid)->GetConstituentMovedSolid()
360 ->GetEntityType();
361 }
362
363 // Parameterisation type depend of mother solid type and axis of division
364 //
365 if( mSolidType == "G4Box" )
366 {
367 switch( axis )
368 {
369 case kXAxis:
370 fparam = new G4ParameterisationBoxX( axis, nDivs, width,
371 offset, mSolid, divType );
372 break;
373 case kYAxis:
374 fparam = new G4ParameterisationBoxY( axis, nDivs, width,
375 offset, mSolid, divType );
376 break;
377 case kZAxis:
378 fparam = new G4ParameterisationBoxZ( axis, nDivs, width,
379 offset, mSolid, divType );
380 break;
381 default:
382 ErrorInAxis( axis, mSolid );
383 break;
384 }
385 }
386 else if( mSolidType == "G4Tubs" )
387 {
388 switch( axis )
389 {
390 case kRho:
391 fparam = new G4ParameterisationTubsRho( axis, nDivs, width,
392 offset, mSolid, divType );
393 break;
394 case kPhi:
395 fparam = new G4ParameterisationTubsPhi( axis, nDivs, width,
396 offset, mSolid, divType );
397 break;
398 case kZAxis:
399 fparam = new G4ParameterisationTubsZ( axis, nDivs, width,
400 offset, mSolid, divType );
401 break;
402 default:
403 ErrorInAxis( axis, mSolid );
404 break;
405 }
406 }
407 else if( mSolidType == "G4Cons" )
408 {
409 switch( axis )
410 {
411 case kRho:
412 fparam = new G4ParameterisationConsRho( axis, nDivs, width,
413 offset, mSolid, divType );
414 break;
415 case kPhi:
416 fparam = new G4ParameterisationConsPhi( axis, nDivs, width,
417 offset, mSolid, divType );
418 break;
419 case kZAxis:
420 fparam = new G4ParameterisationConsZ( axis, nDivs, width,
421 offset, mSolid, divType );
422 break;
423 default:
424 ErrorInAxis( axis, mSolid );
425 break;
426 }
427 }
428 else if( mSolidType == "G4Trd" )
429 {
430 switch( axis )
431 {
432 case kXAxis:
433 fparam = new G4ParameterisationTrdX( axis, nDivs, width,
434 offset, mSolid, divType );
435 break;
436 case kYAxis:
437 fparam = new G4ParameterisationTrdY( axis, nDivs, width,
438 offset, mSolid, divType );
439 break;
440 case kZAxis:
441 fparam = new G4ParameterisationTrdZ( axis, nDivs, width,
442 offset, mSolid, divType );
443 break;
444 default:
445 ErrorInAxis( axis, mSolid );
446 break;
447 }
448 }
449 else if( mSolidType == "G4Para" )
450 {
451 switch( axis )
452 {
453 case kXAxis:
454 fparam = new G4ParameterisationParaX( axis, nDivs, width,
455 offset, mSolid, divType );
456 break;
457 case kYAxis:
458 fparam = new G4ParameterisationParaY( axis, nDivs, width,
459 offset, mSolid, divType );
460 break;
461 case kZAxis:
462 fparam = new G4ParameterisationParaZ( axis, nDivs, width,
463 offset, mSolid, divType );
464 break;
465 default:
466 ErrorInAxis( axis, mSolid );
467 break;
468 }
469 }
470// else if( mSolidType == "G4Trap" )
471// {
472// }
473// else if( mSolidType == "G4Polycone" )
474// {
475// switch( axis )
476// {
477// case kRho:
478// fparam = new G4ParameterisationPolyconeRho( axis, nDivs, width,
479// offset, mSolid, divType );
480// break;
481// case kPhi:
482// fparam = new G4ParameterisationPolyconePhi( axis, nDivs, width,
483// offset, mSolid, divType );
484// break;
485// case kZAxis:
486// fparam = new G4ParameterisationPolyconeZ( axis, nDivs, width,
487// offset, mSolid, divType );
488// break;
489// default:
490// ErrorInAxis( axis, mSolid );
491// break;
492// }
493// }
494// else if( mSolidType == "G4Polyhedra" )
495// {
496// switch( axis )
497// {
498// case kRho:
499// fparam = new G4ParameterisationPolyhedraRho( axis, nDivs, width,
500// offset, mSolid, divType );
501// break;
502// case kPhi:
503// fparam = new G4ParameterisationPolyhedraPhi( axis, nDivs, width,
504// offset, mSolid, divType );
505// break;
506// case kZAxis:
507// fparam = new G4ParameterisationPolyhedraZ( axis, nDivs, width,
508// offset, mSolid, divType );
509// break;
510// default:
511// ErrorInAxis( axis, mSolid );
512// break;
513// }
514// }
515 else
516 {
517 std::ostringstream message;
518 message << "Solid type not supported: " << mSolidType << "." << G4endl
519 << "Divisions for " << mSolidType << " not implemented.";
520 G4Exception("G4ReplicatedSlice::SetParameterisation()", "GeomDiv0001",
521 FatalException, message);
522 }
523
524 fparam->SetHalfGap(half_gap);
525}
void ErrorInAxis(EAxis axis, G4VSolid *solid)
void SetHalfGap(G4double hg)

References ErrorInAxis(), FatalException, fparam, G4endl, G4Exception(), G4VSolid::GetEntityType(), G4LogicalVolume::GetSolid(), kPhi, kRho, kXAxis, kYAxis, kZAxis, and G4VDivisionParameterisation::SetHalfGap().

Referenced by CheckAndSetParameters().

◆ SetRegularStructureId()

void G4PVReplica::SetRegularStructureId ( G4int  code)
virtualinherited

Reimplemented in G4PVParameterised.

Definition at line 335 of file G4PVReplica.cc.

336{
338}
G4int fRegularVolsId
Definition: G4PVReplica.hh:191
Definition: inftrees.h:24

References G4PVReplica::fRegularVolsId.

Referenced by G4PVParameterised::SetRegularStructureId().

◆ SetRotation()

void G4VPhysicalVolume::SetRotation ( G4RotationMatrix pRot)
inherited

◆ SetTranslation()

void G4VPhysicalVolume::SetTranslation ( const G4ThreeVector v)
inherited

Definition at line 155 of file G4VPhysicalVolume.cc.

156{
157 G4MT_tx=vec.x(); G4MT_ty=vec.y(); G4MT_tz=vec.z();
158}

References G4MT_tx, G4MT_ty, G4MT_tz, CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

Referenced by G4ParameterisationBoxX::ComputeTransformation(), G4ParameterisationBoxY::ComputeTransformation(), G4ParameterisationBoxZ::ComputeTransformation(), G4ParameterisationConsRho::ComputeTransformation(), G4ParameterisationConsPhi::ComputeTransformation(), G4ParameterisationConsZ::ComputeTransformation(), G4ParameterisationParaX::ComputeTransformation(), G4ParameterisationParaY::ComputeTransformation(), G4ParameterisationParaZ::ComputeTransformation(), G4ParameterisationPolyconeRho::ComputeTransformation(), G4ParameterisationPolyconePhi::ComputeTransformation(), G4ParameterisationPolyconeZ::ComputeTransformation(), G4ParameterisationPolyhedraRho::ComputeTransformation(), G4ParameterisationPolyhedraPhi::ComputeTransformation(), G4ParameterisationPolyhedraZ::ComputeTransformation(), G4ParameterisationTrdX::ComputeTransformation(), G4ParameterisationTrdY::ComputeTransformation(), G4ParameterisationTrdZ::ComputeTransformation(), G4ParameterisationTubsRho::ComputeTransformation(), G4ParameterisationTubsPhi::ComputeTransformation(), G4ParameterisationTubsZ::ComputeTransformation(), G4tgbPlaceParamCircle::ComputeTransformation(), G4tgbPlaceParamLinear::ComputeTransformation(), G4tgbPlaceParamSquare::ComputeTransformation(), G4ReplicaNavigation::ComputeTransformation(), G4PartialPhantomParameterisation::ComputeTransformation(), G4PhantomParameterisation::ComputeTransformation(), G4GDMLParameterisation::ComputeTransformation(), export_G4VPhysicalVolume(), G4VPhysicalVolume::G4VPhysicalVolume(), and G4VPhysicalVolume::InitialiseWorker().

◆ TerminateWorker() [1/2]

void G4PVReplica::TerminateWorker ( G4PVReplica pMasterObject)
inherited

Definition at line 400 of file G4PVReplica.cc.

401{
402 if ( faxis==kPhi )
403 {
404 delete GetRotation();
405 }
406}

References G4PVReplica::faxis, G4VPhysicalVolume::GetRotation(), and kPhi.

Referenced by G4GeometryWorkspace::DestroyWorkspace().

◆ TerminateWorker() [2/2]

void G4VPhysicalVolume::TerminateWorker ( G4VPhysicalVolume pMasterObject)
protectedinherited

Definition at line 134 of file G4VPhysicalVolume.cc.

135{
136}

◆ VolumeType()

EVolume G4ReplicatedSlice::VolumeType ( ) const
finalvirtual

Reimplemented from G4PVReplica.

Definition at line 321 of file G4ReplicatedSlice.cc.

322{
323 return kParameterised;
324}
@ kParameterised
Definition: geomdefs.hh:86

References kParameterised.

Field Documentation

◆ faxis

EAxis G4ReplicatedSlice::faxis
protected

Definition at line 174 of file G4ReplicatedSlice.hh.

Referenced by CheckAndSetParameters(), and GetReplicationData().

◆ fdivAxis

EAxis G4ReplicatedSlice::fdivAxis
protected

Definition at line 175 of file G4ReplicatedSlice.hh.

Referenced by CheckAndSetParameters(), and GetDivisionAxis().

◆ flmother

G4LogicalVolume* G4VPhysicalVolume::flmother = nullptr
privateinherited

Definition at line 246 of file G4VPhysicalVolume.hh.

◆ flogical

G4LogicalVolume* G4VPhysicalVolume::flogical = nullptr
privateinherited

Definition at line 242 of file G4VPhysicalVolume.hh.

◆ fname

G4String G4VPhysicalVolume::fname
privateinherited

Definition at line 245 of file G4VPhysicalVolume.hh.

Referenced by G4VPhysicalVolume::SetName().

◆ fnReplicas

G4int G4ReplicatedSlice::fnReplicas = 0
protected

◆ foffset

G4double G4ReplicatedSlice::foffset = 0.0
protected

Definition at line 177 of file G4ReplicatedSlice.hh.

Referenced by CheckAndSetParameters(), and GetReplicationData().

◆ fparam

G4VDivisionParameterisation* G4ReplicatedSlice::fparam = nullptr
protected

◆ fRegularVolsId

G4int G4PVReplica::fRegularVolsId = 0
privateinherited

◆ fwidth

G4double G4ReplicatedSlice::fwidth = 0.0
protected

Definition at line 177 of file G4ReplicatedSlice.hh.

Referenced by CheckAndSetParameters(), and GetReplicationData().

◆ instanceID

G4int G4PVReplica::instanceID
privateinherited

Definition at line 193 of file G4PVReplica.hh.

Referenced by G4PVReplica::G4PVReplica(), and G4PVReplica::GetInstanceID().

◆ pvdata

G4PVData* G4VPhysicalVolume::pvdata = nullptr
privateinherited

◆ subInstanceManager

G4PVRManager G4PVReplica::subInstanceManager
staticprivateinherited

The documentation for this class was generated from the following files: