LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
GFFieldManager.h
Go to the documentation of this file.
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert
3 
4  This file is part of GENFIT.
5 
6  GENFIT is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  GENFIT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18 */
23 #ifndef GFFIELDMANAGER_H
24 #define GFFIELDMANAGER_H
25 
26 #include "GFAbsBField.h"
27 #include <iostream>
28 
35 namespace genf {
36 
38  private:
42 
43  public:
45  {
46  if (fField == NULL) {
47  std::cerr << "Appareantly GFFieldManager hasnt been initialized with a correct GFAbsBField "
48  "pointer -> abort"
49  << std::endl;
50  throw;
51  }
52  return fField;
53  }
54 
55  static TVector3 getFieldVal(const TVector3& x)
56  {
57  if (fInstance == NULL) {
58  std::cerr << "Appareantly GFFieldManager hasnt been instantiated yet, call getInstance() "
59  "and init() before getFieldVal() -> abort"
60  << std::endl;
61  throw;
62  }
63  if (fField == NULL) {
64  std::cerr << "Appareantly GFFieldManager hasnt been initialized with a correct GFAbsBField "
65  "pointer -> abort"
66  << std::endl;
67  throw;
68  }
69  return fField->get(x);
70  }
71 
73  void init(GFAbsBField* b) { fField = b; }
74 
76  {
77  if (fInstance == NULL) { fInstance = new GFFieldManager(); }
78  return fInstance;
79  }
80  };
81 }
82 #endif
83 
Float_t x
Definition: compare.C:6
static GFFieldManager * fInstance
Generic Interface to magnetic fields in GENFIT.
Definition: GFAbsBField.h:34
GFAbsBField * getField()
static GFFieldManager * getInstance()
virtual TVector3 get(const TVector3 &) const =0
override this is you concrete implementation
static TVector3 getFieldVal(const TVector3 &x)
static GFAbsBField * fField
void init(GFAbsBField *b)
set the magntic field here. Magnetic field classes must be derived from GFAbsBField ...