Project
Loading...
Searching...
No Matches
DeadChannelMapCreator.cxx
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#include <map>
13#include <string>
14#include <type_traits>
16#include "Framework/Logger.h"
18#include "TPCBase/Painter.h"
19
20using namespace o2::tpc;
21
22void DeadChannelMapCreator::init(std::string_view url)
23{
24 mCCDBApi.init(url.empty() ? o2::base::NameConf::getCCDBServer() : url.data());
25}
26
27//______________________________________________________________________________
28void DeadChannelMapCreator::load(long timeStampOrRun)
29{
30 timeStampOrRun = getTimeStamp(timeStampOrRun);
31
32 loadFEEConfigViaRunInfo(timeStampOrRun);
33 loadIDCPadFlags(timeStampOrRun);
35}
36
37//______________________________________________________________________________
39{
40 // it seems the object validity for the TPC RunInfo is not correct. For safety add 1min
41 // since it has run validity this should be fine
42 timeStamp += 60000;
43 if (mObjectValidity[CDBType::ConfigRunInfo].isValid(timeStamp)) {
44 return;
45 }
46
47 const auto meta = mCCDBApi.retrieveHeaders(CDBTypeMap.at(CDBType::ConfigRunInfo), {}, timeStamp);
48 mObjectValidity[CDBType::ConfigRunInfo].startvalidity = std::stol(meta.at("Valid-From"));
49 mObjectValidity[CDBType::ConfigRunInfo].endvalidity = std::stol(meta.at("Valid-Until"));
50
51 loadFEEConfig(timeStamp);
52}
53
54//______________________________________________________________________________
56{
58}
59
60//______________________________________________________________________________
62{
63 std::map<std::string, std::string> meta;
64 mFEEConfig.reset(mCCDBApi.retrieveFromTFileAny<o2::tpc::FEEConfig>(CDBTypeMap.at(CDBType::ConfigRunInfo), {}, timeStamp, &meta));
65 std::string redirect = "not found";
66 if (meta.find("Redirect") != meta.end()) {
67 redirect = meta.at("Redirect");
68 }
69 if (!mFEEConfig) {
70 LOGP(error, "Could not load {} redirected from {} with Redirect={}, createdNotAfter: {}", CDBTypeMap.at(CDBType::ConfigFEE), CDBTypeMap.at(CDBType::ConfigRunInfo), redirect, timeStamp);
71 return;
72 }
73 LOGP(info, "Using FEE config for Tag {}, ETag {}, Last-Modified {}", meta.at("Valid-From"), meta.at("ETag"), meta.at("Last-Modified"));
74 mDeadChannelMapFEE = mFEEConfig->getDeadChannelMap();
75}
76
77//______________________________________________________________________________
79{
80 // TODO: Implement validity interval handling
81 timeStampOrRun = getTimeStamp(timeStampOrRun);
82 if (mObjectValidity[CDBType::CalIDCPadStatusMapA].isValid(timeStampOrRun)) {
83 return;
84 }
85
86 std::map<std::string, std::string> meta;
87 auto status = mCCDBApi.retrieveFromTFileAny<o2::tpc::CalDet<o2::tpc::PadFlags>>(CDBTypeMap.at(CDBType::CalIDCPadStatusMapA), {}, timeStampOrRun, &meta);
88 mObjectValidity[CDBType::CalIDCPadStatusMapA].startvalidity = std::stol(meta.at("Valid-From"));
89 mObjectValidity[CDBType::CalIDCPadStatusMapA].endvalidity = std::stol(meta.at("Valid-Until"));
90 if (!status) {
91 LOGP(error, "Could not load {}/{}", CDBTypeMap.at(CDBType::CalIDCPadStatusMapA), timeStampOrRun);
92 return;
93 }
95 mPadStatusMap.reset(status);
96}
97
98//______________________________________________________________________________
100{
101 mDeadChannelMapIDC = false;
102 const auto& mapper = o2::tpc::Mapper::instance();
103 for (size_t iROC = 0; iROC < mDeadChannelMapIDC.getData().size(); ++iROC) {
104 auto& rocDeadMap = mDeadChannelMapIDC.getCalArray(iROC);
105 o2::tpc::ROC roc(iROC);
106 for (int iRow = 0; iRow < mapper.getNumberOfRowsROC(roc); ++iRow) {
107 for (int iPad = 0; iPad < mapper.getNumberOfPadsInRowROC(roc, iRow); ++iPad) {
108 if (std::underlying_type_t<PadFlags>(padStatusMap.getValue(roc, iRow, iPad)) & std::underlying_type_t<PadFlags>(mask)) {
109 mDeadChannelMapIDC.getCalArray(iROC).setValue(iRow, iPad, true);
110 }
111 }
112 }
113 }
114}
115
116//______________________________________________________________________________
118{
119 mDeadChannelMap = false; // reset map with false
121 mDeadChannelMap += mDeadChannelMapIDC;
122 }
124 mDeadChannelMap += mDeadChannelMapFEE;
125 }
126}
127
128//______________________________________________________________________________
133
134//______________________________________________________________________________
139
140//______________________________________________________________________________
Definition of the Names Generator class.
uint32_t roc
Definition RawData.h:3
static std::string getCCDBServer()
Definition NameConf.cxx:110
void init(std::string const &hosts)
Definition CcdbApi.cxx:165
std::enable_if<!std::is_base_of< o2::conf::ConfigurableParam, T >::value, T * >::type retrieveFromTFileAny(std::string const &path, std::map< std::string, std::string > const &metadata, long timestamp=-1, std::map< std::string, std::string > *headers=nullptr, std::string const &etag="", const std::string &createdNotAfter="", const std::string &createdNotBefore="") const
Definition CcdbApi.h:660
std::map< std::string, std::string > retrieveHeaders(std::string const &path, std::map< std::string, std::string > const &metadata, long timestamp=-1) const
Definition CcdbApi.cxx:1416
void setValue(const size_t channel, const T &value)
Definition CalArray.h:95
const CalType & getCalArray(size_t position) const
Definition CalDet.h:63
const T getValue(const int sec, const int globalPadInSector) const
Definition CalDet.h:154
const std::vector< CalType > & getData() const
Definition CalDet.h:58
void loadFEEConfigViaRunInfo(long timeStampOrRun)
long getTimeStamp(long timeStampOrRun) const
bool useSource(SourcesDeadMap s) const
void setDeadChannelMapIDCPadStatus(const CalDetFlag_t &padStatusMap, PadFlags mask=PadFlags::flagAllNoneGood)
void init(std::string_view url="")
void loadIDCPadFlags(long timeStampOrRun)
void loadFEEConfigViaRunInfoTS(long timeStamp)
static Mapper & instance(const std::string mappingDir="")
Definition Mapper.h:44
GLsizeiptr size
Definition glcorearb.h:659
GLint GLuint mask
Definition glcorearb.h:291
Global TPC definitions and constants.
Definition SimTraits.h:167
const std::unordered_map< CDBType, const std::string > CDBTypeMap
Storage name in CCDB for each calibration and parameter type.
Definition CDBTypes.h:94
@ FEEConfig
use fee config
@ IDCPadStatus
use idc pad status map
PadFlags
Definition Defs.h:100
@ CalIDCPadStatusMapA
Status map of the pads (dead etc. obatined from CalIDC0)
@ ConfigFEE
FEE configuration map for each tag.
static std::vector< TCanvas * > makeSummaryCanvases(const CalDet< T > &calDet, int nbins1D=300, float xMin1D=0, float xMax1D=0, bool onlyFilled=true, std::vector< TCanvas * > *outputCanvases=nullptr)