BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
A bunch distribution according to the twiss parameterisation. More...
#include <BDSBunchTwiss.hh>
Public Member Functions | |
virtual void | SetOptions (const BDSParticleDefinition *beamParticle, const GMAD::Beam &beam, const BDSBunchType &distrType, G4Transform3D beamlineTransformIn=G4Transform3D::Identity, const G4double beamlineS=0) |
virtual void | CheckParameters () |
![]() | |
BDSBunchGaussian (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 | BeginOfRunAction (G4int numberOfEvents, G4bool batchMode) |
virtual BDSParticleCoordsFull | GetNextParticleLocal () |
![]() | |
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. | |
BDSParticleCoordsFullGlobal | GetNextParticle () |
virtual G4bool | ExpectChangingParticleType () const |
A hint of whether we expect to require and extended particle set (ie pions, kaons, muons). | |
virtual BDSParticleCoordsFullGlobal | GetNextParticleValid (G4int maxTries=100) |
virtual void | BeginOfRunAction (G4int numberOfEvents, G4bool batchMode) |
virtual const BDSParticleDefinition * | ParticleDefinition () const |
Access the beam particle definition. | |
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. | |
virtual void | RecreateAdvanceToEvent (G4int eventOffset) |
G4bool | BeamParticleIsAnIon () const |
Access whether the beam particle is an ion or not. | |
virtual void | UpdateIonDefinition () |
G4bool | ParticleDefinitionHasBeenUpdated () const |
G4String | Name () const |
Distribution name. | |
G4int | CurrentBunchIndex () const |
Get the current bunch index for writing to output. | |
void | CalculateBunchIndex (G4int eventIndex) |
Calculate which bunch index we should be at given an event index. | |
Private Attributes | |
G4double | betaX |
Twiss parameters. | |
G4double | betaY |
Twiss parameters. | |
G4double | alphaX |
Twiss parameters. | |
G4double | alphaY |
Twiss parameters. | |
G4double | emitX |
Twiss parameters. | |
G4double | emitY |
Twiss parameters. | |
G4double | gammaX |
Twiss parameters. | |
G4double | gammaY |
Twiss parameters. | |
G4double | dispX |
Twiss parameters. | |
G4double | dispY |
Twiss parameters. | |
G4double | dispXP |
Twiss parameters. | |
G4double | dispYP |
Twiss parameters. | |
Additional Inherited Members | |
![]() | |
static G4double | CalculateZp (G4double xp, G4double yp, G4double Zp0) |
Calculate zp safely based on other components. | |
static void | SetEmittances (const BDSParticleDefinition *beamParticle, const GMAD::Beam &beam, G4double &emittGeometricX, G4double &emittGeometricY, G4double &emittNormalisedX, G4double &emittNormalisedY) |
![]() | |
CLHEP::RandMultiGauss * | CreateMultiGauss (CLHEP::HepRandomEngine &anEngine, const CLHEP::HepVector &mu, CLHEP::HepSymMatrix &sigma) |
void | PreGenerateEvents (G4int nGenerate) |
Pre-generate all the particle coordinates and subtract the sample mean. | |
virtual BDSParticleCoordsFull | GetNextParticleLocalCoords () |
Fire random number generator and get coordinates. Can be overloaded if required. | |
![]() | |
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. | |
void | ApplyBunchTiming (BDSParticleCoordsFullGlobal &localIn) const |
Add on the offset in T for the current bunch number (i*bunchPeriod). | |
BDSParticleCoordsFullGlobal | ApplyCurvilinearTransform (const BDSParticleCoordsFull &localIn) const |
Calculate the global coordinates from curvilinear coordinates of a beam line. | |
![]() | |
CLHEP::HepVector | meansGM |
CLHEP::HepSymMatrix | sigmaGM |
CLHEP::RandMultiGauss * | gaussMultiGen |
Randon number generator with sigma matrix and mean. | |
G4bool | offsetSampleMean |
Whether to offset the sample mean. | |
G4int | iPartIteration |
Iterator for reading out pre-calculate coordinates. | |
std::vector< std::vector< G4double > * > | coordinates |
Convenience vector of vectors for clearing up. | |
std::vector< G4double > | x0_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | xp_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | y0_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | yp_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | z0_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | zp_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | E_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | t_v |
Holder for pre-calculated coordinates. | |
std::vector< G4double > | weight_v |
Holder for pre-calculated coordinates. | |
![]() | |
G4String | name |
Name of distribution. | |
G4bool | useCurvilinear |
Whether to ignore z and use s and transform for curvilinear coordinates. | |
BDSParticleDefinition * | particleDefinition |
Particle definition for bunch - this class owns it. | |
G4bool | particleDefinitionHasBeenUpdated |
G4bool | finiteTilt |
G4bool | generatePrimariesOnly |
G4double | X0 |
Centre of distributions. | |
G4double | Y0 |
Centre of distributions. | |
G4double | Z0 |
Centre of distributions. | |
G4double | S0 |
Centre of distributions. | |
G4double | T0 |
Centre of distributions. | |
G4double | Xp0 |
Centre of distributions. | |
G4double | Yp0 |
Centre of distributions. | |
G4double | Zp0 |
Centre of distributions. | |
G4double | E0 |
Centre of distributions. | |
G4double | P0 |
central momentum | |
G4double | tilt |
Centre of distributions. | |
G4double | sigmaT |
Centre of distributions. | |
G4double | sigmaP |
Centre of distributions. | |
G4double | sigmaE |
Centre of distributions. | |
G4double | sigmaEk |
Centre of distributions. | |
bool | useBunchTiming |
Bunch offset in time parameters. | |
G4int | currentBunchIndex |
Bunch offset in time parameters. | |
G4int | eventsPerBunch |
Bunch offset in time parameters. | |
G4double | bunchPeriod |
Bunch offset in time parameters. | |
G4bool | finiteSigmaE |
Flags to ignore random number generator in case of no finite E or T. | |
G4bool | finiteSigmaT |
Flags to ignore random number generator in case of no finite E or T. | |
A bunch distribution according to the twiss parameterisation.
Definition at line 37 of file BDSBunchTwiss.hh.
BDSBunchTwiss::BDSBunchTwiss | ( | ) |
Definition at line 37 of file BDSBunchTwiss.cc.
|
inlinevirtual |
Definition at line 41 of file BDSBunchTwiss.hh.
|
virtual |
Check the parameters for the given bunch distribution and exit if they're problematic or unphysical.
Reimplemented from BDSBunch.
Definition at line 117 of file BDSBunchTwiss.cc.
References betaX, betaY, BDSBunch::CheckParameters(), emitX, and emitY.
Referenced by SetOptions().
|
virtual |
Extract and set the relevant options from the beam definition. The distribution type is explicitly required as this function may be used inside a nested bunch distribution. This argument is for the most part ignored, but there's no way to have a default for it. Also, some classes can cover multiple input distributions so need to know which one they're meant to be.
Reimplemented from BDSBunchGaussian.
Definition at line 47 of file BDSBunchTwiss.cc.
References GMAD::BeamBase::alfx, GMAD::BeamBase::alfy, alphaX, alphaY, betaX, betaY, GMAD::BeamBase::betx, GMAD::BeamBase::bety, CheckParameters(), BDSBunchGaussian::CreateMultiGauss(), dispX, GMAD::BeamBase::dispx, dispXP, GMAD::BeamBase::dispxp, dispY, GMAD::BeamBase::dispy, dispYP, GMAD::BeamBase::dispyp, emitX, emitY, gammaX, gammaY, BDSBunchGaussian::gaussMultiGen, BDSBunch::SetEmittances(), BDSBunchGaussian::SetOptions(), BDSBunch::sigmaE, BDSBunch::sigmaP, and BDSBunch::sigmaT.
|
private |
|
private |
|
private |
Twiss parameters.
Definition at line 51 of file BDSBunchTwiss.hh.
Referenced by CheckParameters(), and SetOptions().
|
private |
Twiss parameters.
Definition at line 52 of file BDSBunchTwiss.hh.
Referenced by CheckParameters(), and SetOptions().
|
private |
|
private |
|
private |
|
private |
|
private |
Twiss parameters.
Definition at line 55 of file BDSBunchTwiss.hh.
Referenced by CheckParameters(), and SetOptions().
|
private |
Twiss parameters.
Definition at line 56 of file BDSBunchTwiss.hh.
Referenced by CheckParameters(), and SetOptions().
|
private |
|
private |