28#ifndef G4VChannelingFastSimCrystalData_h
29#define G4VChannelingFastSimCrystalData_h 1
38#include <unordered_map>
71 if(nel0<0.) {nel0=0.;}
258 std::vector <G4double>
fI0;
260 std::vector <G4double>
fRF;
276 std::vector <G4double>
fK2;
282 std::vector <G4double>
fKD;
287 std::vector <G4double>
fBB;
302 std::unordered_map<G4int, G4double> fMapBendingAngle;
305 std::unordered_map<G4int, G4double> fMapMiscutAngle;
308 std::unordered_map<G4int, G4ThreeVector> fMapCUAmplitudePeriodPhase;
Definition of the G4ChannelingFastSimInterpolation class The class includes spline interpolation coef...
G4double GetIF(G4double xx, G4double yy)
Get Spline Function.
std::vector< G4double > fBB
std::vector< G4double > fI0
virtual G4double AngleXShift(G4double z)=0
auxialiary function to transform the horizontal angle
std::vector< G4double > fTeta12
G4double IonizationLosses(G4double dz, G4int ielement)
ionization losses
std::vector< G4double > fK20
coefficients necessary for multiple and single coulomb scattering
G4double GetLindhardAngle()
Calculate the value of the Lindhard angle (!!! the value for a straight crystal)
G4double GetBeta()
get particle velocity/c
std::vector< G4ChannelingFastSimInterpolation * > fNucleiDensity
G4double GetMiscutAngle()
void SetGeometryParameters(const G4LogicalVolume *crystallogic)
set geometry parameters from current logical volume
std::vector< G4double > fK40
void SetCUParameters(const G4ThreeVector &litudePeriodPhase, const G4LogicalVolume *crystallogic)
std::vector< G4double > fPzu11
virtual void SetMaterialProperties(const G4Material *crystal, const G4String &lattice)=0
G4ChannelingFastSimInterpolation * fMinIonizationEnergy
std::vector< G4double > fBBDEXP
G4ChannelingFastSimInterpolation * fElectricFieldY
virtual G4ThreeVector ChannelChange(G4double &x, G4double &y, G4double &z)=0
change the channel if necessary, recalculate x o y
virtual G4ThreeVector CoordinatesFromBoxToLattice(const G4ThreeVector &pos0)=0
virtual G4double AngleXFromBoxToLattice(G4double tx, G4double z)=0
G4double ElectronDensity(G4double x, G4double y)
electron density function
void SetCrystallineUndulatorParameters(G4double amplitude, G4double period, G4double phase, const G4LogicalVolume *crystallogic)
G4ThreeVector fHalfDimBoundingBox
values related to the crystal geometry
G4double GetSimulationStep(G4double tx, G4double ty)
void SetBendingAngle(G4double tetab, const G4LogicalVolume *crystallogic)
std::vector< G4double > fKD
virtual G4double AngleXFromLatticeToBox(G4double tx, G4double z)=0
std::vector< G4double > fTetamax0
G4double MinIonizationEnergy(G4double x, G4double y)
minimum energy of ionization function
G4ChannelingFastSimInterpolation * fElectricFieldX
classes containing interpolation coefficients
G4double Ex(G4double x, G4double y)
electric fields produced by crystal lattice
G4ChannelingFastSimInterpolation * fElectronDensity
G4VChannelingFastSimCrystalData()
G4int fNelements
values related to the crystal lattice
G4ThreeVector CoulombElectronScattering(G4double eMinIonization, G4double electronDensity, G4double step)
multiple and single scattering on electrons
std::vector< G4double > fTeta10
angles necessary for multiple and single coulomb scattering
void SetParticleProperties(G4double etotal, G4double mp, G4double charge, G4bool ifhadron)
G4double NuclearDensity(G4double x, G4double y, G4int ielement)
nuclear density function (normalized to average nuclear density)
G4double GetCUx(G4double z)
get crystalline undulator wave function
virtual G4ThreeVector CoordinatesFromLatticeToBox(const G4ThreeVector &pos)=0
void SetVerbosity(G4int ver)
G4double Ey(G4double x, G4double y)
G4double GetMaxSimulationStep(G4double etotal, G4double mass)
Calculate maximal simulation step (standard value for channeling particles)
std::vector< G4double > fTetamax12
std::vector< G4double > fPu11
coefficients for multiple scattering suppression
G4ThreeVector CoulombAtomicScattering(G4double effectiveStep, G4double step, G4int ielement)
multiple and single scattering on screened potential
G4double GetCUtetax(G4double z)
get crystalline undulator wave 1st derivative function
std::vector< G4double > fRF
std::vector< G4double > fE1XBbb
std::vector< G4double > fTetamax2
std::vector< G4double > fK2
G4double GetCorrectionZ()
G4double GetBendingAngle()
virtual ~G4VChannelingFastSimCrystalData()
void SetMiscutAngle(G4double tetam, const G4LogicalVolume *crystallogic)
G4double GetCurv(G4double z)