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) BDSIM Collaboration, 2001 - 2026.
3
4This file is part of BDSIM.
5
6BDSIM is free software: you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published
8by the Free Software Foundation version 3 of the License.
9
10BDSIM is distributed in the hope that it will be useful, but
11WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with BDSIM. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef BDSINTEGRATORSET_H
19#define BDSINTEGRATORSET_H
20
21#include "BDSFieldType.hh"
22#include "BDSIntegratorSetType.hh"
23#include "BDSIntegratorType.hh"
24
25#include "globals.hh" // geant4 types / globals
26
28
29namespace BDS
30{
32 const BDSIntegratorSet* IntegratorSet(G4String set);
35}
36
50{
51public:
53 BDSIntegratorType dipoleIn,
54 BDSIntegratorType dipoleQuadrupoleIn,
55 BDSIntegratorType quadrupoleIn,
56 BDSIntegratorType sextupoleIn,
57 BDSIntegratorType octupoleIn,
58 BDSIntegratorType decapoleIn,
59 BDSIntegratorType multipoleThickIn,
60 BDSIntegratorType muonSpoilerIn,
61 BDSIntegratorType rfpillboxIn,
62 BDSIntegratorType rfconstantinxIn,
63 BDSIntegratorType rfconstantinyIn,
64 BDSIntegratorType rfconstantinzIn,
65 BDSIntegratorType generalIn,
66 BDSIntegratorType skewQuadrupoleIn,
67 BDSIntegratorType skewSextupoleIn,
68 BDSIntegratorType skewOctupoleIn,
69 BDSIntegratorType skewDecapoleIn,
70 BDSIntegratorType dipoleFringeIn,
71 BDSIntegratorType multipoleThinIn,
72 BDSIntegratorType multipoleOuterIn,
73 BDSIntegratorType rmatrixThinIn,
74 BDSIntegratorType parallelTransporterIn,
75 BDSIntegratorType undulator,
76 BDSIntegratorType cavityFringeIn,
77 BDSIntegratorType gaborLens);
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 BDSIntegratorType gaborLens;
108
110 inline G4bool IsMatrixIntegratorSet() const {return isMatrix;}
111
112private:
113 G4bool isMatrix;
114};
115
116#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.