Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4UniformMagField Class Reference

G4UniformMagField is a class for defining a uniform magnetic field. More...

#include <G4UniformMagField.hh>

Inheritance diagram for G4UniformMagField:

Public Member Functions

 G4UniformMagField (const G4ThreeVector &FieldVector)
 G4UniformMagField (G4double vField, G4double vTheta, G4double vPhi)
 ~G4UniformMagField () override=default
 G4UniformMagField (const G4UniformMagField &p)
G4UniformMagFieldoperator= (const G4UniformMagField &p)
void GetFieldValue (const G4double yTrack[4], G4double *MagField) const override
void SetFieldValue (const G4ThreeVector &newFieldValue)
G4ThreeVector GetConstantFieldValue () const
G4FieldClone () const override
Public Member Functions inherited from G4MagneticField
 G4MagneticField ()
 ~G4MagneticField () override=default
 G4MagneticField (const G4MagneticField &r)
G4MagneticFieldoperator= (const G4MagneticField &p)
G4bool DoesFieldChangeEnergy () const override
G4FieldType GetFieldType () const override
Public Member Functions inherited from G4Field
 G4Field (G4bool gravityOn=false)
virtual ~G4Field ()=default
 G4Field (const G4Field &p)=default
G4Fieldoperator= (const G4Field &p)
G4bool IsGravityActive () const
void SetGravityActive (G4bool OnOffFlag)

Additional Inherited Members

Static Public Attributes inherited from G4Field
static constexpr G4int MAX_NUMBER_OF_COMPONENTS = 24

Detailed Description

G4UniformMagField is a class for defining a uniform magnetic field.

Definition at line 45 of file G4UniformMagField.hh.

Constructor & Destructor Documentation

◆ G4UniformMagField() [1/3]

G4UniformMagField::G4UniformMagField ( const G4ThreeVector & FieldVector)

Constructor for G4UniformMagField, a field with value equal to 'FieldVector'.

Parameters
[in]FieldVectorThe field vector value.

Definition at line 34 of file G4UniformMagField.cc.

35{
36 fFieldComponents[0] = FieldVector.x();
37 fFieldComponents[1] = FieldVector.y();
38 fFieldComponents[2] = FieldVector.z();
39}
double z() const
double x() const
double y() const

Referenced by Clone(), G4UniformMagField(), operator=(), and ~G4UniformMagField().

◆ G4UniformMagField() [2/3]

G4UniformMagField::G4UniformMagField ( G4double vField,
G4double vTheta,
G4double vPhi )

Alternative constructor for G4UniformMagField.

Parameters
[in]vFieldThe field component.
[in]vThetaThe Theta component.
[in]vPhiThe Phi component.

Definition at line 76 of file G4UniformMagField.cc.

79{
80 if ( (vField<0) || (vTheta<0) || (vTheta>pi) || (vPhi<0) || (vPhi>twopi) )
81 {
82 std::ostringstream msg;
83 msg << "ERROR in G4UniformMagField::G4UniformMagField() : "
84 << "Invalid parameter(s). " << std::endl;
85 msg << " Expected " << std::endl;
86
87 msg << " - Magnitude vField: Value = " << vField
88 << " Expected vField > 0 " ;
89 if ( vField<0) { msg << " <------ Erroneous "; }
90 msg << std::endl;
91
92 msg << " - Theta angle: Value = " << vTheta
93 << " Expected between 0 <= theta <= pi = " << pi << " ";
94 if ( (vTheta<0) || (vTheta>pi) ) { msg << " <------ Erroneous "; }
95
96 msg << std::endl;
97 msg << " - Phi angle: Value = " << vPhi
98 << " Expected between 0 <= phi <= 2*pi = " << twopi << std::endl;
99 if ( (vPhi<0) || (vPhi>twopi) ) { msg << " <------ Erroneous "; }
100
101 G4Exception("G4UniformMagField::G4UniformMagField()",
102 "GeomField0002", FatalException, msg );
103 }
104 fFieldComponents[0] = vField*std::sin(vTheta)*std::cos(vPhi) ;
105 fFieldComponents[1] = vField*std::sin(vTheta)*std::sin(vPhi) ;
106 fFieldComponents[2] = vField*std::cos(vTheta) ;
107}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
const G4double pi

◆ ~G4UniformMagField()

G4UniformMagField::~G4UniformMagField ( )
overridedefault

Default Destructor.

◆ G4UniformMagField() [3/3]

G4UniformMagField::G4UniformMagField ( const G4UniformMagField & p)

Copy constructor and assignment operator.

Definition at line 41 of file G4UniformMagField.cc.

43{
44 for (auto i=0; i<3; ++i)
45 {
46 fFieldComponents[i] = p.fFieldComponents[i];
47 }
48}

Member Function Documentation

◆ Clone()

G4Field * G4UniformMagField::Clone ( ) const
overridevirtual

Returns a pointer to a new allocated clone of this object.

Reimplemented from G4Field.

Definition at line 61 of file G4UniformMagField.cc.

62{
63 return new G4UniformMagField( G4ThreeVector(fFieldComponents[0],
64 fFieldComponents[1],
65 fFieldComponents[2]) );
66}
CLHEP::Hep3Vector G4ThreeVector
G4UniformMagField(const G4ThreeVector &FieldVector)

◆ GetConstantFieldValue()

G4ThreeVector G4UniformMagField::GetConstantFieldValue ( ) const

Returns the constant field value.

Definition at line 119 of file G4UniformMagField.cc.

120{
121 G4ThreeVector B(fFieldComponents[0],
122 fFieldComponents[1],
123 fFieldComponents[2]);
124 return B;
125}
G4double B(G4double temperature)

◆ GetFieldValue()

void G4UniformMagField::GetFieldValue ( const G4double yTrack[4],
G4double * MagField ) const
overridevirtual

Returns the field value 'MagField' on given time 'yTrack'.

Implements G4MagneticField.

Definition at line 111 of file G4UniformMagField.cc.

113{
114 B[0]= fFieldComponents[0];
115 B[1]= fFieldComponents[1];
116 B[2]= fFieldComponents[2];
117}

◆ operator=()

G4UniformMagField & G4UniformMagField::operator= ( const G4UniformMagField & p)

Definition at line 50 of file G4UniformMagField.cc.

51{
52 if (&p == this) { return *this;}
54 for (auto i=0; i<3; ++i)
55 {
56 fFieldComponents[i] = p.fFieldComponents[i];
57 }
58 return *this;
59}
G4MagneticField & operator=(const G4MagneticField &p)

◆ SetFieldValue()

void G4UniformMagField::SetFieldValue ( const G4ThreeVector & newFieldValue)

Sets the field value.

Definition at line 69 of file G4UniformMagField.cc.

70{
71 fFieldComponents[0] = newFieldVector.x();
72 fFieldComponents[1] = newFieldVector.y();
73 fFieldComponents[2] = newFieldVector.z();
74}

The documentation for this class was generated from the following files: