BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Factory to create curvilinear geometry for parallel world. More...
#include <BDSCurvilinearFactory.hh>
Public Member Functions | |
BDSSimpleComponent * | CreateCurvilinearVolume (const G4String &name, G4double chordLength, G4double radius) |
Build a straight curvilinear volume. | |
BDSSimpleComponent * | CreateCurvilinearVolume (const G4String &name, G4double arcLength, G4double chordLength, G4double radius, G4double angle, const G4ThreeVector &inputFaceNormal, const G4ThreeVector &outputFaceNormal, const BDSTiltOffset *tiltOffset=nullptr) |
BDSSimpleComponent * | CreateCurvilinearVolume (const G4String &name, G4double arcLength, G4double chordLength, G4double radius, G4double angle, const BDSTiltOffset *tiltOffset=nullptr) |
Private Member Functions | |
BDSSimpleComponent * | CommonConstruction (const G4String &name, G4double arcLength, G4double chordLength, G4double radius, G4VSolid *solid, G4double angle) |
Private Attributes | |
const G4double | lengthSafety |
Cache of length safety from BDSGlobalConstants. | |
Factory to create curvilinear geometry for parallel world.
Creates cylinders for straight or angled sections that can be used in a parallel world (only!) for curvilinear coordinates. These have logical volumes with nullptr for material, so can therefore only be used in a parallel world.
The length supplied should be the full length desired. The length of the object returned will be this length - 2x length safety.
Definition at line 44 of file BDSCurvilinearFactory.hh.
BDSCurvilinearFactory::BDSCurvilinearFactory | ( | ) |
Definition at line 37 of file BDSCurvilinearFactory.cc.
BDSCurvilinearFactory::~BDSCurvilinearFactory | ( | ) |
Definition at line 41 of file BDSCurvilinearFactory.cc.
|
private |
Common construction. G4VSolid* can't be const as G4LogicalVolume won't take a const solid.
Definition at line 122 of file BDSCurvilinearFactory.cc.
References BDSGlobalConstants::Instance().
Referenced by CreateCurvilinearVolume().
BDSSimpleComponent * BDSCurvilinearFactory::CreateCurvilinearVolume | ( | const G4String & | name, |
G4double | arcLength, | ||
G4double | chordLength, | ||
G4double | radius, | ||
G4double | angle, | ||
const BDSTiltOffset * | tiltOffset = nullptr |
||
) |
Convenience method to use the angled method above but with the angle evently spit between each face.
Definition at line 108 of file BDSCurvilinearFactory.cc.
References BDS::CalculateFaces(), and CreateCurvilinearVolume().
BDSSimpleComponent * BDSCurvilinearFactory::CreateCurvilinearVolume | ( | const G4String & | name, |
G4double | arcLength, | ||
G4double | chordLength, | ||
G4double | radius, | ||
G4double | angle, | ||
const G4ThreeVector & | inputFaceNormal, | ||
const G4ThreeVector & | outputFaceNormal, | ||
const BDSTiltOffset * | tiltOffset = nullptr |
||
) |
Build a straight section of curvilinear geometry, but with angled faces - typically used for a bend section. Note this is straight though. The normal vectors are w.r.t. the chord of the volume to be built.
Definition at line 63 of file BDSCurvilinearFactory.cc.
References CommonConstruction(), BDSTiltOffset::GetTilt(), BDS::IsFinite(), and lengthSafety.
BDSSimpleComponent * BDSCurvilinearFactory::CreateCurvilinearVolume | ( | const G4String & | name, |
G4double | chordLength, | ||
G4double | radius | ||
) |
Build a straight curvilinear volume.
Definition at line 44 of file BDSCurvilinearFactory.cc.
References CommonConstruction(), and lengthSafety.
Referenced by BDSCurvilinearBuilder::CreateAngledBridgeComponent(), BDSCurvilinearBuilder::CreateBonusSectionEnd(), BDSCurvilinearBuilder::CreateBonusSectionStart(), BDSCurvilinearBuilder::CreateCurvilinearElement(), CreateCurvilinearVolume(), BDSCurvilinearBuilder::CreateDefaultBridgeComponent(), and BDSCurvilinearBuilder::CreateStraightBridgeComponent().
|
private |
Cache of length safety from BDSGlobalConstants.
Definition at line 87 of file BDSCurvilinearFactory.hh.
Referenced by CreateCurvilinearVolume().