19#ifndef BDSGEOMETRYFACTORYBASE_H
20#define BDSGEOMETRYFACTORYBASE_H
22#include "BDSExtent.hh"
23#include "BDSFactoryBase.hh"
24#include "BDSSDType.hh"
27#include "G4RotationMatrix.hh"
38class G4VPhysicalVolume;
57 std::map<G4String, G4Colour*>* colourMapping =
nullptr,
58 G4bool autoColour =
true,
59 G4double suggestedLength = 0,
60 G4double suggestedHorizontalWidth = 0,
61 std::vector<G4String>* vacuumBiasVolumeNames =
nullptr,
62 G4bool makeSensitive =
true,
63 BDSSDType sensitivityType = BDSSDType::energydep,
64 BDSSDType vacuumSensitivityType = BDSSDType::energydepvacuum,
65 G4UserLimits* userLimitsToAttachToAllLVs =
nullptr) = 0;
74 std::map<G4String, G4Colour*>* mapping,
76 const G4String& preprocessPrefix =
"");
80 G4UserLimits* userLimits);
84 const std::set<G4LogicalVolume*>& allLogicalVolumesIn,
86 const std::set<G4LogicalVolume*>& vacuumLogicalVolumes,
96 const G4String& acceleratorComponentName)
const;
99 std::set<G4LogicalVolume*>
GetVolumes(
const std::set<G4LogicalVolume*>& allLVs,
100 std::vector<G4String>* volumeNames,
101 G4bool preprocessGDML,
102 const G4String& componentName)
const;
115 G4double y0, G4double ry,
116 G4double z0, G4double rz);
119 void ExpandExtent(G4double x0, G4double xLow, G4double xHigh,
120 G4double y0, G4double yLow, G4double yHigh,
121 G4double z0, G4double zLow, G4double zHigh);
Holder for +- extents in 3 dimensions.
Common temporary storage for all factories no matter what geometry.
A loaded piece of externally provided geometry.
Base class for external geometry loading factories.
G4double ymax
Extent in one dimension.
virtual void ApplySensitivity(BDSGeometryExternal *result, const std::set< G4LogicalVolume * > &allLogicalVolumesIn, BDSSDType generalSensitivity, const std::set< G4LogicalVolume * > &vacuumLogicalVolumes, BDSSDType vacuumSensitivity)
Attach the relevant general and vacuum sensitivity to each volume.
void ExpandExtent(const BDSExtent &extent)
Expand the acuumulated extents using a (possibly asymmetric) extent instance.
virtual G4String PreprocessedName(const G4String &objectName, const G4String &acceleratorComponentName) const
std::set< G4LogicalVolume * > GetVolumes(const std::set< G4LogicalVolume * > &allLVs, std::vector< G4String > *volumeNames, G4bool preprocessGDML, const G4String &componentName) const
Get the volumes that match the name. Volume names are matched exactly and are case sensitive.
virtual void CleanUp()
Virtual clean up that derived classes can override that calls CleanUpBase().
G4double xmin
Extent in one dimension.
G4double ymin
Extent in one dimension.
virtual BDSGeometryExternal * Build(G4String componentName, G4String fileName, std::map< G4String, G4Colour * > *colourMapping=nullptr, G4bool autoColour=true, G4double suggestedLength=0, G4double suggestedHorizontalWidth=0, std::vector< G4String > *vacuumBiasVolumeNames=nullptr, G4bool makeSensitive=true, BDSSDType sensitivityType=BDSSDType::energydep, BDSSDType vacuumSensitivityType=BDSSDType::energydepvacuum, G4UserLimits *userLimitsToAttachToAllLVs=nullptr)=0
Main method to load and construct geometry.
G4double zmin
Extent in one dimension.
G4double zmax
Extent in one dimension.
G4double xmax
Extent in one dimension.
virtual void ApplyUserLimits(const std::set< G4LogicalVolume * > &lvsIn, G4UserLimits *userLimits)
Attach a set of user limits to every logical volume supplied.
virtual std::set< G4VisAttributes * > ApplyColourMapping(std::set< G4LogicalVolume * > &lvs, std::map< G4String, G4Colour * > *mapping, G4bool autoColour, const G4String &preprocessPrefix="")
Improve type-safety of native enum data type in C++.