FairShip
Loading...
Searching...
No Matches
ShipFieldPar.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 "ShipFieldPar.h"
6
7#include <iostream>
8
9#include "FairParamList.h"
10#include "ShipConstField.h"
11using std::cerr;
12using std::cout;
13using std::endl;
14
15// ------ Constructor --------------------------------------------------
16ShipFieldPar::ShipFieldPar(const char* name, const char* title,
17 const char* context)
18 : FairParGenericSet(name, title, context),
19 fType(-1),
20 fXmin(0.),
21 fXmax(0.),
22 fYmin(0.),
23 fYmax(0.),
24 fZmin(0.),
25 fZmax(0.),
26 fBx(0.),
27 fBy(0.),
28 fBz(0.),
29 fMapName(""),
30 fPosX(0.),
31 fPosY(0.),
32 fPosZ(0.),
33 fScale(0.),
34 fPeak(0.),
35 fMiddle(0.)
36
37{}
38// -------------------------------------------------------------------------
39
41 : FairParGenericSet(),
42 fType(-1),
43 fXmin(0.),
44 fXmax(0.),
45 fYmin(0.),
46 fYmax(0.),
47 fZmin(0.),
48 fZmax(0.),
49 fBx(0.),
50 fBy(0.),
51 fBz(0.),
52 fMapName(""),
53 fPosX(0.),
54 fPosY(0.),
55 fPosZ(0.),
56 fScale(0.),
57 fPeak(0.),
58 fMiddle(0.)
59
60{}
61// -------------------------------------------------------------------------
62
63// ------ Destructor ---------------------------------------------------
65// -------------------------------------------------------------------------
66
67// ------ Put parameters -----------------------------------------------
68void ShipFieldPar::putParams(FairParamList* list) {
69 if (!list) return;
70
71 list->add("Field Type", fType);
72
73 if (fType == 0) { // constant field
74 list->add("Field min x", fXmin);
75 list->add("Field max x", fXmax);
76 list->add("Field min y", fYmin);
77 list->add("Field max y", fYmax);
78 list->add("Field min z", fZmin);
79 list->add("Field max z", fZmax);
80 list->add("Field Bx", fBx);
81 list->add("Field By", fBy);
82 list->add("Field Bz", fBz);
83 } else if (fType >= 1 && fType <= kMaxFieldMapType) { //
84 list->add("Field Peak", fPeak);
85 list->add("Field Middle", fMiddle);
86 } else if (fType >= 2 && fType <= kMaxFieldMapType) { // field map
87 list->add("Field map name", fMapName);
88 list->add("Field x position", fPosX);
89 list->add("Field y position", fPosY);
90 list->add("Field z position", fPosZ);
91 list->add("Field scaling factor", fScale);
92 }
93}
94// -------------------------------------------------------------------------
95
96// -------- Get parameters ---------------------------------------------
97Bool_t ShipFieldPar::getParams(FairParamList* list) {
98 if (!list) return kFALSE;
99
100 if (!list->fill("Field Type", &fType)) return kFALSE;
101
102 if (fType == 0) { // constant field
103 if (!list->fill("Field min x", &fXmin)) return kFALSE;
104 if (!list->fill("Field max x", &fXmax)) return kFALSE;
105 if (!list->fill("Field min y", &fYmin)) return kFALSE;
106 if (!list->fill("Field max y", &fYmax)) return kFALSE;
107 if (!list->fill("Field min z", &fZmin)) return kFALSE;
108 if (!list->fill("Field max z", &fZmax)) return kFALSE;
109 if (!list->fill("Field Bx", &fBx)) return kFALSE;
110 if (!list->fill("Field By", &fBy)) return kFALSE;
111 if (!list->fill("Field Bz", &fBz)) return kFALSE;
112
113 } else if (fType >= 1 && fType <= kMaxFieldMapType) {
114 if (!list->fill("Field Peak", &fPeak)) return kFALSE;
115 if (!list->fill("Field Middle", &fMiddle)) return kFALSE;
116
117 } else if (fType >= 2 && fType <= kMaxFieldMapType) { // field map
118 Text_t mapName[80];
119 if (!list->fill("Field map name", mapName, 80)) return kFALSE;
120 fMapName = mapName;
121 if (!list->fill("Field x position", &fPosX)) return kFALSE;
122 if (!list->fill("Field y position", &fPosY)) return kFALSE;
123 if (!list->fill("Field z position", &fPosZ)) return kFALSE;
124 if (!list->fill("Field scaling factor", &fScale)) return kFALSE;
125 }
126
127 return kTRUE;
128}
129// -------------------------------------------------------------------------
130
131void ShipFieldPar::SetParameters(FairField* field) {
132 if (!field) {
133 cerr << "-W- ShipFieldPar::SetParameters: Empty field pointer!" << endl;
134 return;
135 }
136
137 fType = field->GetType();
138
139 if (fType == 0) { // constant field
140 ShipConstField* fieldConst = dynamic_cast<ShipConstField*>(field);
141 fBx = fieldConst->GetBx();
142 fBy = fieldConst->GetBy();
143 fBz = fieldConst->GetBz();
144 fXmin = fieldConst->GetXmin();
145 fXmax = fieldConst->GetXmax();
146 fYmin = fieldConst->GetYmin();
147 fYmax = fieldConst->GetYmax();
148 fZmin = fieldConst->GetZmin();
149 fZmax = fieldConst->GetZmax();
150 fMapName = "";
151 fPosX = fPosY = fPosZ = fScale = 0.;
152 } else {
153 cerr << "-W- ShipFieldPar::SetParameters: Unknown field type " << fType
154 << "!" << endl;
155 fBx = fBy = fBz = 0.;
156 fXmin = fXmax = fYmin = fYmax = fZmin = fZmax = 0.;
157 fMapName = "";
158 fPosX = fPosY = fPosZ = fScale = 0.;
159 }
160
161 return;
162}
163// -------------------------------------------------------------------------
const int kMaxFieldMapType
Definition: ShipFieldPar.h:13
Double_t GetXmin() const
virtual Double_t GetBx(Double_t x, Double_t y, Double_t z)
virtual Double_t GetBy(Double_t x, Double_t y, Double_t z)
Double_t GetZmax() const
virtual Double_t GetBz(Double_t x, Double_t y, Double_t z)
Double_t GetYmax() const
Double_t GetYmin() const
Double_t GetZmin() const
Double_t GetXmax() const
TString fMapName
Definition: ShipFieldPar.h:75
Double_t fYmin
Definition: ShipFieldPar.h:68
Double_t fBy
Definition: ShipFieldPar.h:72
Double_t fZmin
Definition: ShipFieldPar.h:69
Double_t fPosZ
Definition: ShipFieldPar.h:78
Double_t fPeak
Definition: ShipFieldPar.h:84
Double_t fMiddle
Definition: ShipFieldPar.h:85
Double_t fPosX
Definition: ShipFieldPar.h:78
Double_t fYmax
Definition: ShipFieldPar.h:68
virtual void putParams(FairParamList *list)
Double_t fBz
Definition: ShipFieldPar.h:72
Double_t fZmax
Definition: ShipFieldPar.h:69
Double_t fBx
Definition: ShipFieldPar.h:72
Double_t fXmax
Definition: ShipFieldPar.h:67
virtual Bool_t getParams(FairParamList *list)
void SetParameters(FairField *field)
Double_t fScale
Definition: ShipFieldPar.h:81
Double_t fXmin
Definition: ShipFieldPar.h:67
Double_t fPosY
Definition: ShipFieldPar.h:78