BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Public Member Functions | Private Types | Private Member Functions | Private Attributes
BDSLine Class Reference

A class that hold multiple accelerator components. More...

#include <BDSLine.hh>

Inheritance diagram for BDSLine:
Inheritance graph
Collaboration diagram for BDSLine:
Collaboration graph

Public Member Functions

 BDSLine (G4String name)
 
void AddComponent (BDSAcceleratorComponent *component)
 Add a component to the line. More...
 
size_t size () const
 Size of line. More...
 
BDSAcceleratorComponent *const & operator[] (G4int index) const
 Accessor for part - exposes functionality of the vector for iteration by index. More...
 
virtual void Initialise ()
 
virtual void SetRegion (const G4String &region)
 Set the region name for each component. More...
 
BDSLineoperator= (const BDSLine &)=delete
 Assignment and copy constructor not implemented nor used.
 
 BDSLine (BDSLine &)=delete
 Assignment and copy constructor not implemented nor used.
 
virtual G4double GetArcLength () const
 Override base class method as BDSAcceleratorComponent::chordLength etc variables are const and we append to this. More...
 
virtual G4double GetChordLength () const
 Override base class method as BDSAcceleratorComponent::chordLength etc variables are const and we append to this. More...
 
virtual std::set< G4LogicalVolume * > GetAcceleratorVacuumLogicalVolumes () const
 Re-implement from BDSAcceleratorComponent. More...
 
virtual std::set< G4LogicalVolume * > GetAcceleratorMaterialLogicalVolumes () const
 Re-implement from BDSAcceleratorComponent. More...
 
virtual void SetBiasVacuumList (const std::list< std::string > &biasVacuumList)
 Copy the bias list to each component. More...
 
virtual void SetBiasMaterialList (const std::list< std::string > &biasMaterialList)
 Copy the bias list to each component. More...
 
- Public Member Functions inherited from BDSAcceleratorComponent
 BDSAcceleratorComponent (const G4String &name, G4double arcLength, G4double angle, const G4String &type, BDSBeamPipeInfo *beamPipeInfo=nullptr, const G4ThreeVector &inputFaceNormalIn=G4ThreeVector(0, 0,-1), const G4ThreeVector &outputFaceNormalIn=G4ThreeVector(0, 0, 1), BDSFieldInfo *fieldInfoIn=nullptr)
 
virtual void Initialise ()
 
virtual void SetRegion (const G4String &regionIn)
 Set the region name for this component. More...
 
void SetField (BDSFieldInfo *fieldInfoIn)
 Set the field definition for the whole component. More...
 
virtual void SetMinimumKineticEnergy (G4double)
 
virtual G4String GetName () const
 The name of the component without modification. More...
 
G4double GetAngle () const
 
G4double Sagitta () const
 Calculate the sagitta - ie the distance between the chord and the arc at the centre. More...
 
G4String GetType () const
 Get a string describing the type of the component. More...
 
G4String GetRegion () const
 Get the region name for this component. More...
 
virtual G4bool HasAField () const
 Whether this component has a field or not (ie is active). Implicit cast of pointer to bool. More...
 
virtual void SetFieldUsePlacementWorldTransform ()
 
BDSBeamPipeInfoGetBeamPipeInfo () const
 
virtual G4String Material () const
 Return the name of a material associated with the component - ie the primary material. More...
 
virtual std::set< G4LogicalVolume * > GetAcceleratorVacuumLogicalVolumes () const
 Access the 'vacuum' volume(s) in this component if any. Default is empty set. More...
 
virtual std::set< G4LogicalVolume * > GetAcceleratorMaterialLogicalVolumes () const
 Return a set of logical volumes excluding the ones in the 'vacuum' set. More...
 
void IncrementCopyNumber ()
 Increment (+1) the number of times this component has been copied. More...
 
G4int GetCopyNumber () const
 Get the number of times this component has been copied. More...
 
BDSSimpleComponentEndPieceBefore () const
 
BDSSimpleComponentEndPieceAfter () const
 
G4ThreeVector InputFaceNormal () const
 
G4ThreeVector OutputFaceNormal () const
 
G4bool AngledInputFace () const
 Whether the face normal is angled at all w.r.t. the incoming / outgoing reference trajectory. More...
 
G4bool AngledOutputFace () const
 Whether the face normal is angled at all w.r.t. the incoming / outgoing reference trajectory. More...
 
std::list< std::string > GetBiasVacuumList () const
 Access the bias list copied from parser. More...
 
std::list< std::string > GetBiasMaterialList () const
 Access the bias list copied from parser. More...
 
virtual void SetInputFaceNormal (const G4ThreeVector &input)
 Allow updating of face normals. Virtual so derived class may apply it to daughters. More...
 
virtual void SetOutputFaceNormal (const G4ThreeVector &output)
 Allow updating of face normals. Virtual so derived class may apply it to daughters. More...
 
- Public Member Functions inherited from BDSGeometryComponent
 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) More...
 
BDSGeometryComponentoperator= (const BDSGeometryComponent &)=delete
 Assignment operator not used.
 
G4bool ContainerIsAssembly () const
 Whether the container is an assembly. If not, it's a logical volume. More...
 
void SetPlacementOffset (const G4ThreeVector &offsetIn)
 Set the offset from 0,0,0 that the object should ideally be placed in its parent. More...
 
G4ThreeVector GetExtentPositive () const
 Get the extent of the object in the positive direction in all dimensions. More...
 
G4ThreeVector GetExtentNegative () const
 Get the extent of the object in the negative direction in all dimensions. More...
 
void InheritExtents (BDSGeometryComponent const *const anotherComponent)
 Update the extents of this object with those of another object. More...
 
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. More...
 
void RegisterLogicalVolume (G4LogicalVolume *logicalVolume)
 
void RegisterLogicalVolume (const std::set< G4LogicalVolume * > &localVolumes)
 Apply RegisterLogicalVolume() to a set of logical volumes. More...
 
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. More...
 
void RegisterPhysicalVolume (G4VPhysicalVolume *physicalVolume)
 
void RegisterPhysicalVolume (const std::set< G4VPhysicalVolume * > &physicalVolumes)
 Apply RegisterPhysicalVolume() to a set of physical volumes. More...
 
void RegisterRotationMatrix (G4RotationMatrix *rotationMatrix)
 
void RegisterRotationMatrix (const std::set< G4RotationMatrix * > &rotationMatrices)
 Apply Register RotationMatrix() to a set of rotation matrices. More...
 
void RegisterVisAttributes (G4VisAttributes *visAttribute)
 
void RegisterVisAttributes (const std::set< G4VisAttributes * > &visAttributes)
 Apply RegisterVisAttribute() to a set of visualisation attributes. More...
 
void RegisterUserLimits (G4UserLimits *userLimit)
 
void RegisterUserLimits (const std::set< G4UserLimits * > &userLimits)
 Apply RegisterUserLimit to a set of user limits. More...
 
void InheritObjects (BDSGeometryComponent *component)
 
virtual std::set< G4LogicalVolume * > GetAllLogicalVolumes () const
 Access all logical volumes belonging to this component. More...
 
virtual std::set< G4LogicalVolume * > GetAllBiasingVolumes () const
 Return all logical volumes that should be used for biasing minus any that are in the excluded set. More...
 
virtual std::map< G4LogicalVolume *, BDSSDTypeGetAllSensitiveVolumes () const
 Access all sensitive volumes belonging to this component. More...
 
void MakeAllVolumesSensitive (BDSSDType stype=BDSSDType::energydep)
 
virtual void AttachSensitiveDetectors ()
 Attach a sensitive detector class to all registered sensitive volumes in this component. More...
 
virtual void ExcludeLogicalVolumeFromBiasing (G4LogicalVolume *lv)
 
void StripOuterAndMakeAssemblyVolume ()
 Change from a container logical volume to an assembly volume. More...
 
G4VSolid * GetContainerSolid () const
 Accessor - see member for more info. More...
 
G4LogicalVolume * GetContainerLogicalVolume () const
 Accessor - see member for more info. More...
 
G4AssemblyVolume * GetContainerAssemblyVolume () const
 Accessor - see member for more info. More...
 
G4Transform3D GetPlacementTransform () const
 Accessor - see member for more info. More...
 
G4ThreeVector GetPlacementOffset () const
 Accessor - see member for more info. More...
 
G4RotationMatrix * GetPlacementRotation () const
 Accessor - see member for more info. More...
 
BDSExtent GetExtent () const
 Accessor - see member for more info. More...
 
BDSExtent GetInnerExtent () const
 Accessor - see member for more info. More...
 
std::pair< G4double, G4double > GetExtentX () const
 Accessor - see member for more info. More...
 
std::pair< G4double, G4double > GetExtentY () const
 Accessor - see member for more info. More...
 
std::pair< G4double, G4double > GetExtentZ () const
 Accessor - see member for more info. More...
 
std::pair< G4double, G4double > GetInnerExtentX () const
 Accessor - see member for more info. More...
 
std::pair< G4double, G4double > GetInnerExtentY () const
 Accessor - see member for more info. More...
 
std::pair< G4double, G4double > GetInnerExtentZ () const
 Accessor - see member for more info. More...
 
virtual std::set< G4VPhysicalVolume * > GetAllPhysicalVolumes () const
 Accessor - see member for more info. More...
 
virtual std::set< G4RotationMatrix * > GetAllRotationMatrices () const
 Accessor - see member for more info. More...
 
virtual std::set< G4VisAttributes * > GetAllVisAttributes () const
 Accessor - see member for more info. More...
 
virtual std::set< G4UserLimits * > GetAllUserLimits () const
 Accessor - see member for more info. More...
 
virtual std::set< BDSGeometryComponent * > GetAllDaughters () const
 Accessor - see member for more info. More...
 
virtual std::set< G4VSolid * > GetAllSolids () const
 Accessor - see member for more info. More...
 
void SetExtent (const BDSExtent &extIn)
 Set extent. More...
 
void SetInnerExtent (const BDSExtent &extIn)
 Set extent. More...
 

Private Types

typedef std::vector< BDSAcceleratorComponent * > BDSLineVector
 

Private Member Functions

virtual void BuildContainerLogicalVolume ()
 define pure virtual method More...
 

Private Attributes

BDSLineVector line
 Member vector to store components. More...
 
typedef BDSLineVector::iterator iterator
 Iterator mechanics. More...
 
typedef BDSLineVector::const_iterator const_iterator
 Iterator mechanics. More...
 
iterator begin ()
 Iterator mechanics. More...
 
iterator end ()
 Iterator mechanics. More...
 
const_iterator begin () const
 Iterator mechanics. More...
 
const_iterator end () const
 Iterator mechanics. More...
 
G4bool empty () const
 Iterator mechanics. More...
 
const BDSAcceleratorComponentback () const
 Iterator mechanics. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from BDSGeometryComponent
static void AttachUserLimitsToAssembly (G4AssemblyVolume *av, G4UserLimits *ul)
 Utility function to apply user limits to an assembly volume as there's not interface. More...
 
- Static Public Attributes inherited from BDSAcceleratorComponent
static G4double lengthSafetyLarge = 0
 
- Protected Member Functions inherited from BDSAcceleratorComponent
virtual void Build ()
 
virtual void BuildContainerLogicalVolume ()=0
 
void SetAcceleratorVacuumLogicalVolume (G4LogicalVolume *accVacLVIn)
 
void SetAcceleratorVacuumLogicalVolume (const std::set< G4LogicalVolume * > &accVacLVIn)
 
virtual void BuildUserLimits ()
 
virtual void AttachUserLimits () const
 Doesn't change member variables, but may change their contents. More...
 
- Protected Attributes inherited from BDSAcceleratorComponent
BDSBeamPipeInfobeamPipeInfo
 Optional beam pipe recipe that is written out to the survey if it exists. More...
 
std::set< G4LogicalVolume * > acceleratorVacuumLV
 A set of logical volumes we classify as 'vacuum' for biasing purposes. More...
 
BDSSimpleComponentendPieceBefore
 
BDSSimpleComponentendPieceAfter
 
G4UserLimits * userLimits
 Cache of user limits. More...
 
BDSFieldInfofieldInfo
 Recipe for field that could overlay this whole component. More...
 
const G4String name
 Const protected member variable that may not be changed by derived classes. More...
 
const G4double arcLength
 Const protected member variable that may not be changed by derived classes. More...
 
const G4String type
 Const protected member variable that may not be changed by derived classes. More...
 
G4double chordLength
 Protected member variable that can be modified by derived classes. More...
 
G4double angle
 Protected member variable that can be modified by derived classes. More...
 
G4String region
 Protected member variable that can be modified by derived classes. More...
 
- Protected Attributes inherited from BDSGeometryComponent
G4bool containerIsAssembly
 True if the 'container' is really an assembly; false if an LV. More...
 
G4VSolid * containerSolid
 
G4LogicalVolume * containerLogicalVolume
 
G4AssemblyVolume * containerAssembly
 
BDSExtent outerExtent
 
BDSExtent innerExtent
 
std::set< BDSGeometryComponent * > allDaughters
 registry of all daughter geometry components More...
 
std::set< G4VSolid * > allSolids
 registry of all solids belonging to this component More...
 
std::set< G4LogicalVolume * > allLogicalVolumes
 
std::map< G4LogicalVolume *, BDSSDTypesensitivity
 
G4bool overrideSensitivity
 
std::set< G4VPhysicalVolume * > allPhysicalVolumes
 registry of all physical volumes belonging to this component More...
 
std::set< G4RotationMatrix * > allRotationMatrices
 registry of all rotation matrices belonging to this component More...
 
std::set< G4VisAttributes * > allVisAttributes
 registry of all visualisation attributes belonging to this component More...
 
std::set< G4UserLimits * > allUserLimits
 registry of all user limits belonging to this component More...
 
G4ThreeVector placementOffset
 
G4RotationMatrix * placementRotation
 
std::set< G4LogicalVolume * > * lvsExcludedFromBiasing
 Volumes that should not be included when return GetAllBiasingVolumes(). More...
 
- Static Protected Attributes inherited from BDSAcceleratorComponent
static G4double lengthSafety = -1
 Useful variable often used in construction. More...
 
static G4Material * emptyMaterial = nullptr
 Useful variable often used in construction. More...
 
static G4Material * worldMaterial = nullptr
 Useful variable often used in construction. More...
 
static G4bool checkOverlaps = false
 Useful variable often used in construction. More...
 
static G4bool sensitiveOuter = true
 Useful variable often used in construction. More...
 
static G4bool sensitiveVacuum = false
 Useful variable often used in construction. More...
 
static G4VisAttributes * containerVisAttr = nullptr
 Useful variable often used in construction. More...
 

Detailed Description

A class that hold multiple accelerator components.

Not physically used in Geant4, only as placeholder. Therefore virtual methods are not specified, but could be in the future.

Memory of components is not owned

Definition at line 37 of file BDSLine.hh.

Member Typedef Documentation

◆ BDSLineVector

typedef std::vector<BDSAcceleratorComponent*> BDSLine::BDSLineVector
private

Private typedef first so it can be used throughout. Typedef for member vector.

Definition at line 42 of file BDSLine.hh.

◆ const_iterator

typedef BDSLineVector::const_iterator BDSLine::const_iterator

Iterator mechanics.

Definition at line 73 of file BDSLine.hh.

◆ iterator

typedef BDSLineVector::iterator BDSLine::iterator

Iterator mechanics.

Definition at line 72 of file BDSLine.hh.

Constructor & Destructor Documentation

◆ BDSLine()

BDSLine::BDSLine ( G4String  name)
explicit

Definition at line 24 of file BDSLine.cc.

◆ ~BDSLine()

virtual BDSLine::~BDSLine ( )
inlinevirtual

Definition at line 49 of file BDSLine.hh.

Member Function Documentation

◆ AddComponent()

void BDSLine::AddComponent ( BDSAcceleratorComponent component)

Add a component to the line.

Definition at line 28 of file BDSLine.cc.

References line.

Referenced by BDS::BuildRBendLine(), and BDS::BuildSBendLine().

Here is the caller graph for this function:

◆ back()

const BDSAcceleratorComponent * BDSLine::back ( ) const
inline

Iterator mechanics.

Definition at line 79 of file BDSLine.hh.

References line.

◆ begin() [1/2]

iterator BDSLine::begin ( )
inline

Iterator mechanics.

Definition at line 74 of file BDSLine.hh.

References line.

◆ begin() [2/2]

const_iterator BDSLine::begin ( ) const
inline

Iterator mechanics.

Definition at line 76 of file BDSLine.hh.

References line.

◆ BuildContainerLogicalVolume()

virtual void BDSLine::BuildContainerLogicalVolume ( )
inlineprivatevirtual

define pure virtual method

Implements BDSAcceleratorComponent.

Definition at line 102 of file BDSLine.hh.

◆ empty()

G4bool BDSLine::empty ( ) const
inline

Iterator mechanics.

Definition at line 78 of file BDSLine.hh.

References line.

◆ end() [1/2]

iterator BDSLine::end ( )
inline

Iterator mechanics.

Definition at line 75 of file BDSLine.hh.

References line.

◆ end() [2/2]

const_iterator BDSLine::end ( ) const
inline

Iterator mechanics.

Definition at line 77 of file BDSLine.hh.

References line.

◆ GetAcceleratorMaterialLogicalVolumes()

std::set< G4LogicalVolume * > BDSLine::GetAcceleratorMaterialLogicalVolumes ( ) const
virtual

Re-implement from BDSAcceleratorComponent.

Reimplemented from BDSAcceleratorComponent.

Definition at line 58 of file BDSLine.cc.

◆ GetAcceleratorVacuumLogicalVolumes()

std::set< G4LogicalVolume * > BDSLine::GetAcceleratorVacuumLogicalVolumes ( ) const
virtual

Re-implement from BDSAcceleratorComponent.

Reimplemented from BDSAcceleratorComponent.

Definition at line 47 of file BDSLine.cc.

◆ GetArcLength()

G4double BDSLine::GetArcLength ( ) const
virtual

Override base class method as BDSAcceleratorComponent::chordLength etc variables are const and we append to this.

Reimplemented from BDSAcceleratorComponent.

Definition at line 31 of file BDSLine.cc.

◆ GetChordLength()

G4double BDSLine::GetChordLength ( ) const
virtual

Override base class method as BDSAcceleratorComponent::chordLength etc variables are const and we append to this.

Reimplemented from BDSAcceleratorComponent.

Definition at line 39 of file BDSLine.cc.

◆ Initialise()

void BDSLine::Initialise ( )
virtual

Override the BDSAccelerator::Initialise() function to loop over the line and call that function belonging to each member

Reimplemented from BDSAcceleratorComponent.

Definition at line 69 of file BDSLine.cc.

◆ operator[]()

BDSAcceleratorComponent *const & BDSLine::operator[] ( G4int  index) const
inline

Accessor for part - exposes functionality of the vector for iteration by index.

Definition at line 86 of file BDSLine.hh.

References line.

◆ SetBiasMaterialList()

void BDSLine::SetBiasMaterialList ( const std::list< std::string > &  biasMaterialList)
virtual

Copy the bias list to each component.

Reimplemented from BDSAcceleratorComponent.

Definition at line 87 of file BDSLine.cc.

References BDSAcceleratorComponent::SetBiasMaterialList().

Here is the call graph for this function:

◆ SetBiasVacuumList()

void BDSLine::SetBiasVacuumList ( const std::list< std::string > &  biasVacuumList)
virtual

Copy the bias list to each component.

Reimplemented from BDSAcceleratorComponent.

Definition at line 80 of file BDSLine.cc.

References BDSAcceleratorComponent::SetBiasVacuumList().

Here is the call graph for this function:

◆ SetRegion()

void BDSLine::SetRegion ( const G4String &  region)
virtual

Set the region name for each component.

Reimplemented from BDSAcceleratorComponent.

Definition at line 94 of file BDSLine.cc.

References BDSAcceleratorComponent::SetRegion().

Here is the call graph for this function:

◆ size()

size_t BDSLine::size ( ) const
inline

Size of line.

Definition at line 83 of file BDSLine.hh.

References line.

Field Documentation

◆ line

BDSLineVector BDSLine::line
private

Member vector to store components.

Definition at line 45 of file BDSLine.hh.

Referenced by AddComponent(), back(), begin(), empty(), end(), operator[](), and size().


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