6#include "G4DynamicParticle.hh"
7#include "G4ElectroMagneticField.hh"
21 m_field(dynamic_cast<
const G4ElectroMagneticField*>(field)),
31 if (field != 0 &&
m_field == 0) {
32 G4Exception(
"HyperbolaStepper::HyperbolaStepper",
"QuirkNonEM", FatalErrorInArgument,
"Non-EM fields not supported");
40 HyperbolaStep next = m_currStep;
41 next.PrepareNextStep();
42 if (next.IsBoostLimited()) break;
43 m_steps.push_back(next);
45 m_currStep.Step(m_currStep.GetMaxLength());
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;
82 for (G4int i = 0; i <
m_NUM_VARS; i++) yerr[i] = 0;
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;
107 m_string.GetReactionForce()->PushStringVector(
m_steps[i].GetStringOut());
109 if (
m_debug) G4cout <<
"HyperbolaStepper: pushing vector " <<
m_currStep.GetStringOut().lv() << G4endl;
Header file for AthHistogramAlgorithm.
HyperbolaStepper(InfracolorForce &string, const G4Track &track, const G4Field *field=0)
virtual G4double DistChord() const
void SetCurrStep(G4double length)
G4double GetCharge() const
InfracolorForce & m_string
const G4double m_maxExpRapidity
virtual void Stepper(const G4double y[], const G4double[], G4double h, G4double yout[], G4double yerr[])
const G4ElectroMagneticField *const m_field
G4double GetMaxExpRapidity() const
static const G4int m_NUM_VARS
virtual ~HyperbolaStepper()
void Update(G4FieldTrack &fieldTrack, G4bool forceStep)
std::vector< HyperbolaStep >::size_type m_nPrevSteps
std::vector< HyperbolaStep > m_steps
const G4LorentzVector m_startMomentum
while((inf=(TStreamerInfo *) nextinfo()) !=0)