Belle II Software  release-05-01-25
KLMElementArrayIndex.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2019 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 /* Own header. */
12 #include <klm/dataobjects/KLMElementArrayIndex.h>
13 
14 /* Belle 2 headers. */
15 #include <framework/logging/Logger.h>
16 
17 using namespace Belle2;
18 
20  enum KLMChannelIndex::IndexLevel indexLevel)
21 {
22  uint16_t index = 0;
23  KLMChannelIndex klmElements(indexLevel);
24  m_NElements = 0;
25  for (KLMChannelIndex& klmElement : klmElements) {
26  uint16_t number;
27  switch (indexLevel) {
29  number = klmElement.getKLMChannelNumber();
30  break;
32  number = klmElement.getKLMPlaneNumber();
33  break;
35  number = klmElement.getKLMModuleNumber();
36  break;
38  number = klmElement.getKLMSectorNumber();
39  break;
40  default:
41  B2FATAL("Unsupported index level in KLMElementArrayIndex.");
42  }
43  m_MapNumberIndex.insert(std::pair<uint16_t, uint16_t>(number, index));
44  m_MapIndexNumber.insert(std::pair<uint16_t, uint16_t>(index, number));
45  index++;
46  m_NElements++;
47  }
48 }
49 
51 {
52 }
53 
54 uint16_t KLMElementArrayIndex::getIndex(uint16_t number) const
55 {
56  std::map<uint16_t, uint16_t>::const_iterator it =
57  m_MapNumberIndex.find(number);
58  if (it == m_MapNumberIndex.end())
59  B2FATAL("Incorrect KLM element number.");
60  return it->second;
61 }
62 
63 uint16_t KLMElementArrayIndex::getNumber(uint16_t index) const
64 {
65  std::map<uint16_t, uint16_t>::const_iterator it =
66  m_MapIndexNumber.find(index);
67  if (it == m_MapIndexNumber.end())
68  B2FATAL("Incorrect KLM element index.");
69  return it->second;
70 }
Belle2::KLMChannelIndex::c_IndexLevelLayer
@ c_IndexLevelLayer
Layer.
Definition: KLMChannelIndex.h:52
Belle2::KLMElementArrayIndex::KLMElementArrayIndex
KLMElementArrayIndex(enum KLMChannelIndex::IndexLevel indexLevel)
Constructor.
Definition: KLMElementArrayIndex.cc:19
Belle2::KLMChannelIndex::c_IndexLevelSector
@ c_IndexLevelSector
Sector.
Definition: KLMChannelIndex.h:49
Belle2::KLMElementArrayIndex::getNumber
uint16_t getNumber(uint16_t index) const
Get element number.
Definition: KLMElementArrayIndex.cc:63
Belle2::KLMElementArrayIndex::m_NElements
uint16_t m_NElements
Number of elements.
Definition: KLMElementArrayIndex.h:79
Belle2::KLMChannelIndex::IndexLevel
IndexLevel
Index level (loop over KLM elements at the specified level).
Definition: KLMChannelIndex.h:40
Belle2::KLMChannelIndex::c_IndexLevelPlane
@ c_IndexLevelPlane
Plane.
Definition: KLMChannelIndex.h:55
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::KLMElementArrayIndex::m_MapIndexNumber
std::map< uint16_t, uint16_t > m_MapIndexNumber
Map KLM element index - KLM element number.
Definition: KLMElementArrayIndex.h:76
Belle2::KLMChannelIndex
KLM channel index.
Definition: KLMChannelIndex.h:33
Belle2::KLMElementArrayIndex::~KLMElementArrayIndex
virtual ~KLMElementArrayIndex()
Destructor.
Definition: KLMElementArrayIndex.cc:50
Belle2::KLMElementArrayIndex::getIndex
uint16_t getIndex(uint16_t number) const
Get element index.
Definition: KLMElementArrayIndex.cc:54
Belle2::KLMElementArrayIndex::m_MapNumberIndex
std::map< uint16_t, uint16_t > m_MapNumberIndex
Map KLM element number - KLM element index.
Definition: KLMElementArrayIndex.h:73
Belle2::KLMChannelIndex::c_IndexLevelStrip
@ c_IndexLevelStrip
Strip.
Definition: KLMChannelIndex.h:58