Belle II Software  release-05-01-25
PXDGainMapPar.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Benjamin Schwenker *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <TObject.h>
13 #include <unordered_map>
14 #include <vector>
15 
16 namespace Belle2 {
45  class PXDGainMapPar: public TObject {
46  public:
47 
49  PXDGainMapPar(int nBinsU = 4, int nBinsV = 6, float defaultValue = 1.0) : m_nBinsU(nBinsU), m_nBinsV(nBinsV),
50  m_defaultValue(defaultValue), m_sensorCalibrationMap() {}
51 
54  unsigned short getBinsU() const { return m_nBinsU; }
55 
58  unsigned short getBinsV() const { return m_nBinsV; }
59 
62  unsigned short getGlobalID(unsigned short uBin, unsigned short vBin) const { return uBin * m_nBinsV + vBin; }
63 
70  void setContent(unsigned short sensorID, unsigned short globalID, float value)
71  {
72  auto mapIter = m_sensorCalibrationMap.find(sensorID);
73  if (mapIter != m_sensorCalibrationMap.end()) {
74  // Already some values stored
75  auto& calVec = mapIter->second;
76  // Set the value
77  calVec[globalID] = value;
78  } else {
79  // Create a fresh calibration vector
80  std::vector<float> calVec(m_nBinsU * m_nBinsV, m_defaultValue);
81  // Set the value
82  calVec[globalID] = value;
83  // Add vector to map
84  m_sensorCalibrationMap[sensorID] = calVec;
85  }
86  }
87 
95  void setContent(unsigned short sensorID, unsigned short uBin, unsigned short vBin, float value)
96  {
97  setContent(sensorID, getGlobalID(uBin, vBin), value);
98  }
99 
105  float getContent(unsigned short sensorID, unsigned short globalID) const
106  {
107  auto mapIter = m_sensorCalibrationMap.find(sensorID);
108  if (mapIter != m_sensorCalibrationMap.end()) {
109  // Found sensor, return calibration value
110  auto& calVec = mapIter->second;
111  return calVec[globalID];
112  }
113  // Sensor not found, keep low profile and return default calibration value
114  return m_defaultValue;
115  }
116 
123  float getContent(unsigned short sensorID, unsigned short uBin, unsigned short vBin) const
124  {
125  return getContent(sensorID, getGlobalID(uBin, vBin));
126  }
127 
129  const std::unordered_map<unsigned short, std::vector<float> >& getCalibrationMap() const {return m_sensorCalibrationMap;}
130 
131  private:
132 
134  int m_nBinsU;
135 
137  int m_nBinsV;
138 
140  float m_defaultValue;
141 
143  std::unordered_map<unsigned short, std::vector<float> > m_sensorCalibrationMap;
144 
146  };
148 } // end of namespace Belle2
Belle2::PXDGainMapPar::getBinsU
unsigned short getBinsU() const
Get number of bins along sensor u side.
Definition: PXDGainMapPar.h:62
Belle2::PXDGainMapPar::ClassDef
ClassDef(PXDGainMapPar, 3)
ClassDef, must be the last term before the closing {}.
Belle2::PXDGainMapPar
The payload class for PXD gain corrections.
Definition: PXDGainMapPar.h:53
Belle2::PXDGainMapPar::PXDGainMapPar
PXDGainMapPar(int nBinsU=4, int nBinsV=6, float defaultValue=1.0)
Default constructor.
Definition: PXDGainMapPar.h:57
Belle2::PXDGainMapPar::m_nBinsV
int m_nBinsV
Number of bins per sensor along v side.
Definition: PXDGainMapPar.h:145
Belle2::PXDGainMapPar::getContent
float getContent(unsigned short sensorID, unsigned short globalID) const
Get content.
Definition: PXDGainMapPar.h:113
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXDGainMapPar::getCalibrationMap
const std::unordered_map< unsigned short, std::vector< float > > & getCalibrationMap() const
Return unordered_map with all PXD calibrations.
Definition: PXDGainMapPar.h:137
Belle2::PXDGainMapPar::m_defaultValue
float m_defaultValue
Default value for map.
Definition: PXDGainMapPar.h:148
Belle2::PXDGainMapPar::setContent
void setContent(unsigned short sensorID, unsigned short globalID, float value)
Set map content.
Definition: PXDGainMapPar.h:78
Belle2::PXDGainMapPar::m_sensorCalibrationMap
std::unordered_map< unsigned short, std::vector< float > > m_sensorCalibrationMap
Map for holding the calibrations for all PXD sensors by sensor id (unsigned short).
Definition: PXDGainMapPar.h:151
Belle2::PXDGainMapPar::m_nBinsU
int m_nBinsU
Number of bins per sensor along u side.
Definition: PXDGainMapPar.h:142
Belle2::PXDGainMapPar::getBinsV
unsigned short getBinsV() const
Get number of bins along sensor v side.
Definition: PXDGainMapPar.h:66
Belle2::PXDGainMapPar::getGlobalID
unsigned short getGlobalID(unsigned short uBin, unsigned short vBin) const
Get global id from uBin and vBin.
Definition: PXDGainMapPar.h:70