|
ATLAS Offline Software
|
Go to the documentation of this file.
6 #include "G4DynamicParticle.hh"
7 #include "G4ElectroMagneticField.hh"
21 m_field(dynamic_cast<
const G4ElectroMagneticField*>(
field)),
22 m_mass(
track.GetDynamicParticle()->GetMass()),
23 m_charge(
track.GetDynamicParticle()->GetCharge()),
24 m_startMomentum(
track.GetDynamicParticle()->Get4Momentum()),
25 m_maxExpRapidity(string.GetMaxExpRapidity()),
27 m_currStep(this, string,
track),
32 G4Exception(
"HyperbolaStepper::HyperbolaStepper",
"QuirkNonEM", FatalErrorInArgument,
"Non-EM fields not supported");
41 next.PrepareNextStep();
42 if (
next.IsBoostLimited())
break;
51 delete GetEquationOfMotion();
56 std::vector<HyperbolaStep>::size_type
i = 0;
70 G4int maxvar = GetNumberOfStateVariables();
71 for (G4int
i = 0;
i < maxvar;
i++) yout[
i] =
y[
i];
73 if (
m_debug) G4cout <<
"HyperbolaStepper: asked to move " <<
h << G4endl;
74 if (
m_debug) G4cout <<
"HyperbolaStepper: start = " <<
y[0] <<
", " <<
y[1] <<
", " <<
y[2] <<
" [" <<
y[8] <<
"]" << G4endl;
79 if (
m_debug) G4cout <<
"HyperbolaStepper: end = " << yout[0] <<
", " << yout[1] <<
", " << yout[2] <<
" [" << yout[8] <<
"]" << G4endl;
98 fieldTrack.UpdateFourMomentum(
p.t() -
m_mass,
p.vect().unit());
105 for (std::vector<HyperbolaStep>::size_type
i = 0;
i <
m_nPrevSteps;
i++) {
106 if (
m_debug) G4cout <<
"HyperbolaStepper: pushing vector " <<
m_steps[
i].GetStringOut().lv() << G4endl;
const StringVector & GetStringOut() const
G4double GetLength() const
std::deque< StringVector >::const_iterator GetStringPtr() const
const G4ElectroMagneticField *const m_field
std::vector< HyperbolaStep >::size_type m_nPrevSteps
G4double GetFracLeft() const
bool const RAWDATA *ch2 const
void Update(G4FieldTrack &fieldTrack, G4bool forceStep)
void PopTo(std::deque< StringVector >::const_iterator stringPtr, G4double fracLeft)
void PushStringVector(const StringVector &v)
G4double GetMaxLength() const
const G4LorentzVector & GetMomentum() const
void SetCurrStep(G4double length)
HyperbolaStepper(InfracolorForce &string, const G4Track &track, const G4Field *field=0)
virtual G4double DistChord() const
const InfracolorForce * GetReactionForce() const
std::vector< HyperbolaStep > m_steps
InfracolorForce & m_string
virtual void Stepper(const G4double y[], const G4double[], G4double h, G4double yout[], G4double yerr[])
static const G4int m_NUM_VARS
G4LorentzVector lv() const
void Step(G4double length)
virtual ~HyperbolaStepper()