BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
BDSIntegratorSet.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 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 rfpillboxIn,
63 BDSIntegratorType rfconstantinxIn,
64 BDSIntegratorType rfconstantinyIn,
65 BDSIntegratorType rfconstantinzIn,
66 BDSIntegratorType generalIn,
67 BDSIntegratorType skewQuadrupoleIn,
68 BDSIntegratorType skewSextupoleIn,
69 BDSIntegratorType skewOctupoleIn,
70 BDSIntegratorType skewDecapoleIn,
71 BDSIntegratorType dipoleFringeIn,
72 BDSIntegratorType multipoleThinIn,
73 BDSIntegratorType multipoleOuterIn,
74 BDSIntegratorType rmatrixThinIn,
75 BDSIntegratorType parallelTransporterIn,
76 BDSIntegratorType undulator,
77 BDSIntegratorType cavityFringeIn);
78
80 BDSIntegratorType Integrator(const BDSFieldType field) const;
81
82 BDSIntegratorType solenoid;
83 BDSIntegratorType dipole;
84 BDSIntegratorType dipoleQuadrupole;
85 BDSIntegratorType quadrupole;
86 BDSIntegratorType sextupole;
87 BDSIntegratorType octupole;
88 BDSIntegratorType decapole;
89 BDSIntegratorType multipoleThick;
90 BDSIntegratorType muonSpoiler;
91 BDSIntegratorType rfpillbox;
92 BDSIntegratorType rfconstantinx;
93 BDSIntegratorType rfconstantiny;
94 BDSIntegratorType rfconstantinz;
95 BDSIntegratorType general;
96 BDSIntegratorType skewQuadrupole;
97 BDSIntegratorType skewSextupole;
98 BDSIntegratorType skewOctupole;
99 BDSIntegratorType skewDecapole;
100 BDSIntegratorType dipoleFringe;
101 BDSIntegratorType multipoleThin;
102 BDSIntegratorType multipoleOuter;
103 BDSIntegratorType rmatrixThin;
104 BDSIntegratorType parallelTransporter;
105 BDSIntegratorType undulator;
106 BDSIntegratorType cavityFringe;
107
109 inline G4bool IsMatrixIntegratorSet() const {return isMatrix;}
110
111private:
112 G4bool isMatrix;
113};
114
115#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.