|
BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
A piece of vacuum beam pipe with a crystal for channelling. More...
#include <BDSCollimatorCrystal.hh>


Public Member Functions | |
| BDSCollimatorCrystal (const G4String &name, G4double length, BDSBeamPipeInfo *beamPipeInfoIn, BDSCrystalInfo *crystalInfoLeftIn, BDSCrystalInfo *crystalInfoRightIn=nullptr, G4double halfGapLeftIn=0, G4double halfGapRightIn=0, G4double angleYAxisLeftIn=0, G4double angleYAxisRightIn=0) | |
| virtual G4String | Material () const |
| Override base class version and return crystal material. | |
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 ®ionIn) |
| Set the region name for this component. | |
| void | SetField (BDSFieldInfo *fieldInfoIn) |
| Set the field definition for the whole component. | |
| virtual void | SetMinimumKineticEnergy (G4double) |
| virtual G4String | GetName () const |
| The name of the component without modification. | |
| G4double | GetAngle () const |
| G4double | Sagitta () const |
| Calculate the sagitta - ie the distance between the chord and the arc at the centre. | |
| G4String | GetType () const |
| Get a string describing the type of the component. | |
| G4String | GetRegion () const |
| Get the region name for this component. | |
| virtual G4bool | HasAField () const |
| Whether this component has a field or not (ie is active). Implicit cast of pointer to bool. | |
| virtual void | SetFieldUsePlacementWorldTransform () |
| BDSBeamPipeInfo * | GetBeamPipeInfo () const |
| virtual std::set< G4LogicalVolume * > | GetAcceleratorVacuumLogicalVolumes () const |
| Access the 'vacuum' volume(s) in this component if any. Default is empty set. | |
| virtual std::set< G4LogicalVolume * > | GetAcceleratorMaterialLogicalVolumes () const |
| Return a set of logical volumes excluding the ones in the 'vacuum' set. | |
| void | IncrementCopyNumber () |
| Increment (+1) the number of times this component has been copied. | |
| G4int | GetCopyNumber () const |
| Get the number of times this component has been copied. | |
| BDSSimpleComponent * | EndPieceBefore () const |
| BDSSimpleComponent * | EndPieceAfter () const |
| virtual void | SetBiasVacuumList (const std::list< std::string > &biasVacuumListIn) |
| Copy the bias list to this element. | |
| virtual void | SetBiasMaterialList (const std::list< std::string > &biasMaterialListIn) |
| Copy the bias list to this element. | |
| virtual void | SetBiasMaterialLVList (const std::list< std::string > &biasMaterialLVListIn) |
| Copy the bias list to this element. | |
| virtual G4double | GetArcLength () const |
| virtual G4double | GetChordLength () 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. | |
| G4bool | AngledOutputFace () const |
| Whether the face normal is angled at all w.r.t. the incoming / outgoing reference trajectory. | |
| std::list< std::string > | GetBiasVacuumList () const |
| Access the bias list copied from parser. | |
| std::list< std::string > | GetBiasMaterialList () const |
| Access the bias list copied from parser. | |
| std::list< std::string > | GetBiasMaterialLVList () const |
| Access the bias list copied from parser. | |
| virtual void | SetInputFaceNormal (const G4ThreeVector &input) |
| Allow updating of face normals. Virtual so derived class may apply it to daughters. | |
| virtual void | SetOutputFaceNormal (const G4ThreeVector &output) |
| Allow updating of face normals. Virtual so derived class may apply it to daughters. | |
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) | |
| 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. | |
| 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 Member Functions | |
| virtual void | Build () |
| Construct geometry. | |
Protected Member Functions inherited from BDSAcceleratorComponent | |
| 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. | |
Private Member Functions | |
| BDSCollimatorCrystal ()=delete | |
| No default constructor. | |
| virtual void | BuildContainerLogicalVolume () |
| Void function to fulfill BDSAcceleratorComponent requirements. | |
| void | LongitudinalOverlap (const BDSExtent &extCrystal, G4double crystalAngle, const G4String &side) const |
| void | RegisterCrystalLVs (const BDSCrystal *crystal) const |
| Register logical volumes in crystals and collimator sets in accelerator model. | |
| G4double | TransverseOffsetToEdge (const BDSCrystal *crystal, G4double placementAngle, G4bool left) const |
Private Attributes | |
| BDSCrystalInfo * | crystalInfoLeft |
| Model associated with left crystal. | |
| BDSCrystalInfo * | crystalInfoRight |
| Model associated with right crystal. | |
| const G4double | halfGapLeft |
| const G4double | halfGapRight |
| const G4double | angleYAxisLeft |
| const G4double | angleYAxisRight |
| BDSCrystal * | crystalLeft |
| BDSCrystal * | crystalRight |
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. | |
Static Public Attributes inherited from BDSAcceleratorComponent | |
| static G4double | lengthSafetyLarge = 0 |
Protected Attributes inherited from BDSAcceleratorComponent | |
| BDSBeamPipeInfo * | beamPipeInfo |
| Optional beam pipe recipe that is written out to the survey if it exists. | |
| std::set< G4LogicalVolume * > | acceleratorVacuumLV |
| A set of logical volumes we classify as 'vacuum' for biasing purposes. | |
| BDSSimpleComponent * | endPieceBefore |
| BDSSimpleComponent * | endPieceAfter |
| G4UserLimits * | userLimits |
| Cache of user limits. | |
| BDSFieldInfo * | fieldInfo |
| Recipe for field that could overlay this whole component. | |
| const G4String | name |
| Const protected member variable that may not be changed by derived classes. | |
| const G4double | arcLength |
| Const protected member variable that may not be changed by derived classes. | |
| const G4String | type |
| Const protected member variable that may not be changed by derived classes. | |
| G4double | chordLength |
| Protected member variable that can be modified by derived classes. | |
| G4double | angle |
| Protected member variable that can be modified by derived classes. | |
| G4String | region |
| Protected member variable that can be modified by derived classes. | |
Protected Attributes inherited from BDSGeometryComponent | |
| 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(). | |
Static Protected Attributes inherited from BDSAcceleratorComponent | |
| static G4double | lengthSafety = -1 |
| Useful variable often used in construction. | |
| static G4Material * | emptyMaterial = nullptr |
| Useful variable often used in construction. | |
| static G4Material * | worldMaterial = nullptr |
| Useful variable often used in construction. | |
| static G4bool | checkOverlaps = false |
| Useful variable often used in construction. | |
| static G4bool | sensitiveOuter = true |
| Useful variable often used in construction. | |
| static G4bool | sensitiveVacuum = false |
| Useful variable often used in construction. | |
| static G4VisAttributes * | containerVisAttr = nullptr |
| Useful variable often used in construction. | |
A piece of vacuum beam pipe with a crystal for channelling.
Definition at line 36 of file BDSCollimatorCrystal.hh.
| BDSCollimatorCrystal::BDSCollimatorCrystal | ( | const G4String & | name, |
| G4double | length, | ||
| BDSBeamPipeInfo * | beamPipeInfoIn, | ||
| BDSCrystalInfo * | crystalInfoLeftIn, | ||
| BDSCrystalInfo * | crystalInfoRightIn = nullptr, |
||
| G4double | halfGapLeftIn = 0, |
||
| G4double | halfGapRightIn = 0, |
||
| G4double | angleYAxisLeftIn = 0, |
||
| G4double | angleYAxisRightIn = 0 |
||
| ) |
Definition at line 42 of file BDSCollimatorCrystal.cc.
|
virtual |
Definition at line 73 of file BDSCollimatorCrystal.cc.
|
protectedvirtual |
Construct geometry.
Reimplemented from BDSAcceleratorComponent.
Definition at line 79 of file BDSCollimatorCrystal.cc.
References BDSAcceleratorComponent::beamPipeInfo, BDSAcceleratorComponent::chordLength, BDSCrystalFactory::CreateCrystal(), crystalInfoLeft, crystalInfoRight, BDSExtent::Encompasses(), BDSAcceleratorComponent::GetAcceleratorVacuumLogicalVolumes(), BDSGeometryComponent::GetContainerLogicalVolume(), BDSGeometryComponent::GetContainerSolid(), BDSGeometryComponent::GetExtent(), BDSGeometryComponent::GetPlacementOffset(), BDSGeometryComponent::GetPlacementRotation(), BDSBeamPipe::GetVacuumLogicalVolume(), BDSBeamPipeInfo::IndicativeRadiusInner(), BDSGeometryComponent::InheritExtents(), BDSBeamPipe::InputFaceNormal(), BDSBeamPipeFactory::Instance(), BDS::IsFinite(), LongitudinalOverlap(), BDSAcceleratorComponent::name, BDSBeamPipe::OutputFaceNormal(), RegisterCrystalLVs(), BDSGeometryComponent::RegisterDaughter(), BDSGeometryComponent::RegisterPhysicalVolume(), BDSGeometryComponent::RegisterRotationMatrix(), BDSAcceleratorComponent::SetAcceleratorVacuumLogicalVolume(), BDSAcceleratorComponent::SetInputFaceNormal(), BDSAcceleratorComponent::SetOutputFaceNormal(), and TransverseOffsetToEdge().

|
inlineprivatevirtual |
Void function to fulfill BDSAcceleratorComponent requirements.
Implements BDSAcceleratorComponent.
Definition at line 62 of file BDSCollimatorCrystal.hh.
|
private |
If the crystal will cause an overlap in the vacuum volume due to its rotation, print warning and exit.
Definition at line 236 of file BDSCollimatorCrystal.cc.
References BDSAcceleratorComponent::chordLength, and BDSAcceleratorComponent::lengthSafety.
Referenced by Build().

|
virtual |
Override base class version and return crystal material.
Reimplemented from BDSAcceleratorComponent.
Definition at line 227 of file BDSCollimatorCrystal.cc.
References BDSBeamPipeInfo::beamPipeMaterial, BDSAcceleratorComponent::GetBeamPipeInfo(), and BDSAcceleratorComponent::Material().

|
private |
Register logical volumes in crystals and collimator sets in accelerator model.
Definition at line 254 of file BDSCollimatorCrystal.cc.
References BDSGeometryComponent::GetAllLogicalVolumes(), and BDSAcceleratorModel::VolumeSet().
Referenced by Build().


|
private |
Calculate appropriate offset in x so the inside edge will align properly with the xsize opening of the collimator.
Definition at line 265 of file BDSCollimatorCrystal.cc.
References BDSCrystalInfo::bendingAngleYAxis, BDS::IsFinite(), BDSCrystalInfo::lengthX, BDSCrystalInfo::lengthZ, BDSCrystalInfo::shape, and BDSTypeSafeEnum< def, inner >::underlying().
Referenced by Build().


|
private |
Definition at line 83 of file BDSCollimatorCrystal.hh.
|
private |
Definition at line 84 of file BDSCollimatorCrystal.hh.
|
private |
Model associated with left crystal.
Definition at line 79 of file BDSCollimatorCrystal.hh.
Referenced by Build().
|
private |
Model associated with right crystal.
Definition at line 80 of file BDSCollimatorCrystal.hh.
Referenced by Build().
|
private |
Definition at line 85 of file BDSCollimatorCrystal.hh.
|
private |
Definition at line 86 of file BDSCollimatorCrystal.hh.
|
private |
Definition at line 81 of file BDSCollimatorCrystal.hh.
|
private |
Definition at line 82 of file BDSCollimatorCrystal.hh.