19#include "BDSGeometryComponent.hh"
20#include "BDSTunnelFactory.hh"
21#include "BDSTunnelFactoryBase.hh"
22#include "BDSTunnelFactoryCircular.hh"
23#include "BDSTunnelFactoryElliptical.hh"
24#include "BDSTunnelFactoryRectangular.hh"
25#include "BDSTunnelFactoryRectAboveGround.hh"
26#include "BDSTunnelFactorySquare.hh"
27#include "BDSTunnelSection.hh"
28#include "BDSTunnelType.hh"
50BDSTunnelFactory::~BDSTunnelFactory()
64 case BDSTunnelType::circular:
66 case BDSTunnelType::elliptical:
68 case BDSTunnelType::rectangular:
70 case BDSTunnelType::square:
72 case BDSTunnelType::rectaboveground:
77 G4cout << __METHOD_NAME__ <<
"unknown tunnel type \"" << tunnelType
78 <<
"\" - using circular tunnel factory by default" << G4endl;
89 G4double tunnelThickness,
90 G4double tunnelSoilThickness,
91 G4Material* tunnelMaterial,
92 G4Material* tunnelSoilMaterial,
94 G4double tunnelFloorOffset,
101 tunnelSoilThickness, tunnelMaterial,
102 tunnelSoilMaterial, tunnelFloor,
103 tunnelFloorOffset, tunnel1, tunnel2, visible);
110 G4double tunnelThickness,
111 G4double tunnelSoilThickness,
112 G4Material* tunnelMaterial,
113 G4Material* tunnelSoilMaterial,
115 G4double tunnelFloorOffset,
122 tunnelSoilThickness, tunnelMaterial,
123 tunnelSoilMaterial, tunnelFloor,
124 tunnelFloorOffset, tunnel1, tunnel2, visible);
131 G4double tunnelThickness,
132 G4double tunnelSoilThickness,
133 G4Material* tunnelMaterial,
134 G4Material* tunnelSoilMaterial,
136 G4double tunnelFloorOffset,
143 tunnelSoilThickness, tunnelMaterial,
144 tunnelSoilMaterial, tunnelFloor,
145 tunnelFloorOffset, tunnel1, tunnel2, visible);
153 G4double tunnelThickness,
154 G4double tunnelSoilThickness,
155 G4Material* tunnelMaterial,
156 G4Material* tunnelSoilMaterial,
158 G4double tunnelFloorOffset,
165 tunnelThickness, tunnelSoilThickness, tunnelMaterial,
166 tunnelSoilMaterial, tunnelFloor,
167 tunnelFloorOffset, tunnel1, tunnel2, visible);
173 G4ThreeVector inputFace,
174 G4ThreeVector outputFace,
175 G4double tunnelThickness,
176 G4double tunnelSoilThickness,
177 G4Material* tunnelMaterial,
178 G4Material* tunnelSoilMaterial,
180 G4double tunnelFloorOffset,
187 tunnelThickness, tunnelSoilThickness, tunnelMaterial,
188 tunnelSoilMaterial, tunnelFloor,
189 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)