41 fTransverseVariationMax(2.
E-2 * CLHEP::
angstrom),
59 if(trackdata ==
nullptr){
82 pos = ((*theTouchable->
GetRotation()).inverse())(pos);
99 G4double integrationLimit = std::fabs(posPost.
z() - posPre.
z());
101 if(integrationLimit > 0.){
151 G4double nud_temp =0., eld_temp =0.;
169 if(step + stepTot > integrationLimit){
170 step = integrationLimit - stepTot;
178 GetEF(aTrack,pos,efxy);
179 posk1 = step / mom.
z() * mom;
180 momk1 = step / beta * Z * efxy;
183 GetEF(aTrack,pos_temp = pos + posk1 * 0.5,efxy);
184 posk2 = step / mom.
z() * (mom + momk1 * 0.5);
185 momk2 = step / beta * Z * efxy;
188 GetEF(aTrack,pos_temp = pos + posk2 * 0.5,efxy);
189 posk3 = step / mom.
z() * (mom + momk2 * 0.5);
190 momk3 = step / beta * Z * efxy;
193 GetEF(aTrack,pos_temp = pos + posk3,efxy);
194 posk4 = step / mom.
z() * (mom + momk3);
195 momk4 = step / beta * Z * efxy;
198 pos = pos + oneSixth * (posk1 + 2.*posk2 + 2.*posk3 + posk4);
199 mom = mom + oneSixth * (momk1 + 2.*momk2 + 2.*momk3 + momk4);
231 if(nud_temp < 0.) {nud_temp = 0.;}
232 if(eld_temp < 0.) {eld_temp = 0.;}
234 nud += (step * nud_temp);
235 eld += (step * eld_temp);
240 }
while(stepTot<integrationLimit);
245 if(nud < 1.
E-10) {nud = 1.E-10;}
246 if(eld < 1.
E-10) {eld = 1.E-10;}
272 if(mom.
x() != 0.0 || mom.
y() != 0.0){
273 double xy2 = mom.
x() * mom.
x() + mom.
y()*mom.
y();
319 return osc_per * 0.01;
353 if(bModifiedTraj==
true){
static G4bool IsLattice(G4LogicalVolume *aLV)
const G4ThreeVector & GetTranslation(G4int depth=0) const
G4double GetIntSp(G4int index)
const G4VTouchable * GetTouchable() const
CLHEP::Hep3Vector G4ThreeVector
void ProposePolarization(G4double Px, G4double Py, G4double Pz)
G4double GetMax(const G4ToolsBaseHisto &baseHisto, G4int dimension)
static const G4double pos
G4LogicalVolume * GetLogicalVolume() const
const G4ThreeVector & RotateToLattice(G4ThreeVector &dir) const
G4StepPoint * GetPreStepPoint() const
G4ChannelingECHARM * GetElD()
void PosToLattice(G4StepPoint *step, G4ThreeVector &)
G4ParticleDefinition * GetParticleDefinition(const G4Track &aTrack)
G4ChannelingECHARM * GetEFX()
void GetEF(const G4Track &, G4ThreeVector &, G4ThreeVector &)
G4double GetPDGCharge() const
void SetMomCh(G4ThreeVector a3vec)
G4double condition(const G4ErrorSymMatrix &m)
G4VPhysicalVolume * GetNextVolume() const
G4double GetEC(G4ThreeVector &)
G4ParticleChange aParticleChange
void SetEFX(G4double aDouble)
static G4int GetIndex(const G4String &)
void SetPosCh(G4ThreeVector a3vec)
G4double GetOscillationPeriod(const G4Track &aTrack)
virtual G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *)
G4ChannelingTrackData * GetTrackData(const G4Track &)
const G4RotationMatrix * GetRotation(G4int depth=0) const
virtual G4ThreeVector GetBR(G4ThreeVector &v3)
virtual void Initialize(const G4Track &)
G4ChannelingECHARM * GetPot()
G4ChannelingECHARM * GetNuD()
const G4ThreeVector & GetPosition() const
G4StepPoint * GetPostStepPoint() const
const G4Step * GetStep() const
G4double GetVelocity() const
Hep3Vector & rotate(double, const Hep3Vector &)
G4StepPoint * GetPre(const G4Track &aTrack)
void SetNuD(G4double aDouble)
G4VAuxiliaryTrackInformation * GetAuxiliaryTrackInformation(G4int idx) const
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void SetEFY(G4double aDouble)
static constexpr double c_light
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
void SetElD(G4double aDouble)
G4ChannelingMaterialData * GetMatData(const G4Track &aTrack)
void SetAuxiliaryTrackInformation(G4int idx, G4VAuxiliaryTrackInformation *info) const
static constexpr double angstrom
G4ThreeVector GetMomentum() const
G4ChannelingECHARM * GetEFY()
G4double fTransverseVariationMax
G4bool UpdateParameters(const G4Track &)
G4bool UpdateIntegrationStep(const G4Track &, G4ThreeVector &, G4double &)
const G4ThreeVector & RotateToSolid(G4ThreeVector &dir) const
G4VPhysicalVolume * GetVolume() const
static G4int Register(const G4String &)