BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
BDSTunnelFactory.hh
1/*
2Beam Delivery Simulation (BDSIM) Copyright (C) BDSIM Collaboration, 2001 - 2026.
3
4This file is part of BDSIM.
5
6BDSIM is free software: you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published
8by the Free Software Foundation version 3 of the License.
9
10BDSIM is distributed in the hope that it will be useful, but
11WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with BDSIM. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef BDSTUNNELFACTORY_H
19#define BDSTUNNELFACTORY_H
20
21#include "globals.hh" // geant4 globals / types
22
23#include "BDSTunnelType.hh"
24
27
28class G4Material;
29
43{
44public:
45 static BDSTunnelFactory* Instance();
46
48
51 G4String name,
52 G4double length,
53 G4double tunnelThickness,
54 G4double tunnelSoilThickness,
55 G4Material* tunnelMaterial,
56 G4Material* tunnelSoilMaterial,
57 G4bool tunnelFloor,
58 G4double tunnelFloorOffset,
59 G4double tunnel1,
60 G4double tunnel2,
61 G4bool visible = true);
62
66 G4String name,
67 G4double length,
68 G4double angleIn,
69 G4double tunnelThickness,
70 G4double tunnelSoilThickness,
71 G4Material* tunnelMaterial,
72 G4Material* tunnelSoilMaterial,
73 G4bool tunnelFloor,
74 G4double tunnelFloorOffset,
75 G4double tunnel1,
76 G4double tunnel2,
77 G4bool visible = true);
78
82 G4String name,
83 G4double length,
84 G4double angleOut,
85 G4double tunnelThickness,
86 G4double tunnelSoilThickness,
87 G4Material* tunnelMaterial,
88 G4Material* tunnelSoilMaterial,
89 G4bool tunnelFloor,
90 G4double tunnelFloorOffset,
91 G4double tunnel1,
92 G4double tunnel2,
93 G4bool visible = true);
94
97 G4String name,
98 G4double length,
99 G4double angleIn,
100 G4double angleOut,
101 G4double tunnelThickness,
102 G4double tunnelSoilThickness,
103 G4Material* tunnelMaterial,
104 G4Material* tunnelSoilMaterial,
105 G4bool tunnelFloor,
106 G4double tunnelFloorOffset,
107 G4double tunnel1,
108 G4double tunnel2,
109 G4bool visible = true);
110
114 G4String name,
115 G4double length,
116 G4ThreeVector inputFaceIn,
117 G4ThreeVector outputFaceIn,
118 G4double tunnelThickness,
119 G4double tunnelSoilThickness,
120 G4Material* tunnelMaterial,
121 G4Material* tunnelSoilMaterial,
122 G4bool tunnelFloor,
123 G4double tunnelFloorOffset,
124 G4double tunnel1,
125 G4double tunnel2,
126 G4bool visible = true);
127
128private:
131
134
137
145};
146
147
148
149#endif
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.