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