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 G4RotationMatrix * GetFrameRotation () const
 
G4ThreeVector GetFrameTranslation () const
 
G4int GetInstanceID () const
 
G4LogicalVolume * GetLogicalVolume () const
 
G4LogicalVolume * GetMotherLogical () const
 
virtual G4int GetMultiplicity () const
 
const G4String & GetName () const
 
G4RotationMatrix * GetObjectRotation () const
 
G4RotationMatrix GetObjectRotationValue () const
 
G4ThreeVector GetObjectTranslation () const
 
virtual G4VPVParameterisation * GetParameterisation () const
 
G4int GetRegularStructureId () const
 
virtual void GetReplicationData (EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const
 
G4RotationMatrix * GetRotation ()
 
const G4RotationMatrix * GetRotation () const
 
const G4ThreeVector GetTranslation () const
 
void InitialiseWorker (G4PVReplica *pMasterObject)
 
virtual G4bool IsMany () const
 
G4bool IsParameterised () const
 
G4bool IsRegularStructure () const
 
virtual G4bool IsReplicated () const
 
G4ReplicatedSlice & operator= (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 G4PVRManager & GetSubInstanceManager ()
 

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
 
G4VDivisionParameterisation * fparam = 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

G4LogicalVolume * flmother = nullptr
 
G4LogicalVolume * flogical = nullptr
 
G4String fname
 
G4int fRegularVolsId = 0
 
G4int instanceID
 
G4PVData * pvdata = 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: