Belle II Software  release-05-02-19
EKLMElementNumbers.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Kirill Chilikin *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 /* ROOT headers. */
14 #include <TObject.h>
15 
16 namespace Belle2 {
26  class EKLMElementNumbers : public TObject {
27 
28  public:
29 
33  enum Section {
34 
37 
39  c_ForwardSection = 2,
40 
41  };
42 
46  static const EKLMElementNumbers& Instance();
47 
54  bool checkSection(int section, bool fatalError = true) const;
55 
62  bool checkLayer(int layer, bool fatalError = true) const;
63 
72  bool checkDetectorLayer(int section, int layer,
73  bool fatalError = true) const;
74 
81  bool checkSector(int sector, bool fatalError = true) const;
82 
89  bool checkPlane(int plane, bool fatalError = true) const;
90 
97  bool checkSegment(int segment, bool fatalError = true) const;
98 
105  bool checkStrip(int strip, bool fatalError = true) const;
106 
115  int detectorLayerNumber(int section, int layer) const;
116 
124  int layerGlobal, int* section, int* layer) const;
125 
135  int sectorNumber(int section, int layer, int sector) const;
136 
145  int sectorNumberKLMOrder(int section, int sector) const;
146 
155  int sectorGlobal, int* section, int* layer, int* sector) const;
156 
167  int planeNumber(int section, int layer, int sector, int plane) const;
168 
178  int planeGlobal, int* section, int* layer, int* sector, int* plane)
179  const;
180 
192  int segmentNumber(int section, int layer, int sector, int plane,
193  int segment) const;
194 
205  int segmentGlobal, int* section, int* layer, int* sector, int* plane,
206  int* segment) const;
207 
219  int stripNumber(int section, int layer, int sector, int plane,
220  int strip) const;
221 
232  int stripGlobal, int* section, int* layer, int* sector, int* plane,
233  int* strip) const;
234 
239  int getSectionByGlobalStrip(int stripGlobal);
240 
245  int getLayerByGlobalStrip(int stripGlobal);
246 
251  int getSectorByGlobalStrip(int stripGlobal);
252 
257  int getPlaneByGlobalStrip(int stripGlobal);
258 
263  int getStripByGlobalStrip(int stripGlobal);
264 
270  static std::string getHSLBName(int copper, int slot);
271 
275  static constexpr int getMaximalSectionNumber()
276  {
277  return m_MaximalSectionNumber;
278  }
279 
283  static constexpr int getMaximalLayerNumber()
284  {
285  return m_MaximalLayerNumber;
286  }
287 
292  int getMaximalDetectorLayerNumber(int section) const;
293 
297  static constexpr int getMaximalSectorNumber()
298  {
299  return m_MaximalSectorNumber;
300  }
301 
305  static constexpr int getMaximalPlaneNumber()
306  {
307  return m_MaximalPlaneNumber;
308  }
309 
313  static constexpr int getMaximalSegmentNumber()
314  {
315  return m_MaximalSegmentNumber;
316  }
317 
321  static constexpr int getMaximalStripNumber()
322  {
323  return m_MaximalStripNumber;
324  }
325 
329  static constexpr int getMaximalLayerGlobalNumber()
330  {
332  }
333 
337  static constexpr int getMaximalSectorGlobalNumber()
338  {
340  }
341 
346  {
348  }
349 
353  static constexpr int getMaximalPlaneGlobalNumber()
354  {
356  }
357 
361  static constexpr int getMaximalSegmentGlobalNumber()
362  {
364  }
365 
369  static constexpr int getMaximalStripGlobalNumber()
370  {
372  }
373 
377  static constexpr int getNStripsLayer()
378  {
380  }
381 
385  static constexpr int getNStripsSector()
386  {
388  }
389 
393  static constexpr int getNStripsSegment()
394  {
395  return m_NStripsSegment;
396  }
397 
401  static constexpr int getTotalChannelNumber()
402  {
403  return m_TotalChannelNumber;
404  }
405 
406  private:
407 
412 
417 
418  protected:
419 
421  static constexpr int m_MaximalSectionNumber = 2;
422 
424  static constexpr int m_MaximalLayerNumber = 14;
425 
427  static constexpr int m_MaximalDetectorLayerNumber[2] = {12, 14};
428 
430  static constexpr int m_MaximalSectorNumber = 4;
431 
433  static constexpr int m_MaximalPlaneNumber = 2;
434 
436  static constexpr int m_MaximalSegmentNumber = 5;
437 
439  static constexpr int m_MaximalStripNumber = 75;
440 
442  static constexpr int m_NStripsSegment = 15;
443 
445  static constexpr int m_TotalChannelNumber = 15600;
446 
447  private:
448 
451 
452  };
453 
455 }
Belle2::EKLMElementNumbers::EKLMElementNumbers
EKLMElementNumbers()
Constructor.
Definition: EKLMElementNumbers.cc:26
Belle2::EKLMElementNumbers::getMaximalSectorGlobalNumberKLMOrder
static constexpr int getMaximalSectorGlobalNumberKLMOrder()
Get maximal sector global number with KLM ordering (section, sector).
Definition: EKLMElementNumbers.h:353
Belle2::EKLMElementNumbers::m_MaximalPlaneNumber
static constexpr int m_MaximalPlaneNumber
Maximal plane number.
Definition: EKLMElementNumbers.h:441
Belle2::EKLMElementNumbers::getMaximalSegmentNumber
static constexpr int getMaximalSegmentNumber()
Get maximal segment number.
Definition: EKLMElementNumbers.h:321
Belle2::EKLMElementNumbers::getNStripsSector
static constexpr int getNStripsSector()
Get number of strips in a sector.
Definition: EKLMElementNumbers.h:393
Belle2::EKLMElementNumbers::getSectorByGlobalStrip
int getSectorByGlobalStrip(int stripGlobal)
Get sector number by global strip number.
Definition: EKLMElementNumbers.cc:249
Belle2::EKLMElementNumbers::segmentNumberToElementNumbers
void segmentNumberToElementNumbers(int segmentGlobal, int *section, int *layer, int *sector, int *plane, int *segment) const
Get element numbers by segment global number.
Definition: EKLMElementNumbers.cc:199
Belle2::EKLMElementNumbers::getNStripsLayer
static constexpr int getNStripsLayer()
Get number of strips in a layer.
Definition: EKLMElementNumbers.h:385
Belle2::EKLMElementNumbers::m_MaximalSectionNumber
static constexpr int m_MaximalSectionNumber
Maximal section number.
Definition: EKLMElementNumbers.h:429
Belle2::EKLMElementNumbers::getMaximalSectionNumber
static constexpr int getMaximalSectionNumber()
Get maximal section number.
Definition: EKLMElementNumbers.h:283
Belle2::EKLMElementNumbers
EKLM element numbers.
Definition: EKLMElementNumbers.h:34
Belle2::EKLMElementNumbers::stripNumberToElementNumbers
void stripNumberToElementNumbers(int stripGlobal, int *section, int *layer, int *sector, int *plane, int *strip) const
Get element numbers by strip global number.
Definition: EKLMElementNumbers.cc:220
Belle2::EKLMElementNumbers::checkStrip
bool checkStrip(int strip, bool fatalError=true) const
Check if strip number is correct (fatal error if not).
Definition: EKLMElementNumbers.cc:109
Belle2::EKLMElementNumbers::getHSLBName
static std::string getHSLBName(int copper, int slot)
Get HSLB name.
Definition: EKLMElementNumbers.cc:273
Belle2::EKLMElementNumbers::planeNumber
int planeNumber(int section, int layer, int sector, int plane) const
Get plane number.
Definition: EKLMElementNumbers.cc:171
Belle2::EKLMElementNumbers::m_MaximalStripNumber
static constexpr int m_MaximalStripNumber
Maximal strip number.
Definition: EKLMElementNumbers.h:447
Belle2::EKLMElementNumbers::getPlaneByGlobalStrip
int getPlaneByGlobalStrip(int stripGlobal)
Get plane number by global strip number.
Definition: EKLMElementNumbers.cc:257
Belle2::EKLMElementNumbers::sectorNumberKLMOrder
int sectorNumberKLMOrder(int section, int sector) const
Get sector number (KLM order of elements: section, sector, layer).
Definition: EKLMElementNumbers.cc:152
Belle2::EKLMElementNumbers::getSectionByGlobalStrip
int getSectionByGlobalStrip(int stripGlobal)
Get section number by global strip number.
Definition: EKLMElementNumbers.cc:233
Belle2::EKLMElementNumbers::c_BackwardSection
@ c_BackwardSection
Backward.
Definition: EKLMElementNumbers.h:44
Belle2::EKLMElementNumbers::getLayerByGlobalStrip
int getLayerByGlobalStrip(int stripGlobal)
Get layer number by global strip number.
Definition: EKLMElementNumbers.cc:241
Belle2::EKLMElementNumbers::getMaximalLayerGlobalNumber
static constexpr int getMaximalLayerGlobalNumber()
Get maximal detector layer global number.
Definition: EKLMElementNumbers.h:337
Belle2::EKLMElementNumbers::detectorLayerNumber
int detectorLayerNumber(int section, int layer) const
Get detector layer number.
Definition: EKLMElementNumbers.cc:121
Belle2::EKLMElementNumbers::getMaximalLayerNumber
static constexpr int getMaximalLayerNumber()
Get maximal layer number.
Definition: EKLMElementNumbers.h:291
Belle2::EKLMElementNumbers::sectorNumber
int sectorNumber(int section, int layer, int sector) const
Get sector number.
Definition: EKLMElementNumbers.cc:145
Belle2::EKLMElementNumbers::getMaximalStripGlobalNumber
static constexpr int getMaximalStripGlobalNumber()
Get maximal strip global number.
Definition: EKLMElementNumbers.h:377
Belle2::EKLMElementNumbers::getMaximalSectorNumber
static constexpr int getMaximalSectorNumber()
Get maximal sector number.
Definition: EKLMElementNumbers.h:305
Belle2::EKLMElementNumbers::m_MaximalSectorNumber
static constexpr int m_MaximalSectorNumber
Maximal sector number.
Definition: EKLMElementNumbers.h:438
Belle2::EKLMElementNumbers::m_TotalChannelNumber
static constexpr int m_TotalChannelNumber
Total number of channels.
Definition: EKLMElementNumbers.h:453
Belle2::EKLMElementNumbers::ClassDef
ClassDef(EKLMElementNumbers, 3)
Class version.
Belle2::EKLMElementNumbers::planeNumberToElementNumbers
void planeNumberToElementNumbers(int planeGlobal, int *section, int *layer, int *sector, int *plane) const
Get element numbers by plane global number.
Definition: EKLMElementNumbers.cc:179
Belle2::EKLMElementNumbers::m_MaximalDetectorLayerNumber
static constexpr int m_MaximalDetectorLayerNumber[2]
Maximal detector layer number.
Definition: EKLMElementNumbers.h:435
Belle2::EKLMElementNumbers::getMaximalStripNumber
static constexpr int getMaximalStripNumber()
Get maximal strip number.
Definition: EKLMElementNumbers.h:329
Belle2::EKLMElementNumbers::layerNumberToElementNumbers
void layerNumberToElementNumbers(int layerGlobal, int *section, int *layer) const
Get element numbers by detector layer global number.
Definition: EKLMElementNumbers.cc:130
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::EKLMElementNumbers::checkDetectorLayer
bool checkDetectorLayer(int section, int layer, bool fatalError=true) const
Check if detector layer number is correct (fatal error if not).
Definition: EKLMElementNumbers.cc:57
Belle2::EKLMElementNumbers::sectorNumberToElementNumbers
void sectorNumberToElementNumbers(int sectorGlobal, int *section, int *layer, int *sector) const
Get element numbers by sector global number.
Definition: EKLMElementNumbers.cc:159
Belle2::EKLMElementNumbers::checkSection
bool checkSection(int section, bool fatalError=true) const
Check if section number is correct.
Definition: EKLMElementNumbers.cc:34
Belle2::EKLMElementNumbers::checkPlane
bool checkPlane(int plane, bool fatalError=true) const
Check if plane number is correct (fatal error if not).
Definition: EKLMElementNumbers.cc:85
Belle2::EKLMElementNumbers::segmentNumber
int segmentNumber(int section, int layer, int sector, int plane, int segment) const
Get segment number.
Definition: EKLMElementNumbers.cc:191
Belle2::EKLMElementNumbers::m_NStripsSegment
static constexpr int m_NStripsSegment
Number of strips in a segment.
Definition: EKLMElementNumbers.h:450
Belle2::EKLMElementNumbers::getMaximalSegmentGlobalNumber
static constexpr int getMaximalSegmentGlobalNumber()
Get maximal segment global number.
Definition: EKLMElementNumbers.h:369
Belle2::EKLMElementNumbers::Instance
static const EKLMElementNumbers & Instance()
Instantiation.
Definition: EKLMElementNumbers.cc:20
Belle2::EKLMElementNumbers::stripNumber
int stripNumber(int section, int layer, int sector, int plane, int strip) const
Get strip number.
Definition: EKLMElementNumbers.cc:212
Belle2::EKLMElementNumbers::checkSegment
bool checkSegment(int segment, bool fatalError=true) const
Check if segment number is correct (fatal error if not).
Definition: EKLMElementNumbers.cc:97
Belle2::EKLMElementNumbers::getMaximalPlaneNumber
static constexpr int getMaximalPlaneNumber()
Get maximal plane number.
Definition: EKLMElementNumbers.h:313
Belle2::EKLMElementNumbers::m_MaximalLayerNumber
static constexpr int m_MaximalLayerNumber
Maximal layer number.
Definition: EKLMElementNumbers.h:432
Belle2::EKLMElementNumbers::getNStripsSegment
static constexpr int getNStripsSegment()
Get number of strips in a segment.
Definition: EKLMElementNumbers.h:401
Belle2::EKLMElementNumbers::getMaximalSectorGlobalNumber
static constexpr int getMaximalSectorGlobalNumber()
Get maximal sector global number.
Definition: EKLMElementNumbers.h:345
Belle2::EKLMElementNumbers::getStripByGlobalStrip
int getStripByGlobalStrip(int stripGlobal)
Get strip number by global strip number.
Definition: EKLMElementNumbers.cc:265
Belle2::EKLMElementNumbers::~EKLMElementNumbers
~EKLMElementNumbers()
Destructor.
Definition: EKLMElementNumbers.cc:30
Belle2::EKLMElementNumbers::c_ForwardSection
@ c_ForwardSection
Forward.
Definition: EKLMElementNumbers.h:47
Belle2::EKLMElementNumbers::Section
Section
Constants for section numbers.
Definition: EKLMElementNumbers.h:41
Belle2::EKLMElementNumbers::checkLayer
bool checkLayer(int layer, bool fatalError=true) const
Check if layer number is correct.
Definition: EKLMElementNumbers.cc:45
Belle2::EKLMElementNumbers::getTotalChannelNumber
static constexpr int getTotalChannelNumber()
Get total number of channels.
Definition: EKLMElementNumbers.h:409
Belle2::EKLMElementNumbers::m_MaximalSegmentNumber
static constexpr int m_MaximalSegmentNumber
Maximal segment number.
Definition: EKLMElementNumbers.h:444
Belle2::EKLMElementNumbers::getMaximalPlaneGlobalNumber
static constexpr int getMaximalPlaneGlobalNumber()
Get maximal plane global number.
Definition: EKLMElementNumbers.h:361
Belle2::EKLMElementNumbers::checkSector
bool checkSector(int sector, bool fatalError=true) const
Check if sector number is correct (fatal error if not).
Definition: EKLMElementNumbers.cc:73
Belle2::EKLMElementNumbers::getMaximalDetectorLayerNumber
int getMaximalDetectorLayerNumber(int section) const
Get maximal detector layer number.
Definition: EKLMElementNumbers.cc:279