Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TVirtualMagField.h
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 #ifndef ROOT_TVirtualMagField
12 #define ROOT_TVirtualMagField
13 
14 #include "TNamed.h"
15 
16 class TVirtualMagField : public TNamed
17 {
18 public:
19  TVirtualMagField() : TNamed() {}
20  TVirtualMagField(const char *name) : TNamed(name,"") {}
21  virtual ~TVirtualMagField();
22 
23  virtual void Field(const Double_t *x, Double_t *B) = 0;
24 
25  ClassDef(TVirtualMagField, 1) // Abstract base field class
26 };
27 
28 
29 ////////////////////////////////////////////////////////////////////////////
30 // //
31 // TGeoUniformMagField - Uniform magnetic field class. //
32 // //
33 ////////////////////////////////////////////////////////////////////////////
34 
35 class TGeoUniformMagField : public TVirtualMagField
36 {
37 private:
38  Double_t fB[3]; // Magnetic field vector
39 
40 protected:
41  TGeoUniformMagField(const TGeoUniformMagField&);
42  TGeoUniformMagField& operator=(const TGeoUniformMagField&);
43 
44 public:
45  TGeoUniformMagField();
46  TGeoUniformMagField(Double_t Bx, Double_t By, Double_t Bz);
47  virtual ~TGeoUniformMagField() {}
48 
49  void Field(const Double_t * /*x*/, Double_t *B) {B[0]=fB[0]; B[1]=fB[1]; B[2]=fB[2];}
50 
51  const Double_t *GetFieldValue() const { return &fB[0]; }
52  void SetFieldValue(Double_t Bx, Double_t By, Double_t Bz) {fB[0]=Bx; fB[1]=By; fB[2]=Bz;}
53 
54  ClassDef(TGeoUniformMagField, 1) // Uniform magnetic field
55 };
56 
57 #endif