CbmRoot
Loading...
Searching...
No Matches
CbmFieldCreator.cxx
Go to the documentation of this file.
1/* Copyright (C) 2007-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Mohammad Al-Turany [committer], Florian Uhlig */
4
5#include "CbmFieldCreator.h"
6
7#include "CbmBsField.h" // for CbmBsField
8#include "CbmFieldConst.h" // for CbmFieldConst
9#include "CbmFieldMap.h" // for CbmFieldMap
10#include "CbmFieldMapDistorted.h" // for CbmFieldMapDistorted
11#include "CbmFieldMapSym1.h" // for CbmFieldMapSym1
12#include "CbmFieldMapSym2.h" // for CbmFieldMapSym2
13#include "CbmFieldMapSym3.h" // for CbmFieldMapSym3
14#include "CbmFieldPar.h" // for CbmFieldPar, kTypeDistorted
15
16#include <FairField.h> // for FairField
17#include <FairFieldFactory.h> // for FairFieldFactory
18#include <FairRunAna.h> // for FairRunAna
19#include <FairRuntimeDb.h> // for FairRuntimeDb
20
21#include <RtypesCore.h> // for Int_t
22
23#include <iostream> // for operator<<, basic_ostream, endl
24
25using std::cerr;
26using std::cout;
27using std::endl;
28
30
31CbmFieldCreator::CbmFieldCreator() : FairFieldFactory(), fFieldPar(nullptr) {}
32
34
36{
37 FairRunAna* Run = FairRunAna::Instance();
38 FairRuntimeDb* RunDB = Run->GetRuntimeDb();
39 fFieldPar = (CbmFieldPar*) RunDB->getContainer("CbmFieldPar");
40}
41
43{
44 FairField* fMagneticField = 0;
45
46 if (!fFieldPar) { cerr << "-E- No field parameters available!" << endl; }
47 else {
48 // Instantiate correct field type
49 Int_t fType = fFieldPar->GetType();
50 if (fType == 0) fMagneticField = new CbmFieldConst(fFieldPar);
51 else if (fType == 1)
52 fMagneticField = new CbmFieldMap(fFieldPar);
53 else if (fType == 2)
54 fMagneticField = new CbmFieldMapSym2(fFieldPar);
55 else if (fType == 3)
56 fMagneticField = new CbmFieldMapSym3(fFieldPar);
57 else if (fType == kTypeDistorted)
58 fMagneticField = new CbmFieldMapDistorted(fFieldPar);
59 else if (fType == 5)
60 fMagneticField = new CbmFieldMapSym1(fFieldPar);
61 else if (fType == 6)
62 fMagneticField = new CbmBsField(fFieldPar);
63 else
64 cerr << "-W- FairRunAna::GetField: Unknown field type " << fType << endl;
65 cout << "New field at " << fMagneticField << ", type " << fType << endl;
66 // Initialise field
67 if (fMagneticField) {
68 fMagneticField->Init();
69 fMagneticField->Print("");
70 }
71 }
72 return fMagneticField;
73}
74
75
ClassImp(CbmConverterManager)
static CbmFieldCreator gCbmFieldCreator
const int kTypeDistorted
Definition CbmFieldPar.h:33
virtual FairField * createFairField()
CbmFieldPar * fFieldPar
virtual void SetParm()
virtual ~CbmFieldCreator()
Int_t GetType() const
Definition CbmFieldPar.h:61