BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
A bunch distribution that reads a PTC inrays file. More...
#include <BDSBunchPtc.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 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. 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 BDSParticleDefinition * | ParticleDefinition () 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 Member Functions | |
void | LoadPtcFile () |
Load the PTC file into memory. More... | |
void | SetDistrFile (const G4String &distrFileNameIn) |
Assign the distribution file by finding the full path of it. More... | |
Private Attributes | |
G4bool | matchDistrFileLength |
Whether to only run the number of particles in the file. More... | |
G4int | nRays |
Number of rays in file (1 counting). More... | |
G4String | fileName |
File name. More... | |
G4int | iRay |
Iterator counter for current ray. More... | |
std::vector< double * > | ptcData |
Data. More... | |
G4bool | loopedOver |
Whether we've reset to loop over the file again. More... | |
G4double | beta |
Velocity w.r.t. speed of light. Needed to convert mom. to energy. More... | |
Additional Inherited Members | |
![]() | |
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) |
![]() | |
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... | |
![]() | |
G4String | name |
Name of distribution. More... | |
G4bool | useCurvilinear |
Whether to ignore z and use s and transform for curvilinear coordinates. More... | |
BDSParticleDefinition * | particleDefinition |
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... | |
A bunch distribution that reads a PTC inrays file.
Definition at line 34 of file BDSBunchPtc.hh.
BDSBunchPtc::BDSBunchPtc | ( | ) |
Definition at line 34 of file BDSBunchPtc.cc.
|
virtual |
Definition at line 44 of file BDSBunchPtc.cc.
|
virtual |
Each derived class can override this default method of reference position. If S0 > 0 or derived class changes member bool 'curvilinear' z0 will be treated as S and the global z0 be calculated.
Reimplemented from BDSBunch.
Definition at line 153 of file BDSBunchPtc.cc.
References beta, BDSBunch::CalculateZp(), BDSBunch::E0, iRay, loopedOver, nRays, ptcData, BDSBunch::S0, BDSBunch::T0, BDSBunch::X0, BDSBunch::Xp0, BDSBunch::Y0, BDSBunch::Yp0, BDSBunch::Z0, and BDSBunch::Zp0.
|
private |
Load the PTC file into memory.
Definition at line 50 of file BDSBunchPtc.cc.
References fileName, BDSGlobalConstants::Instance(), matchDistrFileLength, nRays, ptcData, and BDSGlobalConstants::SetNumberToGenerate().
Referenced by SetOptions().
|
private |
Assign the distribution file by finding the full path of it.
Definition at line 148 of file BDSBunchPtc.cc.
References fileName, and BDS::GetFullPath().
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 BDSBunch.
Definition at line 131 of file BDSBunchPtc.cc.
References beta, BDSParticleDefinition::Beta(), GMAD::BeamBase::distrFile, LoadPtcFile(), matchDistrFileLength, GMAD::BeamBase::matchDistrFileLength, SetDistrFile(), and BDSBunch::SetOptions().
|
private |
Velocity w.r.t. speed of light. Needed to convert mom. to energy.
Definition at line 59 of file BDSBunchPtc.hh.
Referenced by GetNextParticleLocal(), and SetOptions().
|
private |
File name.
Definition at line 55 of file BDSBunchPtc.hh.
Referenced by LoadPtcFile(), and SetDistrFile().
|
private |
Iterator counter for current ray.
Definition at line 56 of file BDSBunchPtc.hh.
Referenced by GetNextParticleLocal().
|
private |
Whether we've reset to loop over the file again.
Definition at line 58 of file BDSBunchPtc.hh.
Referenced by GetNextParticleLocal().
|
private |
Whether to only run the number of particles in the file.
Definition at line 53 of file BDSBunchPtc.hh.
Referenced by LoadPtcFile(), and SetOptions().
|
private |
Number of rays in file (1 counting).
Definition at line 54 of file BDSBunchPtc.hh.
Referenced by GetNextParticleLocal(), and LoadPtcFile().
|
private |
Data.
Definition at line 57 of file BDSBunchPtc.hh.
Referenced by GetNextParticleLocal(), and LoadPtcFile().