2 // ********************************************************************
 
    3 // * License and Disclaimer                                           *
 
    5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
 
    6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
 
    7 // * conditions of the Geant4 Software License,  included in the file *
 
    8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
 
    9 // * include a list of copyright holders.                             *
 
   11 // * Neither the authors of this software system, nor their employing *
 
   12 // * institutes,nor the agencies providing financial support for this *
 
   13 // * work  make  any representation or  warranty, express or implied, *
 
   14 // * regarding  this  software system or assume any liability for its *
 
   15 // * use.  Please see the license in the file  LICENSE  and URL above *
 
   16 // * for the full disclaimer and the limitation of liability.         *
 
   18 // * This  code  implementation is the result of  the  scientific and *
 
   19 // * technical work of the GEANT4 collaboration.                      *
 
   20 // * By using,  copying,  modifying or  distributing the software (or *
 
   21 // * any work based  on the software)  you  agree  to acknowledge its *
 
   22 // * use  in  resulting  scientific  publications,  and indicate your *
 
   23 // * acceptance of all terms of the Geant4 Software license.          *
 
   24 // ********************************************************************
 
   26 // $Id: G4MagIntegratorStepper.icc 66356 2012-12-18 09:02:32Z gcosmo $
 
   30 G4EquationOfMotion* G4MagIntegratorStepper::GetEquationOfMotion()
 
   36  G4MagIntegratorStepper::SetEquationOfMotion(G4EquationOfMotion* newEquation)
 
   38   if( newEquation != 0 )
 
   40     fEquation_Rhs= newEquation;
 
   45 G4int G4MagIntegratorStepper::GetNumberOfVariables() const
 
   47   return fNoIntegrationVariables;
 
   52 G4int G4MagIntegratorStepper::GetNumberOfStateVariables() const
 
   54   return fNoStateVariables;
 
   58 void G4MagIntegratorStepper::RightHandSide( const  double y[], double dydx[] )   
 
   60   fEquation_Rhs-> RightHandSide(y, dydx);
 
   64 void G4MagIntegratorStepper::NormaliseTangentVector( G4double vec[6] )
 
   66   G4double drds2 = vec[3]*vec[3]+vec[4]*vec[4]+vec[5]*vec[5];
 
   68   if( std::fabs(drds2 - 1.0) > 1.e-14 )
 
   70     G4double normx = 1.0 / std::sqrt(drds2);
 
   71     for(G4int i=3;i<6;i++) { vec[i] *= normx; }
 
   76 void G4MagIntegratorStepper::NormalisePolarizationVector( G4double vec[12] )
 
   78   G4double drds2 = vec[9]*vec[9]+vec[10]*vec[10]+vec[11]*vec[11];
 
   82     if( std::fabs(drds2 - 1.0) > 1.e-14 )
 
   84       G4double normx = 1.0 / std::sqrt(drds2);
 
   85       for(G4int i=9;i<12;i++)  { vec[i] *= normx; }