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

Stepper that calculates trajectory through uniform magnetic field. More...

#include <BDSIntegratorDipoleRodrigues.hh>

Inheritance diagram for BDSIntegratorDipoleRodrigues:
Inheritance graph
Collaboration diagram for BDSIntegratorDipoleRodrigues:
Collaboration graph

Public Member Functions

 BDSIntegratorDipoleRodrigues (BDSMagnetStrength const *strength, G4double brho, G4Mag_EqRhs *eqOfMIn)
 
virtual void Stepper (const G4double yIn[], const G4double dydx[], const G4double h, G4double yOut[], G4double yErr[])
 
- Public Member Functions inherited from BDSIntegratorMag
 BDSIntegratorMag (G4Mag_EqRhs *eqOfMIn, G4int nVariablesIn)
 
virtual G4double DistChord () const
 Estimate maximum distance of curved solution and chord. More...
 
virtual G4int IntegratorOrder () const
 Geant4 requires that the integrator order must be supplied by the derived class. More...
 
BDSIntegratorMagoperator= (const BDSIntegratorMag &)=delete
 Assignment and copy constructor not implemented nor used.
 
 BDSIntegratorMag (BDSIntegratorMag &)=delete
 Assignment and copy constructor not implemented nor used.
 
- Public Member Functions inherited from BDSIntegratorDrift
void AdvanceDriftMag (const G4double yIn[], const G4double h, G4double yOut[], G4double yErr[]) const
 Error array [6] all 0. More...
 
void AdvanceDriftMag (const G4double yIn[], const G4ThreeVector &unitMomentum, const G4double h, G4double yOut[], G4double yErr[]) const
 
- Public Member Functions inherited from BDSAuxiliaryNavigator
G4VPhysicalVolume * LocateGlobalPointAndSetup (const G4ThreeVector &point, const G4ThreeVector *direction=nullptr, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true, G4bool useCurvilinear=true) const
 A wrapper for the underlying static navigator instance located within this class. More...
 
G4VPhysicalVolume * LocateGlobalPointAndSetup (G4Step const *const step, G4bool useCurvilinear=true) const
 
BDSStep ConvertToLocal (G4Step const *const step, G4bool useCurvilinear=true) const
 
BDSStep ConvertToLocal (const G4ThreeVector &globalPosition, const G4ThreeVector &globalDirection, const G4double stepLength=0, const G4bool useCurvilinear=true, const G4double marginLength=1) const
 
BDSStep ConvertToGlobalStep (const G4ThreeVector &localPosition, const G4ThreeVector &localDirection, const G4bool useCurvilinear=true) const
 
G4ThreeVector ConvertToLocal (const G4double globalPoint[3], const G4bool useCurvilinear=true) const
 
G4ThreeVector ConvertToLocal (const G4ThreeVector &globalPosition, const G4bool useCurvilinear=true) const
 Vector version - see notes above. More...
 
G4ThreeVector ConvertToLocalNoSetup (const G4ThreeVector &globalPosition, const G4bool useCurvilinear=true) const
 Similar to above function but does NOT initialise the transforms. More...
 
G4ThreeVector ConvertAxisToLocal (const G4ThreeVector &globalAxis, const G4bool useCurvilinear=true) const
 
G4ThreeVector ConvertAxisToLocal (const G4double globalPoint[3], const G4double globalAxis[3], const G4bool useCurvilinear=true) const
 
G4ThreeVector ConvertAxisToLocal (const G4ThreeVector &globalPoint, const G4ThreeVector &globalAxis, const G4bool useCurvilinear=true) const
 Vector version. More...
 
G4ThreeVector ConvertAxisToGlobal (const G4ThreeVector &localAxis, const G4bool useCurvilinear=true) const
 
std::pair< G4ThreeVector, G4ThreeVector > ConvertAxisToGlobal (const std::pair< G4ThreeVector, G4ThreeVector > &localAxis, const G4bool useCurvilinear=true) const
 
G4ThreeVector ConvertToGlobal (const G4ThreeVector &localPosition, const G4bool useCurvilinear=true) const
 
G4ThreeVector ConvertAxisToGlobal (const G4ThreeVector &globalPosition, const G4ThreeVector &localAxis, const G4bool useCurvilinear=true) const
 
G4ThreeVector ConvertToGlobal (const G4ThreeVector &globalPosition, const G4ThreeVector &localPosition, const G4bool useCurvilinear=true) const
 
BDSStep GlobalToCurvilinear (const G4double fieldArcLength, const G4ThreeVector &unitField, const G4double angle, const G4ThreeVector &position, const G4ThreeVector &unitMomentum, const G4double h, const G4bool useCurvilinearWorld, const G4double FCof, const G4double tilt=0)
 
BDSStep GlobalToCurvilinear (const G4ThreeVector &position, const G4ThreeVector &unitMomentum, const G4double h, const G4bool useCurvilinearWorld)
 
BDSStep CurvilinearToGlobal (const G4ThreeVector &localPosition, const G4ThreeVector &localMomentum, const G4bool useCurvilinearWorld)
 
BDSStep CurvilinearToGlobal (const G4double fieldArcLength, const G4ThreeVector &unitField, const G4double angle, const G4ThreeVector &CLPosition, const G4ThreeVector &CLMomentum, const G4bool useCurvilinearWorld, const G4double FCof, const G4double tilt=0)
 

Protected Member Functions

void AdvanceHelix (const G4double yIn[], const G4double dydx[], G4double h, G4double yOut[], G4double yErr[])
 Calculate the new particle coordinates. More...
 
std::pair< G4ThreeVector, G4ThreeVector > UpdatePandR (G4double rho, G4double h, G4ThreeVector localPos, G4ThreeVector localMomUnit)
 
- Protected Member Functions inherited from BDSIntegratorMag
void ConvertToGlobal (const G4ThreeVector &localPos, const G4ThreeVector &localMom, G4double yOut[], G4double yErr[], const G4double momScaling=1.0)
 scaling of momentum in case localMom is a unit vector More...
 
void SetDistChord (G4double distChordIn)
 Setter for distChord to private member. More...
 

Protected Attributes

G4double cOverGeV
 Scaling factor in brho calculation. More...
 
const G4double angle
 Angle that the dipole induces in the reference trajectory. More...
 
const G4double length
 Arc length of the magnetic field. More...
 
G4double bField
 Uniform magnetic field in global Y direction. More...
 
BDSMagnetStrength const * strength
 Magnet strength object needed by curvilinear transforms. More...
 
- Protected Attributes inherited from BDSIntegratorMag
G4Mag_EqRhs * eqOfM
 
const G4int nVariables
 Cache of the number of variables. More...
 
G4MagIntegratorStepper * backupStepper
 
G4bool zeroStrength
 
G4double backupStepperMomLimit
 
- Protected Attributes inherited from BDSAuxiliaryNavigator
G4AffineTransform globalToLocal
 
G4AffineTransform localToGlobal
 
G4AffineTransform globalToLocalCL
 
G4AffineTransform localToGlobalCL
 
G4bool bridgeVolumeWasUsed
 

Private Attributes

G4ThreeVector yInitial
 Data stored in order to find the chord. More...
 
G4ThreeVector yMidPoint
 
G4ThreeVector yFinal
 
const G4double minimumRadiusOfCurvature
 Minimum tolerable radius of curvature - used to prevent spiraling particles. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from BDSAuxiliaryNavigator
static void AttachWorldVolumeToNavigator (G4VPhysicalVolume *worldPVIn)
 Setup the navigator w.r.t. to a world volume - typically real world. More...
 
static void AttachWorldVolumeToNavigatorCL (G4VPhysicalVolume *curvilinearWorldPVIn)
 
static void RegisterCurvilinearBridgeWorld (G4VPhysicalVolume *curvilinearBridgeWorldPVIn)
 
static void ResetNavigatorStates ()
 
- Static Public Attributes inherited from BDSIntegratorMag
static G4double thinElementLength = -1
 
static G4double nominalMatrixRelativeMomCut = -1
 
static G4bool currentTrackIsPrimary = false
 
- Static Protected Attributes inherited from BDSAuxiliaryNavigator
static G4Navigator * auxNavigator = new G4Navigator()
 
static G4Navigator * auxNavigatorCL = new G4Navigator()
 
static G4Navigator * auxNavigatorCLB = new G4Navigator()
 

Detailed Description

Stepper that calculates trajectory through uniform magnetic field.

This calculates the coordinates of a particle moving through a dipole field. This ignores the field value supplied from Geant4 and uses its own field and quadrupole gradient from the BDSMagnetStrength instance supplied w.r.t. the rigidity also supplied.

Originally part of BDSIM by many authors.

Definition at line 43 of file BDSIntegratorDipoleRodrigues.hh.

Constructor & Destructor Documentation

◆ BDSIntegratorDipoleRodrigues()

BDSIntegratorDipoleRodrigues::BDSIntegratorDipoleRodrigues ( BDSMagnetStrength const *  strength,
G4double  brho,
G4Mag_EqRhs *  eqOfMIn 
)

Definition at line 35 of file BDSIntegratorDipoleRodrigues.cc.

◆ ~BDSIntegratorDipoleRodrigues()

virtual BDSIntegratorDipoleRodrigues::~BDSIntegratorDipoleRodrigues ( )
inlinevirtual

Definition at line 50 of file BDSIntegratorDipoleRodrigues.hh.

Member Function Documentation

◆ AdvanceHelix()

void BDSIntegratorDipoleRodrigues::AdvanceHelix ( const G4double  yIn[],
const G4double  dydx[],
G4double  h,
G4double  yOut[],
G4double  yErr[] 
)
protected

◆ Stepper()

void BDSIntegratorDipoleRodrigues::Stepper ( const G4double  yIn[],
const G4double  dydx[],
const G4double  h,
G4double  yOut[],
G4double  yErr[] 
)
virtual

Stepper for this integrator. Calculates the new coordinates of a particle through a uniform magnetic field.

Definition at line 135 of file BDSIntegratorDipoleRodrigues.cc.

References AdvanceHelix(), and BDSIntegratorMag::nVariables.

Here is the call graph for this function:

◆ UpdatePandR()

std::pair< G4ThreeVector, G4ThreeVector > BDSIntegratorDipoleRodrigues::UpdatePandR ( G4double  rho,
G4double  h,
G4ThreeVector  localPos,
G4ThreeVector  localMomUnit 
)
protected

Definition at line 148 of file BDSIntegratorDipoleRodrigues.cc.

Field Documentation

◆ angle

const G4double BDSIntegratorDipoleRodrigues::angle
protected

Angle that the dipole induces in the reference trajectory.

Definition at line 72 of file BDSIntegratorDipoleRodrigues.hh.

◆ bField

G4double BDSIntegratorDipoleRodrigues::bField
protected

Uniform magnetic field in global Y direction.

Definition at line 78 of file BDSIntegratorDipoleRodrigues.hh.

Referenced by AdvanceHelix().

◆ cOverGeV

G4double BDSIntegratorDipoleRodrigues::cOverGeV
protected

Scaling factor in brho calculation.

Definition at line 69 of file BDSIntegratorDipoleRodrigues.hh.

Referenced by AdvanceHelix().

◆ length

const G4double BDSIntegratorDipoleRodrigues::length
protected

Arc length of the magnetic field.

Definition at line 75 of file BDSIntegratorDipoleRodrigues.hh.

◆ minimumRadiusOfCurvature

const G4double BDSIntegratorDipoleRodrigues::minimumRadiusOfCurvature
private

Minimum tolerable radius of curvature - used to prevent spiraling particles.

Definition at line 93 of file BDSIntegratorDipoleRodrigues.hh.

Referenced by AdvanceHelix().

◆ strength

BDSMagnetStrength const* BDSIntegratorDipoleRodrigues::strength
protected

Magnet strength object needed by curvilinear transforms.

Definition at line 81 of file BDSIntegratorDipoleRodrigues.hh.

◆ yFinal

G4ThreeVector BDSIntegratorDipoleRodrigues::yFinal
private

Definition at line 90 of file BDSIntegratorDipoleRodrigues.hh.

◆ yInitial

G4ThreeVector BDSIntegratorDipoleRodrigues::yInitial
private

Data stored in order to find the chord.

Definition at line 90 of file BDSIntegratorDipoleRodrigues.hh.

◆ yMidPoint

G4ThreeVector BDSIntegratorDipoleRodrigues::yMidPoint
private

Definition at line 90 of file BDSIntegratorDipoleRodrigues.hh.


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