FairShip
Loading...
Searching...
No Matches
ShipFieldCreator.cxx
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// SPDX-FileCopyrightText: Copyright CERN for the benefit of the SHiP
3// Collaboration
4
5#include "ShipFieldCreator.h"
6
7#include <iostream>
8
9#include "FairField.h"
10#include "FairRunAna.h"
11#include "FairRuntimeDb.h"
12#include "ShipConstField.h"
13#include "ShipFieldPar.h"
14using std::cerr;
15using std::cout;
16using std::endl;
17
18static ShipFieldCreator gShipFieldCreator;
19
20ShipFieldCreator::ShipFieldCreator() : FairFieldFactory(), fFieldPar(nullptr) {}
21
23
25 FairRunAna* Run = FairRunAna::Instance();
26 FairRuntimeDb* RunDB = Run->GetRuntimeDb();
27 fFieldPar = dynamic_cast<ShipFieldPar*>(RunDB->getContainer("ShipFieldPar"));
28}
29
31 FairField* fMagneticField = nullptr;
32
33 if (!fFieldPar) {
34 cerr << "-E- No field parameters available!" << endl;
35 } else {
36 // Instantiate correct field type
37 Int_t fType = fFieldPar->GetType();
38 if (fType == 0)
39 fMagneticField = new ShipConstField(fFieldPar);
40 else
41 cerr << "-W- FairRunAna::GetField: Unknown field type " << fType << endl;
42 cout << "New field at " << fMagneticField << ", type " << fType << endl;
43 // Initialise field
44 if (fMagneticField) {
45 fMagneticField->Init();
46 fMagneticField->Print("");
47 }
48 }
49 return fMagneticField;
50}
~ShipFieldCreator() override
ShipFieldPar * fFieldPar
FairField * createFairField() override
void SetParm() override
Int_t GetType() const
Definition: ShipFieldPar.h:36