Logo ROOT   6.10/09
Reference Guide
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 
38 
39 ////////////////////////////////////////////////////////////////////////////////
40 /// Destructor. Unregisters the field.
41 
43 {
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 
59 
60 ////////////////////////////////////////////////////////////////////////////////
61 /// Default constructor;
62 
65 {
66  fB[0] = 0.;
67  fB[1] = 0.;
68  fB[2] = 0.;
69 }
70 
71 ////////////////////////////////////////////////////////////////////////////////
72 /// Default constructor;
73 
75  :TVirtualMagField("Uniform magnetic field")
76 {
77  fB[0] = Bx;
78  fB[1] = By;
79  fB[2] = Bz;
80 }
void Fatal(const char *location, const char *msgfmt,...)
TVirtualMagField * GetField() const
static TGeoGlobalMagField * GetInstance()
Static getter that does not create the object.
#define ClassImp(name)
Definition: Rtypes.h:336
double Double_t
Definition: RtypesCore.h:55
Abstract class for magnetic field.
TGeoUniformMagField()
Default constructor;.
Implementation for uniform magnetic field.