Belle II Software  release-05-02-19
STRGeometryPar.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Alexandre BEAULIEU *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <vector>
13 
14 #include <TObject.h>
15 #include <string>
16 
17 namespace Belle2 {
27  class STRGeometryPar: public TObject {
28 
29  public:
30 
33 
36 
37  //
38  // Setters and Getters
39  //
41 
43  int getVersion() const { return m_Version; }
44 
46  void setVersion(int version) { m_Version = version; }
47 
48  //
49  // Shield parameters
50  //
51 
52 
54  int getNLayers(int shield) const { return m_NLayers[shield] ; }
55 
57  void setNLayers(int shield, int nLayers)
58  {
59  m_NLayers[shield] = nLayers ;
60 
61  // Resize std::vectors according to the number of layers
62  m_LayerMaterial[shield].resize(nLayers);
63  m_LayerNPlanes[shield].resize(nLayers);
64  m_LayerPlaneZ[shield].resize(nLayers);
65  m_LayerPlaneInnerRadius[shield].resize(nLayers);
66  m_LayerPlaneOuterRadius[shield].resize(nLayers);
67 
68  }
69 
71  std::string getLayerMaterial(int shield, int layer) const { return m_LayerMaterial[shield].at(layer);}
72 
74  void setLayerMaterial(int shield, int layer, const std::string& material) { m_LayerMaterial[shield].at(layer) = material; }
75 
77  int getLayerNPlanes(int shield, int layer) const
78  {
79  return m_LayerNPlanes[shield].at(layer);
80  }
81 
83  void setLayerNPlanes(int shield, int layer, int nplanes)
84  {
85  m_LayerNPlanes[shield].at(layer) = nplanes;
86 
87  // Resize std::vectors according to the number of planes in each layer
88  m_LayerPlaneZ[shield].at(layer).resize(nplanes);
89  m_LayerPlaneInnerRadius[shield].at(layer).resize(nplanes);
90  m_LayerPlaneOuterRadius[shield].at(layer).resize(nplanes);
91  }
92 
94  double getLayerPlaneZ(int shield, int layer, int plane) const
95  {
96  return m_LayerPlaneZ[shield].at(layer).at(plane);
97  }
98 
100  const double* getLayerPlaneZ(int shield, int layer) const
101  {
102  return &m_LayerPlaneZ[shield].at(layer).at(0);
103  }
104 
105 
107  void setLayerPlaneZ(int shield, int layer, int plane, double z)
108  {
109  m_LayerPlaneZ[shield].at(layer).at(plane) = z;
110  }
111 
112 
114  double getLayerPlaneInnerRadius(int shield, int layer, int plane) const
115  {
116  return m_LayerPlaneInnerRadius[shield].at(layer).at(plane);
117  }
118 
120  const double* getLayerPlaneInnerRadius(int shield, int layer) const
121  {
122  return &m_LayerPlaneInnerRadius[shield].at(layer).at(0);
123  }
124 
126  void setLayerPlaneInnerRadius(int shield, int layer, int plane, double r)
127  {
128  m_LayerPlaneInnerRadius[shield].at(layer).at(plane) = r;
129  }
130 
132  double getLayerPlaneOuterRadius(int shield, int layer, int plane) const
133  {
134  return m_LayerPlaneOuterRadius[shield].at(layer).at(plane);
135  }
136 
138  const double* getLayerPlaneOuterRadius(int shield, int layer) const
139  {
140  return &m_LayerPlaneOuterRadius[shield].at(layer).at(0);
141  }
142 
144  void setLayerPlaneOuterRadius(int shield, int layer, int plane, double r)
145  {
146  m_LayerPlaneOuterRadius[shield].at(layer).at(plane) = r;
147  }
148 
149  //
150  // POLE Pieces
151  //
153  std::string getPoleMaterial(int pole) const
154  {
155  return m_PoleMaterial[pole];
156  }
157 
159  void setPoleMaterial(int pole, const std::string& material)
160  {
161  m_PoleMaterial[pole] = material;
162  }
163 
165  int getPoleNPlanes(int pole) const
166  {
167  return m_PoleNPlanes[pole];
168  }
169 
171  void setPoleNPlanes(int pole, int nplanes)
172  {
173  m_PoleNPlanes[pole] = nplanes;
174 
175  // Resize std::vectors according to the number of planes in each layer
176  m_PolePlaneZ[pole].resize(nplanes);
177  m_PolePlaneInnerRadius[pole].resize(nplanes);
178  m_PolePlaneOuterRadius[pole].resize(nplanes);
179  }
180 
182  double getPolePlaneZ(int pole, int plane) const
183  {
184  return m_PolePlaneZ[pole].at(plane);
185  }
186 
188  const double* getPolePlaneZ(int pole) const
189  {
190  return &m_PolePlaneZ[pole].at(0);
191  }
192 
193 
195  void setPolePlaneZ(int pole, int plane, double z)
196  {
197  m_PolePlaneZ[pole].at(plane) = z;
198  }
199 
200 
202  double getPolePlaneInnerRadius(int pole, int plane) const
203  {
204  return m_PolePlaneInnerRadius[pole].at(plane);
205  }
206 
208  const double* getPolePlaneInnerRadius(int pole) const
209  {
210  return &m_PolePlaneInnerRadius[pole].at(0);
211  }
212 
214  void setPolePlaneInnerRadius(int pole, int plane, double r)
215  {
216  m_PolePlaneInnerRadius[pole].at(plane) = r;
217  }
218 
220  double getPolePlaneOuterRadius(int pole, int plane) const
221  {
222  return m_PolePlaneOuterRadius[pole].at(plane);
223  }
224 
226  const double* getPolePlaneOuterRadius(int pole) const
227  {
228  return &m_PolePlaneOuterRadius[pole].at(0);
229  }
230 
232  void setPolePlaneOuterRadius(int pole, int plane, double r)
233  {
234  m_PolePlaneOuterRadius[pole].at(plane) = r;
235  }
236 
237 
238 
239  //
240  // Constants that will _always_ be true
241  // These ate not design parameters but fundamental
242  // characteristics of the system. e.g. we will always
243  // have only one forward and one backward shield.
244  //
246  static const int NECLSHIELDS = 2;
248  static const int FWD_ECLSHIELD = 0;
250  static const int BWD_ECLSHIELD = 1;
251 
253  static const int NPOLEPIECES = 2;
255  static const int FWD_POLEPIECE = 0;
257  static const int BWD_POLEPIECE = 1;
258 
259 
260 
261  private:
262 
263 
266 
267 
268  //
269  // Data members:
270  // these are the geometry parameters
271  //
273 
275  int m_Version;
276 
277  //
278  // ECL Shields
279  //
280 
282  int m_NLayers[NECLSHIELDS];
283 
285  std::vector<std::string> m_LayerMaterial[NECLSHIELDS];
286 
288  std::vector<int> m_LayerNPlanes[NECLSHIELDS];
289 
291  std::vector< std::vector<double> > m_LayerPlaneZ[NECLSHIELDS];
292 
294  std::vector< std::vector<double> > m_LayerPlaneInnerRadius[NECLSHIELDS];
295 
297  std::vector< std::vector<double> > m_LayerPlaneOuterRadius[NECLSHIELDS];
298 
299 
300  //
301  // POLE Pieces
302  //
303 
306 
309 
311  std::vector<double> m_PolePlaneZ[NPOLEPIECES];
312 
314  std::vector<double> m_PolePlaneInnerRadius[NPOLEPIECES];
315 
317  std::vector<double> m_PolePlaneOuterRadius[NPOLEPIECES];
318 
319 
320 
321  //
322  // For ROOT objects
323  //
324 
327  };
329 } // end of namespace Belle2
330 
331 
Belle2::STRGeometryPar::getPolePlaneZ
double getPolePlaneZ(int pole, int plane) const
Get Z-position of one plane (w.r.t. IP)
Definition: STRGeometryPar.h:190
Belle2::STRGeometryPar::getLayerPlaneOuterRadius
double getLayerPlaneOuterRadius(int shield, int layer, int plane) const
Get Outer radii of one planes.
Definition: STRGeometryPar.h:140
Belle2::STRGeometryPar::setLayerNPlanes
void setLayerNPlanes(int shield, int layer, int nplanes)
Set Number of polycone planes in each layer.
Definition: STRGeometryPar.h:91
Belle2::STRGeometryPar::setPoleNPlanes
void setPoleNPlanes(int pole, int nplanes)
Set Number of polycone planes in each layer.
Definition: STRGeometryPar.h:179
Belle2::STRGeometryPar::NECLSHIELDS
static const int NECLSHIELDS
Number of ECL shields in Belle2.
Definition: STRGeometryPar.h:254
Belle2::STRGeometryPar
The Class for STR geometry.
Definition: STRGeometryPar.h:35
Belle2::STRGeometryPar::m_NLayers
int m_NLayers[NECLSHIELDS]
Number of layers in the shield.
Definition: STRGeometryPar.h:290
Belle2::STRGeometryPar::setPolePlaneOuterRadius
void setPolePlaneOuterRadius(int pole, int plane, double r)
Set Outer radii of the planes.
Definition: STRGeometryPar.h:240
Belle2::STRGeometryPar::STRGeometryPar
STRGeometryPar()
Default constructor.
Definition: STRGeometryPar.cc:15
Belle2::STRGeometryPar::m_Instance
static STRGeometryPar * m_Instance
static pointer to the singleton instance of this class
Definition: STRGeometryPar.h:273
Belle2::STRGeometryPar::m_LayerPlaneInnerRadius
std::vector< std::vector< double > > m_LayerPlaneInnerRadius[NECLSHIELDS]
Inner radii of the planes.
Definition: STRGeometryPar.h:302
Belle2::STRGeometryPar::getLayerMaterial
std::string getLayerMaterial(int shield, int layer) const
Get the material of a layer (as a std::string)
Definition: STRGeometryPar.h:79
Belle2::STRGeometryPar::setLayerPlaneOuterRadius
void setLayerPlaneOuterRadius(int shield, int layer, int plane, double r)
Set Outer radii of the planes.
Definition: STRGeometryPar.h:152
Belle2::STRGeometryPar::setPolePlaneInnerRadius
void setPolePlaneInnerRadius(int pole, int plane, double r)
Set Inner radii of the planes.
Definition: STRGeometryPar.h:222
Belle2::STRGeometryPar::setVersion
void setVersion(int version)
Set STR geometry version.
Definition: STRGeometryPar.h:54
Belle2::STRGeometryPar::setLayerMaterial
void setLayerMaterial(int shield, int layer, const std::string &material)
Set the material of a layer (as a std::string)
Definition: STRGeometryPar.h:82
Belle2::STRGeometryPar::getLayerPlaneInnerRadius
double getLayerPlaneInnerRadius(int shield, int layer, int plane) const
Get Inner radius of one plane.
Definition: STRGeometryPar.h:122
Belle2::STRGeometryPar::getPolePlaneOuterRadius
double getPolePlaneOuterRadius(int pole, int plane) const
Get Outer radii of one planes.
Definition: STRGeometryPar.h:228
Belle2::STRGeometryPar::m_Version
int m_Version
Geometry version.
Definition: STRGeometryPar.h:283
Belle2::STRGeometryPar::getPoleNPlanes
int getPoleNPlanes(int pole) const
Get Number of polycone planes in each layer.
Definition: STRGeometryPar.h:173
Belle2::STRGeometryPar::getLayerNPlanes
int getLayerNPlanes(int shield, int layer) const
Get Number of polycone planes in each layer.
Definition: STRGeometryPar.h:85
Belle2::STRGeometryPar::m_LayerPlaneZ
std::vector< std::vector< double > > m_LayerPlaneZ[NECLSHIELDS]
Z-position of each plane (w.r.t. IP)
Definition: STRGeometryPar.h:299
Belle2::STRGeometryPar::getLayerPlaneZ
double getLayerPlaneZ(int shield, int layer, int plane) const
Get Z-position of one plane (w.r.t. IP)
Definition: STRGeometryPar.h:102
Belle2::STRGeometryPar::getVersion
int getVersion() const
Get STR geometry version.
Definition: STRGeometryPar.h:51
Belle2::STRGeometryPar::m_PoleNPlanes
int m_PoleNPlanes[NPOLEPIECES]
Number of polycone planes in each pole piece.
Definition: STRGeometryPar.h:316
Belle2::STRGeometryPar::m_LayerMaterial
std::vector< std::string > m_LayerMaterial[NECLSHIELDS]
Material of each of the layers.
Definition: STRGeometryPar.h:293
Belle2::STRGeometryPar::ClassDef
ClassDef(STRGeometryPar, 1)
ClassDef, must be the last term before the closing {}.
Belle2::STRGeometryPar::FWD_ECLSHIELD
static const int FWD_ECLSHIELD
Index corresponding to the forward shield.
Definition: STRGeometryPar.h:256
Belle2::STRGeometryPar::m_LayerNPlanes
std::vector< int > m_LayerNPlanes[NECLSHIELDS]
Number of polycone planes in each layer.
Definition: STRGeometryPar.h:296
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::STRGeometryPar::setLayerPlaneInnerRadius
void setLayerPlaneInnerRadius(int shield, int layer, int plane, double r)
Set Inner radii of the planes.
Definition: STRGeometryPar.h:134
Belle2::STRGeometryPar::NPOLEPIECES
static const int NPOLEPIECES
Number of pole pieces in Belle2.
Definition: STRGeometryPar.h:261
Belle2::STRGeometryPar::setNLayers
void setNLayers(int shield, int nLayers)
Set the number of layers in the shield, resize std::vectors.
Definition: STRGeometryPar.h:65
Belle2::STRGeometryPar::m_LayerPlaneOuterRadius
std::vector< std::vector< double > > m_LayerPlaneOuterRadius[NECLSHIELDS]
Outer radii of the planes.
Definition: STRGeometryPar.h:305
Belle2::STRGeometryPar::BWD_POLEPIECE
static const int BWD_POLEPIECE
Index corresponding to the backward pole piece.
Definition: STRGeometryPar.h:265
Belle2::STRGeometryPar::getPoleMaterial
std::string getPoleMaterial(int pole) const
Get the material of a layer (as a std::string)
Definition: STRGeometryPar.h:161
Belle2::STRGeometryPar::FWD_POLEPIECE
static const int FWD_POLEPIECE
Index corresponding to the forward pole piece.
Definition: STRGeometryPar.h:263
Belle2::STRGeometryPar::getPolePlaneInnerRadius
double getPolePlaneInnerRadius(int pole, int plane) const
Get Inner radius of one plane.
Definition: STRGeometryPar.h:210
Belle2::STRGeometryPar::getNLayers
int getNLayers(int shield) const
Get the number of layers in the shield.
Definition: STRGeometryPar.h:62
Belle2::STRGeometryPar::BWD_ECLSHIELD
static const int BWD_ECLSHIELD
Index corresponding to the backward shield.
Definition: STRGeometryPar.h:258
Belle2::STRGeometryPar::m_PoleMaterial
std::string m_PoleMaterial[NPOLEPIECES]
Material of each of the pole pieces.
Definition: STRGeometryPar.h:313
Belle2::STRGeometryPar::m_PolePlaneOuterRadius
std::vector< double > m_PolePlaneOuterRadius[NPOLEPIECES]
Outer radii of the planes.
Definition: STRGeometryPar.h:325
Belle2::STRGeometryPar::~STRGeometryPar
~STRGeometryPar()
Destructor.
Definition: STRGeometryPar.cc:31
Belle2::STRGeometryPar::m_PolePlaneInnerRadius
std::vector< double > m_PolePlaneInnerRadius[NPOLEPIECES]
Inner radii of the planes.
Definition: STRGeometryPar.h:322
Belle2::STRGeometryPar::setPoleMaterial
void setPoleMaterial(int pole, const std::string &material)
Set the material of a layer (as a std::string)
Definition: STRGeometryPar.h:167
Belle2::STRGeometryPar::m_PolePlaneZ
std::vector< double > m_PolePlaneZ[NPOLEPIECES]
Z-position of each plane (w.r.t. IP)
Definition: STRGeometryPar.h:319
Belle2::STRGeometryPar::setLayerPlaneZ
void setLayerPlaneZ(int shield, int layer, int plane, double z)
Set Z-position of each plane (w.r.t. IP)
Definition: STRGeometryPar.h:115
Belle2::STRGeometryPar::setPolePlaneZ
void setPolePlaneZ(int pole, int plane, double z)
Set Z-position of each plane (w.r.t. IP)
Definition: STRGeometryPar.h:203