musrsim/geant4/TaoLEMuSR/G4Modified/G4El_MagEqRhs.cc
2008-03-20 09:23:20 +00:00

77 lines
1.6 KiB
C++

#include "G4El_MagEqRhs.hh"
#include "G4Mag_SpinEqRhs.hh"
#include "G4MagneticField.hh"
#include "G4ThreeVector.hh"
#include "G4El_UsualEqRhs.hh"
#include "G4ElectricField.hh"
#include "G4ios.hh"
G4El_MagEqRhs::G4El_MagEqRhs( G4Mag_EqRhs *Meq, G4El_EqRhs *Eeq,G4Field* field)
:G4EquationOfMotion(field)
{
fMagEq=Meq;
fElEq=Eeq;
}
G4El_MagEqRhs::~G4El_MagEqRhs()
{;}
void G4El_MagEqRhs::RightHandSide( const G4double y[],
G4double dydx[] )const
{
G4double MagField[3];
G4double ElField[3];
G4double dydx1[12];
G4double dydx2[12];
G4double PositionAndTime[4];
// Position
PositionAndTime[0] = y[0];
PositionAndTime[1] = y[1];
PositionAndTime[2] = y[2];
// Global Time
PositionAndTime[3] = y[7];
// Get Respective Field Values
fMagEq->GetFieldValue(PositionAndTime, MagField) ;
fElEq->GetFieldValue(PositionAndTime, ElField) ;
fMagEq->EvaluateRhsGivenB( y, MagField, &dydx1[0] );
fElEq->EvaluateRhsGivenB( y, ElField, &dydx2[0] );
G4int i;
i=0;
for(i=0;i==18;i++)
{
dydx[i] = dydx1[i]+dydx2[i];
}
}
void G4El_MagEqRhs::SetChargeMomentumMass( G4double particleCharge, // e+ units
G4double MomentumXc, // MomentumXc
G4double mass) // particleMass
{
fMagEq->SetChargeMomentumMass( particleCharge, MomentumXc , mass);
fElEq->SetChargeMomentumMass( particleCharge,MomentumXc , mass);
}
void G4El_MagEqRhs::EvaluateRhsGivenB( const G4double y[],
const G4double B[3],
G4double dydx[] ) const
{}