18#ifndef BDSTUNNELFACTORY_H
19#define BDSTUNNELFACTORY_H
23#include "BDSTunnelType.hh"
53 G4double tunnelThickness,
54 G4double tunnelSoilThickness,
55 G4Material* tunnelMaterial,
56 G4Material* tunnelSoilMaterial,
58 G4double tunnelFloorOffset,
61 G4bool visible =
true);
69 G4double tunnelThickness,
70 G4double tunnelSoilThickness,
71 G4Material* tunnelMaterial,
72 G4Material* tunnelSoilMaterial,
74 G4double tunnelFloorOffset,
77 G4bool visible =
true);
85 G4double tunnelThickness,
86 G4double tunnelSoilThickness,
87 G4Material* tunnelMaterial,
88 G4Material* tunnelSoilMaterial,
90 G4double tunnelFloorOffset,
93 G4bool visible =
true);
101 G4double tunnelThickness,
102 G4double tunnelSoilThickness,
103 G4Material* tunnelMaterial,
104 G4Material* tunnelSoilMaterial,
106 G4double tunnelFloorOffset,
109 G4bool visible =
true);
116 G4ThreeVector inputFaceIn,
117 G4ThreeVector outputFaceIn,
118 G4double tunnelThickness,
119 G4double tunnelSoilThickness,
120 G4Material* tunnelMaterial,
121 G4Material* tunnelSoilMaterial,
123 G4double tunnelFloorOffset,
126 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.