56 if(trackdata ==
nullptr){
96 G4double integrationLimit = std::fabs(posPost.
z() - posPre.
z());
98 if(integrationLimit > 0.){
148 G4double nud_temp =0., eld_temp =0.;
166 if(step + stepTot > integrationLimit){
167 step = integrationLimit - stepTot;
176 posk1 = step / mom.
z() * mom;
177 momk1 = step /
beta *
Z * efxy;
180 GetEF(aTrack,pos_temp =
pos + posk1 * 0.5,efxy);
181 posk2 = step / mom.
z() * (mom + momk1 * 0.5);
182 momk2 = step /
beta *
Z * efxy;
185 GetEF(aTrack,pos_temp =
pos + posk2 * 0.5,efxy);
186 posk3 = step / mom.
z() * (mom + momk2 * 0.5);
187 momk3 = step /
beta *
Z * efxy;
190 GetEF(aTrack,pos_temp =
pos + posk3,efxy);
191 posk4 = step / mom.
z() * (mom + momk3);
192 momk4 = step /
beta *
Z * efxy;
195 pos =
pos + oneSixth * (posk1 + 2.*posk2 + 2.*posk3 + posk4);
196 mom = mom + oneSixth * (momk1 + 2.*momk2 + 2.*momk3 + momk4);
228 if(nud_temp < 0.) {nud_temp = 0.;}
229 if(eld_temp < 0.) {eld_temp = 0.;}
231 nud += (step * nud_temp);
232 eld += (step * eld_temp);
237 }
while(stepTot<integrationLimit);
242 if(nud < 1.E-10) {nud = 1.E-10;}
243 if(eld < 1.E-10) {eld = 1.E-10;}
269 if(mom.
x() != 0.0 || mom.
y() != 0.0){
270 double xy2 = mom.
x() * mom.
x() + mom.
y()*mom.
y();
316 return osc_per * 0.01;
350 if(bModifiedTraj==
true){
static const G4double pos
G4double condition(const G4ErrorSymMatrix &m)
static constexpr double angstrom
CLHEP::Hep3Vector G4ThreeVector
Hep3Vector & rotate(double, const Hep3Vector &)
G4double GetIntSp(G4int index)
G4double GetEC(G4ThreeVector &)
G4ChannelingECHARM * GetEFY()
G4ChannelingECHARM * GetEFX()
virtual G4ThreeVector GetBR(G4ThreeVector &v3)
G4ChannelingECHARM * GetPot()
G4ChannelingECHARM * GetNuD()
G4ChannelingECHARM * GetElD()
void SetPosCh(G4ThreeVector a3vec)
void SetNuD(G4double aDouble)
void SetElD(G4double aDouble)
void SetEFY(G4double aDouble)
void SetEFX(G4double aDouble)
void SetMomCh(G4ThreeVector a3vec)
G4ChannelingTrackData * GetTrackData(const G4Track &)
void PosToLattice(G4StepPoint *step, G4ThreeVector &)
G4double fTransverseVariationMax
G4ChannelingMaterialData * GetMatData(const G4Track &aTrack)
G4bool UpdateParameters(const G4Track &)
G4StepPoint * GetPre(const G4Track &aTrack)
virtual G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
G4bool UpdateIntegrationStep(const G4Track &, G4ThreeVector &, G4double &)
G4double GetOscillationPeriod(const G4Track &aTrack)
G4ParticleDefinition * GetParticleDefinition(const G4Track &aTrack)
void GetEF(const G4Track &, G4ThreeVector &, G4ThreeVector &)
const G4ThreeVector & RotateToSolid(G4ThreeVector &dir) const
static G4bool IsLattice(G4LogicalVolume *aLV)
const G4ThreeVector & RotateToLattice(G4ThreeVector &dir) const
void ProposePolarization(G4double Px, G4double Py, G4double Pz)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
virtual void Initialize(const G4Track &)
G4double GetPDGCharge() const
const G4VTouchable * GetTouchable() const
G4ThreeVector GetMomentum() const
const G4ThreeVector & GetPosition() const
G4StepPoint * GetPreStepPoint() const
G4StepPoint * GetPostStepPoint() const
const G4RotationMatrix * GetRotation(G4int depth=0) const
const G4ThreeVector & GetTranslation(G4int depth=0) const
G4double GetVelocity() const
G4VPhysicalVolume * GetVolume() const
void SetAuxiliaryTrackInformation(G4int id, G4VAuxiliaryTrackInformation *info) const
G4VPhysicalVolume * GetNextVolume() const
G4VAuxiliaryTrackInformation * GetAuxiliaryTrackInformation(G4int id) const
const G4Step * GetStep() const
G4LogicalVolume * GetLogicalVolume() const
G4ParticleChange aParticleChange
static constexpr double c_light
G4double GetMax(const G4ToolsBaseHisto &baseHisto, G4int dimension)