ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4Field.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4Field.hh
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
// G4Field
27
//
28
// Class description:
29
//
30
// Abstract class for any kind of Field.
31
// It allows any kind of field (vector, scalar, tensor and any set of them)
32
// to be defined by implementing the inquiry function interface.
33
//
34
// The key method is GetFieldValue( const double Point[4],
35
// ************* double *fieldArr )
36
// Given an input position/time vector 'Point',
37
// this method must return the value of the field in "fieldArr".
38
//
39
// A field must also specify whether it changes a track's energy:
40
// DoesFieldChangeEnergy()
41
// *********************
42
// A field must co-work with a corresponding Equation of Motion, to
43
// enable the integration of a particle's position, momentum and, optionally,
44
// spin. For this a field and its equation of motion must follow the
45
// same convention for the order of field components in the array "fieldArr"
46
47
// Created: John Apostolakis, 10.03.1997
48
// -------------------------------------------------------------------
49
#ifndef G4FIELD_HH
50
#define G4FIELD_HH
51
52
#include "
G4Types.hh
"
53
#include "
globals.hh
"
54
55
class
G4Field
56
{
57
public
:
// with description
58
59
G4Field
(
G4bool
gravityOn =
false
);
60
G4Field
(
const
G4Field
& );
61
virtual
~G4Field
();
62
G4Field
&
operator =
(
const
G4Field
&
p
);
63
64
virtual
void
GetFieldValue
(
const
G4double
Point[4],
65
G4double
* fieldArr )
const
= 0;
66
// Given the position time vector 'Point',
67
// return the value of the field in the array fieldArr.
68
// Notes:
69
// 1) The 'Point' vector has the following structure:
70
// Point[0] is x ( position, in Geant4 units )
71
// Point[1] is y
72
// Point[2] is z
73
// Point[3] is t ( time, in Geant4 units )
74
// 2) The convention for the components of the field
75
// array 'fieldArr' are determined by the type of field.
76
// See for example the class G4ElectroMagneticField.
77
78
virtual
G4bool
DoesFieldChangeEnergy
()
const
= 0;
79
// Each type/class of field should respond this accordingly
80
// For example:
81
// - an electric field should return "true"
82
// - a pure magnetic field should return "false"
83
84
inline
G4bool
IsGravityActive
()
const
;
85
// Does this field include gravity?
86
87
inline
void
SetGravityActive
(
G4bool
OnOffFlag );
88
89
virtual
G4Field
*
Clone
()
const
;
90
// Implements cloning, needed by multi-threading
91
92
static
constexpr
G4int
MAX_NUMBER_OF_COMPONENTS
= 24;
93
94
private
:
95
96
G4bool
fGravityActive
=
false
;
97
};
98
99
// Inline methods ...
100
101
inline
G4bool
G4Field::IsGravityActive
()
const
102
{
103
return
fGravityActive
;
104
}
105
106
inline
void
G4Field::SetGravityActive
(
G4bool
OnOffFlag )
107
{
108
fGravityActive
= OnOffFlag;
109
}
110
111
#endif
geant4
tree
geant4-10.6-release
source
geometry
magneticfield
include
G4Field.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:16
using
1.8.2 with
ECCE GitHub integration