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