Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // G4EqGravityField implementation 27 // 28 // This is the right-hand side for equation of 29 // massive particle in a gravitational field. 30 // 31 // Created: P.Gumplinger, 14.06.11 - Adopted f 32 // Thanks to P.Fierlinger (PSI) and A 33 // ------------------------------------------- 34 35 #include "G4EqGravityField.hh" 36 #include "globals.hh" 37 #include "G4PhysicalConstants.hh" 38 39 G4EqGravityField::G4EqGravityField(G4UniformGr 40 : G4EquationOfMotion( gField ) 41 { 42 } 43 44 G4EqGravityField::~G4EqGravityField() = defaul 45 46 void 47 G4EqGravityField::SetChargeMomentumMass(G4Char 48 G4doub 49 G4doub 50 { 51 fMass = particleMass; 52 } 53 54 void 55 G4EqGravityField::EvaluateRhsGivenB(const G4do 56 const G4do 57 G4do 58 { 59 60 // Components of y: 61 // 0-2 dr/ds, 62 // 3-5 dp/ds - momentum derivatives 63 64 G4double momentum_mag_square = y[3]*y[3] + y 65 G4double inv_momentum_magnitude = 1.0 / std: 66 67 G4double Energy = std::sqrt(momentum_mag_squ 68 G4double cof2 = Energy/c_light; 69 G4double cof1 = inv_momentum_magnitude*fMass 70 G4double inverse_velocity = Energy*inv_momen 71 72 dydx[0] = y[3]*inv_momentum_magnitude; 73 dydx[1] = y[4]*inv_momentum_magnitude; 74 dydx[2] = y[5]*inv_momentum_magnitude; 75 76 dydx[3] = G[0]*cof1*cof2/c_light; 77 dydx[4] = G[1]*cof1*cof2/c_light; 78 dydx[5] = G[2]*cof1*cof2/c_light; 79 80 // Lab Time of flight 81 // 82 dydx[7] = inverse_velocity; 83 84 return; 85 } 86