Belle II Software  release-05-02-19
KLMElementNumbers.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 /* KLM headers. */
14 #include <klm/dataobjects/bklm/BKLMElementNumbers.h>
15 #include <klm/dataobjects/eklm/EKLMElementNumbers.h>
16 
17 /* C++ headers. */
18 #include <string>
19 
20 namespace Belle2 {
29  class KLMElementNumbers {
30 
31  public:
32 
36  enum Subdetector {
37 
39  c_BKLM = 1,
40 
42  c_EKLM = 2,
43 
44  };
45 
49  static const KLMElementNumbers& Instance();
50 
60  uint16_t channelNumber(int subdetector, int section, int sector, int layer,
61  int plane, int strip) const;
62 
71  uint16_t channelNumberBKLM(int section, int sector, int layer, int plane,
72  int strip) const;
73 
78  uint16_t channelNumberBKLM(int bklmChannel) const;
79 
88  uint16_t channelNumberEKLM(int section, int sector, int layer, int plane,
89  int strip) const;
90 
95  uint16_t channelNumberEKLM(int eklmStrip) const;
96 
102  bool isBKLMChannel(uint16_t channel) const;
103 
109  bool isEKLMChannel(uint16_t channel) const;
110 
116  int localChannelNumberBKLM(uint16_t channel) const;
117 
123  int localChannelNumberEKLM(uint16_t channel) const;
124 
136  uint16_t channel, int* subdetector, int* section, int* sector,
137  int* layer, int* plane, int* strip) const;
138 
146  uint16_t planeNumberBKLM(int section, int sector, int layer,
147  int plane) const;
148 
156  uint16_t planeNumberEKLM(int section, int sector, int layer,
157  int plane) const;
158 
166  uint16_t moduleNumber(int subdetector, int section, int sector,
167  int layer) const;
168 
175  uint16_t moduleNumberBKLM(int section, int sector, int layer) const;
176 
183  uint16_t moduleNumberEKLM(int section, int sector, int layer) const;
184 
189  uint16_t moduleNumberByChannel(uint16_t channel) const;
190 
200  uint16_t module, int* subdetector, int* section, int* sector,
201  int* layer) const;
202 
207  unsigned int getNChannelsModule(uint16_t module) const;
208 
214  uint16_t sectorNumberBKLM(int section, int sector) const;
215 
221  uint16_t sectorNumberEKLM(int section, int sector) const;
222 
229  int getExtrapolationLayer(int subdetector, int layer) const;
230 
234  static constexpr int getMaximalExtrapolationLayer()
235  {
238  }
239 
243  static constexpr int getTotalModuleNumber()
244  {
247  }
248 
253  int getMinimalPlaneNumber(int subdetector) const;
254 
261  std::string getSectorDAQName(int subdetector, int section, int sector) const;
262 
266  static constexpr int getTotalChannelNumber()
267  {
270  }
271 
272  private:
273 
278 
283 
285  static constexpr uint16_t m_BKLMOffset = 0x8000;
286 
288  const EKLMElementNumbers* m_eklmElementNumbers;
289 
290  };
291 
293 }
Belle2::KLMElementNumbers::sectorNumberBKLM
uint16_t sectorNumberBKLM(int section, int sector) const
Get sector number for BKLM.
Definition: KLMElementNumbers.cc:222
Belle2::BKLMElementNumbers::getTotalChannelNumber
static constexpr int getTotalChannelNumber()
Get total number of channels.
Definition: BKLMElementNumbers.h:283
Belle2::KLMElementNumbers::isEKLMChannel
bool isEKLMChannel(uint16_t channel) const
Determine whether a given channel is in EKLM.
Definition: KLMElementNumbers.cc:87
Belle2::KLMElementNumbers::isBKLMChannel
bool isBKLMChannel(uint16_t channel) const
Determine whether a given channel is in BKLM.
Definition: KLMElementNumbers.cc:82
Belle2::KLMElementNumbers::moduleNumberByChannel
uint16_t moduleNumberByChannel(uint16_t channel) const
Get module number by channel number.
Definition: KLMElementNumbers.cc:178
Belle2::BKLMElementNumbers::getMaximalLayerGlobalNumber
static constexpr int getMaximalLayerGlobalNumber()
Get maximal layer global number.
Definition: BKLMElementNumbers.h:275
Belle2::KLMElementNumbers::localChannelNumberBKLM
int localChannelNumberBKLM(uint16_t channel) const
Get local BKLM channel number.
Definition: KLMElementNumbers.cc:92
Belle2::KLMElementNumbers::Subdetector
Subdetector
Subdetector constants.
Definition: KLMElementNumbers.h:44
Belle2::KLMElementNumbers::getMinimalPlaneNumber
int getMinimalPlaneNumber(int subdetector) const
Get minimal plane number.
Definition: KLMElementNumbers.cc:244
Belle2::KLMElementNumbers::planeNumberBKLM
uint16_t planeNumberBKLM(int section, int sector, int layer, int plane) const
Get plane number for BKLM.
Definition: KLMElementNumbers.cc:128
Belle2::KLMElementNumbers::localChannelNumberEKLM
int localChannelNumberEKLM(uint16_t channel) const
Get local EKLM channel number.
Definition: KLMElementNumbers.cc:99
Belle2::KLMElementNumbers::c_EKLM
@ c_EKLM
EKLM.
Definition: KLMElementNumbers.h:50
Belle2::KLMElementNumbers::channelNumber
uint16_t channelNumber(int subdetector, int section, int sector, int layer, int plane, int strip) const
Get channel number.
Definition: KLMElementNumbers.cc:37
Belle2::KLMElementNumbers::Instance
static const KLMElementNumbers & Instance()
Instantiation.
Definition: KLMElementNumbers.cc:31
Belle2::KLMElementNumbers::moduleNumberToElementNumbers
void moduleNumberToElementNumbers(uint16_t module, int *subdetector, int *section, int *sector, int *layer) const
Get element numbers by module number.
Definition: KLMElementNumbers.cc:186
Belle2::KLMElementNumbers::~KLMElementNumbers
~KLMElementNumbers()
Destructor.
Definition: KLMElementNumbers.cc:27
Belle2::KLMElementNumbers::channelNumberBKLM
uint16_t channelNumberBKLM(int section, int sector, int layer, int plane, int strip) const
Get channel number for BKLM.
Definition: KLMElementNumbers.cc:50
Belle2::KLMElementNumbers::KLMElementNumbers
KLMElementNumbers()
Constructor.
Definition: KLMElementNumbers.cc:22
Belle2::KLMElementNumbers::getTotalModuleNumber
static constexpr int getTotalModuleNumber()
Get total number of modules.
Definition: KLMElementNumbers.h:251
Belle2::EKLMElementNumbers::getMaximalLayerNumber
static constexpr int getMaximalLayerNumber()
Get maximal layer number.
Definition: EKLMElementNumbers.h:291
Belle2::KLMElementNumbers::getNChannelsModule
unsigned int getNChannelsModule(uint16_t module) const
Get number of channels in module.
Definition: KLMElementNumbers.cc:208
Belle2::BKLMElementNumbers::getMaximalLayerNumber
static constexpr int getMaximalLayerNumber()
Get maximal layer number (1-based).
Definition: BKLMElementNumbers.h:251
Belle2::KLMElementNumbers::sectorNumberEKLM
uint16_t sectorNumberEKLM(int section, int sector) const
Get sector number for EKLM.
Definition: KLMElementNumbers.cc:229
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::KLMElementNumbers::moduleNumberEKLM
uint16_t moduleNumberEKLM(int section, int sector, int layer) const
Get module number for EKLM.
Definition: KLMElementNumbers.cc:166
Belle2::KLMElementNumbers::c_BKLM
@ c_BKLM
BKLM.
Definition: KLMElementNumbers.h:47
Belle2::KLMElementNumbers::getMaximalExtrapolationLayer
static constexpr int getMaximalExtrapolationLayer()
Get maximal extrapolation layer.
Definition: KLMElementNumbers.h:242
Belle2::KLMElementNumbers::planeNumberEKLM
uint16_t planeNumberEKLM(int section, int sector, int layer, int plane) const
Get channel number for EKLM.
Definition: KLMElementNumbers.cc:136
Belle2::KLMElementNumbers::moduleNumberBKLM
uint16_t moduleNumberBKLM(int section, int sector, int layer) const
Get module number for BKLM.
Definition: KLMElementNumbers.cc:158
Belle2::KLMElementNumbers::channelNumberEKLM
uint16_t channelNumberEKLM(int section, int sector, int layer, int plane, int strip) const
Get channel number for EKLM.
Definition: KLMElementNumbers.cc:64
Belle2::EKLMElementNumbers::getMaximalSectorGlobalNumber
static constexpr int getMaximalSectorGlobalNumber()
Get maximal sector global number.
Definition: EKLMElementNumbers.h:345
Belle2::KLMElementNumbers::m_BKLMOffset
static constexpr uint16_t m_BKLMOffset
BKLM offset.
Definition: KLMElementNumbers.h:293
Belle2::KLMElementNumbers
KLM element numbers.
Definition: KLMElementNumbers.h:37
Belle2::KLMElementNumbers::getTotalChannelNumber
static constexpr int getTotalChannelNumber()
Get total number of channels.
Definition: KLMElementNumbers.h:274
Belle2::KLMElementNumbers::moduleNumber
uint16_t moduleNumber(int subdetector, int section, int sector, int layer) const
Get module number.
Definition: KLMElementNumbers.cc:149
Belle2::KLMElementNumbers::m_eklmElementNumbers
const EKLMElementNumbers * m_eklmElementNumbers
EKLM element numbers.
Definition: KLMElementNumbers.h:296
Belle2::EKLMElementNumbers::getTotalChannelNumber
static constexpr int getTotalChannelNumber()
Get total number of channels.
Definition: EKLMElementNumbers.h:409
Belle2::KLMElementNumbers::getSectorDAQName
std::string getSectorDAQName(int subdetector, int section, int sector) const
Get DAQ name for a given sector.
Definition: KLMElementNumbers.cc:252
Belle2::KLMElementNumbers::getExtrapolationLayer
int getExtrapolationLayer(int subdetector, int layer) const
Get extrapolation layer number (BKLM - from 1 to 15, EKLM - from 16 to 29).
Definition: KLMElementNumbers.cc:236
Belle2::KLMElementNumbers::channelNumberToElementNumbers
void channelNumberToElementNumbers(uint16_t channel, int *subdetector, int *section, int *sector, int *layer, int *plane, int *strip) const
Get element numbers by channel number.
Definition: KLMElementNumbers.cc:106