BmnRoot
Loading...
Searching...
No Matches
BmnFieldCreator.cxx
Go to the documentation of this file.
1#include "BmnFieldCreator.h"
2#include "BmnFieldConst.h"
3#include "BmnFieldMap.h"
4#include "BmnFieldMapSym3.h"
5#include "BmnNewFieldMap.h"
6
7#include "FairRunAna.h"
8#include "FairRuntimeDb.h"
9
10#include <iostream>
11using std::cout;
12using std::cerr;
13using std::endl;
14
15static BmnFieldCreator gBmnFieldCreator;
16
18 :FairFieldFactory(),
19 fFieldPar(NULL)
20{
21#ifdef FairRoot_18_8_0
22 fgRinstance=this;
23#else
24 fCreator=this;
25#endif
26}
27
31
33{
34 FairRunAna *Run = FairRunAna::Instance();
35 FairRuntimeDb *RunDB = Run->GetRuntimeDb();
36 fFieldPar = (BmnFieldPar*) RunDB->getContainer("BmnFieldPar");
37}
38
40{
41 FairField *fMagneticField=0;
42
43 if ( !fFieldPar )
44 cerr << "-E- No field parameters available!" << endl;
45 else
46 {
47 // Instantiate correct field type
48 Int_t fType = fFieldPar->GetType();
49 if ( fType == 0 ) fMagneticField = new BmnFieldConst(fFieldPar);
50 else if ( fType == 1 ) fMagneticField = new BmnNewFieldMap(fFieldPar);
51 else if ( fType == 3 ) fMagneticField = new BmnFieldMapSym3(fFieldPar);
52 else cerr << "-W- FairRunAna::GetField: Unknown field type " << fType << endl;
53
54 //cout << "New field at " << fMagneticField << ", type " << fType << endl;
55 // Initialise field
56 if ( fMagneticField )
57 {
58 fMagneticField->Init();
59 //fMagneticField->Print();
60 }
61 }
62 return fMagneticField;
63}
virtual ~BmnFieldCreator()
BmnFieldPar * fFieldPar
virtual FairField * createFairField()
virtual void SetParm()
Int_t GetType() const
Definition BmnFieldPar.h:56