59 std::ostringstream message;
60 message <<
"Invalid setup." <<
G4endl
61 <<
"NULL pointer specified as mother for volume: " << pName;
62 G4Exception(
"G4PVDivision::G4PVDivision()",
"GeomDiv0002",
66 if (pLogical == pMotherLogical)
68 std::ostringstream message;
69 message <<
"Invalid setup." <<
G4endl
70 <<
"Cannot place a volume inside itself! Volume: " << pName;
71 G4Exception(
"G4PVDivision::G4PVDivision()",
"GeomDiv0002",
94 std::ostringstream message;
95 message <<
"Invalid setup." <<
G4endl
96 <<
"NULL pointer specified as mother! Volume: " << pName;
97 G4Exception(
"G4PVDivision::G4PVDivision()",
"GeomDiv0002",
101 if (pLogical == pMotherLogical)
103 std::ostringstream message;
104 message <<
"Invalid setup." <<
G4endl
105 <<
"Cannot place a volume inside itself! Volume: " << pName;
106 G4Exception(
"G4PVDivision::G4PVDivision()",
"GeomDiv0002",
127 std::ostringstream message;
128 message <<
"Invalid setup." <<
G4endl
129 <<
"NULL pointer specified as mother! Volume: " + pName;
130 G4Exception(
"G4PVDivision::G4PVDivision()",
"GeomDiv0002",
134 if (pLogical == pMotherLogical)
136 std::ostringstream message;
137 message <<
"Invalid setup." <<
G4endl
138 <<
"Cannot place a volume inside itself! Volume: "+ pName;
139 G4Exception(
"G4PVDivision::G4PVDivision()",
"GeomDiv0002",
167 G4Exception(
"G4PVDivision::CheckAndSetParameters()",
"GeomDiv0002",
181 G4Exception(
"G4PVDivision::CheckAndSetParameters()",
"GeomDiv0002",
216 G4Exception(
"G4PVDivision::CheckAndSetParameters()",
"GeomDiv0002",
228 if( msolType != dsolType && ( msolType !=
"G4Trd" || dsolType !=
"G4Trap" ) )
230 std::ostringstream message;
231 message <<
"Incorrect solid type for division of volume "
233 <<
"It is: " << msolType
234 <<
", while it should be: " << dsolType <<
"!";
235 G4Exception(
"G4PVDivision::CheckAndSetParameters()",
322 if (mSolidType ==
"G4ReflectedSolid")
330 if( mSolidType ==
"G4Box" )
336 offset, mSolid, divType );
340 offset, mSolid, divType );
344 offset, mSolid, divType );
351 else if( mSolidType ==
"G4Tubs" )
357 offset, mSolid, divType );
361 offset, mSolid, divType );
365 offset, mSolid, divType );
372 else if( mSolidType ==
"G4Cons" )
378 offset, mSolid, divType );
382 offset, mSolid, divType );
386 offset, mSolid, divType );
393 else if( mSolidType ==
"G4Trd" )
399 offset, mSolid, divType );
403 offset, mSolid, divType );
407 offset, mSolid, divType );
414 else if( mSolidType ==
"G4Para" )
420 offset, mSolid, divType );
424 offset, mSolid, divType );
428 offset, mSolid, divType );
438 else if( mSolidType ==
"G4Polycone" )
444 offset, mSolid, divType );
448 offset, mSolid, divType );
452 offset, mSolid, divType );
459 else if( mSolidType ==
"G4Polyhedra" )
465 offset, mSolid, divType );
469 offset, mSolid, divType );
473 offset, mSolid, divType );
482 std::ostringstream message;
483 message <<
"Solid type " << mSolidType <<
" not supported!" <<
G4endl
484 <<
"Divisions for " << mSolidType <<
" are not implemented.";
485 G4Exception(
"G4PVDivision::SetParameterisation()",
"GeomDiv0001",
510 error +=
"Radial3D.";
518 G4Exception(
"G4PVDivision::ErrorInAxis()",
"GeomDiv0002",
G4bool IsParameterised() const
virtual G4bool IsMany() const
virtual G4bool IsReplicated() const
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
G4VSolid * GetSolid() const
EAxis GetDivisionAxis() const
G4PVDivision(const G4String &pName, G4LogicalVolume *pLogical, G4LogicalVolume *pMother, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset)
virtual G4int GetCopyNo() const
virtual G4GeometryType GetEntityType() const =0
virtual G4VPVParameterisation * GetParameterisation() const
void SetRotation(G4RotationMatrix *)
G4double GetWidth() const
const G4String & GetName() const
virtual void SetCopyNo(G4int CopyNo)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4bool IsRegularStructure() const
void SetParameterisation(G4LogicalVolume *motherLogical, const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset, DivisionType divType)
G4VDivisionParameterisation * fparam
void ErrorInAxis(EAxis axis, G4VSolid *solid)
G4LogicalVolume * GetLogicalVolume() const
virtual void GetReplicationData(EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const
static PROLOG_HANDLER error
void SetMotherLogical(G4LogicalVolume *pMother)
G4int GetRegularStructureId() const
void CheckAndSetParameters(const EAxis pAxis, const G4int nDivs, const G4double width, const G4double offset, DivisionType divType, const G4LogicalVolume *pMotherLogical)
void AddDaughter(G4VPhysicalVolume *p)