56 static void SetDefaultRigidity(G4double rigidityIn) {
defaultRigidity = rigidityIn;}
62 std::map<G4String, G4Colour*>* colourMapping =
nullptr,
63 G4bool autoColour =
true,
64 G4double suggestedLength = 0,
65 G4double suggestedHorizontalWidth = 0,
66 std::vector<G4String>* vacuumBiasVolumeNames =
nullptr,
67 G4bool makeSensitive =
true,
68 BDSSDType sensitivityType = BDSSDType::energydep,
69 BDSSDType vacuumSensitivityType = BDSSDType::energydepvacuum,
70 G4UserLimits* userLimitsToAttachToAllLVs =
nullptr);
80 std::unordered_map<G4VSolid*, BDSExtent> unShiftedExtents;
83 std::list<G4ThreeVector> UniformField;
84 std::list<G4String> Fieldvol;
87 std::list<G4double> QuadBgrad;
88 std::list<G4String> Quadvol;
89 std::list<G4double> SextBgrad;
90 std::list<G4String> Sextvol;
91 std::list<G4double> OctBgrad;
92 std::list<G4String> Octvol;
94 std::vector<G4LogicalVolume*> VOL_LIST;
112 G4double K1,K2,K3,K4;
114 G4String InheritStyle;
115 G4String Parameterisation;
120 G4int PrecisionRegion;
121 G4int ApproximationRegion;
122 G4double FieldX, FieldY, FieldZ;
124 G4double lengthUserLimit;
126 G4Region* precisionRegionSQL;
127 G4Region* approximationRegionSQL;
129 void BuildSQLObjects(G4String file);
132 G4VisAttributes* VisAtt();
133 G4UserLimits* UserLimits(G4double);
134 void SetLogVolAtt(G4LogicalVolume*, G4double);
135 void SetLogVolRegion(G4LogicalVolume*);
136 G4LogicalVolume* BuildCone(
BDSMySQLTable* aSQLTable, G4int k);
137 G4LogicalVolume* BuildEllipticalCone(
BDSMySQLTable* aSQLTable, G4int k);
138 G4LogicalVolume* BuildPolyCone(
BDSMySQLTable* aSQLTable, G4int k);
139 G4LogicalVolume* BuildBox(
BDSMySQLTable* aSQLTable, G4int k);
140 G4LogicalVolume* BuildTrap(
BDSMySQLTable* aSQLTable, G4int k);
141 G4LogicalVolume* BuildTorus(
BDSMySQLTable* aSQLTable, G4int k);
142 G4LogicalVolume* BuildSampler(
BDSMySQLTable* aSQLTable, G4int k);
143 G4LogicalVolume* BuildTube(
BDSMySQLTable* aSQLTable, G4int k);
144 G4LogicalVolume* BuildEllipticalTube(
BDSMySQLTable* aSQLTable, G4int k);
146 G4RotationMatrix* RotateComponent(G4double psi,
149 G4RotationMatrix* rotateComponent;
152 G4LogicalVolume* itsMarkerVol;
153 std::vector<BDSMySQLTable*> itsSQLTable;
157 void SetMultiplePhysicalVolumes(G4VPhysicalVolume* aPhysVol);
160 template <
typename T>
168 std::set<G4LogicalVolume*> sensitiveComponents;
170 G4VPhysicalVolume* alignInVolume;
171 G4VPhysicalVolume* alignOutVolume;
173 std::map<G4String, G4ThreeVector> uniformFieldVolField;
174 std::map<G4String, G4double> quadVolBgrad;
175 std::map<G4String, G4double> sextVolBgrad;
176 std::map<G4String, G4double> octVolBgrad;
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)