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

#include <G4PVDivision.hh>

Inheritance diagram for G4PVDivision:
G4PVReplica G4VPhysicalVolume

Public Member Functions

virtual G4bool CheckOverlaps (G4int res=1000, G4double tol=0., G4bool verbose=true, G4int errMax=1)
 
EVolume DeduceVolumeType () const
 
 G4PVDivision (const G4PVDivision &)=delete
 
 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMother, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset)
 
 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMotherLogical, const EAxis pAxis, const G4double width, const G4double offset)
 
 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMotherLogical, const EAxis pAxis, const G4int nReplicas, const G4double offset)
 
 G4PVDivision (const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother, const EAxis pAxis, const G4int nReplicas, const G4double width, 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
 
G4PVDivisionoperator= (const G4PVDivision &)=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)
 
virtual EVolume VolumeType () const
 
virtual ~G4PVDivision ()
 

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 offset, DivisionType divType, const G4LogicalVolume *pMotherLogical)
 
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 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 74 of file G4PVDivision.hh.

Constructor & Destructor Documentation

◆ G4PVDivision() [1/5]

G4PVDivision::G4PVDivision ( const G4String pName,
G4LogicalVolume pLogical,
G4LogicalVolume pMother,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  offset 
)

Definition at line 44 of file G4PVDivision.cc.

51 : G4PVReplica(pName, nDivs, pAxis, pLogical, pMotherLogical)
52{
53 if (pMotherLogical == nullptr)
54 {
55 std::ostringstream message;
56 message << "Invalid setup." << G4endl
57 << "NULL pointer specified as mother for volume: " << pName;
58 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
59 FatalException, message);
60 return;
61 }
62 if (pLogical == pMotherLogical)
63 {
64 std::ostringstream message;
65 message << "Invalid setup." << G4endl
66 << "Cannot place a volume inside itself! Volume: " << pName;
67 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
68 FatalException, message);
69 }
70 pMotherLogical->AddDaughter(this);
71 SetMotherLogical(pMotherLogical);
72 SetParameterisation(pMotherLogical, pAxis, nDivs,
73 width, offset, DivNDIVandWIDTH);
74 CheckAndSetParameters (pAxis, nDivs, width, offset,
75 DivNDIVandWIDTH, pMotherLogical);
76}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
#define G4endl
Definition: G4ios.hh:57
void SetParameterisation(G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset, DivisionType divType)
void CheckAndSetParameters(const EAxis pAxis, const G4int nDivs, const G4double width, const G4double offset, DivisionType divType, const G4LogicalVolume *pMotherLogical)
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 SetMotherLogical(G4LogicalVolume *pMother)

References G4LogicalVolume::AddDaughter(), CheckAndSetParameters(), DivNDIVandWIDTH, FatalException, G4endl, G4Exception(), G4VPhysicalVolume::SetMotherLogical(), and SetParameterisation().

◆ G4PVDivision() [2/5]

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

Definition at line 79 of file G4PVDivision.cc.

85 : G4PVReplica(pName, nDivs, pAxis, pLogical, pMotherLogical)
86{
87 if (pMotherLogical == nullptr)
88 {
89 std::ostringstream message;
90 message << "Invalid setup." << G4endl
91 << "NULL pointer specified as mother! Volume: " << pName;
92 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
93 FatalException, message);
94 return;
95 }
96 if (pLogical == pMotherLogical)
97 {
98 std::ostringstream message;
99 message << "Invalid setup." << G4endl
100 << "Cannot place a volume inside itself! Volume: " << pName;
101 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
102 FatalException, message);
103 }
104 pMotherLogical->AddDaughter(this);
105 SetMotherLogical(pMotherLogical);
106 SetParameterisation(pMotherLogical, pAxis, nDivs, 0., offset, DivNDIV);
107 CheckAndSetParameters (pAxis, nDivs, 0., offset, DivNDIV, pMotherLogical);
108}
void AddDaughter(G4VPhysicalVolume *p)

References G4LogicalVolume::AddDaughter(), CheckAndSetParameters(), DivNDIV, FatalException, G4endl, G4Exception(), G4VPhysicalVolume::SetMotherLogical(), and SetParameterisation().

◆ G4PVDivision() [3/5]

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

Definition at line 111 of file G4PVDivision.cc.

117 : G4PVReplica(pName, 0, pAxis, pLogical, pMotherLogical)
118{
119 if (pMotherLogical == nullptr)
120 {
121 std::ostringstream message;
122 message << "Invalid setup." << G4endl
123 << "NULL pointer specified as mother! Volume: " + pName;
124 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
125 FatalException, message);
126 return;
127 }
128 if (pLogical == pMotherLogical)
129 {
130 std::ostringstream message;
131 message << "Invalid setup." << G4endl
132 << "Cannot place a volume inside itself! Volume: "+ pName;
133 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
134 FatalException, message);
135 }
136 pMotherLogical->AddDaughter(this);
137 SetMotherLogical(pMotherLogical);
138 SetParameterisation(pMotherLogical, pAxis, 0, width, offset, DivWIDTH);
139 CheckAndSetParameters (pAxis, 0, width, offset, DivWIDTH, pMotherLogical);
140}

References G4LogicalVolume::AddDaughter(), CheckAndSetParameters(), DivWIDTH, FatalException, G4endl, G4Exception(), G4VPhysicalVolume::SetMotherLogical(), and SetParameterisation().

◆ G4PVDivision() [4/5]

G4PVDivision::G4PVDivision ( const G4String pName,
G4LogicalVolume pLogical,
G4VPhysicalVolume pMother,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  offset 
)

Definition at line 143 of file G4PVDivision.cc.

150 : G4PVReplica(pName, nDivs, pAxis, pLogical,
151 pMotherPhysical ? pMotherPhysical->GetLogicalVolume() : nullptr)
152{
153 if (pMotherPhysical == nullptr)
154 {
155 std::ostringstream message;
156 message << "Invalid setup." << G4endl
157 << "NULL pointer specified as mother for volume: " << pName;
158 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
159 FatalException, message);
160 return;
161 }
162 G4LogicalVolume* pMotherLogical = pMotherPhysical->GetLogicalVolume();
163 if (pLogical == pMotherLogical)
164 {
165 std::ostringstream message;
166 message << "Invalid setup." << G4endl
167 << "Cannot place a volume inside itself! Volume: " << pName;
168 G4Exception("G4PVDivision::G4PVDivision()", "GeomDiv0002",
169 FatalException, message);
170 }
171 pMotherLogical->AddDaughter(this);
172 SetMotherLogical(pMotherLogical);
173 SetParameterisation(pMotherLogical, pAxis, nDivs,
174 width, offset, DivNDIVandWIDTH);
175 CheckAndSetParameters (pAxis, nDivs, width, offset,
176 DivNDIVandWIDTH, pMotherLogical);
177}

References G4LogicalVolume::AddDaughter(), CheckAndSetParameters(), DivNDIVandWIDTH, FatalException, G4endl, G4Exception(), G4VPhysicalVolume::GetLogicalVolume(), G4VPhysicalVolume::SetMotherLogical(), and SetParameterisation().

◆ ~G4PVDivision()

G4PVDivision::~G4PVDivision ( )
virtual

Definition at line 272 of file G4PVDivision.cc.

273{
274}

◆ G4PVDivision() [5/5]

G4PVDivision::G4PVDivision ( const G4PVDivision )
delete

Member Function Documentation

◆ CheckAndSetParameters()

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

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

Definition at line 181 of file G4PVDivision.cc.

187{
188 if( divType == DivWIDTH )
189 {
191 }
192 else
193 {
194 fnReplicas = nDivs;
195 }
196 if (fnReplicas < 1 )
197 {
198 G4Exception("G4PVDivision::CheckAndSetParameters()", "GeomDiv0002",
199 FatalException, "Illegal number of replicas!");
200 }
201
202 if( divType != DivNDIV)
203 {
205 }
206 else
207 {
208 fwidth = width;
209 }
210 if( fwidth < 0 )
211 {
212 G4Exception("G4PVDivision::CheckAndSetParameters()", "GeomDiv0002",
213 FatalException, "Width must be positive!");
214 }
215
216 foffset = offset;
217 fdivAxis = pAxis;
218
220 //
221 if( pAxis == kRho || pAxis == kRadial3D || pAxis == kPhi )
222 {
223 faxis = kZAxis;
224 }
225 else
226 {
227 faxis = pAxis;
228 }
229
230 // Create rotation matrix: for phi axis it will be changed
231 // in G4VPVParameterisation::ComputeTransformation, for others
232 // it will stay the unity
233 //
234 G4RotationMatrix* pRMat = new G4RotationMatrix();
235 SetRotation(pRMat);
236
237 switch (faxis)
238 {
239 case kPhi:
240 break;
241 case kRho:
242 case kXAxis:
243 case kYAxis:
244 case kZAxis:
245 break;
246 default:
247 G4Exception("G4PVDivision::CheckAndSetParameters()", "GeomDiv0002",
248 FatalException, "Unknown axis of replication.");
249 break;
250 }
251
252
253 //----- Check that mother solid is of the same type than
254 // daughter solid (otherwise, the corresponding
255 // Parameterisation::ComputeDimension() will not be called)
256 //
257 G4String msolType = pMotherLogical->GetSolid()->GetEntityType();
259 if( msolType != dsolType && ( msolType != "G4Trd" || dsolType != "G4Trap" ) )
260 {
261 std::ostringstream message;
262 message << "Incorrect solid type for division of volume "
263 << GetName() << "." << G4endl
264 << "It is: " << msolType
265 << ", while it should be: " << dsolType << "!";
266 G4Exception("G4PVDivision::CheckAndSetParameters()",
267 "GeomDiv0002", FatalException, message );
268 }
269}
CLHEP::HepRotation G4RotationMatrix
G4VSolid * GetSolid() const
G4double foffset
G4double fwidth
G4VDivisionParameterisation * fparam
G4double GetWidth() const
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
void SetRotation(G4RotationMatrix *)
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 DivNDIV, DivWIDTH, FatalException, faxis, fdivAxis, fnReplicas, foffset, fparam, fwidth, G4endl, G4Exception(), G4VSolid::GetEntityType(), G4VPhysicalVolume::GetLogicalVolume(), G4VPhysicalVolume::GetName(), G4VDivisionParameterisation::GetNoDiv(), G4LogicalVolume::GetSolid(), G4VDivisionParameterisation::GetWidth(), kPhi, kRadial3D, kRho, kXAxis, kYAxis, kZAxis, and G4VPhysicalVolume::SetRotation().

Referenced by G4PVDivision().

◆ 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 G4PVDivision::ErrorInAxis ( EAxis  axis,
G4VSolid solid 
)
private

Definition at line 522 of file G4PVDivision.cc.

523{
524 G4String error = "Trying to divide solid " + solid->GetName()
525 + " of type " + solid->GetEntityType() + " along axis ";
526 switch( axis )
527 {
528 case kXAxis:
529 error += "X.";
530 break;
531 case kYAxis:
532 error += "Y.";
533 break;
534 case kZAxis:
535 error += "Z.";
536 break;
537 case kRho:
538 error += "Rho.";
539 break;
540 case kRadial3D:
541 error += "Radial3D.";
542 break;
543 case kPhi:
544 error += "Phi.";
545 break;
546 default:
547 break;
548 }
549 G4Exception("G4PVDivision::ErrorInAxis()", "GeomDiv0002",
551}
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 G4PVDivision::GetDivisionAxis ( ) const

Definition at line 277 of file G4PVDivision.cc.

278{
279 return fdivAxis;
280}

References fdivAxis.

Referenced by G4GDMLWriteStructure::DivisionvolWrite().

◆ 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(), 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(), G4PVParameterised::G4PVParameterised(), G4PVPlacement::G4PVPlacement(), G4PVReplica::G4PVReplica(), G4ReplicatedSlice::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 G4PVDivision::GetMultiplicity ( ) const
virtual

Reimplemented from G4PVReplica.

Definition at line 301 of file G4PVDivision.cc.

302{
303 return fnReplicas;
304}

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(), G4ReplicatedSlice::CheckAndSetParameters(), 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
const G4RotationMatrix * GetRotation() 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 * G4PVDivision::GetParameterisation ( ) const
virtual

Reimplemented from G4PVReplica.

Definition at line 307 of file G4PVDivision.cc.

308{
309 return fparam;
310}

References fparam.

◆ GetRegularStructureId()

G4int G4PVDivision::GetRegularStructureId ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 568 of file G4PVDivision.cc.

569{
570 return 0;
571}

◆ GetReplicationData()

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

Reimplemented from G4PVReplica.

Definition at line 313 of file G4PVDivision.cc.

318{
319 axis = faxis;
320 nDivs = fnReplicas;
321 width = fwidth;
322 offset = foffset;
323 consuming = false;
324}

References faxis, fnReplicas, foffset, and fwidth.

Referenced by G4GDMLWriteStructure::DivisionvolWrite().

◆ 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 G4PVDivision::IsMany ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 289 of file G4PVDivision.cc.

290{
291 return false;
292}

◆ IsParameterised()

G4bool G4PVDivision::IsParameterised ( ) const
virtual

Reimplemented from G4PVReplica.

Definition at line 283 of file G4PVDivision.cc.

284{
285 return true;
286}

◆ IsRegularStructure()

G4bool G4PVDivision::IsRegularStructure ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 560 of file G4PVDivision.cc.

561{
562 return false;
563}

◆ IsReplicated()

G4bool G4PVDivision::IsReplicated ( ) const
virtual

Implements G4VPhysicalVolume.

Definition at line 295 of file G4PVDivision.cc.

296{
297 return true;
298}

◆ operator=()

G4PVDivision & G4PVDivision::operator= ( const G4PVDivision )
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 G4PVDivision::SetParameterisation ( G4LogicalVolume motherLogical,
const EAxis  pAxis,
const G4int  nReplicas,
const G4double  width,
const G4double  offset,
DivisionType  divType 
)
private

Definition at line 336 of file G4PVDivision.cc.

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

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

Referenced by G4PVDivision().

◆ 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 G4PVDivision::VolumeType ( ) const
virtual

Reimplemented from G4PVReplica.

Definition at line 327 of file G4PVDivision.cc.

328{
329 return kParameterised;
330}
@ kParameterised
Definition: geomdefs.hh:86

References kParameterised.

Field Documentation

◆ faxis

EAxis G4PVDivision::faxis
protected

Definition at line 156 of file G4PVDivision.hh.

Referenced by CheckAndSetParameters(), and GetReplicationData().

◆ fdivAxis

EAxis G4PVDivision::fdivAxis
protected

Definition at line 157 of file G4PVDivision.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 G4PVDivision::fnReplicas = 0
protected

Definition at line 158 of file G4PVDivision.hh.

Referenced by CheckAndSetParameters(), GetMultiplicity(), and GetReplicationData().

◆ foffset

G4double G4PVDivision::foffset = 0.0
protected

Definition at line 159 of file G4PVDivision.hh.

Referenced by CheckAndSetParameters(), and GetReplicationData().

◆ fparam

G4VDivisionParameterisation* G4PVDivision::fparam = nullptr
protected

◆ fRegularVolsId

G4int G4PVReplica::fRegularVolsId = 0
privateinherited

◆ fwidth

G4double G4PVDivision::fwidth = 0.0
protected

Definition at line 159 of file G4PVDivision.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: