19#ifndef BDSTUNNELFACTORY_H
20#define BDSTUNNELFACTORY_H
24#include "BDSTunnelType.hh"
54 G4double tunnelThickness,
55 G4double tunnelSoilThickness,
56 G4Material* tunnelMaterial,
57 G4Material* tunnelSoilMaterial,
59 G4double tunnelFloorOffset,
62 G4bool visible =
true);
70 G4double tunnelThickness,
71 G4double tunnelSoilThickness,
72 G4Material* tunnelMaterial,
73 G4Material* tunnelSoilMaterial,
75 G4double tunnelFloorOffset,
78 G4bool visible =
true);
86 G4double tunnelThickness,
87 G4double tunnelSoilThickness,
88 G4Material* tunnelMaterial,
89 G4Material* tunnelSoilMaterial,
91 G4double tunnelFloorOffset,
94 G4bool visible =
true);
102 G4double tunnelThickness,
103 G4double tunnelSoilThickness,
104 G4Material* tunnelMaterial,
105 G4Material* tunnelSoilMaterial,
107 G4double tunnelFloorOffset,
110 G4bool visible =
true);
117 G4ThreeVector inputFaceIn,
118 G4ThreeVector outputFaceIn,
119 G4double tunnelThickness,
120 G4double tunnelSoilThickness,
121 G4Material* tunnelMaterial,
122 G4Material* tunnelSoilMaterial,
124 G4double tunnelFloorOffset,
127 G4bool visible =
true);
Abstract base class for tunnel factory classes.
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.