Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer << 3 // * DISCLAIMER * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th << 5 // * The following disclaimer summarizes all the specific disclaimers * 6 // * the Geant4 Collaboration. It is provided << 6 // * of contributors to this software. The specific disclaimers,which * 7 // * conditions of the Geant4 Software License << 7 // * govern, are listed with their locations in: * 8 // * LICENSE and available at http://cern.ch/ << 8 // * http://cern.ch/geant4/license * 9 // * include a list of copyright holders. << 10 // * 9 // * * 11 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file << 14 // * use. * 16 // * for the full disclaimer and the limitatio << 17 // * 15 // * * 18 // * This code implementation is the result << 16 // * This code implementation is the intellectual property of the * 19 // * technical work of the GEANT4 collaboratio << 17 // * GEANT4 collaboration. * 20 // * By using, copying, modifying or distri << 18 // * By copying, distributing or modifying the Program (or any work * 21 // * any work based on the software) you ag << 19 // * based on the Program) you indicate your acceptance of this * 22 // * use in resulting scientific publicati << 20 // * statement, and all its terms. * 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* 21 // ******************************************************************** 25 // 22 // 26 // G4UniformElectricField implementation << 27 // 23 // 28 // Created: V.Grichine, 30.01.1997 << 24 // $Id: G4UniformElectricField.cc,v 1.6 2001/12/04 17:35:54 gcosmo Exp $ 29 // ------------------------------------------- << 25 // GEANT4 tag $Name: geant4-04-00 $ 30 << 26 // >> 27 // >> 28 // >> 29 // Class for creation of uniform Electric Field >> 30 // >> 31 // 30.1.97 V.Grichine >> 32 // 31 #include "G4UniformElectricField.hh" 33 #include "G4UniformElectricField.hh" 32 #include "G4PhysicalConstants.hh" << 34 #include "globals.hh" >> 35 #include "geomdefs.hh" 33 36 34 G4UniformElectricField:: << 37 G4UniformElectricField::G4UniformElectricField(const G4ThreeVector FieldVector ) 35 G4UniformElectricField(const G4ThreeVector& Fi << 36 { 38 { 37 fFieldComponents[0] = 0.0; << 39 fFieldComponents[0] = 0.0; 38 fFieldComponents[1] = 0.0; << 40 fFieldComponents[1] = 0.0; 39 fFieldComponents[2] = 0.0; << 41 fFieldComponents[2] = 0.0; 40 fFieldComponents[3] = FieldVector.x(); << 42 fFieldComponents[3] = FieldVector.x(); 41 fFieldComponents[4] = FieldVector.y(); << 43 fFieldComponents[4] = FieldVector.y(); 42 fFieldComponents[5] = FieldVector.z(); << 44 fFieldComponents[5] = FieldVector.z(); 43 } 45 } 44 46 45 G4UniformElectricField::G4UniformElectricField 47 G4UniformElectricField::G4UniformElectricField(G4double vField, 46 << 48 G4double vTheta, 47 << 49 G4double vPhi ) 48 { 50 { 49 if ( (vField<0) || (vTheta<0) || (vTheta>pi << 51 if(vField >= 0 && >> 52 vTheta >= 0 && vTheta <= pi && >> 53 vPhi >= 0 && vPhi <= twopi) 50 { 54 { 51 G4Exception("G4UniformElectricField::G4U << 55 fFieldComponents[0] = 0.0; 52 "GeomField0002", FatalExcept << 56 fFieldComponents[1] = 0.0; >> 57 fFieldComponents[2] = 0.0; >> 58 fFieldComponents[3] = vField*sin(vTheta)*cos(vPhi) ; >> 59 fFieldComponents[4] = vField*sin(vTheta)*sin(vPhi) ; >> 60 fFieldComponents[5] = vField*cos(vTheta) ; >> 61 } >> 62 else >> 63 { >> 64 G4Exception("Invalid parameters in G4UniformElectricField::G4UniformElectricField") ; 53 } 65 } 54 << 55 fFieldComponents[0] = 0.0; << 56 fFieldComponents[1] = 0.0; << 57 fFieldComponents[2] = 0.0; << 58 fFieldComponents[3] = vField*std::sin(vThet << 59 fFieldComponents[4] = vField*std::sin(vThet << 60 fFieldComponents[5] = vField*std::cos(vThet << 61 } 66 } 62 67 63 G4UniformElectricField::~G4UniformElectricFiel << 68 G4UniformElectricField::~G4UniformElectricField() >> 69 { >> 70 ; >> 71 } 64 72 65 G4UniformElectricField:: << 73 G4UniformElectricField::G4UniformElectricField (const G4UniformElectricField &p) 66 G4UniformElectricField (const G4UniformElectri << 67 : G4ElectricField(p) << 68 { 74 { 69 for (auto i=0; i<6; ++i) << 75 for (G4int i=0; i<6; i++) 70 { << 76 fFieldComponents[i] = p.fFieldComponents[i]; 71 fFieldComponents[i] = p.fFieldComponents[ << 72 } << 73 } 77 } 74 78 75 G4UniformElectricField& << 79 G4UniformElectricField& G4UniformElectricField::operator = (const G4UniformElectricField &p) 76 G4UniformElectricField::operator = (const G4Un << 77 { 80 { 78 if (&p == this) { return *this; } << 81 for (G4int i=0; i<6; i++) 79 G4ElectricField::operator=(p); << 82 fFieldComponents[i] = p.fFieldComponents[i]; 80 for (auto i=0; i<6; ++i) << 83 return *this; 81 { << 82 fFieldComponents[i] = p.fFieldComponents[i << 83 } << 84 return *this; << 85 } << 86 << 87 G4Field* G4UniformElectricField::Clone() const << 88 { << 89 return new G4UniformElectricField( G4ThreeV << 90 << 91 << 92 } 84 } 93 85 94 // ------------------------------------------- 86 // ------------------------------------------------------------------------ 95 87 >> 88 96 void G4UniformElectricField::GetFieldValue (co 89 void G4UniformElectricField::GetFieldValue (const G4double[4], 97 G4 << 90 G4double *fieldBandE ) const 98 { 91 { 99 fieldBandE[0] = 0.0; << 92 fieldBandE[0]= 0.0; 100 fieldBandE[1] = 0.0; << 93 fieldBandE[1]= 0.0; 101 fieldBandE[2] = 0.0; << 94 fieldBandE[2]= 0.0; 102 fieldBandE[3] = fFieldComponents[3]; << 95 fieldBandE[3]= fFieldComponents[3] ; 103 fieldBandE[4] = fFieldComponents[4]; << 96 fieldBandE[4]= fFieldComponents[4] ; 104 fieldBandE[5] = fFieldComponents[5]; << 97 fieldBandE[5]= fFieldComponents[5] ; >> 98 return ; 105 } 99 } >> 100 106 101