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);
103 G4double beamPipeThickness,
106 G4VSolid* copperSkinSolid;
107 G4VSolid* screenSolid;
108 G4VSolid* coolingPipeSolid;
109 G4LogicalVolume* copperSkinLV;
110 G4LogicalVolume* screenLV;
111 G4LogicalVolume* coolingPipeLV;
112 G4PVPlacement* copperSkinPV;
113 G4PVPlacement* screenPV;
114 G4PVPlacement* coolingPipeTopPV;
115 G4PVPlacement* coolingPipeBottomPV;
119 G4double coolingPipeThickness;
120 G4double coolingPipeRadius;
121 G4double copperSkinThickness;
129 G4double cuOuterRadius, cuOuterBoxX, cuOuterBoxY;
133 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.
virtual void SetVisAttributes(G4Material *beamPipeMaterialIn)
Set visual attributes.
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.
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.