controlled_step_result try_step( System system , const StateIn &in , const DerivIn &dxdt , time_type &t , StateOut &out , time_type &dt )
 {
     m_xerr_resizer.adjust_size( in , boost::bind( &generic_controlled_stepper::template resize_m_xerr_impl< StateIn > , boost::ref( *this ) , _1 ) );
     m_stepper.do_step( system , in , dxdt , t , out , dt , m_xerr.m_v );
     value_type error = m_error_checker.error( in , out , dxdt , m_xerr.m_v , dt );
     return m_controller( error , t , dt , m_stepper.stepper_order() , m_stepper.error_order() );
 }
	/*!
	* \brief Calls the controller function
	*
	* \param group Particle group responsible of the particles
	* \param mapper Particle mapper, allowing access to the particle data
	* \param startId The first ID of the particle to update (inclusive)
	* \param endId The last ID of the particle to update (inclusive)
	* \param elapsedTime Elapsed time in seconds since the last update
	*/
	void ParticleFunctionController::Apply(ParticleGroup& group, ParticleMapper& mapper, unsigned int startId, unsigned int endId, float elapsedTime)
	{
		m_controller(group, mapper, startId, endId, elapsedTime);
	}