BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
A holder class for a piece of beam pipe geometry. More...
#include <BDSBeamPipe.hh>
Public Member Functions | |
BDSBeamPipe (G4VSolid *containerSolidIn, G4LogicalVolume *containerLVIn, BDSExtent extentIn, G4VSolid *containerSubtractionSolidIn, G4LogicalVolume *vacuumLVIn, G4bool containerIsCircularIn=false, G4double containerRadiusIn=0.0, G4ThreeVector inputFaceNormalIn=G4ThreeVector(0, 0,-1), G4ThreeVector outputFaceNormalIn=G4ThreeVector(0, 0, 1)) | |
G4VSolid * | GetContainerSubtractionSolid () const |
default destructor sufficient as G4 manages solids and LVs | |
G4LogicalVolume * | GetVacuumLogicalVolume () const |
Access the vacuum volume to set fields and limits. | |
G4bool | ContainerIsCircular () const |
G4double | GetContainerRadius () const |
If it is circular, we need the radius. | |
std::set< G4LogicalVolume * > | GetVolumesForField () const |
G4ThreeVector | InputFaceNormal () const |
Accessor. | |
G4ThreeVector | OutputFaceNormal () const |
Accessor. | |
![]() | |
BDSGeometryComponent (G4VSolid *containerSolidIn, G4LogicalVolume *containerLVIn, const BDSExtent &extentIn=BDSExtent(), const BDSExtent &innerExtentIn=BDSExtent(), const G4ThreeVector &placementOffsetIn=G4ThreeVector(0, 0, 0), G4RotationMatrix *placementRotationIn=nullptr) | |
BDSGeometryComponent (G4AssemblyVolume *containerAssemblyIn, const BDSExtent &extentIn=BDSExtent(), const BDSExtent &innerExtentIn=BDSExtent(), const G4ThreeVector &placementOffsetIn=G4ThreeVector(0, 0, 0), G4RotationMatrix *placementRotationIn=nullptr) | |
BDSGeometryComponent (const BDSGeometryComponent &component) | |
Copy constructor (no copying of registered objects) | |
BDSGeometryComponent & | operator= (const BDSGeometryComponent &)=delete |
Assignment operator not used. | |
G4bool | ContainerIsAssembly () const |
Whether the container is an assembly. If not, it's a logical volume. | |
void | SetPlacementOffset (const G4ThreeVector &offsetIn) |
Set the offset from 0,0,0 that the object should ideally be placed in its parent. | |
G4ThreeVector | GetExtentPositive () const |
Get the extent of the object in the positive direction in all dimensions. | |
G4ThreeVector | GetExtentNegative () const |
Get the extent of the object in the negative direction in all dimensions. | |
void | InheritExtents (BDSGeometryComponent const *const anotherComponent) |
Update the extents of this object with those of another object. | |
void | InheritExtents (BDSGeometryComponent const *const anotherComponent, const G4ThreeVector &offset) |
void | RegisterDaughter (BDSGeometryComponent *anotherComponent) |
void | RegisterSolid (G4VSolid *solid) |
void | RegisterSolid (const std::set< G4VSolid * > &solids) |
Similarly for a set of unique solids. | |
void | RegisterLogicalVolume (G4LogicalVolume *logicalVolume) |
void | RegisterLogicalVolume (const std::set< G4LogicalVolume * > &localVolumes) |
Apply RegisterLogicalVolume() to a set of logical volumes. | |
void | RegisterSensitiveVolume (G4LogicalVolume *sensitiveVolume, BDSSDType sensitivityType) |
void | RegisterSensitiveVolume (const std::set< G4LogicalVolume * > &sensitiveVolumes, BDSSDType sensitivityType) |
void | RegisterSensitiveVolume (const std::map< G4LogicalVolume *, BDSSDType > &sensitiveVolumes) |
Copy in a mapping of sensitive volumes to sensitive detectors. | |
void | RegisterPhysicalVolume (G4VPhysicalVolume *physicalVolume) |
void | RegisterPhysicalVolume (const std::set< G4VPhysicalVolume * > &physicalVolumes) |
Apply RegisterPhysicalVolume() to a set of physical volumes. | |
void | RegisterRotationMatrix (G4RotationMatrix *rotationMatrix) |
void | RegisterRotationMatrix (const std::set< G4RotationMatrix * > &rotationMatrices) |
Apply Register RotationMatrix() to a set of rotation matrices. | |
void | RegisterVisAttributes (G4VisAttributes *visAttribute) |
void | RegisterVisAttributes (const std::set< G4VisAttributes * > &visAttributes) |
Apply RegisterVisAttribute() to a set of visualisation attributes. | |
void | RegisterUserLimits (G4UserLimits *userLimit) |
void | RegisterUserLimits (const std::set< G4UserLimits * > &userLimits) |
Apply RegisterUserLimit to a set of user limits. | |
void | InheritObjects (BDSGeometryComponent *component) |
virtual std::set< G4LogicalVolume * > | GetAllLogicalVolumes () const |
Access all logical volumes belonging to this component. | |
virtual std::set< G4LogicalVolume * > | GetAllBiasingVolumes () const |
Return all logical volumes that should be used for biasing minus any that are in the excluded set. | |
virtual std::map< G4LogicalVolume *, BDSSDType > | GetAllSensitiveVolumes () const |
Access all sensitive volumes belonging to this component. | |
void | MakeAllVolumesSensitive (BDSSDType stype=BDSSDType::energydep) |
virtual void | AttachSensitiveDetectors () |
Attach a sensitive detector class to all registered sensitive volumes in this component. | |
virtual void | ExcludeLogicalVolumeFromBiasing (G4LogicalVolume *lv) |
void | StripOuterAndMakeAssemblyVolume () |
Change from a container logical volume to an assembly volume. | |
virtual G4String | GetName () const |
Accessor - see member for more info. | |
G4VSolid * | GetContainerSolid () const |
Accessor - see member for more info. | |
G4LogicalVolume * | GetContainerLogicalVolume () const |
Accessor - see member for more info. | |
G4AssemblyVolume * | GetContainerAssemblyVolume () const |
Accessor - see member for more info. | |
G4Transform3D | GetPlacementTransform () const |
Accessor - see member for more info. | |
G4ThreeVector | GetPlacementOffset () const |
Accessor - see member for more info. | |
G4RotationMatrix * | GetPlacementRotation () const |
Accessor - see member for more info. | |
BDSExtent | GetExtent () const |
Accessor - see member for more info. | |
BDSExtent | GetInnerExtent () const |
Accessor - see member for more info. | |
std::pair< G4double, G4double > | GetExtentX () const |
Accessor - see member for more info. | |
std::pair< G4double, G4double > | GetExtentY () const |
Accessor - see member for more info. | |
std::pair< G4double, G4double > | GetExtentZ () const |
Accessor - see member for more info. | |
std::pair< G4double, G4double > | GetInnerExtentX () const |
Accessor - see member for more info. | |
std::pair< G4double, G4double > | GetInnerExtentY () const |
Accessor - see member for more info. | |
std::pair< G4double, G4double > | GetInnerExtentZ () const |
Accessor - see member for more info. | |
virtual std::set< G4VPhysicalVolume * > | GetAllPhysicalVolumes () const |
Accessor - see member for more info. | |
virtual std::set< G4RotationMatrix * > | GetAllRotationMatrices () const |
Accessor - see member for more info. | |
virtual std::set< G4VisAttributes * > | GetAllVisAttributes () const |
Accessor - see member for more info. | |
virtual std::set< G4UserLimits * > | GetAllUserLimits () const |
Accessor - see member for more info. | |
virtual std::set< BDSGeometryComponent * > | GetAllDaughters () const |
Accessor - see member for more info. | |
virtual std::set< G4VSolid * > | GetAllSolids () const |
Accessor - see member for more info. | |
void | SetExtent (const BDSExtent &extIn) |
Set extent. | |
void | SetInnerExtent (const BDSExtent &extIn) |
Set extent. | |
Protected Attributes | |
G4VSolid * | containerSubtractionSolid |
G4LogicalVolume * | vacuumLogicalVolume |
G4bool | containerIsCircular |
G4double | containerRadius |
G4ThreeVector | inputFaceNormal |
G4ThreeVector | outputFaceNormal |
![]() | |
G4bool | containerIsAssembly |
True if the 'container' is really an assembly; false if an LV. | |
G4VSolid * | containerSolid |
G4LogicalVolume * | containerLogicalVolume |
G4AssemblyVolume * | containerAssembly |
BDSExtent | outerExtent |
BDSExtent | innerExtent |
std::set< BDSGeometryComponent * > | allDaughters |
registry of all daughter geometry components | |
std::set< G4VSolid * > | allSolids |
registry of all solids belonging to this component | |
std::set< G4LogicalVolume * > | allLogicalVolumes |
std::map< G4LogicalVolume *, BDSSDType > | sensitivity |
G4bool | overrideSensitivity |
std::set< G4VPhysicalVolume * > | allPhysicalVolumes |
registry of all physical volumes belonging to this component | |
std::set< G4RotationMatrix * > | allRotationMatrices |
registry of all rotation matrices belonging to this component | |
std::set< G4VisAttributes * > | allVisAttributes |
registry of all visualisation attributes belonging to this component | |
std::set< G4UserLimits * > | allUserLimits |
registry of all user limits belonging to this component | |
G4ThreeVector | placementOffset |
G4RotationMatrix * | placementRotation |
std::set< G4LogicalVolume * > * | lvsExcludedFromBiasing |
Volumes that should not be included when return GetAllBiasingVolumes(). | |
Additional Inherited Members | |
![]() | |
static void | AttachUserLimitsToAssembly (G4AssemblyVolume *av, G4UserLimits *ul) |
Utility function to apply user limits to an assembly volume as there's not interface. | |
A holder class for a piece of beam pipe geometry.
This does not implement the construction of the beampipe but merely holds all relevant objects and information.
Face normals are ensured to be unit.
Definition at line 44 of file BDSBeamPipe.hh.
BDSBeamPipe::BDSBeamPipe | ( | G4VSolid * | containerSolidIn, |
G4LogicalVolume * | containerLVIn, | ||
BDSExtent | extentIn, | ||
G4VSolid * | containerSubtractionSolidIn, | ||
G4LogicalVolume * | vacuumLVIn, | ||
G4bool | containerIsCircularIn = false , |
||
G4double | containerRadiusIn = 0.0 , |
||
G4ThreeVector | inputFaceNormalIn = G4ThreeVector(0,0,-1) , |
||
G4ThreeVector | outputFaceNormalIn = G4ThreeVector(0,0, 1) |
||
) |
constructor has BDSGeometryComponent members first, then everything extra for this derived class
containerSolidIn | Container solid. |
containerLVIn | Container logical volume. |
containerIsCircularIn | Whether the container is circular. |
Definition at line 25 of file BDSBeamPipe.cc.
|
virtual |
Definition at line 43 of file BDSBeamPipe.cc.
|
inline |
Flag to tell whether the parent volume needn't use a subtraction solid and can simply use a G4Tubs for example
Definition at line 68 of file BDSBeamPipe.hh.
Referenced by BDSMagnetOuterFactoryCylindrical::CreateCylindricalSolids(), BDSMagnetOuterFactoryLHC::CreateLHCDipole(), BDSMagnetOuterFactoryLHC::CreateQuadrupole(), and BDSMagnetOuterFactoryCylindrical::TestInputParameters().
|
inline |
If it is circular, we need the radius.
Definition at line 70 of file BDSBeamPipe.hh.
Referenced by BDSMagnetOuterFactoryPolesBase::CalculatePoleAndYoke(), BDSMagnetOuterFactoryCylindrical::CreateCylindricalSolids(), BDSMagnetOuterFactoryLHC::CreateLHCDipole(), BDSMagnetOuterFactoryLHC::CreateQuadrupole(), BDSMagnetOuterFactoryCylindrical::CreateSolenoid(), and BDSMagnetOuterFactoryCylindrical::TestInputParameters().
|
inline |
default destructor sufficient as G4 manages solids and LVs
Access a solid for beampipe subtraction - note this is typically longer than the actual beampipe for unambiguous subtraction
Definition at line 63 of file BDSBeamPipe.hh.
Referenced by BDSMagnetOuterFactoryCylindrical::CreateCylindricalSolids(), BDSMagnetOuterFactoryLHC::CreateLHCDipole(), and BDSMagnetOuterFactoryLHC::CreateQuadrupole().
|
inline |
Access the vacuum volume to set fields and limits.
Definition at line 65 of file BDSBeamPipe.hh.
Referenced by BDSCollimatorCrystal::Build(), BDSDrift::Build(), BDSUndulator::Build(), BDSMagnet::BuildBeampipe(), and BDSWireScanner::BuildContainerLogicalVolume().
std::set< G4LogicalVolume * > BDSBeamPipe::GetVolumesForField | ( | ) | const |
Get all volumes except the container logical volume as this is the optimal set of volumes for putting fields on.
Definition at line 50 of file BDSBeamPipe.cc.
References BDSGeometryComponent::GetAllLogicalVolumes(), BDSGeometryComponent::GetContainerLogicalVolume(), and BDS::IsFinite().
Referenced by BDSMagnet::BuildVacuumField().
|
inline |
Accessor.
Definition at line 73 of file BDSBeamPipe.hh.
Referenced by BDSCollimatorCrystal::Build(), BDSDrift::Build(), BDSUndulator::Build(), BDSMagnet::BuildBeampipe(), BDSWireScanner::BuildContainerLogicalVolume(), and BDSMagnetOuterFactory::CreateContainerForExternal().
|
inline |
Accessor.
Definition at line 74 of file BDSBeamPipe.hh.
Referenced by BDSCollimatorCrystal::Build(), BDSDrift::Build(), BDSUndulator::Build(), BDSMagnet::BuildBeampipe(), BDSWireScanner::BuildContainerLogicalVolume(), and BDSMagnetOuterFactory::CreateContainerForExternal().
|
protected |
Definition at line 84 of file BDSBeamPipe.hh.
|
protected |
Definition at line 85 of file BDSBeamPipe.hh.
|
protected |
Definition at line 82 of file BDSBeamPipe.hh.
|
protected |
Definition at line 86 of file BDSBeamPipe.hh.
|
protected |
Definition at line 87 of file BDSBeamPipe.hh.
|
protected |
Definition at line 83 of file BDSBeamPipe.hh.