Project
Loading...
Searching...
No Matches
CalibratorNoise.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14
15#ifndef O2_TRD_CALIBRATORNOISE_H
16#define O2_TRD_CALIBRATORNOISE_H
17
22#include "CCDB/CcdbObjectInfo.h"
23#include "Rtypes.h"
24
25namespace o2
26{
27namespace trd
28{
29
34
35 float getRMS() { return nEntries > 0 ? std::sqrt(variance / nEntries) : -1.f; }
36
37 uint32_t det{0};
38 uint32_t sec{0};
39 uint32_t stack{0};
40 uint32_t layer{0};
41 uint32_t row{0};
42 int col{0};
43 uint32_t channelGlb{0};
44 uint32_t indexGlb{0};
45 float adcMean{0};
46 uint64_t adcSum{0};
47 uint64_t adcSumSquared{0};
48 uint32_t nEntries{0};
49 float variance{0};
50 bool isShared{false};
52};
53
55{
56
57 public:
58 // Default c'tor
59 CalibratorNoise() { mChannelInfosDetailed.resize(constants::NCHANNELSTOTAL); };
60
61 // Check if total number of digits seen is higher than threshold
62 bool hasEnoughData() const { return (mNDigitsSeen > mParams.minNumberOfDigits); }
63
64 // Add information from digits to mChannelInfosDetailed
65 void process(const gsl::span<const Digit>& digits);
66
67 // Getter for internal data when this is run from a macro
68 const std::vector<ChannelInfoDetailed>& getInternalChannelInfos() { return mChannelInfosDetailed; }
69
70 // Fill mean and RMS for each channel into mCCDBObject
71 void collectChannelInfo();
72
73 // Make CCDB object accessible from outside
74 const ChannelInfoContainer& getCcdbObject() const { return mCCDBObject; }
75
76 private:
77 ChannelInfoContainer mCCDBObject{};
78 std::vector<ChannelInfoDetailed> mChannelInfosDetailed{};
79 uint64_t mNDigitsSeen{0};
80 const TRDCalibParams& mParams{TRDCalibParams::Instance()};
81 ClassDefNV(CalibratorNoise, 1);
82};
83
84} // namespace trd
85} // namespace o2
86
87#endif // O2_TRD_CALIBRATORNOISE_H
Global TRD definitions and constants.
const std::vector< ChannelInfoDetailed > & getInternalChannelInfos()
const ChannelInfoContainer & getCcdbObject() const
GLenum GLuint GLint GLint layer
Definition glcorearb.h:1310
constexpr int NCHANNELSTOTAL
the total number of readout channels for TRD
Definition Constants.h:57
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
ClassDefNV(ChannelInfoDetailed, 1)
uint64_t adcSumSquared
sum of ADC_i^2
uint32_t channelGlb
global channel number within pad row 0..NCHANNELSPERROW
float adcMean
mean ADC value for this pad
ChannelInfoDetailed(const ChannelInfoDetailed &)=default
uint32_t det
detector number
bool isShared
flag, whether this is a shared pad
uint32_t nEntries
number of ADC values stored
int col
pad column, not unsigned, since outer shared pads get negative value assigned
ChannelInfoDetailed & operator=(const ChannelInfoDetailed &rhs)=default
float variance
the sum of (ADC_i - ADC_mean)^2
uint64_t adcSum
sum of ADC_i values
uint32_t indexGlb
global channel index 0..NCHANNELSTOTAL
size_t minNumberOfDigits
when reached, noise calibration will be finalized
std::vector< Digit > digits