Project
Loading...
Searching...
No Matches
NoiseCalibrator.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 CPV_NOISE_CALIBRATOR_H_
13#define CPV_NOISE_CALIBRATOR_H_
14
19#include "CCDB/CcdbObjectInfo.h"
20
21namespace o2
22{
23namespace cpv
24{
25//=========================================================================
28 uint32_t mNEvents = 0;
29 float mNoiseThreshold = 10.; // ADC counts threshold
30 std::vector<int> mOccupancyMap;
31
32 NoiseCalibData(float noiseThreshold = 10.);
33 ~NoiseCalibData() = default;
34
35 void fill(const gsl::span<const o2::cpv::Digit> data);
36 void merge(const NoiseCalibData* prev);
37 void print();
38
39}; // end NoiseCalibData
40//=========================================================================
41
43class NoiseCalibrator final : public o2::calibration::TimeSlotCalibration<o2::cpv::NoiseCalibData>
44{
45 public:
47 ~NoiseCalibrator() final = default;
48 std::vector<o2::ccdb::CcdbObjectInfo>& getCcdbInfoBadChannelMapVector() { return mCcdbInfoBadChannelMapVec; }
49 const std::vector<o2::cpv::BadChannelMap>& getBadChannelMapVector() const { return mBadChannelMapVec; }
50
51 void setPedEfficiencies(std::vector<float>* pedEffs) { mPedEfficiencies = pedEffs; }
52 void setDeadChannels(std::vector<int>* deadChs) { mDeadChannels = deadChs; }
53 void setHighPedChannels(std::vector<int>* highPeds) { mHighPedChannels = highPeds; }
54 void setPersistentBadChannels(std::vector<int>* persBadChs) { mPersistentBadChannels = persBadChs; }
55
56 bool isSettedPedEfficiencies() { return mPedEfficiencies == nullptr ? false : true; }
57 bool isSettedDeadChannels() { return mDeadChannels == nullptr ? false : true; }
58 bool isSettedHighPedChannels() { return mHighPedChannels == nullptr ? false : true; }
59 bool isSettedPersistentBadChannels() { return mPersistentBadChannels == nullptr ? false : true; }
60
61 bool hasEnoughData(const NoiseTimeSlot& slot) const final
62 {
63 LOG(info) << "hasEnoughData() is being called";
64 return slot.getContainer()->mNEvents >= mMinEvents;
65 }
66 void initOutput() final;
67 void finalizeSlot(NoiseTimeSlot& slot) final;
68 NoiseTimeSlot& emplaceNewSlot(bool front, TFType tstart, TFType tend) final;
69 void configParameters();
70
71 private:
72 std::vector<float>* mPedEfficiencies = nullptr;
73 std::vector<int>* mDeadChannels = nullptr;
74 std::vector<int>* mHighPedChannels = nullptr;
75 std::vector<int>* mPersistentBadChannels = nullptr;
76 uint32_t mMinEvents = 100;
77 float mNoiseFrequencyCriteria = 0.5; // how often channel should appear to be considered as noisy
78 float mToleratedChannelEfficiencyLow = 0.9;
79 float mToleratedChannelEfficiencyHigh = 1.01;
80 float mNoiseThreshold = 10.;
81 std::vector<o2::ccdb::CcdbObjectInfo> mCcdbInfoBadChannelMapVec;
82 std::vector<o2::cpv::BadChannelMap> mBadChannelMapVec;
83
84}; // end NoiseCalibrator
85
86} // namespace cpv
87} // namespace o2
88
89#endif /* CPV_NOISE_CALIBRATOR_H_ */
uint64_t TFType
CCDB container for bad (masked) channels in CPV.
std::vector< o2::ccdb::CcdbObjectInfo > & getCcdbInfoBadChannelMapVector()
NoiseTimeSlot & emplaceNewSlot(bool front, TFType tstart, TFType tend) final
bool hasEnoughData(const NoiseTimeSlot &slot) const final
void setHighPedChannels(std::vector< int > *highPeds)
void setPedEfficiencies(std::vector< float > *pedEffs)
const std::vector< o2::cpv::BadChannelMap > & getBadChannelMapVector() const
void setPersistentBadChannels(std::vector< int > *persBadChs)
~NoiseCalibrator() final=default
void setDeadChannels(std::vector< int > *deadChs)
void finalizeSlot(NoiseTimeSlot &slot) final
GLboolean * data
Definition glcorearb.h:298
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
void merge(const NoiseCalibData *prev)
void fill(const gsl::span< const o2::cpv::Digit > data)
std::vector< int > mOccupancyMap
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"