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