19#ifndef BDSTUNNELFACTORYBASE_H
20#define BDSTUNNELFACTORYBASE_H
22#include "BDSFactoryBase.hh"
23#include "BDSTunnelSection.hh"
26#include "G4ThreeVector.hh"
65 G4double tunnelThickness,
66 G4double tunnelSoilThickness,
67 G4Material* tunnelMaterial,
68 G4Material* tunnelSoilMaterial,
70 G4double tunnelFloorOffset,
80 G4double tunnelThickness,
81 G4double tunnelSoilThickness,
82 G4Material* tunnelMaterial,
83 G4Material* tunnelSoilMaterial,
85 G4double tunnelFloorOffset,
95 G4double tunnelThickness,
96 G4double tunnelSoilThickness,
97 G4Material* tunnelMaterial,
98 G4Material* tunnelSoilMaterial,
100 G4double tunnelFloorOffset,
113 G4double tunnelThickness,
114 G4double tunnelSoilThickness,
115 G4Material* tunnelMaterial,
116 G4Material* tunnelSoilMaterial,
118 G4double tunnelFloorOffset,
126 G4ThreeVector inputFaceIn,
127 G4ThreeVector outputFaceIn,
128 G4double tunnelThickness,
129 G4double tunnelSoilThickness,
130 G4Material* tunnelMaterial,
131 G4Material* tunnelSoilMaterial,
133 G4double tunnelFloorOffset,
149 G4double& tunnelThickness,
150 G4double& tunnelSoilThickness,
151 G4Material*& tunnelMaterial,
152 G4Material*& tunnelSoilMaterial);
154 virtual void CommonConstruction(G4String name,
155 G4Material* tunnelMaterial,
156 G4Material* tunnelSoilMaterial,
158 G4double containerXRadius,
159 G4double contianerYRadius,
164 G4Material* tunnelMaterial,
165 G4Material* tunnelSoilMaterial);
175 G4double containerYRadius,
176 G4double containerZRadius);
180 G4double chordLength);
195 G4VSolid* containerSolid;
196 G4VSolid* tunnelSolid;
198 G4VSolid* floorSolid;
199 G4VSolid* intersectionSolid;
200 G4LogicalVolume* containerLV;
201 G4LogicalVolume* tunnelLV;
202 G4LogicalVolume* soilLV;
203 G4LogicalVolume* floorLV;
204 G4ThreeVector floorDisplacement;
Common temporary storage for all factories no matter what geometry.
A generic geometry component for a bdsim model.
Abstract base class for tunnel factory classes.
BDSTunnelFactoryBase()
protected default constructor so only derived classes can use it
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 void PrepareGeometryComponent(G4double containerXRadius, G4double containerYRadius, G4double containerZRadius)
Prepare the assembled geometry component.
virtual void SetSensitiveVolumes()
Set the sensitive volumes.
void CommontTestInputParameters(G4double &length, G4double &tunnelThickness, G4double &tunnelSoilThickness, G4Material *&tunnelMaterial, G4Material *&tunnelSoilMaterial)
virtual void SetUserLimits()
Set user limits for all logical volumes in the tunnel section.
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 void SetVisAttributes(G4bool visible)
Set the visual attributes for each logical volume.
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.
virtual void PlaceComponents(G4String name)
Place components in container volume.
virtual void PrepareTunnelSection(G4String name, G4double chordLength)
Prepare the output BDSTunnelSection instance.
virtual ~BDSTunnelFactoryBase()
Virtual base destructor.
virtual void BuildLogicalVolumes(G4String name, G4Material *tunnelMaterial, G4Material *tunnelSoilMaterial)
Build logical volumes from solids + materials.
Holder struct of all information required to create a section of tunnel.
Class that represents a section of tunnel.