20#include "BDSGeometryComponent.hh"
21#include "BDSTunnelFactory.hh"
22#include "BDSTunnelFactoryBase.hh"
23#include "BDSTunnelFactoryCircular.hh"
24#include "BDSTunnelFactoryElliptical.hh"
25#include "BDSTunnelFactoryRectangular.hh"
26#include "BDSTunnelFactoryRectAboveGround.hh"
27#include "BDSTunnelFactorySquare.hh"
28#include "BDSTunnelSection.hh"
29#include "BDSTunnelType.hh"
51BDSTunnelFactory::~BDSTunnelFactory()
65 case BDSTunnelType::circular:
67 case BDSTunnelType::elliptical:
69 case BDSTunnelType::rectangular:
71 case BDSTunnelType::square:
73 case BDSTunnelType::rectaboveground:
78 G4cout << __METHOD_NAME__ <<
"unknown tunnel type \"" << tunnelType
79 <<
"\" - using circular tunnel factory by default" << G4endl;
90 G4double tunnelThickness,
91 G4double tunnelSoilThickness,
92 G4Material* tunnelMaterial,
93 G4Material* tunnelSoilMaterial,
95 G4double tunnelFloorOffset,
102 tunnelSoilThickness, tunnelMaterial,
103 tunnelSoilMaterial, tunnelFloor,
104 tunnelFloorOffset, tunnel1, tunnel2, visible);
111 G4double tunnelThickness,
112 G4double tunnelSoilThickness,
113 G4Material* tunnelMaterial,
114 G4Material* tunnelSoilMaterial,
116 G4double tunnelFloorOffset,
123 tunnelSoilThickness, tunnelMaterial,
124 tunnelSoilMaterial, tunnelFloor,
125 tunnelFloorOffset, tunnel1, tunnel2, visible);
132 G4double tunnelThickness,
133 G4double tunnelSoilThickness,
134 G4Material* tunnelMaterial,
135 G4Material* tunnelSoilMaterial,
137 G4double tunnelFloorOffset,
144 tunnelSoilThickness, tunnelMaterial,
145 tunnelSoilMaterial, tunnelFloor,
146 tunnelFloorOffset, tunnel1, tunnel2, visible);
154 G4double tunnelThickness,
155 G4double tunnelSoilThickness,
156 G4Material* tunnelMaterial,
157 G4Material* tunnelSoilMaterial,
159 G4double tunnelFloorOffset,
166 tunnelThickness, tunnelSoilThickness, tunnelMaterial,
167 tunnelSoilMaterial, tunnelFloor,
168 tunnelFloorOffset, tunnel1, tunnel2, visible);
174 G4ThreeVector inputFace,
175 G4ThreeVector outputFace,
176 G4double tunnelThickness,
177 G4double tunnelSoilThickness,
178 G4Material* tunnelMaterial,
179 G4Material* tunnelSoilMaterial,
181 G4double tunnelFloorOffset,
188 tunnelThickness, tunnelSoilThickness, tunnelMaterial,
189 tunnelSoilMaterial, tunnelFloor,
190 tunnelFloorOffset, tunnel1, tunnel2, visible);
Abstract base class for tunnel factory classes.
virtual BDSTunnelSection * CreateTunnelSectionAngledInOut(G4String name, G4double length, G4double angleIn, G4double angleOut, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible)
virtual BDSTunnelSection * CreateTunnelSectionAngled(G4String name, G4double length, G4ThreeVector inputFaceIn, G4ThreeVector outputFaceIn, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible)=0
Create a tunnel section with an angled input and output face. Pure virtual.
virtual BDSTunnelSection * CreateTunnelSectionAngledIn(G4String name, G4double length, G4double angleIn, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible)
virtual BDSTunnelSection * CreateTunnelSectionAngledOut(G4String name, G4double length, G4double angleOut, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible)
virtual BDSTunnelSection * CreateTunnelSection(G4String name, G4double length, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible)=0
Create a tunnel section with flat input and output faces. Pure virtual.
Factory for circular tunnel segments. Builds floor, tunnel and soil.
Factory for elliptical tunnel segments. Builds floor, tunnel and soil.
Factory for rectangular tunnel segments above ground.
Factory for rectangular tunnel segments. Builds floor, tunnel and soil.
Factory for square tunnel segments. Builds floor, tunnel and soil.
A singleton class that provides an interface to all tunnel factories.
static BDSTunnelFactory * instance
Singleton instance.
BDSTunnelSection * CreateTunnelSectionAngledIn(BDSTunnelType tunnelType, G4String name, G4double length, G4double angleIn, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible=true)
BDSTunnelSection * CreateTunnelSectionAngled(BDSTunnelType tunnelType, G4String name, G4double length, G4ThreeVector inputFaceIn, G4ThreeVector outputFaceIn, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible=true)
BDSTunnelFactory()
Private constructor as a singleton.
BDSTunnelFactoryBase * rectangular
Factory instance.
BDSTunnelFactoryBase * GetAppropriateFactory(BDSTunnelType tunnelType)
Accessor method to dispatch to appropriate derived factory.
BDSTunnelSection * CreateTunnelSectionAngledOut(BDSTunnelType tunnelType, G4String name, G4double length, G4double angleOut, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible=true)
BDSTunnelFactoryBase * circular
Factory instance.
BDSTunnelFactoryBase * square
Factory instance.
BDSTunnelSection * CreateTunnelSection(BDSTunnelType tunnelType, G4String name, G4double length, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible=true)
Create a tunnel section with straight input and output face.
static BDSTunnelFactory * Instance()
singleton pattern
BDSTunnelFactoryBase * elliptical
Factory instance.
BDSTunnelSection * CreateTunnelSectionAngledInOut(BDSTunnelType tunnelType, G4String name, G4double length, G4double angleIn, G4double angleOut, G4double tunnelThickness, G4double tunnelSoilThickness, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial, G4bool tunnelFloor, G4double tunnelFloorOffset, G4double tunnel1, G4double tunnel2, G4bool visible=true)
Create a tunnel section with an angled input and output face.
BDSTunnelFactoryBase * rectaboveground
Factory instance.
Class that represents a section of tunnel.
type underlying() const
return underlying value (can be used in switch statement)