Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 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. * 10 // * * 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. * 17 // * * 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 // ******************************************************************** 25 // 26 // G4ParticleChange inline methods implementation 27 // 28 // Author: Hisaya Kurashige, 23 March 1998 29 // -------------------------------------------------------------------- 30 31 inline G4Step* G4ParticleChange::UpdateStepInfo(G4Step* pStep) 32 { 33 return G4VParticleChange::UpdateStepInfo(pStep); 34 } 35 36 inline G4double G4ParticleChange::GetEnergy() const { return theEnergyChange; } 37 38 inline void G4ParticleChange::ProposeEnergy(G4double finalEnergy) 39 { 40 theEnergyChange = finalEnergy; 41 } 42 43 inline G4double G4ParticleChange::GetVelocity() const 44 { 45 return theVelocityChange; 46 } 47 48 inline void G4ParticleChange::ProposeVelocity(G4double finalVelocity) 49 { 50 theVelocityChange = finalVelocity; 51 isVelocityChanged = true; 52 } 53 54 inline const G4ThreeVector* G4ParticleChange::GetMomentumDirection() const 55 { 56 return &theMomentumDirectionChange; 57 } 58 59 inline void G4ParticleChange::ProposeMomentumDirection(G4double Px, G4double Py, 60 G4double Pz) 61 { 62 theMomentumDirectionChange.setX(Px); 63 theMomentumDirectionChange.setY(Py); 64 theMomentumDirectionChange.setZ(Pz); 65 } 66 67 inline void G4ParticleChange::ProposeMomentumDirection(const G4ThreeVector& P) 68 { 69 theMomentumDirectionChange = P; 70 } 71 72 inline const G4ThreeVector* G4ParticleChange::GetPolarization() const 73 { 74 return &thePolarizationChange; 75 } 76 77 inline void G4ParticleChange::ProposePolarization( 78 const G4ThreeVector& finalPoralization) 79 { 80 thePolarizationChange = finalPoralization; 81 } 82 83 inline void G4ParticleChange::ProposePolarization(G4double Px, G4double Py, 84 G4double Pz) 85 { 86 thePolarizationChange.setX(Px); 87 thePolarizationChange.setY(Py); 88 thePolarizationChange.setZ(Pz); 89 } 90 91 inline const G4ThreeVector* G4ParticleChange::GetPosition() const 92 { 93 return &thePositionChange; 94 } 95 96 inline void G4ParticleChange::ProposePosition( 97 const G4ThreeVector& finalPosition) 98 { 99 thePositionChange = finalPosition; 100 } 101 102 inline void G4ParticleChange::ProposePosition(G4double x, G4double y, 103 G4double z) 104 { 105 thePositionChange.setX(x); 106 thePositionChange.setY(y); 107 thePositionChange.setZ(z); 108 } 109 110 inline G4double G4ParticleChange::GetProperTime() const 111 { 112 return theProperTimeChange; 113 } 114 115 inline void G4ParticleChange::ProposeProperTime(G4double tau) 116 { 117 theProperTimeChange = tau; 118 } 119 120 inline G4ThreeVector G4ParticleChange::GetGlobalPosition( 121 const G4ThreeVector& displacement) const 122 { 123 return thePositionChange + displacement; 124 } 125 126 inline void G4ParticleChange::ProposeGlobalTime(G4double t) 127 { 128 theTimeChange = (t - theGlobalTime0) + theLocalTime0; 129 } 130 131 inline G4double G4ParticleChange::GetGlobalTime(G4double timeDelay) const 132 { 133 // convert the time delay to the global time 134 return theGlobalTime0 + (theTimeChange - theLocalTime0) + timeDelay; 135 } 136 137 inline void G4ParticleChange::ProposeLocalTime(G4double t) 138 { 139 theTimeChange = t; 140 } 141 142 inline G4double G4ParticleChange::GetLocalTime(G4double timeDelay) const 143 { 144 // convert the time delay to the local time 145 return theTimeChange + timeDelay; 146 } 147 148 inline G4double G4ParticleChange::GetMass() const { return theMassChange; } 149 150 inline void G4ParticleChange::ProposeMass(G4double t) { theMassChange = t; } 151 152 inline G4double G4ParticleChange::GetCharge() const { return theChargeChange; } 153 154 inline void G4ParticleChange::ProposeCharge(G4double t) { theChargeChange = t; } 155 156 inline G4double G4ParticleChange::GetMagneticMoment() const 157 { 158 return theMagneticMomentChange; 159 } 160 161 inline void G4ParticleChange::ProposeMagneticMoment( 162 G4double finalMagneticMoment) 163 { 164 theMagneticMomentChange = finalMagneticMoment; 165 } 166 167 inline G4ThreeVector G4ParticleChange::CalcMomentum(G4double energy, 168 G4ThreeVector direction, 169 G4double mass) const 170 { 171 G4double tMomentum = std::sqrt(energy * energy + 2 * energy * mass); 172 return direction * tMomentum; 173 } 174