BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Factory for detailed lhc aperture model beam pipes. More...
#include <BDSBeamPipeFactoryLHCDetailed.hh>
Public Member Functions | |
G4double | GetFullWidthOfCoolingPipe () |
Access cooling pipe information from factory for parameter tests. | |
virtual void | CleanUp () |
Clean up extra pointers particular to this factory before use. | |
virtual BDSBeamPipe * | CreateBeamPipe (const G4String &nameIn, G4double lengthIn, G4double aper1=0, G4double aper2=0, G4double aper3=0, G4double aper4=0, G4Material *vacuumMaterialIn=nullptr, G4double beamPipeThicknessIn=0, G4Material *beamPipeMaterialIn=nullptr, const G4String &pointsFileIn="", const G4String &pointsUnitIn="") |
create a flat ended beampipe | |
virtual BDSBeamPipe * | CreateBeamPipe (const G4String &nameIn, G4double lengthIn, const G4ThreeVector &inputFaceNormalIn, const G4ThreeVector &outputFaceNormalIn, G4double aper1=0, G4double aper2=0, G4double aper3=0, G4double aper4=0, G4Material *vacuumMaterialIn=nullptr, G4double beamPipeThicknessIn=0, G4Material *beamPipeMaterialIn=nullptr, const G4String &pointsFileIn="", const G4String &pointsUnitIn="") |
![]() | |
virtual BDSBeamPipe * | CreateBeamPipe (const G4String &nameIn, G4double lengthIn, G4double aper1=0, G4double aper2=0, G4double aper3=0, G4double aper4=0, G4Material *vacuumMaterialIn=nullptr, G4double beamPipeThicknessIn=0, G4Material *beamPipeMaterialIn=nullptr, const G4String &pointsFileIn="", const G4String &pointsUnitIn="")=0 |
create a flat ended beampipe | |
virtual BDSBeamPipe * | CreateBeamPipe (const G4String &nameIn, G4double lengthIn, const G4ThreeVector &inputFaceNormalIn, const G4ThreeVector &outputFaceNormalIn, G4double aper1=0, G4double aper2=0, G4double aper3=0, G4double aper4=0, G4Material *vacuumMaterialIn=nullptr, G4double beamPipeThicknessIn=0, G4Material *beamPipeMaterialIn=nullptr, const G4String &pointsFileIn="", const G4String &pointsUnitIn="")=0 |
virtual | ~BDSBeamPipeFactoryBase () |
Virtual base destructor. | |
![]() | |
virtual void | FactoryBaseCleanUp () |
Empty containers for next use - factories are never deleted so can't rely on scope. | |
Private Member Functions | |
void | CleanUpLHCDetailed () |
BDSBeamPipe * | CommonFinalConstruction (const G4String &name, G4Material *vacuumMaterial, G4Material *beamPipeMaterial, G4double length, G4double containerRadius) |
G4double | CreateGeneralAngledSolids (const G4String &name, G4double length, const G4ThreeVector &inputface, const G4ThreeVector &outputface) |
virtual void | BuildLogicalVolumes (const G4String &nameIn, G4Material *vacuumMaterialIn, G4Material *beamPipeMaterialIn) |
build logical volumes | |
virtual void | SetVisAttributes (G4Material *beamPipeMaterialIn, G4Material *vacuumMaterialIn) |
Set visual attributes. | |
virtual void | SetUserLimits (G4double length) |
Set user limits. | |
virtual void | PlaceComponents (const G4String &nameIn) |
Place volumes. | |
void | InitialiseGeometricalParameters () |
Utility function to initialise the geometry parameters. | |
void | CalculateGeometricalParameters (G4double aper1, G4double aper2, G4double aper3, G4double beamPipeThickness, G4double length) |
Private Attributes | |
G4VSolid * | copperSkinSolid |
G4VSolid * | screenSolid |
G4VSolid * | coolingPipeSolid |
G4LogicalVolume * | copperSkinLV |
G4LogicalVolume * | screenLV |
G4LogicalVolume * | coolingPipeLV |
G4PVPlacement * | copperSkinPV |
G4PVPlacement * | screenPV |
G4PVPlacement * | coolingPipeTopPV |
G4PVPlacement * | coolingPipeBottomPV |
G4double | coldBoreThickness |
Parameters that control the design. | |
G4double | coolingPipeThickness |
G4double | coolingPipeRadius |
G4double | copperSkinThickness |
G4double | vacRadius |
G4double | vacBoxX |
G4double | vacBoxY |
G4double | cuInnerRadius |
Copper skin geometrical parameters. | |
G4double | cuInnerBoxX |
G4double | cuInnerBoxY |
G4double | cuOuterRadius |
G4double | cuOuterBoxX |
G4double | cuOuterBoxY |
G4double | bsInnerRadius |
Beam screen geometrical parameters. | |
G4double | bsInnerBoxX |
G4double | bsInnerBoxY |
G4double | bsOuterRadius |
G4double | bsOuterBoxX |
G4double | bsOuterBoxY |
G4double | cbInnerRadius |
Cold bore geometrical parameters. | |
G4double | cbOuterRadius |
G4double | containerRadius |
Container geometrical parameters. | |
G4double | vacHalfLength |
General length variable (to avoid mistakes) | |
G4double | halfLength |
G4double | coolingPipeOffset |
Cooling pipe geometrical parameters. | |
G4bool | verticalOrientation |
G4bool | buildCoolingPipe |
Whether to build the cooling pipes on either side. | |
Additional Inherited Members | |
![]() | |
BDSBeamPipeFactoryBase () | |
base constructor | |
void | CleanUpBase () |
virtual void | CleanUp () |
void | CommonConstruction (const G4String &nameIn, G4Material *vacuumMaterialIn, G4Material *beamPipeMaterialIn, G4double length) |
finalise beampipe construction | |
BDSBeamPipe * | BuildBeamPipeAndRegisterVolumes (BDSExtent extent, G4double containerRadius, G4bool containerIsCircular=false) |
build beampipe and register logical volumes | |
virtual void | BuildLogicalVolumes (const G4String &nameIn, G4Material *vacuumMaterialIn, G4Material *beamPipeMaterialIn) |
build logical volumes | |
virtual void | SetVisAttributes (G4Material *beamPipeMaterialIn, G4Material *vacuumMaterialIn) |
Set visual attributes. | |
virtual void | SetUserLimits (G4double length) |
Set user limits. | |
virtual void | PlaceComponents (const G4String &nameIn) |
Place volumes. | |
![]() | |
static void | CheckAngledVolumeCanBeBuilt (G4double length, const G4ThreeVector &inputfaceAngle, const G4ThreeVector &outputfaceAngle, G4double horizontalWidth, const G4String &name) |
check if a beam pipe volume with angled faces can be constructed | |
![]() | |
G4bool | sensitiveBeamPipe |
Whether the beam pipe will record energy deposition. | |
G4bool | sensitiveVacuum |
Whether the vacuum will record any energy deposition. | |
G4bool | storeApertureImpacts |
Whether to store aperture impacts. | |
G4VSolid * | vacuumSolid |
G4VSolid * | beamPipeSolid |
G4VSolid * | containerSolid |
G4VSolid * | containerSubtractionSolid |
Longer (in length) version of container solid for unambiguous subtraction. | |
G4LogicalVolume * | vacuumLV |
G4LogicalVolume * | beamPipeLV |
G4LogicalVolume * | containerLV |
G4PVPlacement * | vacuumPV |
G4PVPlacement * | beamPipePV |
G4ThreeVector | inputFaceNormal |
For recording the face normals in the finished pipe component. | |
G4ThreeVector | outputFaceNormal |
For recording the face normals in the finished pipe component. | |
![]() | |
std::set< G4LogicalVolume * > | allLogicalVolumes |
std::set< G4VPhysicalVolume * > | allPhysicalVolumes |
std::set< G4RotationMatrix * > | allRotationMatrices |
std::set< G4UserLimits * > | allUserLimits |
std::set< G4VSolid * > | allSolids |
std::set< G4VisAttributes * > | allVisAttributes |
G4double | lengthSafety |
Cache of global constants variable. | |
G4double | lengthSafetyLarge |
Cache of global constants variable. | |
G4bool | checkOverlaps |
Cache of global constants variable. | |
G4bool | visDebug |
Cache of global constants variable. | |
G4int | nSegmentsPerCircle |
Cache of global constants variable. | |
G4VisAttributes * | containerVisAttr |
Cache of global constants variable. | |
G4UserLimits * | defaultUserLimits |
Cache of global constants variable. | |
Factory for detailed lhc aperture model beam pipes.
Definition at line 33 of file BDSBeamPipeFactoryLHCDetailed.hh.
BDSBeamPipeFactoryLHCDetailed::BDSBeamPipeFactoryLHCDetailed | ( | ) |
Definition at line 45 of file BDSBeamPipeFactoryLHCDetailed.cc.
|
inlinevirtual |
Definition at line 37 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
privatevirtual |
build logical volumes
Reimplemented from BDSBeamPipeFactoryBase.
Definition at line 399 of file BDSBeamPipeFactoryLHCDetailed.cc.
References buildCoolingPipe, BDSBeamPipeFactoryBase::BuildLogicalVolumes(), BDSMaterials::GetMaterial(), and BDSMaterials::Instance().
|
private |
Calculate the various radii and geometrical parameters for this design based on the input aperture parameters
Definition at line 105 of file BDSBeamPipeFactoryLHCDetailed.cc.
References bsInnerRadius, buildCoolingPipe, cbInnerRadius, coldBoreThickness, containerRadius, coolingPipeOffset, cuInnerRadius, BDSFactoryBase::lengthSafety, vacHalfLength, vacRadius, and verticalOrientation.
Referenced by CreateBeamPipe().
|
virtual |
Clean up extra pointers particular to this factory before use.
Reimplemented from BDSBeamPipeFactoryBase.
Definition at line 55 of file BDSBeamPipeFactoryLHCDetailed.cc.
References CleanUpLHCDetailed().
Referenced by CreateBeamPipe().
|
private |
Do the actual clean up of members here in a non-virtual function so it can be used in the constructor.
Definition at line 61 of file BDSBeamPipeFactoryLHCDetailed.cc.
References InitialiseGeometricalParameters().
Referenced by CleanUp().
|
private |
only the solids are unique, once we have those, the logical volumes and placement in the container are the same. group all this functionality together
Definition at line 372 of file BDSBeamPipeFactoryLHCDetailed.cc.
References BDSBeamPipeFactoryBase::BuildBeamPipeAndRegisterVolumes(), buildCoolingPipe, BDSBeamPipeFactoryBase::CommonConstruction(), BDSGeometryComponent::RegisterSensitiveVolume(), and BDSBeamPipeFactoryBase::sensitiveBeamPipe.
Referenced by CreateBeamPipe().
|
virtual |
Create a beam pipe with angled faces as described by unit normal vectors. The input face normal vector must have a negative z component and the output face a positive z component.
Implements BDSBeamPipeFactoryBase.
Definition at line 342 of file BDSBeamPipeFactoryLHCDetailed.cc.
References CalculateGeometricalParameters(), CleanUp(), CommonFinalConstruction(), CreateGeneralAngledSolids(), BDSBeamPipeFactoryBase::inputFaceNormal, and BDSBeamPipeFactoryBase::outputFaceNormal.
|
virtual |
create a flat ended beampipe
Implements BDSBeamPipeFactoryBase.
Definition at line 168 of file BDSBeamPipeFactoryLHCDetailed.cc.
References bsInnerRadius, buildCoolingPipe, CalculateGeometricalParameters(), cbInnerRadius, CleanUp(), CommonFinalConstruction(), containerRadius, BDSBeamPipeFactoryBase::containerSubtractionSolid, cuInnerRadius, BDSMaterials::GetMaterial(), BDSMaterials::Instance(), BDSFactoryBase::lengthSafety, vacHalfLength, and vacRadius.
|
private |
the angled ones have degeneracy in the geant4 solids they used so we can avoid code duplication by grouping common construction tasks
Definition at line 528 of file BDSBeamPipeFactoryLHCDetailed.cc.
References bsInnerRadius, buildCoolingPipe, cbInnerRadius, containerRadius, BDSBeamPipeFactoryBase::containerSubtractionSolid, cuInnerRadius, BDSFactoryBase::lengthSafety, vacHalfLength, and vacRadius.
Referenced by CreateBeamPipe().
G4double BDSBeamPipeFactoryLHCDetailed::GetFullWidthOfCoolingPipe | ( | ) |
Access cooling pipe information from factory for parameter tests.
Definition at line 100 of file BDSBeamPipeFactoryLHCDetailed.cc.
References BDSFactoryBase::lengthSafety.
|
private |
Utility function to initialise the geometry parameters.
Definition at line 77 of file BDSBeamPipeFactoryLHCDetailed.cc.
References bsInnerRadius, buildCoolingPipe, cbInnerRadius, containerRadius, coolingPipeOffset, cuInnerRadius, vacHalfLength, vacRadius, and verticalOrientation.
Referenced by CleanUpLHCDetailed().
|
privatevirtual |
Place volumes.
Reimplemented from BDSBeamPipeFactoryBase.
Definition at line 463 of file BDSBeamPipeFactoryLHCDetailed.cc.
References buildCoolingPipe, BDSFactoryBase::checkOverlaps, coolingPipeOffset, BDSBeamPipeFactoryBase::PlaceComponents(), and verticalOrientation.
|
privatevirtual |
Set user limits.
Reimplemented from BDSBeamPipeFactoryBase.
Definition at line 450 of file BDSBeamPipeFactoryLHCDetailed.cc.
References buildCoolingPipe, and BDSBeamPipeFactoryBase::SetUserLimits().
|
privatevirtual |
Set visual attributes.
Reimplemented from BDSBeamPipeFactoryBase.
Definition at line 427 of file BDSBeamPipeFactoryLHCDetailed.cc.
References buildCoolingPipe, BDSColours::Instance(), BDSFactoryBase::nSegmentsPerCircle, and BDSBeamPipeFactoryBase::SetVisAttributes().
|
private |
Definition at line 133 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 133 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Beam screen geometrical parameters.
Definition at line 133 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), CreateBeamPipe(), CreateGeneralAngledSolids(), and InitialiseGeometricalParameters().
|
private |
Definition at line 134 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 134 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 134 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Whether to build the cooling pipes on either side.
Definition at line 154 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by BuildLogicalVolumes(), CalculateGeometricalParameters(), CommonFinalConstruction(), CreateBeamPipe(), CreateGeneralAngledSolids(), InitialiseGeometricalParameters(), PlaceComponents(), SetUserLimits(), and SetVisAttributes().
|
private |
Cold bore geometrical parameters.
Definition at line 137 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), CreateBeamPipe(), CreateGeneralAngledSolids(), and InitialiseGeometricalParameters().
|
private |
Definition at line 137 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Parameters that control the design.
Definition at line 119 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters().
|
private |
Container geometrical parameters.
Definition at line 140 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), CreateBeamPipe(), CreateGeneralAngledSolids(), and InitialiseGeometricalParameters().
|
private |
Definition at line 116 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 112 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Cooling pipe geometrical parameters.
Definition at line 147 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), InitialiseGeometricalParameters(), and PlaceComponents().
|
private |
Definition at line 121 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 109 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 120 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 115 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 110 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 113 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 107 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 122 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 129 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 129 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Copper skin geometrical parameters.
Definition at line 129 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), CreateBeamPipe(), CreateGeneralAngledSolids(), and InitialiseGeometricalParameters().
|
private |
Definition at line 130 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 130 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 130 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 144 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 111 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 114 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 108 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 126 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
Definition at line 126 of file BDSBeamPipeFactoryLHCDetailed.hh.
|
private |
General length variable (to avoid mistakes)
Definition at line 143 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), CreateBeamPipe(), CreateGeneralAngledSolids(), and InitialiseGeometricalParameters().
|
private |
Calculated parameters below here vacuum volume
Definition at line 126 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), CreateBeamPipe(), CreateGeneralAngledSolids(), and InitialiseGeometricalParameters().
|
private |
Whether given the aperture parameters the pipe is square on the sides and round at the top
Definition at line 151 of file BDSBeamPipeFactoryLHCDetailed.hh.
Referenced by CalculateGeometricalParameters(), InitialiseGeometricalParameters(), and PlaceComponents().