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