Belle II Software  release-05-01-25
PXDClusterChargeMapPar.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 {
32  class PXDClusterChargeMapPar: public TObject {
33  public:
34 
36  PXDClusterChargeMapPar(int nBinsU = 4, int nBinsV = 6, float defaultValue = -1.0) : m_nBinsU(nBinsU), m_nBinsV(nBinsV),
37  m_defaultValue(defaultValue), m_sensorCalibrationMap() {}
38 
41  unsigned short getBinsU() const { return m_nBinsU; }
42 
45  unsigned short getBinsV() const { return m_nBinsV; }
46 
49  unsigned short getGlobalID(unsigned short uBin, unsigned short vBin) const { return uBin * m_nBinsV + vBin; }
50 
57  void setContent(unsigned short sensorID, unsigned short globalID, float value)
58  {
59  auto mapIter = m_sensorCalibrationMap.find(sensorID);
60  if (mapIter != m_sensorCalibrationMap.end()) {
61  // Already some values stored
62  auto& calVec = mapIter->second;
63  // Set the value
64  calVec[globalID] = value;
65  } else {
66  // Create a fresh calibration vector
67  std::vector<float> calVec(m_nBinsU * m_nBinsV, m_defaultValue);
68  // Set the value
69  calVec[globalID] = value;
70  // Add vector to map
71  m_sensorCalibrationMap[sensorID] = calVec;
72  }
73  }
74 
82  void setContent(unsigned short sensorID, unsigned short uBin, unsigned short vBin, float value)
83  {
84  setContent(sensorID, getGlobalID(uBin, vBin), value);
85  }
86 
92  float getContent(unsigned short sensorID, unsigned short globalID) const
93  {
94  auto mapIter = m_sensorCalibrationMap.find(sensorID);
95  if (mapIter != m_sensorCalibrationMap.end()) {
96  // Found sensor, return calibration value
97  auto& calVec = mapIter->second;
98  return calVec[globalID];
99  }
100  // Sensor not found, keep low profile and return default calibration value
101  return m_defaultValue;
102  }
103 
110  float getContent(unsigned short sensorID, unsigned short uBin, unsigned short vBin) const
111  {
112  return getContent(sensorID, getGlobalID(uBin, vBin));
113  }
114 
116  const std::unordered_map<unsigned short, std::vector<float> >& getCalibrationMap() const {return m_sensorCalibrationMap;}
117 
118  private:
119 
121  int m_nBinsU;
122 
124  int m_nBinsV;
125 
127  float m_defaultValue;
128 
130  std::unordered_map<unsigned short, std::vector<float> > m_sensorCalibrationMap;
131 
133  };
135 } // end of namespace Belle2
Belle2::PXDClusterChargeMapPar::m_defaultValue
float m_defaultValue
Default value for map.
Definition: PXDClusterChargeMapPar.h:135
Belle2::PXDClusterChargeMapPar::getGlobalID
unsigned short getGlobalID(unsigned short uBin, unsigned short vBin) const
Get global id from uBin and vBin.
Definition: PXDClusterChargeMapPar.h:57
Belle2::PXDClusterChargeMapPar::ClassDef
ClassDef(PXDClusterChargeMapPar, 1)
ClassDef, must be the last term before the closing {}.
Belle2::PXDClusterChargeMapPar::m_nBinsU
int m_nBinsU
Number of bins per sensor along u side.
Definition: PXDClusterChargeMapPar.h:129
Belle2::PXDClusterChargeMapPar::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: PXDClusterChargeMapPar.h:138
Belle2::PXDClusterChargeMapPar::setContent
void setContent(unsigned short sensorID, unsigned short globalID, float value)
Set map content.
Definition: PXDClusterChargeMapPar.h:65
Belle2::PXDClusterChargeMapPar::getContent
float getContent(unsigned short sensorID, unsigned short globalID) const
Get content.
Definition: PXDClusterChargeMapPar.h:100
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXDClusterChargeMapPar::getCalibrationMap
const std::unordered_map< unsigned short, std::vector< float > > & getCalibrationMap() const
Return unordered_map with all PXD calibrations.
Definition: PXDClusterChargeMapPar.h:124
Belle2::PXDClusterChargeMapPar
The payload class for PXD cluster charge calibrations.
Definition: PXDClusterChargeMapPar.h:40
Belle2::PXDClusterChargeMapPar::PXDClusterChargeMapPar
PXDClusterChargeMapPar(int nBinsU=4, int nBinsV=6, float defaultValue=-1.0)
Default constructor.
Definition: PXDClusterChargeMapPar.h:44
Belle2::PXDClusterChargeMapPar::m_nBinsV
int m_nBinsV
Number of bins per sensor along v side.
Definition: PXDClusterChargeMapPar.h:132
Belle2::PXDClusterChargeMapPar::getBinsU
unsigned short getBinsU() const
Get number of bins along sensor u side.
Definition: PXDClusterChargeMapPar.h:49
Belle2::PXDClusterChargeMapPar::getBinsV
unsigned short getBinsV() const
Get number of bins along sensor v side.
Definition: PXDClusterChargeMapPar.h:53