Belle II Software  release-05-02-19
KLMChannelStatusAlgorithm.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2020 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/KLMChannelMapValue.h>
15 #include <klm/dbobjects/KLMChannelStatus.h>
16 
17 /* Belle 2 headers. */
18 #include <calibration/CalibrationAlgorithm.h>
19 
20 namespace Belle2 {
29  class KLMChannelStatusAlgorithm : public CalibrationAlgorithm {
30 
31  public:
32 
36  class Results {
37 
38  friend class KLMChannelStatusAlgorithm;
39 
40  public:
41 
45  Results();
46 
50  Results(const Results& results);
51 
55  ~Results();
56 
61  {
62  return *m_ChannelStatus;
63  }
64 
69  {
70  return *m_ModuleStatus;
71  }
72 
77  {
78  return m_HitMapChannel;
79  }
80 
85  {
86  return m_HitMapModule;
87  }
88 
93  {
94  return m_HitMapSector;
95  }
96 
101  {
102  return m_HitMapModuleNoHot;
103  }
104 
109  {
110  return m_HitMapSectorNoHot;
111  }
112 
117  {
119  }
120 
124  unsigned int getTotalHitNumber() const
125  {
126  return m_TotalHitNumber;
127  }
128 
132  unsigned int getHitNumberEKLM() const
133  {
134  return m_HitNumberEKLM;
135  }
136 
140  unsigned int getHitNumberBKLM() const
141  {
142  return m_HitNumberBKLM;
143  }
144 
145  private:
146 
149 
152 
155 
158 
161 
164 
167 
170 
172  unsigned int m_TotalHitNumber = 0;
173 
175  unsigned int m_HitNumberBKLM = 0;
176 
178  unsigned int m_HitNumberEKLM = 0;
179 
181  unsigned int m_HitNumberBKLMNoHot = 0;
182 
184  unsigned int m_HitNumberEKLMNoHot = 0;
185 
186  };
187 
192 
197 
202 
207  void setForcedCalibration(bool forcedCalibration)
208  {
209  m_ForcedCalibration = forcedCalibration;
210  }
211 
215  void setMinimalModuleHitNumber(unsigned int minimalModuleHitNumber)
216  {
217  m_MinimalModuleHitNumber = minimalModuleHitNumber;
218  }
219 
224  void setMaximalLogSectorHitsRatio(double maximalLogSectorHitsRatio)
225  {
226  m_MaximalLogSectorHitsRatio = maximalLogSectorHitsRatio;
227  }
228 
233  unsigned int minimalHitNumberSingleHotChannel)
234  {
235  m_MinimalHitNumberSingleHotChannel = minimalHitNumberSingleHotChannel;
236  }
237 
241  void setMinimalHitNumberHotChannel(unsigned int minimalHitNumberHotChannel)
242  {
243  m_MinimalHitNumberHotChannel = minimalHitNumberHotChannel;
244  }
245 
251  double minimalHitNumberRatioHotChannel)
252  {
253  m_MinimalHitNumberRatioHotChannel = minimalHitNumberRatioHotChannel;
254  }
255 
259  double getMinimalAverageHitNumber() const
260  {
262  }
263 
267  void setMinimalAverageHitNumber(double minimalAverageHitNumber)
268  {
269  m_MinimalAverageHitNumber = minimalAverageHitNumber;
270  }
271 
272 
276  const Results* getResults() const
277  {
278  return &m_Results;
279  }
280 
281  protected:
282 
292  void calibrateSector(uint16_t sector, double averageHitsActiveSector);
293 
298  void calibrateModule(uint16_t module);
299 
307  bool markHotChannel(uint16_t channel, unsigned int moduleHits,
308  int activeChannels);
309 
314  void calibrateChannel(uint16_t channel);
315 
320  bool m_ForcedCalibration = false;
321 
323  unsigned int m_MinimalModuleHitNumber = 1;
324 
326  double m_MinimalAverageHitNumber = 25;
327 
332  double m_MaximalLogSectorHitsRatio = 1;
333 
335  unsigned int m_MinimalHitNumberSingleHotChannel = 1000;
336 
338  unsigned int m_MinimalHitNumberHotChannel = 100;
339 
345 
347  const KLMElementNumbers* m_ElementNumbers;
348 
350  Results m_Results;
351 
352  };
353 
355 }
Belle2::KLMChannelStatusAlgorithm::Results::m_ModuleActiveChannelMap
KLMChannelMapValue< unsigned int > m_ModuleActiveChannelMap
Module active-channel map (number of active channels in module).
Definition: KLMChannelStatusAlgorithm.h:177
Belle2::KLMChannelStatusAlgorithm::Results::m_HitMapModule
KLMChannelMapValue< unsigned int > m_HitMapModule
Module hit map.
Definition: KLMChannelStatusAlgorithm.h:165
Belle2::KLMChannelStatusAlgorithm::m_MinimalHitNumberRatioHotChannel
double m_MinimalHitNumberRatioHotChannel
Minimal ratio of number of hits in this channel and average over other channels in this module to mar...
Definition: KLMChannelStatusAlgorithm.h:352
Belle2::KLMChannelStatusAlgorithm::setMinimalHitNumberHotChannel
void setMinimalHitNumberHotChannel(unsigned int minimalHitNumberHotChannel)
Set inimal number of hits to mark to mark the channel as hot.
Definition: KLMChannelStatusAlgorithm.h:249
Belle2::KLMChannelStatusAlgorithm::m_MinimalHitNumberHotChannel
unsigned int m_MinimalHitNumberHotChannel
Minimal number of hits to mark to mark the channel as hot.
Definition: KLMChannelStatusAlgorithm.h:346
Belle2::KLMChannelStatusAlgorithm::Results::m_HitMapModuleNoHot
KLMChannelMapValue< unsigned int > m_HitMapModuleNoHot
Module hit map (no hit channels).
Definition: KLMChannelStatusAlgorithm.h:171
Belle2::KLMChannelStatusAlgorithm
KLM channel status calibration algorithm.
Definition: KLMChannelStatusAlgorithm.h:37
Belle2::KLMChannelStatusAlgorithm::Results::getHitNumberEKLM
unsigned int getHitNumberEKLM() const
Get number of hits in EKLM.
Definition: KLMChannelStatusAlgorithm.h:140
Belle2::KLMChannelStatusAlgorithm::setMinimalModuleHitNumber
void setMinimalModuleHitNumber(unsigned int minimalModuleHitNumber)
Set minimal number of hits per module for module-based calibration.
Definition: KLMChannelStatusAlgorithm.h:223
Belle2::KLMChannelStatusAlgorithm::m_MaximalLogSectorHitsRatio
double m_MaximalLogSectorHitsRatio
Maximal absolute value of the logarithm (base 10) of the ratio of the number of hits in this sector a...
Definition: KLMChannelStatusAlgorithm.h:340
Belle2::KLMChannelStatusAlgorithm::setForcedCalibration
void setForcedCalibration(bool forcedCalibration)
Set whether the calibration is forced (calibrate even for insufficient average number of hits).
Definition: KLMChannelStatusAlgorithm.h:215
Belle2::KLMChannelStatusAlgorithm::Results::getChannelStatus
KLMChannelStatus & getChannelStatus() const
Get channel status (last calibration).
Definition: KLMChannelStatusAlgorithm.h:68
Belle2::KLMChannelStatusAlgorithm::~KLMChannelStatusAlgorithm
~KLMChannelStatusAlgorithm()
Destructor.
Definition: KLMChannelStatusAlgorithm.cc:57
Belle2::KLMChannelStatusAlgorithm::Results::Results
Results()
Constructor.
Definition: KLMChannelStatusAlgorithm.cc:22
Belle2::KLMChannelStatusAlgorithm::Results::m_HitMapSectorNoHot
KLMChannelMapValue< unsigned int > m_HitMapSectorNoHot
Sector hit map (no hot channels).
Definition: KLMChannelStatusAlgorithm.h:174
Belle2::KLMChannelStatusAlgorithm::Results::getHitMapModuleNoHot
const KLMChannelMapValue< unsigned int > & getHitMapModuleNoHot() const
Get module hit map (no hot channels).
Definition: KLMChannelStatusAlgorithm.h:108
Belle2::KLMChannelStatusAlgorithm::m_ForcedCalibration
bool m_ForcedCalibration
Whether the calibration is forced (calibrate even for insufficient average number of hits).
Definition: KLMChannelStatusAlgorithm.h:328
Belle2::KLMChannelStatus
KLM channel status.
Definition: KLMChannelStatus.h:37
Belle2::KLMChannelStatusAlgorithm::calibrateChannel
void calibrateChannel(uint16_t channel)
Calibrate channel.
Definition: KLMChannelStatusAlgorithm.cc:329
Belle2::KLMChannelStatusAlgorithm::Results::m_ModuleStatus
KLMChannelStatus * m_ModuleStatus
Module status.
Definition: KLMChannelStatusAlgorithm.h:156
Belle2::KLMChannelMapValue< unsigned int >
Belle2::KLMChannelStatusAlgorithm::Results::getHitMapChannel
const KLMChannelMapValue< unsigned int > & getHitMapChannel() const
Get channel hit map.
Definition: KLMChannelStatusAlgorithm.h:84
Belle2::KLMChannelStatusAlgorithm::Results::~Results
~Results()
Destructor.
Definition: KLMChannelStatusAlgorithm.cc:43
Belle2::KLMChannelStatusAlgorithm::Results::m_HitNumberEKLMNoHot
unsigned int m_HitNumberEKLMNoHot
Number of hits in EKLM (no hot channels).
Definition: KLMChannelStatusAlgorithm.h:192
Belle2::KLMChannelStatusAlgorithm::m_MinimalModuleHitNumber
unsigned int m_MinimalModuleHitNumber
Minimal module hit number for module-based calibration.
Definition: KLMChannelStatusAlgorithm.h:331
Belle2::KLMChannelStatusAlgorithm::m_MinimalAverageHitNumber
double m_MinimalAverageHitNumber
Minimal average number of hits per channel required for calibration.
Definition: KLMChannelStatusAlgorithm.h:334
Belle2::KLMChannelStatusAlgorithm::Results::m_HitMapSector
KLMChannelMapValue< unsigned int > m_HitMapSector
Sector hit map.
Definition: KLMChannelStatusAlgorithm.h:168
Belle2::KLMChannelStatusAlgorithm::calibrate
CalibrationAlgorithm::EResult calibrate() override
Calibration.
Definition: KLMChannelStatusAlgorithm.cc:61
Belle2::KLMChannelStatusAlgorithm::setMinimalAverageHitNumber
void setMinimalAverageHitNumber(double minimalAverageHitNumber)
Set minimal average number of hits per channel required for calibration.
Definition: KLMChannelStatusAlgorithm.h:275
Belle2::KLMChannelStatusAlgorithm::getResults
const Results * getResults() const
Get results.
Definition: KLMChannelStatusAlgorithm.h:284
Belle2::KLMChannelStatusAlgorithm::Results::m_TotalHitNumber
unsigned int m_TotalHitNumber
Total hit number.
Definition: KLMChannelStatusAlgorithm.h:180
Belle2::KLMChannelStatusAlgorithm::setMaximalLogSectorHitsRatio
void setMaximalLogSectorHitsRatio(double maximalLogSectorHitsRatio)
Set maximal absolute value of the logarithm (base 10) of the ratio of the number of hits in this sect...
Definition: KLMChannelStatusAlgorithm.h:232
Belle2::KLMChannelStatusAlgorithm::Results::getHitMapSector
const KLMChannelMapValue< unsigned int > & getHitMapSector() const
Get sector hit map.
Definition: KLMChannelStatusAlgorithm.h:100
Belle2::KLMChannelStatusAlgorithm::Results::m_HitNumberBKLMNoHot
unsigned int m_HitNumberBKLMNoHot
Number of hits in BKLM (no hot channels).
Definition: KLMChannelStatusAlgorithm.h:189
Belle2::KLMChannelStatusAlgorithm::Results::m_HitMapChannel
KLMChannelMapValue< unsigned int > m_HitMapChannel
Channel hit map.
Definition: KLMChannelStatusAlgorithm.h:162
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::KLMChannelStatusAlgorithm::Results::getHitMapModule
const KLMChannelMapValue< unsigned int > & getHitMapModule() const
Get module hit map.
Definition: KLMChannelStatusAlgorithm.h:92
Belle2::KLMChannelStatusAlgorithm::Results::m_ChannelStatus
KLMChannelStatus * m_ChannelStatus
Channel status.
Definition: KLMChannelStatusAlgorithm.h:159
Belle2::KLMChannelStatusAlgorithm::calibrateModule
void calibrateModule(uint16_t module)
Calibrate module.
Definition: KLMChannelStatusAlgorithm.cc:295
Belle2::KLMChannelStatusAlgorithm::calibrateSector
void calibrateSector(uint16_t sector, double averageHitsActiveSector)
Caliobrate sector.
Definition: KLMChannelStatusAlgorithm.cc:280
Belle2::KLMChannelStatusAlgorithm::m_Results
Results m_Results
Calibration results.
Definition: KLMChannelStatusAlgorithm.h:358
Belle2::KLMChannelStatusAlgorithm::m_MinimalHitNumberSingleHotChannel
unsigned int m_MinimalHitNumberSingleHotChannel
Minimal number of hits in a single channel to mark it as hot.
Definition: KLMChannelStatusAlgorithm.h:343
Belle2::CalibrationAlgorithm::EResult
EResult
The result of calibration.
Definition: CalibrationAlgorithm.h:50
Belle2::KLMChannelStatusAlgorithm::getMinimalAverageHitNumber
double getMinimalAverageHitNumber() const
Get minimal average number of hits per channel required for calibration.
Definition: KLMChannelStatusAlgorithm.h:267
Belle2::KLMChannelStatusAlgorithm::Results
Calibration results.
Definition: KLMChannelStatusAlgorithm.h:44
Belle2::KLMChannelStatusAlgorithm::KLMChannelStatusAlgorithm
KLMChannelStatusAlgorithm()
Constructor.
Definition: KLMChannelStatusAlgorithm.cc:51
Belle2::KLMChannelStatusAlgorithm::Results::getHitNumberBKLM
unsigned int getHitNumberBKLM() const
Get number of hits in BKLM.
Definition: KLMChannelStatusAlgorithm.h:148
Belle2::KLMChannelStatusAlgorithm::setMinimalHitNumberRatioHotChannel
void setMinimalHitNumberRatioHotChannel(double minimalHitNumberRatioHotChannel)
Minimal ratio of number of hits in this channel and average over other channels in this module to mar...
Definition: KLMChannelStatusAlgorithm.h:258
Belle2::KLMChannelStatusAlgorithm::Results::getModuleStatus
KLMChannelStatus & getModuleStatus() const
Get module status (last calibration).
Definition: KLMChannelStatusAlgorithm.h:76
Belle2::KLMChannelStatusAlgorithm::setMinimalHitNumberSingleHotChannel
void setMinimalHitNumberSingleHotChannel(unsigned int minimalHitNumberSingleHotChannel)
Set minimal number of hits in a single channel to mark it as hot.
Definition: KLMChannelStatusAlgorithm.h:240
Belle2::KLMChannelStatusAlgorithm::Results::getModuleActiveChannelMap
const KLMChannelMapValue< unsigned int > & getModuleActiveChannelMap() const
Get module active-channel map.
Definition: KLMChannelStatusAlgorithm.h:124
Belle2::KLMChannelStatusAlgorithm::Results::getTotalHitNumber
unsigned int getTotalHitNumber() const
Get total hit number.
Definition: KLMChannelStatusAlgorithm.h:132
Belle2::KLMChannelStatusAlgorithm::Results::getHitMapSectorNoHot
const KLMChannelMapValue< unsigned int > & getHitMapSectorNoHot() const
Get sector hit map (no hot channels).
Definition: KLMChannelStatusAlgorithm.h:116
Belle2::KLMChannelStatusAlgorithm::Results::m_HitNumberBKLM
unsigned int m_HitNumberBKLM
Number of hits in BKLM.
Definition: KLMChannelStatusAlgorithm.h:183
Belle2::KLMChannelStatusAlgorithm::Results::m_HitNumberEKLM
unsigned int m_HitNumberEKLM
Number of hits in EKLM.
Definition: KLMChannelStatusAlgorithm.h:186
Belle2::KLMChannelStatusAlgorithm::markHotChannel
bool markHotChannel(uint16_t channel, unsigned int moduleHits, int activeChannels)
Mark hot channel.
Definition: KLMChannelStatusAlgorithm.cc:307
Belle2::KLMChannelStatusAlgorithm::m_ElementNumbers
const KLMElementNumbers * m_ElementNumbers
Element numbers.
Definition: KLMChannelStatusAlgorithm.h:355