ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtFieldCreator.cxx
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence version 3 (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
8 // -------------------------------------------------------------------------
9 // ----- AtConstField header file -----
10 // ----- Created 25/03/14 by M. Al-Turany -----
11 // -------------------------------------------------------------------------
12 
13 #include "AtFieldCreator.h"
14 
15 #include "AtConstField.h"
16 #include "AtFieldPar.h"
17 
18 #include <FairField.h>
19 #include <FairFieldFactory.h>
20 #include <FairParSet.h>
21 #include <FairRunAna.h>
22 #include <FairRuntimeDb.h>
23 
24 #include <iostream>
25 
26 using std::cerr;
27 using std::cout;
28 using std::endl;
29 
30 static AtFieldCreator gAtFieldCreator;
31 
32 AtFieldCreator::AtFieldCreator() : FairFieldFactory(), fFieldPar(nullptr)
33 {
34  fCreator = this;
35 }
36 
38 
40 {
41  FairRunAna *Run = FairRunAna::Instance();
42  FairRuntimeDb *RunDB = Run->GetRuntimeDb();
43  fFieldPar = dynamic_cast<AtFieldPar *>(RunDB->getContainer("AtFieldPar"));
44 }
45 
47 {
48  FairField *fMagneticField = nullptr;
49 
50  if (!fFieldPar) {
51  cerr << "-E- No field parameters available!" << endl;
52  } else {
53  // Instantiate correct field type
54  Int_t fType = fFieldPar->GetType();
55  if (fType == 0)
56  fMagneticField = new AtConstField(fFieldPar);
57  else
58  cerr << "-W- FairRunAna::GetField: Unknown field type " << fType << endl;
59  cout << "New field at " << fMagneticField << ", type " << fType << endl;
60  // Initialise field
61  if (fMagneticField) {
62  fMagneticField->Init();
63  // fMagneticField->Print();
64  }
65  }
66  return fMagneticField;
67 }
68 
AtFieldCreator
Definition: AtFieldCreator.h:27
AtFieldCreator::AtFieldCreator
AtFieldCreator()
Definition: AtFieldCreator.cxx:32
AtFieldPar
Definition: AtFieldPar.h:30
AtFieldPar::GetType
Int_t GetType() const
Definition: AtFieldPar.h:52
AtFieldCreator::fFieldPar
AtFieldPar * fFieldPar
Definition: AtFieldCreator.h:37
ClassImp
ClassImp(AtFindVertex)
AtConstField
Definition: AtConstField.h:34
AtFieldCreator::~AtFieldCreator
virtual ~AtFieldCreator()
AtFieldCreator::SetParm
virtual void SetParm()
Definition: AtFieldCreator.cxx:39
AtFieldCreator::createFairField
virtual FairField * createFairField()
Definition: AtFieldCreator.cxx:46
AtConstField.h
AtFieldPar.h
AtFieldCreator.h