Belle II Software  release-05-01-25
EKLMSegmentAlignment.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 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/dbobjects/eklm/EKLMSegmentAlignment.h>
13 
14 using namespace Belle2;
15 
17 {
18 }
19 
21 {
22 }
23 
25  KLMAlignmentData* dat)
26 {
27  std::map<uint16_t, KLMAlignmentData>::iterator it;
28  it = m_SegmentAlignment.find(segment);
29  if (it == m_SegmentAlignment.end()) {
30  m_SegmentAlignment.insert(
31  std::pair<uint16_t, KLMAlignmentData>(segment, *dat));
32  } else
33  it->second = *dat;
34 }
35 
37  uint16_t segment) const
38 {
39  std::map<uint16_t, KLMAlignmentData>::const_iterator it;
40  it = m_SegmentAlignment.find(segment);
41  if (it == m_SegmentAlignment.end())
42  return nullptr;
43  return &(it->second);
44 }
45 
46 double EKLMSegmentAlignment::getGlobalParam(unsigned short element,
47  unsigned short param) const
48 {
49  const KLMAlignmentData* alignmentData = getSegmentAlignment(element);
50  if (alignmentData == nullptr)
51  return 0;
52  return alignmentData->getParameter(
53  static_cast<enum KLMAlignmentData::ParameterNumbers>(param));
54 }
55 
56 void EKLMSegmentAlignment::setGlobalParam(double value, unsigned short element,
57  unsigned short param)
58 {
59  KLMAlignmentData* alignmentData =
60  const_cast<KLMAlignmentData*>(getSegmentAlignment(element));
61  /*
62  * Create alignment data if it does not exist.
63  * This is necessary for errors and corrections.
64  */
65  if (alignmentData == nullptr) {
66  KLMAlignmentData newAlignmentData(0, 0, 0, 0, 0, 0);
67  newAlignmentData.setParameter(
68  static_cast<enum KLMAlignmentData::ParameterNumbers>(param), value);
69  m_SegmentAlignment.insert(
70  std::pair<uint16_t, KLMAlignmentData>(element, newAlignmentData));
71  } else {
72  alignmentData->setParameter(
73  static_cast<enum KLMAlignmentData::ParameterNumbers>(param), value);
74  }
75 }
76 
77 /* TODO: this function is not implemented. */
78 std::vector< std::pair<unsigned short, unsigned short> >
80 {
81  return {};
82 }
Belle2::KLMAlignmentData::ParameterNumbers
ParameterNumbers
Alignment parameter numbers.
Definition: KLMAlignmentData.h:40
Belle2::EKLMSegmentAlignment::listGlobalParams
std::vector< std::pair< unsigned short, unsigned short > > listGlobalParams()
Get a list of stored global parameters.
Definition: EKLMSegmentAlignment.cc:79
Belle2::EKLMSegmentAlignment::setSegmentAlignment
void setSegmentAlignment(uint16_t segment, KLMAlignmentData *dat)
Set segment alignment data.
Definition: EKLMSegmentAlignment.cc:24
Belle2::EKLMSegmentAlignment::getGlobalParam
double getGlobalParam(unsigned short element, unsigned short param) const
Get global parameter.
Definition: EKLMSegmentAlignment.cc:46
Belle2::KLMAlignmentData::setParameter
void setParameter(enum ParameterNumbers number, float value)
Set parameter by number.
Definition: KLMAlignmentData.cc:65
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::EKLMSegmentAlignment::~EKLMSegmentAlignment
~EKLMSegmentAlignment()
Destructor.
Definition: EKLMSegmentAlignment.cc:20
Belle2::EKLMSegmentAlignment::getSegmentAlignment
const KLMAlignmentData * getSegmentAlignment(uint16_t segment) const
Get segment alignment data.
Definition: EKLMSegmentAlignment.cc:36
Belle2::EKLMSegmentAlignment::EKLMSegmentAlignment
EKLMSegmentAlignment()
Constructor.
Definition: EKLMSegmentAlignment.cc:16
Belle2::KLMAlignmentData
KLM Alignment data.
Definition: KLMAlignmentData.h:33
Belle2::EKLMSegmentAlignment::m_SegmentAlignment
std::map< uint16_t, KLMAlignmentData > m_SegmentAlignment
Segment alignment.
Definition: EKLMSegmentAlignment.h:103
Belle2::EKLMSegmentAlignment::setGlobalParam
void setGlobalParam(double value, unsigned short element, unsigned short param)
Set global parameter.
Definition: EKLMSegmentAlignment.cc:56