19#ifndef BDSBEAMPIPEFACTORYLHCDETAILED_H
20#define BDSBEAMPIPEFACTORYLHCDETAILED_H
22#include "BDSBeamPipeFactoryBase.hh"
23#include "BDSBeamPipe.hh"
51 G4Material* vacuumMaterialIn =
nullptr,
52 G4double beamPipeThicknessIn = 0,
53 G4Material* beamPipeMaterialIn =
nullptr,
54 const G4String& pointsFileIn =
"",
55 const G4String& pointsUnitIn =
"");
59 const G4ThreeVector& inputFaceNormalIn,
60 const G4ThreeVector& outputFaceNormalIn,
65 G4Material* vacuumMaterialIn =
nullptr,
66 G4double beamPipeThicknessIn = 0,
67 G4Material* beamPipeMaterialIn =
nullptr,
68 const G4String& pointsFileIn =
"",
69 const G4String& pointsUnitIn =
"");
79 G4Material* vacuumMaterial,
80 G4Material* beamPipeMaterial,
85 const G4ThreeVector& inputface,
86 const G4ThreeVector& outputface);
89 G4Material* vacuumMaterialIn,
90 G4Material* beamPipeMaterialIn);
92 G4Material* vacuumMaterialIn);
104 G4double beamPipeThickness,
107 G4VSolid* copperSkinSolid;
108 G4VSolid* screenSolid;
109 G4VSolid* coolingPipeSolid;
110 G4LogicalVolume* copperSkinLV;
111 G4LogicalVolume* screenLV;
112 G4LogicalVolume* coolingPipeLV;
113 G4PVPlacement* copperSkinPV;
114 G4PVPlacement* screenPV;
115 G4PVPlacement* coolingPipeTopPV;
116 G4PVPlacement* coolingPipeBottomPV;
120 G4double coolingPipeThickness;
121 G4double coolingPipeRadius;
122 G4double copperSkinThickness;
130 G4double cuOuterRadius, cuOuterBoxX, cuOuterBoxY;
134 G4double bsOuterRadius, bsOuterBoxX, bsOuterBoxY;
Abstract base class for beampipe factory classes.
Factory for detailed lhc aperture model beam pipes.
G4double GetFullWidthOfCoolingPipe()
Access cooling pipe information from factory for parameter tests.
void InitialiseGeometricalParameters()
Utility function to initialise the geometry parameters.
BDSBeamPipe * CommonFinalConstruction(const G4String &name, G4Material *vacuumMaterial, G4Material *beamPipeMaterial, G4double length, G4double containerRadius)
G4bool buildCoolingPipe
Whether to build the cooling pipes on either side.
virtual void BuildLogicalVolumes(const G4String &nameIn, G4Material *vacuumMaterialIn, G4Material *beamPipeMaterialIn)
build logical volumes
G4double cbInnerRadius
Cold bore geometrical parameters.
G4double vacHalfLength
General length variable (to avoid mistakes)
G4double coolingPipeOffset
Cooling pipe geometrical parameters.
virtual void PlaceComponents(const G4String &nameIn)
Place volumes.
G4double containerRadius
Container geometrical parameters.
virtual void SetVisAttributes(G4Material *beamPipeMaterialIn, G4Material *vacuumMaterialIn)
Set visual attributes.
G4double coldBoreThickness
Parameters that control the design.
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
G4double cuInnerRadius
Copper skin geometrical parameters.
G4double bsInnerRadius
Beam screen geometrical parameters.
G4bool verticalOrientation
virtual void CleanUp()
Clean up extra pointers particular to this factory before use.
G4double CreateGeneralAngledSolids(const G4String &name, G4double length, const G4ThreeVector &inputface, const G4ThreeVector &outputface)
virtual void SetUserLimits(G4double length)
Set user limits.
void CleanUpLHCDetailed()
void CalculateGeometricalParameters(G4double aper1, G4double aper2, G4double aper3, G4double beamPipeThickness, G4double length)
A holder class for a piece of beam pipe geometry.