40 std::chrono::duration<double> retrieving_MMG_HV_A{};
41 std::chrono::duration<double> retrieving_MMG_HV_C{};
42 std::chrono::duration<double> retrieving_MMD_HV_A{};
43 std::chrono::duration<double> retrieving_MMD_HV_C{};
44 std::chrono::duration<double> retrieving_STG_HV_A{};
45 std::chrono::duration<double> retrieving_STG_HV_C{};
48 if (!
retrieveData(ctx, DcsDataType::HV, DcsTechType::MMG,
"A", retrieving_MMG_HV_A).isSuccess())
return StatusCode::FAILURE;
49 if (!
retrieveData(ctx, DcsDataType::HV, DcsTechType::MMG,
"C", retrieving_MMG_HV_A).isSuccess())
return StatusCode::FAILURE;
50 if (!
retrieveData(ctx, DcsDataType::HV, DcsTechType::MMD,
"A", retrieving_MMD_HV_A).isSuccess())
return StatusCode::FAILURE;
51 if (!
retrieveData(ctx, DcsDataType::HV, DcsTechType::MMD,
"C", retrieving_MMD_HV_A).isSuccess())
return StatusCode::FAILURE;
52 if (!
retrieveData(ctx, DcsDataType::HV, DcsTechType::STG,
"A", retrieving_STG_HV_A).isSuccess())
return StatusCode::FAILURE;
53 if (!
retrieveData(ctx, DcsDataType::HV, DcsTechType::STG,
"C", retrieving_STG_HV_A).isSuccess())
return StatusCode::FAILURE;
57 << (std::chrono::duration_cast<std::chrono::microseconds>(retrieving_MMG_HV_A).
count() * 0.001) <<
"s ");
59 << (std::chrono::duration_cast<std::chrono::microseconds>(retrieving_MMG_HV_C).
count() * 0.001) <<
"s ");
61 << (std::chrono::duration_cast<std::chrono::microseconds>(retrieving_MMD_HV_A).
count() * 0.001) <<
"s ");
63 << (std::chrono::duration_cast<std::chrono::microseconds>(retrieving_MMD_HV_C).
count() * 0.001) <<
"s ");
65 << (std::chrono::duration_cast<std::chrono::microseconds>(retrieving_STG_HV_A).
count() * 0.001) <<
"s ");
67 << (std::chrono::duration_cast<std::chrono::microseconds>(retrieving_STG_HV_C).
count() * 0.001) <<
"s ");
70 return StatusCode::SUCCESS;
75 const std::string& side, std::chrono::duration<double>& timer)
const {
77 std::string sdata =
data == DcsDataType::HV ?
"HV" :
"LV";
78 std::string stech = tech == DcsTechType::MMG ?
"MMG" : (tech == DcsTechType::MMD ?
"MMD" :
"STG");
79 ATH_MSG_INFO(
"Starting with " << sdata <<
" data for " << stech <<
" and " << side <<
" at " <<
timestamp());
80 auto start1 = std::chrono::high_resolution_clock::now();
90 return StatusCode::FAILURE;
94 if (!readHandle.
range(range)) {
96 return StatusCode::FAILURE;
100 rangeW = EventIDRange::intersect(range, rangeW);
103 std::vector<Identifier> channelIds = readCdo->
getChannelIdsHv(tech, side);
104 ATH_MSG_INFO(
"Found data for " << channelIds.size() <<
" channels!");
107 std::stringstream sstr{};
108 if (!channelIds.empty()) {
111 ATH_MSG_INFO(
"Checking channel 0 (Id = " << channel.get_compact() <<
") "<<dcs_data);
113 for (
const Identifier& chan_id : channelIds) {
115 bool permanentlyDisabled{
false};
116 sstr<<
m_idHelperSvc->toString(chan_id)<<
" "<<thedata<<
" "<<readCdo->
isGood(ctx, chan_id)<<
" " << readCdo->
isGoodTDaq(ctx,chan_id, permanentlyDisabled) <<std::endl;
122 std::ofstream ostr{
m_logName+
"_"+sdata+
"_"+stech+
"_"+side+
".txt"};
123 ostr<<sstr.str()<<std::endl;
128 auto end1 = std::chrono::high_resolution_clock::now();
129 timer += end1 - start1;
131 return StatusCode::SUCCESS;
135 auto now = std::chrono::system_clock::now();
136 std::time_t time_now = std::chrono::system_clock::to_time_t(now);
138 localtime_r(&time_now, &local_tm);
139 auto duration_since_epoch = now.time_since_epoch();
140 auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(duration_since_epoch) % 1000;
141 std::ostringstream oss;
142 oss << std::put_time(&local_tm,
"%H:%M:%S") <<
'.' << std::setw(3) << std::setfill(
'0') << milliseconds.count();
const DcsConstants * getDataForChannelHv(const DcsTechType tech, const Identifier &channelId, bool issTgcQ1OuterHv) const
Retrieves the calibration constant for a particular readout channel.
bool isGood(const EventContext &ctx, const Identifier &channelId, bool issTgcQ1OuterHv=false) const
Returns whether the channel is alive, i.e. DCS state on, etc...
StatusCode retrieveData(const EventContext &ctx, const DcsDataType data, const DcsTechType tech, const std::string &side, std::chrono::duration< double > &timer) const