All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 */
19 /** @addtogroup genfit
20  * @{
21  */
22 
23 
24 #ifndef GFFIELDMANAGER_H
25 #define GFFIELDMANAGER_H
26 
27 #include"GFAbsBField.h"
28 #include<iostream>
29 
30 /** @brief Singleton which provides access to magnetic field for track representations
31  *
32  * @author Christian H&ouml;ppner (Technische Universit&auml;t M&uuml;nchen, original author)
33  * @author Sebastian Neubert (Technische Universit&auml;t M&uuml;nchen, original author)
34  *
35  */
36 namespace genf {
37 
39  private:
43 
44  public:
46  if(fField==NULL){
47  std::cerr << "Appareantly GFFieldManager hasnt been initialized with a correct GFAbsBField pointer -> abort" << std::endl;
48  throw;
49  }
50  return fField;
51  }
52 
53  static TVector3 getFieldVal(const TVector3& x){
54  if(fInstance==NULL){
55  std::cerr << "Appareantly GFFieldManager hasnt been instantiated yet, call getInstance() and init() before getFieldVal() -> abort" << std::endl;
56  throw;
57  }
58  if(fField==NULL){
59  std::cerr << "Appareantly GFFieldManager hasnt been initialized with a correct GFAbsBField pointer -> abort" << std::endl;
60  throw;
61  }
62  return fField->get(x);
63  }
64 
65  //! set the magntic field here. Magnetic field classes must be derived from GFAbsBField
66  void init(GFAbsBField* b) {
67  fField=b;
68  }
69 
71  if(fInstance==NULL) {
72  fInstance = new GFFieldManager();
73  }
74  return fInstance;
75  }
76 
77 
78 };
79 }
80 #endif
81 /** @} */
static GFFieldManager * fInstance
process_name opflash particleana ie x
BEGIN_PROLOG could also be cerr
virtual TVector3 get(const TVector3 &) const =0
override this is you concrete implementation
GFAbsBField * getField()
static GFFieldManager * getInstance()
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 ...