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 /// \file exoticphysics/monopole/src/G4Monopol 27 /// \brief Implementation of the G4MonopoleEqu 28 // 29 // 30 //....oooOO0OOooo........oooOO0OOooo........oo 31 //....oooOO0OOooo........oooOO0OOooo........oo 32 // 33 // 34 // class G4MonopoleEquation 35 // 36 // Class description: 37 // 38 // 39 // This is the standard right-hand side for e 40 // 41 // The only case another is required is when 42 // frame ... or extending the class to includ 43 // eg an electric field 44 // 45 // 10.11.98 V.Grichine 46 // 47 // 30.04.10 S.Burdin (modified to use for t 48 // 49 // 15.06.10 B.Bozsogi (replaced the hardcod 50 // the one passed by G4 51 // +workaround to pass t 52 // 53 // 12.07.10 S.Burdin (added equations for th 54 // ------------------------------------------- 55 56 #include "G4MonopoleEquation.hh" 57 58 #include "G4PhysicalConstants.hh" 59 #include "G4SystemOfUnits.hh" 60 #include "globals.hh" 61 62 #include <iomanip> 63 64 //....oooOO0OOooo........oooOO0OOooo........oo 65 66 G4MonopoleEquation::G4MonopoleEquation(G4Magne 67 { 68 G4cout << "G4MonopoleEquation::G4MonopoleEqu 69 } 70 71 //....oooOO0OOooo........oooOO0OOooo........oo 72 73 G4MonopoleEquation::~G4MonopoleEquation() {} 74 75 //....oooOO0OOooo........oooOO0OOooo........oo 76 77 void G4MonopoleEquation::SetChargeMomentumMass 78 79 80 { 81 G4double particleMagneticCharge = particleCh 82 G4double particleElectricCharge = particleCh 83 84 // fElCharge = particleElectricCharge; 85 fElCharge = eplus * particleElectricCharge * 86 87 fMagCharge = eplus * particleMagneticCharge 88 89 // G4cout << " G4MonopoleEquation: ElectricC 90 // << "; MagneticCharge=" << parti 91 // << G4endl; 92 93 fMassCof = particleMass * particleMass; 94 } 95 96 //....oooOO0OOooo........oooOO0OOooo........oo 97 98 void G4MonopoleEquation::EvaluateRhsGivenB(con 99 G4d 100 { 101 // Components of y: 102 // 0-2 dr/ds, 103 // 3-5 dp/ds - momentum derivatives 104 105 G4double pSquared = y[3] * y[3] + y[4] * y[4 106 107 G4double Energy = std::sqrt(pSquared + fMass 108 109 G4double pModuleInverse = 1.0 / std::sqrt(pS 110 111 G4double inverse_velocity = Energy * pModule 112 113 G4double cofEl = fElCharge * pModuleInverse; 114 G4double cofMag = fMagCharge * Energy * pMod 115 116 dydx[0] = y[3] * pModuleInverse; 117 dydx[1] = y[4] * pModuleInverse; 118 dydx[2] = y[5] * pModuleInverse; 119 120 // G4double magCharge = twopi * hbar_Planck 121 // magnetic charge in SI units A*m conventio 122 // see http://en.wikipedia.org/wiki/Magneti 123 // G4cout << "Magnetic charge: " << magC 124 // dp/ds = dp/dt * dt/ds = dp/dt / v = Force 125 // dydx[3] = fMagCharge * Field[0] * invers 126 // multiplied by c_light to convert to MeV/m 127 // dydx[4] = fMagCharge * Field[1] * in 128 // dydx[5] = fMagCharge * Field[2] * in 129 130 dydx[3] = cofMag * Field[0] + cofEl * (y[4] 131 dydx[4] = cofMag * Field[1] + cofEl * (y[5] 132 dydx[5] = cofMag * Field[2] + cofEl * (y[3] 133 134 // G4cout << std::setprecision(5)<< " 135 // << "; p="<< 1/pModuleInvers 136 // << "; mC="<< magCharge 137 // <<"; x=" << y[0] 138 // <<"; y=" << y[1] 139 // <<"; z=" << y[2] 140 // <<"; dydx[3]=" << dydx[3] 141 // <<"; dydx[4]=" << dydx[4] 142 // <<"; dydx[5]=" << dydx[5] 143 // << G4endl; 144 145 dydx[6] = 0.; // not used 146 147 // Lab Time of flight 148 dydx[7] = inverse_velocity; 149 return; 150 } 151 152 //....oooOO0OOooo........oooOO0OOooo........oo 153