ROOT
6.10/00
Reference Guide
ROOT Home Page
Main Page
Tutorials
User's Classes
Namespaces
All Classes
Files
Release Notes
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
geom
geom
src
TVirtualMagField.cxx
Go to the documentation of this file.
1
// @(#)root/geom:$Id$
2
3
/*************************************************************************
4
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
5
* All rights reserved. *
6
* *
7
* For the licensing terms see $ROOTSYS/LICENSE. *
8
* For the list of contributors see $ROOTSYS/README/CREDITS. *
9
*************************************************************************/
10
11
#include "
TVirtualMagField.h
"
12
13
#include "
TGeoGlobalMagField.h
"
14
#include "
Rtypes.h
"
15
16
/** \class TVirtualMagField
17
\ingroup Geometry_classes
18
Abstract class for magnetic field. Derived classes are encouraged to
19
use the TVirtualMagField named constructor and must implement the method:
20
21
~~~ {.cpp}
22
Field(const Double_t *x, Double_t *B)
23
~~~
24
25
A field object can be made global via:
26
27
~~~ {.cpp}
28
TGlobalMagField::Instance()->SetField(field) [1]
29
~~~
30
31
A field which is made global is owned by the field manager. The used is not
32
allowed to delete it directly anymore (otherwise a Fatal() is issued). Global
33
field can be deleted by calling [1] with a different argument (which can be
34
NULL). Otherwise the global field is deleted together with the field manager.
35
*/
36
37
ClassImp
(
TVirtualMagField
)
38
39
////////////////////////////////////////////////////////////////////////////////
40
/// Destructor. Unregisters the field.
41
42
TVirtualMagField
::~
TVirtualMagField
()
43
{
44
if
(
TGeoGlobalMagField::GetInstance
()) {
45
TVirtualMagField *global_field =
TGeoGlobalMagField::GetInstance
()->
GetField
();
46
if
(global_field ==
this
)
47
Fatal
(
"~TVirtualMagField"
,
"Not allowed to delete a field once set global. \
48
\n To delete the field call: TGeoGlobalMagField::Instance()->SetField(NULL)"
);
49
}
50
}
51
52
/** \class TGeoUniformMagField
53
\ingroup Geometry_classes
54
55
Implementation for uniform magnetic field.
56
*/
57
58
ClassImp
(
TGeoUniformMagField
)
59
60
////////////////////////////////////////////////////////////////////////////////
61
/// Default constructor;
62
63
TGeoUniformMagField
::
TGeoUniformMagField
()
64
:
TVirtualMagField
()
65
{
66
fB[0] = 0.;
67
fB[1] = 0.;
68
fB[2] = 0.;
69
}
70
71
////////////////////////////////////////////////////////////////////////////////
72
/// Default constructor;
73
74
TGeoUniformMagField::TGeoUniformMagField
(
Double_t
Bx,
Double_t
By,
Double_t
Bz)
75
:
TVirtualMagField
(
"Uniform magnetic field"
)
76
{
77
fB
[0] = Bx;
78
fB
[1] = By;
79
fB
[2] = Bz;
80
}
TVirtualMagField.h
Rtypes.h
Fatal
void Fatal(const char *location, const char *msgfmt,...)
TGeoGlobalMagField::GetField
TVirtualMagField * GetField() const
Definition:
TGeoGlobalMagField.h:35
TGeoUniformMagField::fB
Double_t fB[3]
Definition:
TVirtualMagField.h:38
TGeoGlobalMagField::GetInstance
static TGeoGlobalMagField * GetInstance()
Static getter that does not create the object.
Definition:
TGeoGlobalMagField.cxx:106
ClassImp
#define ClassImp(name)
Definition:
Rtypes.h:336
Double_t
double Double_t
Definition:
RtypesCore.h:55
TVirtualMagField
Abstract class for magnetic field.
Definition:
TVirtualMagField.h:16
TGeoUniformMagField::TGeoUniformMagField
TGeoUniformMagField()
Default constructor;.
Definition:
TVirtualMagField.cxx:63
TGeoGlobalMagField.h
TGeoUniformMagField
Implementation for uniform magnetic field.
Definition:
TVirtualMagField.h:35