BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Public Member Functions | Private Attributes
BDSBunchSixTrackLink Class Reference

A bunch distribution that holds a bunch from Sixtrack Link. More...

#include <BDSBunchSixTrackLink.hh>

Inheritance diagram for BDSBunchSixTrackLink:
Inheritance graph
Collaboration diagram for BDSBunchSixTrackLink:
Collaboration graph

Public Member Functions

virtual BDSParticleCoordsFull GetNextParticleLocal ()
 Get the next particle. More...
 
void AddParticle (BDSParticleDefinition *particleDefinitionIn, const BDSParticleCoordsFull &coordsIn, int externalParticleID, int externalParentID)
 Append particle to the bunch for tracking. More...
 
void ClearParticles ()
 Delete all particle objects in the bunch and clear the vector. More...
 
virtual const BDSParticleDefinitionParticleDefinition () const
 Access the current particle definition of the current particle in the bunch. More...
 
void UpdateGeant4ParticleDefinition (G4int pdgID)
 TBC. More...
 
virtual void UpdateIonDefinition ()
 Override method in BDSBunch to use our local currentParticleDefinition member. More...
 
size_t Size () const
 Accessor. More...
 
int CurrentExternalParticleID () const
 Accessor. More...
 
int CurrentExternalParentID () const
 Accessor. More...
 
- Public Member Functions inherited from BDSBunch
 BDSBunch (const G4String &nameIn)
 
virtual void SetOptions (const BDSParticleDefinition *beamParticle, const GMAD::Beam &beam, const BDSBunchType &distrType, G4Transform3D beamlineTransformIn=G4Transform3D::Identity, const G4double beamlineS=0)
 
virtual void CheckParameters ()
 
virtual void Initialise ()
 Any initialisation - to be used after SetOptions, then CheckParameters. More...
 
BDSParticleCoordsFullGlobal GetNextParticle ()
 
virtual G4bool ExpectChangingParticleType () const
 A hint of whether we expect to require and extended particle set (ie pions, kaons, muons). More...
 
virtual BDSParticleCoordsFullGlobal GetNextParticleValid (G4int maxTries=100)
 
virtual void BeginOfRunAction (G4int numberOfEvents)
 
virtual const BDSParticleDefinitionParticleDefinition () const
 Access the beam particle definition. More...
 
virtual void SetGeneratePrimariesOnly (G4bool generatePrimariesOnlyIn)
 
virtual BDSParticleCoordsFull GetNextParticleLocal ()
 
G4bool UseCurvilinearTransform () const
 Access whether there's a finite S offset and therefore we're using a CL transform. More...
 
virtual void RecreateAdvanceToEvent (G4int)
 
G4bool BeamParticleIsAnIon () const
 Access whether the beam particle is an ion or not. More...
 
virtual void UpdateIonDefinition ()
 
G4bool ParticleDefinitionHasBeenUpdated () const
 
G4String Name () const
 

Private Attributes

G4int currentIndex
 
G4int currentExternalParticleID
 
G4int currentExternalParentID
 
BDSParticleDefinitioncurrentParticleDefinition
 
G4int size
 Number of particles (1 counting). More...
 
std::vector< BDSParticleExternal * > particles
 

Additional Inherited Members

- Static Public Member Functions inherited from BDSBunch
static G4double CalculateZp (G4double xp, G4double yp, G4double Zp0)
 Calculate zp safely based on other components. More...
 
static void SetEmittances (const BDSParticleDefinition *beamParticle, const GMAD::Beam &beam, G4double &emittGeometricX, G4double &emittGeometricY, G4double &emittNormalisedX, G4double &emittNormalisedY)
 
- Protected Member Functions inherited from BDSBunch
BDSParticleCoordsFullGlobal ApplyTransform (const BDSParticleCoordsFull &localIn) const
 
void ApplyTilt (BDSParticleCoordsFull &localIn) const
 Apply a rotation about unitZ for the local coordinates according to member variable tilt. More...
 
BDSParticleCoordsFullGlobal ApplyCurvilinearTransform (const BDSParticleCoordsFull &localIn) const
 Calculate the global coordinates from curvilinear coordinates of a beam line. More...
 
- Protected Attributes inherited from BDSBunch
G4String name
 Name of distribution. More...
 
G4bool useCurvilinear
 Whether to ignore z and use s and transform for curvilinear coordinates. More...
 
BDSParticleDefinitionparticleDefinition
 Particle definition for bunch - this class owns it. More...
 
G4bool particleDefinitionHasBeenUpdated
 
G4bool finiteTilt
 
G4bool generatePrimariesOnly
 
G4double X0
 Centre of distributions. More...
 
G4double Y0
 Centre of distributions. More...
 
G4double Z0
 Centre of distributions. More...
 
G4double S0
 Centre of distributions. More...
 
G4double T0
 Centre of distributions. More...
 
G4double Xp0
 Centre of distributions. More...
 
G4double Yp0
 Centre of distributions. More...
 
G4double Zp0
 Centre of distributions. More...
 
G4double E0
 Centre of distributions. More...
 
G4double P0
 central momentum More...
 
G4double tilt
 Centre of distributions. More...
 
G4double sigmaT
 Centre of distributions. More...
 
G4double sigmaP
 Centre of distributions. More...
 
G4double sigmaE
 Centre of distributions. More...
 
G4double sigmaEk
 Centre of distributions. More...
 
G4bool finiteSigmaE
 Flags to ignore random number generator in case of no finite E or T. More...
 
G4bool finiteSigmaT
 Flags to ignore random number generator in case of no finite E or T. More...
 

Detailed Description

A bunch distribution that holds a bunch from Sixtrack Link.

A key difference in this class is that the BDSBunch member particleDefinition is not used as we expect all particles to be different generally. Therefore, to aid memory management (avoid double deletion) we have a member in this class for the current particle definition that is updated each time. The accessor is overloaded to access that one instead of the base class one.

Author
Laurie Nevay

Definition at line 42 of file BDSBunchSixTrackLink.hh.

Constructor & Destructor Documentation

◆ BDSBunchSixTrackLink()

BDSBunchSixTrackLink::BDSBunchSixTrackLink ( )

Definition at line 33 of file BDSBunchSixTrackLink.cc.

◆ ~BDSBunchSixTrackLink()

BDSBunchSixTrackLink::~BDSBunchSixTrackLink ( )
virtual

Definition at line 41 of file BDSBunchSixTrackLink.cc.

Member Function Documentation

◆ AddParticle()

void BDSBunchSixTrackLink::AddParticle ( BDSParticleDefinition particleDefinitionIn,
const BDSParticleCoordsFull coordsIn,
int  externalParticleID,
int  externalParentID 
)

Append particle to the bunch for tracking.

Definition at line 67 of file BDSBunchSixTrackLink.cc.

References size.

◆ ClearParticles()

void BDSBunchSixTrackLink::ClearParticles ( )

Delete all particle objects in the bunch and clear the vector.

Definition at line 76 of file BDSBunchSixTrackLink.cc.

References size.

◆ CurrentExternalParentID()

int BDSBunchSixTrackLink::CurrentExternalParentID ( ) const
inline

Accessor.

Definition at line 63 of file BDSBunchSixTrackLink.hh.

◆ CurrentExternalParticleID()

int BDSBunchSixTrackLink::CurrentExternalParticleID ( ) const
inline

Accessor.

Definition at line 62 of file BDSBunchSixTrackLink.hh.

◆ GetNextParticleLocal()

BDSParticleCoordsFull BDSBunchSixTrackLink::GetNextParticleLocal ( )
virtual

Get the next particle.

Reimplemented from BDSBunch.

Definition at line 44 of file BDSBunchSixTrackLink.cc.

References BDSBunch::particleDefinitionHasBeenUpdated, size, and UpdateIonDefinition().

Here is the call graph for this function:

◆ ParticleDefinition()

virtual const BDSParticleDefinition * BDSBunchSixTrackLink::ParticleDefinition ( ) const
inlinevirtual

Access the current particle definition of the current particle in the bunch.

Reimplemented from BDSBunch.

Definition at line 67 of file BDSBunchSixTrackLink.hh.

◆ Size()

size_t BDSBunchSixTrackLink::Size ( ) const
inline

Accessor.

Definition at line 61 of file BDSBunchSixTrackLink.hh.

◆ UpdateGeant4ParticleDefinition()

void BDSBunchSixTrackLink::UpdateGeant4ParticleDefinition ( G4int  pdgID)

◆ UpdateIonDefinition()

void BDSBunchSixTrackLink::UpdateIonDefinition ( )
virtual

Override method in BDSBunch to use our local currentParticleDefinition member.

Reimplemented from BDSBunch.

Definition at line 118 of file BDSBunchSixTrackLink.cc.

References BDSIonDefinition::A(), BDSIonDefinition::ExcitationEnergy(), BDS::FixGeant105ThreshholdsForParticle(), BDSParticleDefinition::IonDefinition(), BDSParticleDefinition::IsAnIon(), BDSParticleDefinition::UpdateG4ParticleDefinition(), and BDSIonDefinition::Z().

Referenced by GetNextParticleLocal().

Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ currentExternalParentID

G4int BDSBunchSixTrackLink::currentExternalParentID
private

Definition at line 78 of file BDSBunchSixTrackLink.hh.

◆ currentExternalParticleID

G4int BDSBunchSixTrackLink::currentExternalParticleID
private

Definition at line 77 of file BDSBunchSixTrackLink.hh.

◆ currentIndex

G4int BDSBunchSixTrackLink::currentIndex
private

Definition at line 76 of file BDSBunchSixTrackLink.hh.

◆ currentParticleDefinition

BDSParticleDefinition* BDSBunchSixTrackLink::currentParticleDefinition
private

Definition at line 79 of file BDSBunchSixTrackLink.hh.

◆ particles

std::vector<BDSParticleExternal*> BDSBunchSixTrackLink::particles
private

Definition at line 82 of file BDSBunchSixTrackLink.hh.

◆ size

G4int BDSBunchSixTrackLink::size
private

Number of particles (1 counting).

Definition at line 81 of file BDSBunchSixTrackLink.hh.

Referenced by AddParticle(), ClearParticles(), and GetNextParticleLocal().


The documentation for this class was generated from the following files: