// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ParticleChangeForTransport.icc,v 1.5 2000/05/16 00:34:27 kurasige Exp $
// GEANT4 tag $Name: geant4-02-00 $
//
// 

inline 
 void G4ParticleChangeForTransport::SetTouchableChange(const G4VTouchable* fTouchable)
{
  theTouchableChange =   fTouchable;
}

inline 
 const G4VTouchable* G4ParticleChangeForTransport::GetTouchableChange() const
{
  return theTouchableChange;
}

inline 
 void G4ParticleChangeForTransport::SetMaterialChange(G4Material* fMaterial)
{
  theMaterialChange =   fMaterial;
}

inline 
 G4Material* G4ParticleChangeForTransport::GetMaterialChange() const
{
  return theMaterialChange;
}

inline
G4bool G4ParticleChangeForTransport::GetMomentumChanged() const 
{
  return isMomentumChanged;
}

inline
void G4ParticleChangeForTransport::SetMomentumChanged(G4bool b)
{
  isMomentumChanged= b;
}

//----------------------------------------------------------------
// functions for Initialization
//

inline void G4ParticleChangeForTransport::Initialize(const G4Track& track)
{
  // use base class's method at first
  InitializeStatusChange(track);
//  InitializeLocalEnergyDeposit(track);
  InitializeSteppingControl(track);
//  InitializeTrueStepLength(track);
//  InitializeSecondaries(track);

  // set Energy/Momentum etc. equal to those of the parent particle
  const G4DynamicParticle*  pParticle = track.GetDynamicParticle();
//  theEnergyChange          = pParticle->GetKineticEnergy();
//  theMomentumChange        = pParticle->GetMomentumDirection();
    thePolarizationChange    = pParticle->GetPolarization();
//  theProperTimeChange      = pParticle->GetProperTime();

  // set Position/Time etc. equal to those of the parent track
//  thePositionChange      = track.GetPosition();
//  theTimeChange          = track.GetGlobalTime();

  // set touchable equal to the next touchable of the parent track
  // not set as for now
  //theTouchableChange     = track.GetNextTouchable();

// So almost nothing is initialized here.
// theMomentumChange, theProperTimeChange, thePositionChange and theTimeChange
// are set by G4Transportation::AlongStepDoIt;
// the others are not needed.
// Take care when implementing the PostStep related things!
// (P. Urban)
}


