namespace cascade; template <typename Sequence, typename Trajectory> void Cascade::Cascade() { kkk; kk; } template <typename Sequence, typename Trajectory> void Cascade::Init() { fStack.Init(); fProcesseList.Init(); } template <typename Sequence, typename Trajectory> void Cascade::Run() { if (!fStack.IsEmpty()) { if (!fStack.IsEmpty()) { Particle& p = fStack.GetNextParticle(); Step(p); } // do cascade equations, which can put new particles on Stack, // thus, the double loop // DoCascadeEquations(); // } } template <typename Sequence, typename Trajectory> void Cascade::Step(Particle& particle) { double nextStep = fProcesseList.MinStepLength(particle); Trajectory trajectory = fProcesseList.Transport(particle, nextStep); sequence.DoContinuous(particle, trajectory); sequence.DoDiscrete(particle); }