BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
BDSIntegratorSet.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 BDSINTEGRATORSET_H
20#define BDSINTEGRATORSET_H
21
22#include "BDSFieldType.hh"
23#include "BDSIntegratorSetType.hh"
24#include "BDSIntegratorType.hh"
25
26#include "globals.hh" // geant4 types / globals
27
29
30namespace BDS
31{
33 const BDSIntegratorSet* IntegratorSet(G4String set);
36}
37
51{
52public:
54 BDSIntegratorType dipoleIn,
55 BDSIntegratorType dipoleQuadrupoleIn,
56 BDSIntegratorType quadrupoleIn,
57 BDSIntegratorType sextupoleIn,
58 BDSIntegratorType octupoleIn,
59 BDSIntegratorType decapoleIn,
60 BDSIntegratorType multipoleThickIn,
61 BDSIntegratorType muonSpoilerIn,
62 BDSIntegratorType rfcavityIn,
64 BDSIntegratorType generalIn,
65 BDSIntegratorType skewQuadrupoleIn,
66 BDSIntegratorType skewSextupoleIn,
67 BDSIntegratorType skewOctupoleIn,
68 BDSIntegratorType skewDecapoleIn,
69 BDSIntegratorType dipoleFringeIn,
70 BDSIntegratorType multipoleThinIn,
71 BDSIntegratorType multipoleOuterIn,
72 BDSIntegratorType rmatrixThinIn,
73 BDSIntegratorType parallelTransporterIn,
74 BDSIntegratorType undulator,
75 BDSIntegratorType cavityFringeIn);
76
79
80 BDSIntegratorType solenoid;
81 BDSIntegratorType dipole;
82 BDSIntegratorType dipoleQuadrupole;
83 BDSIntegratorType quadrupole;
84 BDSIntegratorType sextupole;
85 BDSIntegratorType octupole;
86 BDSIntegratorType decapole;
87 BDSIntegratorType multipoleThick;
88 BDSIntegratorType muonSpoiler;
89 BDSIntegratorType rfcavity;
91 BDSIntegratorType general;
92 BDSIntegratorType skewQuadrupole;
93 BDSIntegratorType skewSextupole;
94 BDSIntegratorType skewOctupole;
95 BDSIntegratorType skewDecapole;
96 BDSIntegratorType dipoleFringe;
97 BDSIntegratorType multipoleThin;
98 BDSIntegratorType multipoleOuter;
99 BDSIntegratorType rmatrixThin;
100 BDSIntegratorType parallelTransporter;
101 BDSIntegratorType undulator;
102 BDSIntegratorType cavityFringe;
103
105 inline G4bool IsMatrixIntegratorSet() const {return isMatrix;}
106
107private:
108 G4bool isMatrix;
109};
110
111#endif
Which integrator to use for each type of magnet / field object.
G4bool IsMatrixIntegratorSet() const
Accessor for bool of is the integrator set matrix style.
BDSIntegratorType Integrator(const BDSFieldType field) const
Get appropriate integrator based on the field type.
Return either G4Tubs or G4CutTubs depending on flat face.
const BDSIntegratorSet * IntegratorSet(G4String set)
Return the appropriate set of integrators to use for each magnet type.