BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
__w
bdsim
bdsim
include
BDSBeamlineIntegral.hh
1
/*
2
Beam Delivery Simulation (BDSIM) Copyright (C) Royal Holloway,
3
University of London 2001 - 2024.
4
5
This file is part of BDSIM.
6
7
BDSIM is free software: you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published
9
by the Free Software Foundation version 3 of the License.
10
11
BDSIM is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with BDSIM. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
#ifndef BDSBEAMLINEINTEGRAL_H
20
#define BDSBEAMLINEINTEGRAL_H
21
22
#include "BDSParticleDefinition.hh"
23
24
#include "G4Types.hh"
25
26
namespace
GMAD
27
{
28
struct
Element
;
29
}
30
40
class
BDSBeamlineIntegral
41
{
42
public
:
43
BDSBeamlineIntegral
() =
delete
;
44
explicit
BDSBeamlineIntegral
(
const
BDSParticleDefinition
& incomingParticle,
45
G4double T0In = 0,
46
G4double integratedArcLength = 0,
47
G4bool integrateKineticEnergyIn =
true
);
48
~BDSBeamlineIntegral
();
49
52
void
Integrate
(
const
GMAD::Element
& componentAsDefined);
53
58
G4double
ProvideSynchronousTAtCentreOfNextElement
(
const
GMAD::Element
* el)
const
;
59
62
G4double
ProvideSynchronousTAtEndOfNextElement
(
const
GMAD::Element
* el)
const
;
63
64
G4double MomentumAtStartOfLastElement()
const
{
return
designParticle.
Momentum
();}
65
G4double KineticEnergyAtStartOfLastElement()
const
{
return
designParticle.
KineticEnergy
();}
66
67
G4bool
integrateKineticEnergy
;
68
G4double synchronousTAtEnd;
69
G4double synchronousTAtMiddleOfLastElement;
70
G4double arcLength;
71
BDSParticleDefinition
designParticle;
72
G4bool changeOfEnergyEncountered;
73
G4int
rigidityCount
;
74
};
75
76
#endif
BDSBeamlineIntegral
A class that holds the current integrated quantities along a beam line.
Definition
BDSBeamlineIntegral.hh:41
BDSBeamlineIntegral::Integrate
void Integrate(const GMAD::Element &componentAsDefined)
Definition
BDSBeamlineIntegral.cc:55
BDSBeamlineIntegral::integrateKineticEnergy
G4bool integrateKineticEnergy
On by default, but allow control to not integrate it for old behaviour.
Definition
BDSBeamlineIntegral.hh:67
BDSBeamlineIntegral::ProvideSynchronousTAtEndOfNextElement
G4double ProvideSynchronousTAtEndOfNextElement(const GMAD::Element *el) const
Definition
BDSBeamlineIntegral.cc:144
BDSBeamlineIntegral::rigidityCount
G4int rigidityCount
Which change in rigidity we're at. Starts at 0, +1 after each change. Used for naming.
Definition
BDSBeamlineIntegral.hh:73
BDSBeamlineIntegral::ProvideSynchronousTAtCentreOfNextElement
G4double ProvideSynchronousTAtCentreOfNextElement(const GMAD::Element *el) const
Definition
BDSBeamlineIntegral.cc:136
BDSParticleDefinition
Wrapper for particle definition.
Definition
BDSParticleDefinition.hh:43
BDSParticleDefinition::Momentum
G4double Momentum() const
Accessor.
Definition
BDSParticleDefinition.hh:105
BDSParticleDefinition::KineticEnergy
G4double KineticEnergy() const
Accessor.
Definition
BDSParticleDefinition.hh:104
GMAD
Parser namespace for GMAD language. Combination of Geant4 and MAD.
Definition
BDSBeamlineIntegral.hh:27
GMAD::Element
Element class.
Definition
element.h:45
Generated on Sat Oct 18 2025 18:31:03 for BDSIM by
1.9.8