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// G4ParticleChangeForTransport inline methods implementation
 
   28// Author: Hisaya Kurashige, 10 May 1998
 
   29// --------------------------------------------------------------------
 
   31inline void G4ParticleChangeForTransport::SetTouchableHandle(
 
   32  const G4TouchableHandle& fTouchable)
 
   34  theTouchableHandle = fTouchable;
 
   37inline const G4TouchableHandle&
 
   38G4ParticleChangeForTransport::GetTouchableHandle() const
 
   40  return theTouchableHandle;
 
   43inline void G4ParticleChangeForTransport::SetMaterialInTouchable(
 
   44  G4Material* fMaterial)
 
   46  theMaterialChange = fMaterial;
 
   49inline G4Material* G4ParticleChangeForTransport::GetMaterialInTouchable() const
 
   51  return theMaterialChange;
 
   54inline void G4ParticleChangeForTransport::SetMaterialCutsCoupleInTouchable(
 
   55  const G4MaterialCutsCouple* fMaterialCutsCouple)
 
   57  theMaterialCutsCoupleChange = fMaterialCutsCouple;
 
   60inline const G4MaterialCutsCouple*
 
   61G4ParticleChangeForTransport::GetMaterialCutsCoupleInTouchable() const
 
   63  return theMaterialCutsCoupleChange;
 
   66inline void G4ParticleChangeForTransport::SetSensitiveDetectorInTouchable(
 
   67  G4VSensitiveDetector* fSensitiveDetector)
 
   69  theSensitiveDetectorChange = fSensitiveDetector;
 
   72inline G4VSensitiveDetector*
 
   73G4ParticleChangeForTransport::GetSensitiveDetectorInTouchable() const
 
   75  return theSensitiveDetectorChange;
 
   78inline G4bool G4ParticleChangeForTransport::GetMomentumChanged() const
 
   80  return isMomentumChanged;
 
   83inline void G4ParticleChangeForTransport::SetMomentumChanged(G4bool b)
 
   85  isMomentumChanged = b;
 
   88//----------------------------------------------------------------
 
   89// functions for Initialization
 
   92inline void G4ParticleChangeForTransport::Initialize(const G4Track& track)
 
   94  // use base class's method at first
 
   95  InitializeStatusChange(track);
 
   96  //  InitializeLocalEnergyDeposit(track);
 
   97  InitializeSteppingControl(track);
 
   98  //  InitializeTrueStepLength(track);
 
   99  //  InitializeSecondaries(track);
 
  101  // set Energy/Momentum etc. equal to those of the parent particle
 
  102  const G4DynamicParticle* pParticle = track.GetDynamicParticle();
 
  103  //  theEnergyChange          = pParticle->GetKineticEnergy();
 
  104  //  theMomentumChange        = pParticle->GetMomentumDirection();
 
  105  theVelocityChange     = track.GetVelocity();
 
  106  isVelocityChanged     = false;
 
  107  thePolarizationChange = pParticle->GetPolarization();
 
  108  //  theProperTimeChange      = pParticle->GetProperTime();
 
  110  // set Position/Time etc. equal to those of the parent track
 
  111  //  thePositionChange      = track.GetPosition();
 
  112  // set TimeChange equal to local time of the parent track
 
  113  theTimeChange = track.GetLocalTime();
 
  114  // set initial Local/Global time of the parent track
 
  115  theLocalTime0  = track.GetLocalTime();
 
  116  theGlobalTime0 = track.GetGlobalTime();
 
  118  // set touchable equal to the next touchable of the parent track
 
  119  // not set as for now
 
  120  // theTouchableChange     = track.GetNextTouchable();
 
  122  // NOTE: almost nothing is initialized here.
 
  123  // theMomentumChange, theProperTimeChange, thePositionChange
 
  124  // and theTimeChange are set by G4Transportation::AlongStepDoIt();
 
  125  // the others are not needed.
 
  126  // Take care when implementing the PostStep related things!
 
  130inline void G4ParticleChangeForTransport::SetPointerToVectorOfAuxiliaryPoints(
 
  131  std::vector<G4ThreeVector>* theNewVectorPointer)
 
  133  fpVectorOfAuxiliaryPointsPointer = theNewVectorPointer;
 
  136inline std::vector<G4ThreeVector>*
 
  137G4ParticleChangeForTransport::GetPointerToVectorOfAuxiliaryPoints() const
 
  139  return fpVectorOfAuxiliaryPointsPointer;