Skip to content

Commit

Permalink
Modernize DQM/BeamMonitor/plugins/TKStatus plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
francescobrivio committed Mar 11, 2022
1 parent c0513d4 commit 7b27e36
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 73 deletions.
2 changes: 1 addition & 1 deletion DQM/BeamMonitor/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<use name="DQMServices/Core"/>
<use name="DataFormats/Scalers"/>
<use name="DataFormats/OnlineMetaData"/>
<use name="DataFormats/TrackReco"/>
<use name="FWCore/Framework"/>
<use name="DataFormats/BeamSpot"/>
Expand Down Expand Up @@ -56,7 +57,6 @@

<ifarchitecture name="_amd64_">
<library file="BeamSpotDipServer.cc" name="BeamSpotDipServer">
<use name="DataFormats/OnlineMetaData"/>
<use name="dip"/>
<use name="log4cplus"/>
<flags EDM_PLUGIN="1"/>
Expand Down
110 changes: 86 additions & 24 deletions DQM/BeamMonitor/plugins/TKStatus.cc
Original file line number Diff line number Diff line change
@@ -1,50 +1,112 @@
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/Framework/interface/Run.h"
/** \class TKStatus
* *
* \author Geng-yuan Jeng/UC Riverside
* Francisco Yumiceva/FNAL
*
*/

// C++
#include <array>
#include <fstream>
#include <string>

// CMS
#include "DataFormats/OnlineMetaData/interface/DCSRecord.h"
#include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h"
#include "DataFormats/Scalers/interface/DcsStatus.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/LuminosityBlock.h"
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "DQM/BeamMonitor/plugins/TKStatus.h"
#include <iostream>
#include "FWCore/Framework/interface/Run.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/Utilities/interface/EDGetToken.h"

//
// class declaration
//
class TKStatus : public edm::one::EDAnalyzer<> {
public:
TKStatus(const edm::ParameterSet&);

using namespace edm;
protected:
void analyze(const edm::Event& e, const edm::EventSetup& c) override;

TKStatus::TKStatus(const ParameterSet& ps) {
dcsTkFileName_ = ps.getParameter<ParameterSet>("BeamFitter").getUntrackedParameter<std::string>("DIPFileName");
private:
void dumpTkDcsStatus(std::string const&, edm::RunNumber_t, std::array<bool, 6> const&);

std::string dcsTkFileName_;
edm::EDGetTokenT<DcsStatusCollection> dcsStatusToken_;
edm::EDGetTokenT<DCSRecord> dcsRecordToken_;

int lastlumi_ = -1;
// ----------member data ---------------------------
};

// ----------------------------------------------------------
TKStatus::TKStatus(const edm::ParameterSet& ps)
: dcsStatusToken_(consumes<DcsStatusCollection>(edm::InputTag("scalersRawToDigi"))),
dcsRecordToken_(consumes<DCSRecord>(edm::InputTag("onlineMetaDataDigis"))) {
dcsTkFileName_ = ps.getParameter<edm::ParameterSet>("BeamFitter").getUntrackedParameter<std::string>("DIPFileName");
{
std::string tmpname = dcsTkFileName_;
tmpname.insert(dcsTkFileName_.length() - 4, "_TkStatus");
dcsTkFileName_ = std::move(tmpname);
}
dcsStatus_ = consumes<DcsStatusCollection>(ps.getUntrackedParameter<std::string>("DCSStatus", "scalersRawToDigi"));
}

// ----------------------------------------------------------
void TKStatus::analyze(const Event& iEvent, const EventSetup& iSetup) {
void TKStatus::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
int nthlumi = iEvent.luminosityBlock();
if (nthlumi > lastlumi_) { // check every LS
lastlumi_ = nthlumi;
// Checking TK status
Handle<DcsStatusCollection> dcsStatus;
iEvent.getByToken(dcsStatus_, dcsStatus);
edm::Handle<DcsStatusCollection> dcsStatus;
iEvent.getByToken(dcsStatusToken_, dcsStatus);
edm::Handle<DCSRecord> dcsRecord;
iEvent.getByToken(dcsRecordToken_, dcsRecord);

std::array<bool, 6> dcsTk;
for (auto& e : dcsTk) {
e = true;
}

for (auto const& status : *dcsStatus) {
if (!status.ready(DcsStatus::BPIX))
dcsTk[0] = false;
if (!status.ready(DcsStatus::FPIX))
dcsTk[1] = false;
if (!status.ready(DcsStatus::TIBTID))
dcsTk[2] = false;
if (!status.ready(DcsStatus::TOB))
dcsTk[3] = false;
if (!status.ready(DcsStatus::TECp))
dcsTk[4] = false;
if (!status.ready(DcsStatus::TECm))
dcsTk[5] = false;
// Check that the DCS information is available in some form
if (!dcsStatus.isValid() && !dcsRecord.isValid()) {
edm::LogPrint("TkStatus") << "No DCS information available!";
dumpTkDcsStatus(dcsTkFileName_, iEvent.run(), dcsTk);
}

// If DCS status (from SCAL) not available (or empty), use DCS record
if ((*dcsStatus).empty()) {
edm::LogPrint("TkStatus") << "Using dcsRecord because dcsStatus is empty";
dcsTk[0] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::BPIX);
dcsTk[1] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::FPIX);
dcsTk[2] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TIBTID);
dcsTk[3] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TOB);
dcsTk[4] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TECp);
dcsTk[5] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TECm);
} else {
edm::LogPrint("TkStatus") << "Using dcsStatus (Run 1 and Run 2 SCAL)";
for (auto const& status : *dcsStatus) {
if (!status.ready(DcsStatus::BPIX))
dcsTk[0] = false;
if (!status.ready(DcsStatus::FPIX))
dcsTk[1] = false;
if (!status.ready(DcsStatus::TIBTID))
dcsTk[2] = false;
if (!status.ready(DcsStatus::TOB))
dcsTk[3] = false;
if (!status.ready(DcsStatus::TECp))
dcsTk[4] = false;
if (!status.ready(DcsStatus::TECm))
dcsTk[5] = false;
}
}

dumpTkDcsStatus(dcsTkFileName_, iEvent.run(), dcsTk);
}
}
Expand Down
48 changes: 0 additions & 48 deletions DQM/BeamMonitor/plugins/TKStatus.h

This file was deleted.

0 comments on commit 7b27e36

Please sign in to comment.