Project
Loading...
Searching...
No Matches
NoiseCalibration.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
12#ifndef ALICEO2_TRD_NOISECALIBRATION_H
13#define ALICEO2_TRD_NOISECALIBRATION_H
14
15#include "Rtypes.h"
16#include <bitset>
20
21namespace o2
22{
23namespace trd
24{
25
29
31{
32 public:
33 ChannelInfo() = default;
34
35 bool isDummy() const { return mNEntries == 0; }
36 float getMean() const { return mMean; }
37 float getRMS() const { return mRMS; }
38 uint32_t getEntries() const { return mNEntries; }
39
40 void setMean(float mean) { mMean = mean; }
41 void setRMS(float rms) { mRMS = rms; }
42 void setNentries(uint32_t n) { mNEntries = n; }
43
44 private:
45 float mMean{0.f};
46 float mRMS{0.f};
47 uint32_t mNEntries{0};
48 ClassDefNV(ChannelInfo, 1);
49};
50
52{
53 public:
55 ChannelInfo& getChannel(int index) { return mData[index]; }
56 ChannelInfo getChannel(int index) const { return mData[index]; }
57
58 const std::vector<ChannelInfo>& getData() const { return mData; }
59
60 private:
61 std::vector<ChannelInfo> mData{};
62 ClassDefNV(ChannelInfoContainer, 1);
63};
64
66{
67
68 public:
69 NoiseStatusMCM() = default;
70
71 // convert global MCM index into HC, ROB and MCM number
72 static constexpr void convertMcmIdxGlb(int mcmGlb, int& hcid, int& rob, int& mcm)
73 {
74 hcid = mcmGlb / constants::NMCMHCMAX;
75 int side = (hcid % 2) ? 1 : 0;
76 rob = ((mcmGlb % constants::NMCMHCMAX) / constants::NMCMROB) * 2 + side;
78 }
79 // convert HC, ROB and MCM number into a global MCM index
80 static constexpr int getMcmIdxGlb(int hcid, int rob, int mcm) { return hcid * constants::NMCMHCMAX + (rob / 2) * constants::NMCMROB + mcm; }
81
82 // setters
83 void setIsNoisy(int hcid, int rob, int mcm) { mNoiseFlag.set(getMcmIdxGlb(hcid, rob, mcm)); }
84 void setIsNoisy(int mcmIdxGlb) { mNoiseFlag.set(mcmIdxGlb); }
85
86 // getters
87 bool getIsNoisy(int hcid, int rob, int mcm) const { return mNoiseFlag.test(getMcmIdxGlb(hcid, rob, mcm)); }
88 bool getIsNoisy(int mcmIdxGlb) const { return mNoiseFlag.test(mcmIdxGlb); }
89 auto getNumberOfNoisyMCMs() const { return mNoiseFlag.count(); }
90 bool isTrackletFromNoisyMCM(const Tracklet64& trklt) const { return getIsNoisy(trklt.getHCID(), trklt.getROB(), trklt.getMCM()); }
91 bool isDigitFromNoisyMCM(const Digit& d) const { return getIsNoisy(d.getHCId(), d.getROB(), d.getMCM()); }
92
93 private:
94 std::bitset<constants::MAXHALFCHAMBER * constants::NMCMHCMAX> mNoiseFlag{};
95
96 ClassDefNV(NoiseStatusMCM, 1);
97};
98
99} // namespace trd
100} // namespace o2
101
102#endif // ALICEO2_TRD_NOISECALIBRATION_H
uint16_t mcm
uint16_t rob
Global TRD definitions and constants.
uint32_t side
Definition RawData.h:0
ChannelInfo & getChannel(int index)
const std::vector< ChannelInfo > & getData() const
ChannelInfo getChannel(int index) const
uint32_t getEntries() const
void setMean(float mean)
void setNentries(uint32_t n)
void setRMS(float rms)
int getMCM() const
Definition Digit.h:84
int getHCId() const
Definition Digit.h:80
int getROB() const
Definition Digit.h:83
Simple noise status bit for each MCM of the TRD.
static constexpr int getMcmIdxGlb(int hcid, int rob, int mcm)
void setIsNoisy(int mcmIdxGlb)
static constexpr void convertMcmIdxGlb(int mcmGlb, int &hcid, int &rob, int &mcm)
void setIsNoisy(int hcid, int rob, int mcm)
bool isDigitFromNoisyMCM(const Digit &d) const
bool isTrackletFromNoisyMCM(const Tracklet64 &trklt) const
bool getIsNoisy(int mcmIdxGlb) const
auto getNumberOfNoisyMCMs() const
bool getIsNoisy(int hcid, int rob, int mcm) const
GLdouble n
Definition glcorearb.h:1982
GLuint index
Definition glcorearb.h:781
constexpr int NMCMROB
the number of MCMs per ROB
Definition Constants.h:46
constexpr int NCHANNELSTOTAL
the total number of readout channels for TRD
Definition Constants.h:57
constexpr int NMCMHCMAX
the maximum number of MCMs for one half chamber (C1 type)
Definition Constants.h:47
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...