

#ifndef LEMuSRELMAG_SPIN_EQRHS
#define LEMuSRELMAG_SPIN_EQRHS

#include "G4Types.hh"
#include "G4Mag_EqRhs.hh"

class G4MagneticField;

class LEMuSRElMag_SpinEqRhs : public G4Mag_EqRhs
{
   public:  // with description

     LEMuSRElMag_SpinEqRhs( G4MagneticField* MagField );
    ~LEMuSRElMag_SpinEqRhs();
       // Constructor and destructor. No actions.

     void SetChargeMomentumMass(G4double particleCharge, // in e+ units
                                G4double MomentumXc,
                                G4double mass); 

     void EvaluateRhsGivenB( const  G4double y[],
                             const  G4double B[3],
                                    G4double dydx[] ) const;
       // Given the value of the magnetic field B, this function 
       // calculates the value of the derivative dydx.

   private:

     G4double omegac;
     G4double anomaly;
     G4double ParticleCharge;

     G4double E;
     G4double gamma, m_mass;
     G4double beta; 
  G4double cst;
};

#endif /* LEMuSRELMAG_SPIN_EQRHS */
