BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
BDSGlobalConstants.hh
1/*
2Beam Delivery Simulation (BDSIM) Copyright (C) Royal Holloway,
3University of London 2001 - 2024.
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 BDSGLOBALCONSTANTS_H
20#define BDSGLOBALCONSTANTS_H
21
22#include "BDSIntegratorSetType.hh"
23#include "BDSMagnetGeometryType.hh"
24#include "BDSOutputType.hh"
25#include "BDSTrajectoryFilter.hh"
26#include "BDSTrajectoryOptions.hh"
27
28#include "globals.hh"
29#include "G4ThreeVector.hh"
30#include "G4Transform3D.hh"
31#include "G4Version.hh"
32
33#include "CLHEP/Units/SystemOfUnits.h"
34
35#include "parser/options.h"
36
37#include <bitset>
38#include <map>
39#include <set>
40#include <utility>
41#include <vector>
42
43class G4UserLimits;
44class G4VisAttributes;
45
46class BDSBeamPipeInfo;
47class BDSTunnelInfo;
48
72{
73protected:
75 explicit BDSGlobalConstants(const GMAD::Options& opt);
76
77private:
80
83
89public:
93
94 // Options that access GMAD::options instance
95 // Executable options
96 inline G4String VisMacroFileName() const {return G4String(options.visMacroFileName);}
97 inline G4String Geant4MacroFileName() const {return G4String(options.geant4MacroFileName);}
98 inline G4String Geant4PhysicsMacroFileName() const {return G4String(options.geant4PhysicsMacroFileName);}
99 inline G4bool Geant4PhysicsMacroFileNameFromExecOptions() const {return G4bool(options.geant4PhysicsMacroFileNameFromExecOptions);}
100 inline G4bool VisDebug() const {return G4bool (options.visDebug);}
101 inline G4int VisVerbosity() const {return G4int (options.visVerbosity);}
102 inline G4String OutputFileName() const {return G4String(options.outputFileName);}
103 inline G4bool OutputFileNameSet() const {return G4bool (options.HasBeenSet("outputFileName"));}
104 inline BDSOutputType OutputFormat() const {return outputType;}
105 inline G4int OutputCompressionLevel() const {return G4int (options.outputCompressionLevel);}
106 inline G4bool Survey() const {return G4bool (options.survey);}
107 inline G4String SurveyFileName() const {return G4String(options.surveyFileName);}
108 inline G4bool Batch() const {return G4bool (options.batch);}
109 inline G4bool Verbose() const {return G4bool (options.verbose);}
110 inline G4int VerboseRunLevel() const {return G4int (options.verboseRunLevel);}
111 inline G4bool VerboseEventBDSIM() const {return G4bool (options.verboseEventBDSIM);}
112 inline G4int VerboseEventLevel() const {return G4int (options.verboseEventLevel);}
113 inline G4int VerboseEventStart() const {return G4int (options.verboseEventStart);}
114 inline G4int VerboseEventContinueFor()const {return G4int (options.verboseEventContinueFor);}
115 inline G4int VerboseTrackingLevel() const {return G4int (options.verboseTrackingLevel);}
116 inline G4bool VerboseSteppingBDSIM() const {return G4bool (options.verboseSteppingBDSIM);}
117 inline G4int VerboseSteppingLevel() const {return G4int (options.verboseSteppingLevel);}
118 inline G4int VerboseSteppingEventStart() const {return G4int (options.verboseSteppingEventStart);}
119 inline G4int VerboseSteppingEventContinueFor() const {return G4int (options.verboseSteppingEventContinueFor);}
120 inline G4bool VerboseSteppingPrimaryOnly() const {return G4bool(options.verboseSteppingPrimaryOnly);}
121 inline G4int VerboseImportanceSampling() const {return G4int (options.verboseImportanceSampling);}
122 inline G4bool VerboseSensitivity() const {return G4bool(options.verboseSensitivity);}
123 inline G4bool Circular() const {return G4bool (options.circular);}
124 inline G4int Seed() const {return G4int (options.seed);}
125 inline G4bool SeedSet() const {return G4bool (options.HasBeenSet("seed"));}
126 inline G4String RandomEngine() const {return G4String(options.randomEngine);}
127 inline G4bool Recreate() const {return G4bool (options.recreate);}
128 inline G4String RecreateFileName() const {return G4String(options.recreateFileName);}
129 inline G4int StartFromEvent() const {return G4int (options.startFromEvent);}
130 inline G4bool WriteSeedState() const {return G4bool (options.writeSeedState);}
131 inline G4bool UseASCIISeedState() const {return G4bool (options.useASCIISeedState);}
132 inline G4String SeedStateFileName() const {return G4String(options.seedStateFileName);}
133 inline G4String BDSIMPath() const {return G4String(options.bdsimPath);}
134 inline G4int NGenerate() const {return numberToGenerate;}
135 inline G4bool NGenerateSet() const {return G4bool (options.HasBeenSet("ngenerate"));}
136 inline G4bool GeneratePrimariesOnly() const {return G4bool (options.generatePrimariesOnly);}
137 inline G4bool ExportGeometry() const {return G4bool (options.exportGeometry);}
138 inline G4String ExportType() const {return G4String(options.exportType);}
139 inline G4String ExportFileName() const {return G4String(options.exportFileName);}
140
141 // regular options from here on
142 G4int PrintModuloEvents() const;
143 G4int PrintModuloTurns() const;
144 inline G4bool PhysicsVerbose() const {return G4bool (options.physicsVerbose);}
145 inline G4int PhysicsVerbosity() const {return G4int (options.physicsVerbosity);}
146 inline G4double PhysicsEnergyLimitLow() const {return G4double(options.physicsEnergyLimitLow)*CLHEP::GeV;}
147 inline G4double PhysicsEnergyLimitHigh() const {return G4double(options.physicsEnergyLimitHigh)*CLHEP::GeV;}
148
149 inline G4bool G4PhysicsUseBDSIMRangeCuts() const {return G4bool(options.g4PhysicsUseBDSIMRangeCuts);}
150 inline G4bool G4PhysicsUseBDSIMCutsAndLimits() const {return G4bool(options.g4PhysicsUseBDSIMCutsAndLimits);}
151
152 inline G4double PrintFractionEvents() const {return G4double(options.printFractionEvents);}
153 inline G4double PrintFractionTurns() const {return G4double(options.printFractionTurns);}
154 inline G4bool PrintPhysicsProcesses() const {return G4bool (options.printPhysicsProcesses);}
155 inline G4double LengthSafety() const {return G4double(options.lengthSafety*CLHEP::m);}
156 inline G4double LengthSafetyLarge() const {return G4double(options.lengthSafetyLarge*CLHEP::m);}
157 inline G4double HorizontalWidth() const {return G4double(options.horizontalWidth)*CLHEP::m;}
158 inline G4bool IgnoreLocalAperture() const {return G4bool (options.ignoreLocalAperture);}
159 inline G4bool IgnoreLocalMagnetGeometry()const {return G4bool (options.ignoreLocalMagnetGeometry);}
160 inline G4bool BuildPoleFaceGeometry() const {return G4bool (options.buildPoleFaceGeometry);}
161 inline G4String OuterMaterialName() const {return G4String(options.outerMaterialName);}
162 inline G4bool DontSplitSBends() const {return G4bool (options.dontSplitSBends);}
163 inline G4bool BuildTunnel() const {return G4bool (options.buildTunnel);}
164 inline G4bool BuildTunnelStraight() const {return G4bool (options.buildTunnelStraight);}
165 inline G4double TunnelOffsetX() const {return G4double(options.tunnelOffsetX)*CLHEP::m;}
166 inline G4double TunnelOffsetY() const {return G4double(options.tunnelOffsetY)*CLHEP::m;}
167 inline G4double TunnelMaxSegmentLength() const {return G4double(options.tunnelMaxSegmentLength)*CLHEP::m;}
168 inline G4double ELossHistoBinWidth() const {return G4double(options.elossHistoBinWidth)*CLHEP::m;}
169 inline G4double DefaultRangeCut() const {return G4double(options.defaultRangeCut)*CLHEP::m;}
170 inline G4double ProdCutPhotons() const {return G4double(options.prodCutPhotons)*CLHEP::m;}
171 inline G4double ProdCutElectrons() const {return G4double(options.prodCutElectrons)*CLHEP::m;}
172 inline G4double ProdCutPositrons() const {return G4double(options.prodCutPositrons)*CLHEP::m;}
173 inline G4double ProdCutProtons() const {return G4double(options.prodCutProtons)*CLHEP::m;}
174 inline G4bool DefaultRangeCutsSet() const {return G4bool (options.HasBeenSet("defaultRangeCut"));}
175 inline G4bool ProdCutPhotonsSet() const {return G4bool (options.HasBeenSet("prodCutPhotons"));}
176 inline G4bool ProdCutElectronsSet() const {return G4bool (options.HasBeenSet("prodCutElectrons"));}
177 inline G4bool ProdCutPositronsSet() const {return G4bool (options.HasBeenSet("prodCutPositrons"));}
178 inline G4bool ProdCutProtonsSet() const {return G4bool (options.HasBeenSet("prodCutProtons"));}
179 inline G4double NeutronTimeLimit() const {return G4double(options.neutronTimeLimit)*CLHEP::s;}
180 inline G4double NeutronKineticEnergyLimit()const {return G4double(options.neutronKineticEnergyLimit)*CLHEP::GeV;}
181 inline G4bool UseLENDGammaNuclear() const {return G4bool (options.useLENDGammaNuclear);}
182 inline G4bool UseElectroNuclear() const {return G4bool (options.useElectroNuclear);}
183 inline G4bool UseMuonNuclear() const {return G4bool (options.useMuonNuclear);}
184 inline G4bool UseGammaToMuMu() const {return G4bool (options.useGammaToMuMu);}
185 inline G4bool UsePositronToMuMu() const {return G4bool (options.usePositronToMuMu);}
186 inline G4bool UsePositronToHadrons() const {return G4bool (options.usePositronToHadrons);}
187 inline G4bool RestoreFTPFDiffractionForAGreater10() const {return G4bool(options.restoreFTPFDiffractionForAGreater10);}
188 inline G4bool RestoreFTPFDiffractionForAGreater10Set() const {return G4bool(options.HasBeenSet("restoreFTPFDiffractionForAGreater10"));}
189 inline G4bool BeamPipeIsInfiniteAbsorber() const {return G4bool(options.beamPipeIsInfiniteAbsorber);}
190 inline G4bool CollimatorsAreInfiniteAbsorbers() const {return G4bool(options.collimatorsAreInfiniteAbsorbers);}
191 inline G4bool TunnelIsInfiniteAbsorber() const {return G4bool (options.tunnelIsInfiniteAbsorber);}
192 inline G4int MuonSplittingFactor() const {return G4int (options.muonSplittingFactor);}
193 inline G4double MuonSplittingThresholdParentEk() const {return G4double(options.muonSplittingThresholdParentEk * CLHEP::GeV);}
194 inline G4int MuonSplittingFactor2() const {return G4int (options.muonSplittingFactor2);}
195 inline G4double MuonSplittingThresholdParentEk2() const {return G4double(options.muonSplittingThresholdParentEk2) * CLHEP::GeV;}
196 inline G4bool MuonSplittingExcludeWeight1Particles() const {return G4bool(options.muonSplittingExcludeWeight1Particles);}
197 inline G4double MuonSplittingExclusionWeight() const {return G4double(options.muonSplittingExclusionWeight);}
198 inline G4double XrayAllSurfaceRoughness() const {return G4double(options.xrayAllSurfaceRoughness*CLHEP::m);}
199 inline G4String BiasForWorldVolume() const {return G4String(options.biasForWorldVolume);}
200 inline G4String BiasForWorldContents() const {return G4String(options.biasForWorldContents);}
201 inline G4String BiasForWorldVacuum() const {return G4String(options.biasForWorldVacuum);}
202 inline G4String WorldVacuumVolumeNames() const {return G4String(options.worldVacuumVolumeNames);}
203 inline G4double DeltaIntersection() const {return G4double(options.deltaIntersection)*CLHEP::m;}
204 inline G4double ChordStepMinimum() const {return G4double(options.chordStepMinimum)*CLHEP::m;}
205 inline G4double ChordStepMinimumYoke() const {return G4double(options.chordStepMinimumYoke)*CLHEP::m;}
206 inline G4double DeltaOneStep() const {return G4double(options.deltaOneStep)*CLHEP::m;}
207 inline G4double MinimumEpsilonStep() const {return G4double(options.minimumEpsilonStep);}
208 inline G4double MaximumEpsilonStep() const {return G4double(options.maximumEpsilonStep);}
209 inline G4double MinimumEpsilonStepThin() const {return G4double(options.minimumEpsilonStepThin);}
210 inline G4double MaximumEpsilonStepThin() const {return G4double(options.maximumEpsilonStepThin);}
211 inline G4String FieldModulator() const {return G4String(options.fieldModulator);}
212 inline G4double MaxTime() const {return G4double(options.maximumTrackingTime)*CLHEP::s;}
213 inline G4double MaxStepLength() const {return G4double(options.maximumStepLength)*CLHEP::m;}
214 inline G4double MaxTrackLength() const {return G4double(options.maximumTrackLength)*CLHEP::m;}
215 inline G4int TurnsToTake() const {return G4int (options.nturns);}
216 inline G4double FFact() const {return G4double(options.ffact);}
217 inline G4double BeamlineS() const {return G4double(options.beamlineS*CLHEP::m);}
218 inline G4bool SensitiveBeamPipe() const {return G4bool (options.sensitiveBeamPipe);}
219 inline G4bool SensitiveOuter() const {return G4bool (options.sensitiveOuter);}
220#if G4VERSION_NUMBER != 1030
221 inline G4bool CheckOverlaps() const {return G4bool (options.checkOverlaps);}
222#else
223 // Overlap checking slow in 10.3.0 therefore disabled,
224 // see https://bitbucket.org/jairhul/bdsim/issues/151/overlap-checking-in-103-gives-warnings-and
225 inline G4bool CheckOverlaps() const {return false;}
226#endif
227 inline G4int EventNumberOffset() const {return G4int (options.eventNumberOffset);}
228 inline G4bool StoreMinimalData() const {return G4bool (options.storeMinimalData);}
229 inline G4bool StorePrimaries() const {return G4bool (options.storePrimaries);}
230 inline G4bool StorePrimaryHistograms() const {return G4bool (options.storePrimaryHistograms);}
231 inline G4bool StoreApertureImpacts() const {return G4bool (options.storeApertureImpacts);}
232 inline G4bool StoreApertureImpactsIons() const {return G4bool (options.storeApertureImpactsIons);}
233 inline G4bool StoreApertureImpactsAll() const {return G4bool (options.storeApertureImpactsAll);}
234 inline G4bool StoreApertureImpactsHistograms() const {return G4bool (options.storeApertureImpactsHistograms);}
235 inline G4double ApertureImpactsMinimumKE() const {return G4double(options.apertureImpactsMinimumKE*CLHEP::GeV);}
236 inline G4bool StoreCavityInfo() const {return G4bool (options.storeCavityInfo);}
237 inline G4bool StoreCollimatorInfo() const {return G4bool (options.storeCollimatorInfo);}
238 inline G4bool StoreCollimatorHits() const {return G4bool (options.storeCollimatorHits);}
239 inline G4bool StoreCollimatorHitsLinks() const {return G4bool (options.storeCollimatorHitsLinks);}
240 inline G4bool StoreCollimatorHitsIons() const {return G4bool (options.storeCollimatorHitsIons);}
241 inline G4bool StoreCollimatorHitsAll() const {return G4bool (options.storeCollimatorHitsAll);}
242 inline G4double CollimatorHitsMinimumKE() const {return G4double(options.collimatorHitsMinimumKE*CLHEP::GeV);}
243 inline G4bool StoreELoss() const {return G4bool (options.storeEloss);}
244 inline G4bool StoreELossHistograms() const {return G4bool (options.storeElossHistograms);}
245 inline G4bool StoreELossVacuum() const {return G4bool (options.storeElossVacuum);}
246 inline G4bool StoreELossVacuumHistograms()const{return G4bool (options.storeElossVacuumHistograms);}
247 inline G4bool StoreELossTunnel() const {return G4bool (options.storeElossTunnel);}
248 inline G4bool StoreELossTunnelHistograms()const{return G4bool (options.storeElossTunnelHistograms);}
249 inline G4bool StoreELossWorld() const {return G4bool (options.storeElossWorld);}
250 inline G4bool StoreELossWorldIntegral() const {return G4bool (options.storeElossWorldIntegral);}
251 inline G4bool StoreELossWorldContents() const {return G4bool (options.storeElossWorldContents);}
252 inline G4bool StoreELossWorldContentsIntegral() const {return G4bool (options.storeElossWorldContentsIntegral);}
253 inline G4bool StoreELossTurn() const {return G4bool (options.storeElossTurn || options.circular);}
254 inline G4bool StoreELossLinks() const {return G4bool (options.storeElossLinks);}
255 inline G4bool StoreELossLocal() const {return G4bool (options.storeElossLocal);}
256 inline G4bool StoreELossGlobal() const {return G4bool (options.storeElossGlobal);}
257 inline G4bool StoreELossTime() const {return G4bool (options.storeElossTime);}
258 inline G4bool StoreELossStepLength() const {return G4bool (options.storeElossStepLength);}
259 inline G4bool StoreELossPreStepKineticEnergy() const {return G4bool (options.storeElossPreStepKineticEnergy);}
260 inline G4bool StoreELossModelID() const {return G4bool (options.storeElossModelID);}
261 inline G4bool StoreELossPhysicsProcesses()const{return G4bool (options.storeElossPhysicsProcesses);}
262 inline G4bool StoreParticleData() const {return G4bool (options.storeParticleData);}
263 inline G4bool StoreTrajectory() const {return G4bool (options.storeTrajectory);}
264 inline G4bool StoreTrajectoryAll() const {return options.storeTrajectoryDepth == -1;}
265 inline G4int StoreTrajectoryDepth() const {return G4int (options.storeTrajectoryDepth);}
266 inline G4int StoreTrajectoryStepPoints()const {return G4int (options.storeTrajectoryStepPoints);}
267 inline G4bool StoreTrajectoryStepPointLast()const{return G4bool(options.storeTrajectoryStepPointLast);}
268 inline G4String StoreTrajectoryParticle() const {return G4String(options.storeTrajectoryParticle);}
269 inline G4String StoreTrajectoryParticleID()const {return G4String(options.storeTrajectoryParticleID);}
270 inline G4bool StoreTrajectorySecondaryParticles() const {return options.storeTrajectorySecondaryParticles;}
271 inline G4double StoreTrajectoryEnergyThreshold() const {return G4double (options.storeTrajectoryEnergyThreshold*CLHEP::GeV);}
272 inline G4bool StoreTrajectoryKineticEnergy() const {return G4bool(options.storeTrajectoryKineticEnergy);}
273 inline G4bool StoreTrajectoryMomentumVector() const {return G4bool(options.storeTrajectoryMomentumVector);}
274 inline G4bool StoreTrajectoryProcesses() const {return G4bool(options.storeTrajectoryProcesses);}
275 inline G4bool StoreTrajectoryTime() const {return G4bool(options.storeTrajectoryTime);}
276 inline G4bool StoreTrajectoryLocal() const {return G4bool (options.storeTrajectoryLocal);}
277 inline G4bool StoreTrajectoryLinks() const {return G4bool (options.storeTrajectoryLinks);}
278 inline G4bool StoreTrajectoryIon() const {return G4bool (options.storeTrajectoryIon);}
279 inline G4bool StoreTrajectoryMaterial() const {return G4bool (options.storeTrajectoryMaterial);}
280 inline G4bool StoreTrajectoryAllVariables()const{return G4bool (options.storeTrajectoryAllVariables);}
281 inline G4String StoreTrajectorySamplerID() const {return G4String(options.storeTrajectorySamplerID);}
282 inline std::vector<std::pair<G4double, G4double> > StoreTrajectoryELossSRange() const {return elossSRange;}
283 inline G4bool TrajectoryFilterLogicAND() const {return G4bool (options.trajectoryFilterLogicAND);}
284 inline std::bitset<BDS::NTrajectoryFilters> TrajectoryFiltersSet() const {return trajectoryFiltersSet;}
285 inline G4bool StoreSamplerAll() const {return G4bool (options.storeSamplerAll);}
286 inline G4bool StoreSamplerPolarCoords() const {return G4bool (options.storeSamplerPolarCoords);}
287 inline G4bool StoreSamplerCharge() const {return G4bool (options.storeSamplerCharge);}
288 inline G4bool StoreSamplerKineticEnergy()const {return G4bool (options.storeSamplerKineticEnergy);}
289 inline G4bool StoreSamplerMass() const {return G4bool (options.storeSamplerMass);}
290 inline G4bool StoreSamplerRigidity() const {return G4bool (options.storeSamplerRigidity);}
291 inline G4bool StoreSamplerIon() const {return G4bool (options.storeSamplerIon);}
292 inline G4bool StoreModel() const {return G4bool (options.storeModel);}
293 inline G4bool StorePerEventHistos() const {return G4bool (options.storePerEventHistos);}
294 inline G4int SamplersSplitLevel() const {return G4int (options.samplersSplitLevel);}
295 inline G4int ModelSplitLevel() const {return G4int (options.modelSplitLevel);}
296 inline G4int UprootCompatible() const {return G4int (options.uprootCompatible);}
297 inline G4bool TrajConnect() const {return G4bool (options.trajConnect);}
298 inline G4double TrajCutGTZ() const {return G4double(options.trajCutGTZ*CLHEP::m);}
299 inline G4double TrajCutLTR() const {return G4double(options.trajCutLTR*CLHEP::m);}
300 inline G4bool StopSecondaries() const {return G4bool (options.stopSecondaries);}
301 inline G4bool KillNeutrinos() const {return G4bool (options.killNeutrinos);}
302 inline G4bool KilledParticlesMassAddedToEloss() const {return G4bool(options.killedParticlesMassAddedToEloss);}
303 inline G4double MinimumRadiusOfCurvature() const {return G4double(options.minimumRadiusOfCurvature*CLHEP::m);}
304 inline G4double ScintYieldFactor() const {return G4double(options.scintYieldFactor);}
305 inline G4int MaximumPhotonsPerStep() const {return G4int (options.maximumPhotonsPerStep);}
306 inline G4int MaximumBetaChangePerStep() const {return G4int (options.maximumBetaChangePerStep);}
307 inline G4long MaximumTracksPerEvent() const {return G4long (options.maximumTracksPerEvent);}
308 inline G4double MinimumKineticEnergy() const {return G4double(options.minimumKineticEnergy*CLHEP::GeV);}
309 inline G4double MinimumKineticEnergyTunnel() const {return G4double(options.minimumKineticEnergyTunnel)*CLHEP::GeV;}
310 inline G4double MinimumRange() const {return G4double(options.minimumRange*CLHEP::m);}
311 inline G4String ParticlesToExcludeFromCuts() const {return G4String(options.particlesToExcludeFromCuts);}
312 inline G4String VacuumMaterial() const {return G4String(options.vacMaterial);}
313 inline G4String EmptyMaterial() const {return G4String(options.emptyMaterial);}
314 inline G4String WorldMaterial() const {return G4String(options.worldMaterial);}
315 inline G4bool WorldMaterialSet() const {return G4bool (options.HasBeenSet("worldMaterial"));}
316 inline G4String WorldGeometryFile() const {return G4String(options.worldGeometryFile);}
317 inline G4bool AutoColourWorldGeometryFile() const {return G4bool (options.autoColourWorldGeometryFile);}
318 inline G4String ImportanceWorldGeometryFile() const {return G4String(options.importanceWorldGeometryFile);}
319 inline G4String ImportanceVolumeMapFile() const {return G4String(options.importanceVolumeMap);}
320 inline G4double WorldVolumeMargin() const {return G4double(options.worldVolumeMargin*CLHEP::m);}
321 inline G4bool YokeFields() const {return G4bool (options.yokeFields);}
322 inline G4bool YokeFieldsMatchLHCGeometry()const{return G4bool (options.yokeFieldsMatchLHCGeometry);}
323 inline G4bool UseOldMultipoleOuterFields()const{return G4bool (options.useOldMultipoleOuterFields);}
324 inline G4double ScalingFieldOuter() const {return G4double(options.scalingFieldOuter);}
325 inline G4bool IntegrateKineticEnergyAlongBeamline()const {return G4bool (options.integrateKineticEnergyAlongBeamline);}
326 inline G4String CavityFieldType() const {return G4String(options.cavityFieldType);}
327 inline G4bool TurnOnOpticalAbsorption() const {return G4bool (options.turnOnOpticalAbsorption);}
328 inline G4bool TurnOnRayleighScattering() const {return G4bool (options.turnOnRayleighScattering);}
329 inline G4bool TurnOnMieScattering() const {return G4bool (options.turnOnMieScattering);}
330 inline G4bool TurnOnOpticalSurface() const {return G4bool (options.turnOnOpticalSurface);}
331 inline G4int NumberOfEventsPerNtuple() const {return G4int (options.numberOfEventsPerNtuple);}
332 inline G4bool IncludeFringeFields() const {return G4bool (options.includeFringeFields);}
333 inline G4bool IncludeFringeFieldsCavities() const {return G4bool (options.includeFringeFieldsCavities);}
334 inline G4int NSegmentsPerCircle() const {return G4int (options.nSegmentsPerCircle);}
335 inline G4double ThinElementLength() const {return G4double(options.thinElementLength*CLHEP::m);}
336 inline G4bool HStyle() const {return G4bool (options.hStyle);}
337 inline G4double VHRatio() const {return G4double(options.vhRatio);}
338 inline G4double CoilWidthFraction() const {return G4double(options.coilWidthFraction);}
339 inline G4double CoilHeightFraction() const {return G4double(options.coilHeightFraction);}
340 inline G4bool PreprocessGDML() const {return G4bool (options.preprocessGDML);}
341 inline G4bool PreprocessGDMLSchema() const {return G4bool (options.preprocessGDMLSchema);}
342 inline G4int NBinsX() const {return G4int (options.nbinsx);}
343 inline G4int NBinsY() const {return G4int (options.nbinsy);}
344 inline G4int NBinsZ() const {return G4int (options.nbinsz);}
345 inline G4double XMin() const {return G4double(options.xmin) * CLHEP::m;}
346 inline G4double YMin() const {return G4double(options.ymin) * CLHEP::m;}
347 inline G4double ZMin() const {return G4double(options.zmin) * CLHEP::m;}
348 inline G4double XMax() const {return G4double(options.xmax) * CLHEP::m;}
349 inline G4double YMax() const {return G4double(options.ymax) * CLHEP::m;}
350 inline G4double ZMax() const {return G4double(options.zmax) * CLHEP::m;}
351 inline G4bool UseScoringMap() const {return G4bool (options.useScoringMap);}
352 inline G4bool RemoveTemporaryFiles() const {return G4bool (options.removeTemporaryFiles);}
353 inline G4String TemporaryDirectory() const {return G4String(options.temporaryDirectory);}
354 inline G4bool SampleElementsWithPoleface() const {return G4bool (options.sampleElementsWithPoleface);}
355 inline G4double NominalMatrixRelativeMomCut() const {return G4double (options.nominalMatrixRelativeMomCut);}
356 inline G4bool TeleporterFullTransform() const {return G4bool (options.teleporterFullTransform);}
357 inline G4double DEThresholdForScattering() const {return G4double(options.dEThresholdForScattering)*CLHEP::GeV;}
358 inline G4String PTCOneTurnMapFileName() const {return G4String (options.ptcOneTurnMapFileName);}
359 inline G4double BackupStepperMomLimit() const {return G4double(options.backupStepperMomLimit)*CLHEP::rad;}
360 inline G4double ScaleFactorLaser() const {return G4double (options.scaleFactorLaser);}
361
362 // millicharge options
363 inline G4bool enableMillicharge() const {return G4bool (options.enableMillicharge);}
364 inline G4String millichargeName() const {return G4String(options.millichargeName);}
365 inline G4double millichargeMass() const {return G4double(options.millichargeMass*CLHEP::GeV);}
366 inline G4double millichargeCharge() const {return G4double(options.millichargeCharge);}
367 inline G4int millichargeID() const {return G4int (options.millichargeID);}
368
373
374 // options that require members in this class (for value checking or because they're from another class)
375 inline G4int TurnsTaken() const {return turnsTaken;}
376 inline G4double SamplerDiameter() const {return samplerDiameter;}
377 inline G4double CurvilinearDiameter() const {return curvilinearDiameter;}
378 inline G4bool CurvilinearDiameterShrunkForBends() const {return curvilinearDiameterShrunkForBends;}
379 inline BDSBeamPipeInfo* DefaultBeamPipeModel() const {return defaultBeamPipeModel;}
380 inline BDSMagnetGeometryType MagnetGeometryType() const {return magnetGeometryType;}
381 inline BDSTunnelInfo* TunnelInfo() const {return tunnelInfo;}
382 inline G4VisAttributes* GetInvisibleVisAttr() const {return invisibleVisAttr;}
383 inline G4VisAttributes* VisibleDebugVisAttr() const {return visibleDebugVisAttr;}
384 inline G4VisAttributes* ContainerVisAttr() const {return options.visDebug ? visibleDebugVisAttr : invisibleVisAttr;}
385 inline G4UserLimits* DefaultUserLimits() const {return defaultUserLimits;}
386 inline G4UserLimits* DefaultUserLimitsTunnel() const {return defaultUserLimitsTunnel;}
387 inline BDSIntegratorSetType IntegratorSet() const {return integratorSet;}
388 inline G4Transform3D BeamlineTransform() const {return beamlineTransform;}
389 inline std::set<G4int> ParticlesToExcludeFromCutsAsSet() const {return particlesToExcludeFromCutsAsSet;}
390
392 inline void SetSamplerDiameter(G4double samplerDiameterIn) {samplerDiameter = samplerDiameterIn;}
393 inline void SetCurvilinearDiameter(G4double curvilinearDiameterIn) {curvilinearDiameter = curvilinearDiameterIn;}
394 inline void SetCurvilinearDiameterShrunkForBends() {curvilinearDiameterShrunkForBends = true;}
395 inline void IncrementTurnNumber() {turnsTaken += 1;}
396 inline void ResetTurnNumber() {turnsTaken = 1;}
397 inline void SetNumberToGenerate(G4int number) {numberToGenerate = number;}
399
400 // laserwire stuff that probably shouldn't be in global constants
401 inline G4double GetLaserwireWavelength() const {return itsLaserwireWavelength;}
402 inline G4ThreeVector GetLaserwireDir() const {return itsLaserwireDir;}
403 inline G4bool GetLaserwireTrackPhotons() const {return itsLaserwireTrackPhotons;}
404 inline G4bool GetLaserwireTrackElectrons() const {return itsLaserwireTrackElectrons;}
405 inline G4double GetLaserwireWavelength(G4String aName) const {return lwWavelength.at(aName);}
406 inline G4ThreeVector GetLaserwireDir(G4String aName) const {return lwDirection.at(aName);}
407 void SetLaserwireWavelength(G4String aName, G4double aWavelength);
408 void SetLaserwireDir(G4String aName, G4ThreeVector aDirection);
409
411 inline G4bool UseImportanceSampling() const{return !ImportanceWorldGeometryFile().empty();}
412
413private:
416
419 G4bool curvilinearDiameterShrunkForBends;
420
424
427
430
431 // test map container for laserwire parameters - Steve
432 std::map<const G4String, G4double> lwWavelength;
433 std::map<const G4String, G4ThreeVector> lwDirection;
434 G4double itsLaserwireWavelength;
435 G4ThreeVector itsLaserwireDir;
436 G4bool itsLaserwireTrackPhotons;
437 G4bool itsLaserwireTrackElectrons;
438
441
442 void InitVisAttributes();
443 G4VisAttributes* invisibleVisAttr;
444 G4VisAttributes* visibleDebugVisAttr;
445
446 void InitDefaultUserLimits();
447 G4UserLimits* defaultUserLimits;
448 G4UserLimits* defaultUserLimitsTunnel;
449 std::set<G4int> particlesToExcludeFromCutsAsSet;
450
453
456 G4Transform3D beamlineTransform;
457
458 std::bitset<BDS::NTrajectoryFilters> trajectoryFiltersSet;
459
462
464 std::vector<std::pair<G4double, G4double> > elossSRange;
465};
466
467inline void BDSGlobalConstants::SetLaserwireWavelength(G4String aName, G4double aWavelength)
468{lwWavelength[aName]=aWavelength;}
469
470inline void BDSGlobalConstants::SetLaserwireDir(G4String aName, G4ThreeVector aDirection)
471{lwDirection[aName]=aDirection;}
472
473
474#endif
Holder class for all information required to describe a beam pipe model.
A class that holds global options and constants.
void SetNumberToGenerate(G4int number)
Setter.
GMAD::Options options
Options instance that this is largely based on and extends.
void ProcessTrajectoryELossSRange()
Process the option string and fill the below vector.
void SetCurvilinearDiameterShrunkForBends()
Setter.
G4int turnsTaken
Turn Control.
void IncrementTurnNumber()
Setter.
BDSGlobalConstants & operator=(const BDSGlobalConstants &)=delete
Unused default constructors.
G4double curvilinearDiameter
Curvilinear diameter for CL volumes - defaults to samplerDiameter.
BDSTunnelInfo * tunnelInfo
Tunnel model.
std::bitset< BDS::NTrajectoryFilters > trajectoryFiltersSet
Which filters were used in the options.
BDSGlobalConstants(const BDSGlobalConstants &)=delete
Unused default constructors.
static BDSGlobalConstants * Instance()
Access method.
BDSOutputType outputType
Output type enum for output format to be used.
BDSIntegratorSetType integratorSet
Integrator type enum for integrator set to be used.
std::vector< std::pair< G4double, G4double > > elossSRange
Pairs of S ranges to link trajectories to.
BDS::TrajectoryOptions StoreTrajectoryOptions() const
options that require some implementation.
BDSBeamPipeInfo * defaultBeamPipeModel
Default beam pipe model information.
void InitialiseBeamlineTransform()
Prepare the G4Transform3D instance from the options for the initial beam line transform.
BDSGlobalConstants()=delete
Unused default constructors.
void SetCurvilinearDiameter(G4double curvilinearDiameterIn)
Setter.
void SetSamplerDiameter(G4double samplerDiameterIn)
Setter.
BDSMagnetGeometryType magnetGeometryType
Magnet geometry.
G4double samplerDiameter
Cache of sampler diameter in this class so it can be updated.
G4Transform3D beamlineTransform
Transform for start of beam line.
G4int numberToGenerate
Number of particles to generate can be set from outside (by e.g. BDSBunchPtc)
G4bool StoreTrajectoryTransportationSteps() const
options that require some implementation.
void ResetTurnNumber()
Setter.
G4bool UseImportanceSampling() const
Is importance sampling being used.
static BDSGlobalConstants * instance
Singleton instance.
Holder struct of all information required to create a section of tunnel.
std::string bdsimPath
std::string seedStateFileName
Seed state file path.
double muonSplittingThresholdParentEk2
physics parameters
double beamlineS
Initial beam line transform w.r.t. the world coordinate frame.
bool survey
Parameter for survey.
Definition optionsBase.h:56
double minimumRange
physics parameters
std::string outputFileName
Parameter for output format.
Definition optionsBase.h:49
int muonSplittingFactor
physics parameters
double minimumRadiusOfCurvature
Minimum allowed radius of curvature.
int verboseSteppingEventContinueFor
Stepping level verbosity.
Definition optionsBase.h:83
std::string exportFileName
Parameter for controlling geometry export.
int seed
The seed value for the random number generator.
Definition optionsBase.h:92
double tunnelOffsetY
tunnel geometry parameters
int verboseEventContinueFor
Event level verbosity.
Definition optionsBase.h:74
bool hStyle
H Style dipoles (if not, C Style).
std::string particlesToExcludeFromCuts
physics parameters
double ffact
magnetic field flip (+1 default, -1: flip sign)
double tunnelMaxSegmentLength
tunnel geometry parameters
double muonSplittingThresholdParentEk
physics parameters
int verboseEventStart
Event level verbosity.
Definition optionsBase.h:73
bool useLENDGammaNuclear
physics parameters
double maximumTrackingTime
Maximum tracking time per track [s].
bool dontSplitSBends
geometry debug, don't split bends into multiple segments
bool useASCIISeedState
Whether to use the seed state from an ASCII file.
Definition optionsBase.h:99
bool tunnelIsInfiniteAbsorber
physics parameters
bool verboseSteppingPrimaryOnly
Stepping level verbosity.
Definition optionsBase.h:84
int visVerbosity
Geant4 vis system verbosity.
Definition optionsBase.h:46
double muonSplittingExclusionWeight
physics parameters
bool collimatorsAreInfiniteAbsorbers
physics parameters
int verboseRunLevel
Run level verbosity.
Definition optionsBase.h:68
bool turnOnOpticalSurface
Physics processes.
double prodCutProtons
physics parameters
int nSegmentsPerCircle
Number of facets per 2pi in visualisation.
bool preprocessGDML
geometry control
int maximumBetaChangePerStep
physics parameters
bool batch
Flag for batch / interactive mode.
Definition optionsBase.h:60
double minimumKineticEnergy
physics parameters
int verboseTrackingLevel
Tracking verbosity.
Definition optionsBase.h:77
bool circular
Flag for circular machine.
Definition optionsBase.h:91
bool checkOverlaps
bdsim options
double neutronKineticEnergyLimit
physics parameters
double maximumTrackLength
Maximum permitted track length [m].
int verboseEventLevel
Event level verbosity.
Definition optionsBase.h:72
bool restoreFTPFDiffractionForAGreater10
physics parameters
bool turnOnOpticalAbsorption
Physics processes.
bool buildTunnelStraight
tunnel geometry parameters
long maximumTracksPerEvent
physics parameters
double backupStepperMomLimit
Fractional momentum limit for reverting to backup steppers.
int outputCompressionLevel
Parameter for output format.
Definition optionsBase.h:52
double maximumStepLength
Maximum permitted step length in any volume.
std::string exportType
Parameter for controlling geometry export.
double neutronTimeLimit
physics parameters
std::string vacMaterial
vacuum material
bool verbose
General verbosity.
Definition optionsBase.h:65
std::string recreateFileName
The file path to recreate a run from.
Definition optionsBase.h:96
bool teleporterFullTransform
Whether to use the new Transform3D method for the teleporter.
int startFromEvent
Event to start from when recreating.
Definition optionsBase.h:97
std::string emptyMaterial
material in container volumes
bool muonSplittingExcludeWeight1Particles
physics parameters
double prodCutPhotons
physics parameters
bool generatePrimariesOnly
Whether to only generate primary coordinates and quit, or not.
double defaultRangeCut
physics parameters
double prodCutElectrons
physics parameters
bool verboseEventBDSIM
Event level verbosity.
Definition optionsBase.h:71
int maximumPhotonsPerStep
physics parameters
bool exportGeometry
Parameter for controlling geometry export.
int verboseSteppingLevel
Stepping level verbosity.
Definition optionsBase.h:81
bool turnOnRayleighScattering
Physics processes.
std::string geant4PhysicsMacroFileName
Geant4 physics macro.
Definition optionsBase.h:43
std::string visMacroFileName
Visualisation filename.
Definition optionsBase.h:41
double scintYieldFactor
physics parameters
bool beamPipeIsInfiniteAbsorber
physics parameters
bool verboseSteppingBDSIM
Stepping level verbosity.
Definition optionsBase.h:80
bool useMuonNuclear
physics parameters
bool useElectroNuclear
physics parameters
int verboseSteppingEventStart
Stepping level verbosity.
Definition optionsBase.h:82
std::string surveyFileName
Parameter for survey.
Definition optionsBase.h:57
bool recreate
Whether to recreate from a file or not.
Definition optionsBase.h:95
bool turnOnMieScattering
Physics processes.
std::string randomEngine
Name of random engine to use.
Definition optionsBase.h:93
double prodCutPositrons
physics parameters
bool buildTunnel
tunnel geometry parameters
bool writeSeedState
Write the seed state each event to a text file.
Definition optionsBase.h:98
bool visDebug
Flag for visualisation debug.
Definition optionsBase.h:45
bool useGammaToMuMu
physics parameters
double minimumKineticEnergyTunnel
physics parameters
double tunnelOffsetX
tunnel geometry parameters
bool usePositronToMuMu
physics parameters
std::string geant4MacroFileName
Geant4 macro to run.
Definition optionsBase.h:42
double xrayAllSurfaceRoughness
physics parameters
bool usePositronToHadrons
physics parameters
int muonSplittingFactor2
physics parameters
double worldVolumeMargin
Padding margin for world volume size.
double nominalMatrixRelativeMomCut
Momentum threshold for nominal dipole matrix tracking.
bool ignoreLocalAperture
default beampipe parameters
Options class.
Definition options.h:44
bool HasBeenSet(const std::string &name) const
Whether a parameter has been set using the set_value method or not.
Definition options.cc:139