Skip to content

Commit

Permalink
Merge pull request #36040 from mmusich/migrateSiPixelToNewPoolDBOutput
Browse files Browse the repository at this point in the history
migrate SiPixel codes to new `PoolDBOutputService` methods
  • Loading branch information
cmsbuild authored Nov 11, 2021
2 parents 31162c9 + 4f949a1 commit 1411a3a
Show file tree
Hide file tree
Showing 27 changed files with 168 additions and 190 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void SiPixelFedCablingMapWriter::analyze(const edm::Event& iEvent, const edm::Ev
void SiPixelFedCablingMapWriter::beginJob() {}

void SiPixelFedCablingMapWriter::endJob() {
SiPixelFedCablingMap* result = new SiPixelFedCablingMap(cabling);
SiPixelFedCablingMap result(cabling);
LogInfo("Now NEW writing to DB");
edm::Service<cond::service::PoolDBOutputService> mydbservice;
if (!mydbservice.isAvailable()) {
Expand All @@ -84,10 +84,9 @@ void SiPixelFedCablingMapWriter::endJob() {

try {
if (mydbservice->isNewTagRequest(record_)) {
mydbservice->createNewIOV<SiPixelFedCablingMap>(
result, mydbservice->beginOfTime(), mydbservice->endOfTime(), record_);
mydbservice->createOneIOV<SiPixelFedCablingMap>(result, mydbservice->beginOfTime(), record_);
} else {
mydbservice->appendSinceTime<SiPixelFedCablingMap>(result, mydbservice->currentTime(), record_);
mydbservice->appendOneIOV<SiPixelFedCablingMap>(result, mydbservice->currentTime(), record_);
}
} catch (std::exception& e) {
LogError("std::exception: ") << e.what();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ Description: <one line class summary>
//

// user include files
#include "CondCore/DBOutputService/interface/PoolDBOutputService.h"

#include "SiPixelGainCalibrationAnalysis.h"
#include <sstream>
#include <vector>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ void SiPixelLorentzAnglePCLHarvester::dqmEndJob(DQMStore::IBooker& iBooker, DQMS
edm::Service<cond::service::PoolDBOutputService> mydbservice;
if (mydbservice.isAvailable()) {
try {
mydbservice->writeOneIOV(LorentzAngle.get(), mydbservice->currentTime(), recordName_);
mydbservice->writeOneIOV(*LorentzAngle, mydbservice->currentTime(), recordName_);
} catch (const cond::Exception& er) {
edm::LogError("SiPixelLorentzAngleDB") << er.what() << std::endl;
} catch (const std::exception& er) {
Expand Down
78 changes: 35 additions & 43 deletions CalibTracker/SiPixelQuality/plugins/SiPixelStatusHarvester.cc
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,10 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
if (poolDbService.isAvailable()) { // if(poolDbService.isAvailable() )

// start producing tag for permanent component removed
SiPixelQuality* siPixelQualityPermBad = new SiPixelQuality();
SiPixelQuality siPixelQualityPermBad;
const std::vector<SiPixelQuality::disabledModuleType> badComponentList = badPixelInfo_->getBadComponentList();
for (unsigned int i = 0; i < badComponentList.size(); i++) {
siPixelQualityPermBad->addDisabledModule(badComponentList[i]);
siPixelQualityPermBad.addDisabledModule(badComponentList[i]);

uint32_t detId = badComponentList[i].DetID;
int detid = int(detId);
Expand All @@ -194,7 +194,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
}
if (debug_ == true) { // only produced for debugging reason
cond::Time_t thisIOV = (cond::Time_t)iRun.id().run();
poolDbService->writeOneIOV<SiPixelQuality>(*siPixelQualityPermBad, thisIOV, recordName_ + "_permanentBad");
poolDbService->writeOneIOV<SiPixelQuality>(siPixelQualityPermBad, thisIOV, recordName_ + "_permanentBad");
}

// IOV for final payloads. FEDerror25 and pcl
Expand All @@ -203,7 +203,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t> pclIOV;

// container for SiPixelQuality for the whole run
std::map<int, SiPixelQuality*> siPixelQualityStuckTBM_Tag;
std::map<int, SiPixelQuality> siPixelQualityStuckTBM_Tag;

// stuckTBM tag from FED error 25 with permanent component removed
for (SiPixelStatusManager::FEDerror25Map_iterator it = FEDerror25Map.begin(); it != FEDerror25Map.end(); it++) {
Expand All @@ -219,8 +219,8 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
else
interval = int(endLumiBlock_ - it->first + 1); // +1 because need to include the last lumi section

SiPixelQuality* siPixelQuality_stuckTBM = new SiPixelQuality();
SiPixelQuality* siPixelQuality_FEDerror25 = new SiPixelQuality();
SiPixelQuality siPixelQuality_stuckTBM;
SiPixelQuality siPixelQuality_FEDerror25;

std::map<int, std::vector<int>> tmpFEDerror25 = it->second;
for (std::map<int, std::vector<int>>::iterator ilist = tmpFEDerror25.begin(); ilist != tmpFEDerror25.end();
Expand Down Expand Up @@ -272,7 +272,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
// fill the badmodule only if there is(are) bad ROC(s) in it
if (badrocs_stuckTBM != 0) {
BadModule_stuckTBM.BadRocs = badrocs_stuckTBM;
siPixelQuality_stuckTBM->addDisabledModule(BadModule_stuckTBM);
siPixelQuality_stuckTBM.addDisabledModule(BadModule_stuckTBM);
}

// change module error type if all ROCs are bad
Expand All @@ -287,7 +287,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
// fill the badmodule only if there is(are) bad ROC(s) in it
if (badrocs_FEDerror25 != 0) {
BadModule_FEDerror25.BadRocs = badrocs_FEDerror25;
siPixelQuality_FEDerror25->addDisabledModule(BadModule_FEDerror25);
siPixelQuality_FEDerror25.addDisabledModule(BadModule_FEDerror25);
}

} // loop over modules
Expand All @@ -298,9 +298,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
fedError25IOV[it->first] = it->first;

if (debug_ == true) // only produced for debugging reason
poolDbService->writeOneIOV<SiPixelQuality>(*siPixelQuality_FEDerror25, thisIOV, recordName_ + "_FEDerror25");

delete siPixelQuality_FEDerror25;
poolDbService->writeOneIOV<SiPixelQuality>(siPixelQuality_FEDerror25, thisIOV, recordName_ + "_FEDerror25");
}

// IOV for PCL output tags that "combines" permanent bad/stuckTBM/other
Expand All @@ -314,9 +312,9 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t>::iterator itIOV;

// container for SiPixelQuality for the whole run
std::map<int, SiPixelQuality*> siPixelQualityPCL_Tag;
std::map<int, SiPixelQuality*> siPixelQualityPrompt_Tag;
std::map<int, SiPixelQuality*> siPixelQualityOther_Tag;
std::map<int, SiPixelQuality> siPixelQualityPCL_Tag;
std::map<int, SiPixelQuality> siPixelQualityPrompt_Tag;
std::map<int, SiPixelQuality> siPixelQualityOther_Tag;

for (itIOV = finalIOV.begin(); itIOV != finalIOV.end(); itIOV++) {
int interval = 0;
Expand Down Expand Up @@ -371,17 +369,17 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
// add empty bad components to "other" tag
edm::LogInfo("SiPixelStatusHarvester")
<< "Tag requested for other in low statistics IOV in the " << outputBase_ << " harvester" << std::endl;
siPixelQualityOther_Tag[itIOV->first] = new SiPixelQuality();
siPixelQualityOther_Tag[itIOV->first] = SiPixelQuality();

continue;
}

// create the DB object
// payload including all : PCL = permanent bad (low DIGI ROC) + other + stuckTBM
SiPixelQuality* siPixelQualityPCL = new SiPixelQuality();
SiPixelQuality* siPixelQualityOther = new SiPixelQuality();
SiPixelQuality siPixelQualityPCL;
SiPixelQuality siPixelQualityOther;
// Prompt = permanent bad(low DIGI + low eff/damaged ROCs + other)
SiPixelQuality* siPixelQualityPrompt = new SiPixelQuality();
SiPixelQuality siPixelQualityPrompt;

// loop over modules
std::map<int, SiPixelModuleStatus> detectorStatus = tmpSiPixelStatus.getDetectorStatus();
Expand Down Expand Up @@ -472,7 +470,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
}
if (badrocsPCL != 0) {
BadModulePCL.BadRocs = badrocsPCL;
siPixelQualityPCL->addDisabledModule(BadModulePCL);
siPixelQualityPCL.addDisabledModule(BadModulePCL);
}

// Other
Expand All @@ -483,7 +481,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
}
if (badrocsOther != 0) {
BadModuleOther.BadRocs = badrocsOther;
siPixelQualityOther->addDisabledModule(BadModuleOther);
siPixelQualityOther.addDisabledModule(BadModuleOther);
}

// start constructing bad components for prompt = "other" + permanent
Expand Down Expand Up @@ -519,7 +517,7 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
}
if (badrocsPrompt != 0) {
BadModulePrompt.BadRocs = badrocsPrompt;
siPixelQualityPrompt->addDisabledModule(BadModulePrompt);
siPixelQualityPrompt.addDisabledModule(BadModulePrompt);
}

} // end module loop
Expand Down Expand Up @@ -549,25 +547,20 @@ void SiPixelStatusHarvester::dqmEndRun(const edm::Run& iRun, const edm::EventSet
// Add a dummy IOV starting from last lumisection+1 to close the tag for the run
if ((outputBase_ == "nLumibased" || outputBase_ == "dynamicLumibased") && !finalIOV.empty()) {
itIOV = std::prev(finalIOV.end()); // go to last element in the pixel quality tag
SiPixelQuality* lastPrompt = siPixelQualityPrompt_Tag[itIOV->first];
SiPixelQuality* lastOther = siPixelQualityOther_Tag[itIOV->first];
SiPixelQuality lastPrompt = siPixelQualityPrompt_Tag[itIOV->first];
SiPixelQuality lastOther = siPixelQualityOther_Tag[itIOV->first];

// add permanent bad components to last lumi+1 IF AND ONLY IF the last payload of prompt is not equal to permanent bad components
edm::LuminosityBlockID lu(iRun.id().run(), endLumiBlock_ + 1);
cond::Time_t thisIOV = (cond::Time_t)(lu.value());
if (!SiPixelStatusHarvester::equal(lastPrompt, siPixelQualityPermBad))
poolDbService->writeOneIOV<SiPixelQuality>(*siPixelQualityPermBad, thisIOV, recordName_ + "_prompt");
poolDbService->writeOneIOV<SiPixelQuality>(siPixelQualityPermBad, thisIOV, recordName_ + "_prompt");

// add empty bad components to last lumi+1 IF AND ONLY IF the last payload of other is not equal to empty
SiPixelQuality* siPixelQualityDummy = new SiPixelQuality();
SiPixelQuality siPixelQualityDummy;
if (!SiPixelStatusHarvester::equal(lastOther, siPixelQualityDummy))
poolDbService->writeOneIOV<SiPixelQuality>(*siPixelQualityDummy, thisIOV, recordName_ + "_other");

delete siPixelQualityDummy;
poolDbService->writeOneIOV<SiPixelQuality>(siPixelQualityDummy, thisIOV, recordName_ + "_other");
}

delete siPixelQualityPermBad;

} // end of if(poolDbService.isAvailable() )
}

Expand Down Expand Up @@ -609,15 +602,15 @@ edm::LuminosityBlockNumber_t SiPixelStatusHarvester::stepIOV(
}

//--------------------------------------------------------------------------------------------------
bool SiPixelStatusHarvester::equal(SiPixelQuality* a, SiPixelQuality* b) {
bool SiPixelStatusHarvester::equal(SiPixelQuality a, SiPixelQuality b) {
std::vector<SiPixelQuality::disabledModuleType> badRocListA;
std::vector<SiPixelQuality::disabledModuleType> badRocListB;

for (unsigned int ia = 0; ia < (a->getBadComponentList()).size(); ia++) {
badRocListA.push_back((a->getBadComponentList())[ia]);
for (unsigned int ia = 0; ia < (a.getBadComponentList()).size(); ia++) {
badRocListA.push_back((a.getBadComponentList())[ia]);
}
for (unsigned int ib = 0; ib < (b->getBadComponentList()).size(); ib++) {
badRocListB.push_back((b->getBadComponentList())[ib]);
for (unsigned int ib = 0; ib < (b.getBadComponentList()).size(); ib++) {
badRocListB.push_back((b.getBadComponentList())[ib]);
}

if (badRocListA.size() != badRocListB.size())
Expand Down Expand Up @@ -646,23 +639,22 @@ bool SiPixelStatusHarvester::equal(SiPixelQuality* a, SiPixelQuality* b) {
}

//--------------------------------------------------------------------------------------------------
void SiPixelStatusHarvester::constructTag(std::map<int, SiPixelQuality*> siPixelQualityTag,
void SiPixelStatusHarvester::constructTag(std::map<int, SiPixelQuality> siPixelQualityTag,
edm::Service<cond::service::PoolDBOutputService>& poolDbService,
std::string tagName,
edm::Run const& iRun) {
for (std::map<int, SiPixelQuality*>::iterator qIt = siPixelQualityTag.begin(); qIt != siPixelQualityTag.end();
++qIt) {
for (std::map<int, SiPixelQuality>::iterator qIt = siPixelQualityTag.begin(); qIt != siPixelQualityTag.end(); ++qIt) {
edm::LuminosityBlockID lu(iRun.id().run(), qIt->first);
cond::Time_t thisIOV = (cond::Time_t)(lu.value());

SiPixelQuality* thisPayload = qIt->second;
SiPixelQuality thisPayload = qIt->second;
if (qIt == siPixelQualityTag.begin())
poolDbService->writeOneIOV<SiPixelQuality>(*thisPayload, thisIOV, recordName_ + "_" + tagName);
poolDbService->writeOneIOV<SiPixelQuality>(thisPayload, thisIOV, recordName_ + "_" + tagName);
else {
SiPixelQuality* prevPayload = (std::prev(qIt))->second;
SiPixelQuality prevPayload = (std::prev(qIt))->second;
if (!SiPixelStatusHarvester::equal(thisPayload,
prevPayload)) // only append newIOV if this payload differs wrt last
poolDbService->writeOneIOV<SiPixelQuality>(*thisPayload, thisIOV, recordName_ + "_" + tagName);
poolDbService->writeOneIOV<SiPixelQuality>(thisPayload, thisIOV, recordName_ + "_" + tagName);
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions CalibTracker/SiPixelQuality/plugins/SiPixelStatusHarvester.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,10 @@ class SiPixelStatusHarvester : public DQMOneEDAnalyzer<edm::one::WatchLuminosity
std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t> IOV);

// boolean function to check whether two SiPixelQualitys (pyloads) are identical
bool equal(SiPixelQuality* a, SiPixelQuality* b);
bool equal(SiPixelQuality a, SiPixelQuality b);

// Tag constructor
void constructTag(std::map<int, SiPixelQuality*> siPixelQualityTag,
void constructTag(std::map<int, SiPixelQuality> siPixelQualityTag,
edm::Service<cond::service::PoolDBOutputService>& poolDbService,
std::string tagName,
edm::Run const& iRun);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class FastSiPixelFEDChannelContainerFromQuality : public edm::one::EDAnalyzer<>
const bool isMC_;
const bool removeEmptyPayloads_;

SiPixelFEDChannelContainer* myQualities;
std::unique_ptr<SiPixelFEDChannelContainer> myQualities;

inline unsigned int closest_from_above(std::vector<unsigned int> const& vec, unsigned int value) {
auto const it = std::lower_bound(vec.begin(), vec.end(), value);
Expand Down Expand Up @@ -115,10 +115,10 @@ FastSiPixelFEDChannelContainerFromQuality::FastSiPixelFEDChannelContainerFromQua
m_connectionPool.configure();

//now do what ever initialization is needed
myQualities = new SiPixelFEDChannelContainer();
myQualities = std::make_unique<SiPixelFEDChannelContainer>();
}

FastSiPixelFEDChannelContainerFromQuality::~FastSiPixelFEDChannelContainerFromQuality() { delete myQualities; }
FastSiPixelFEDChannelContainerFromQuality::~FastSiPixelFEDChannelContainerFromQuality() = default;

void FastSiPixelFEDChannelContainerFromQuality::analyze(const edm::Event& evt, const edm::EventSetup& evtSetup) {
std::stringstream ss;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class SiPixelFEDChannelContainerFromQualityConverter : public edm::one::EDAnalyz
const bool printdebug_;
const bool isMC_;
const bool removeEmptyPayloads_;
SiPixelFEDChannelContainer* myQualities;
std::unique_ptr<SiPixelFEDChannelContainer> myQualities;

int IOVcount_;
edm::ESWatcher<SiPixelQualityFromDbRcd> SiPixelQualityWatcher_;
Expand All @@ -78,12 +78,10 @@ SiPixelFEDChannelContainerFromQualityConverter::SiPixelFEDChannelContainerFromQu
isMC_(iConfig.getUntrackedParameter<bool>("isMC", true)),
removeEmptyPayloads_(iConfig.getUntrackedParameter<bool>("removeEmptyPayloads", false)) {
//now do what ever initialization is needed
myQualities = new SiPixelFEDChannelContainer();
myQualities = std::make_unique<SiPixelFEDChannelContainer>();
}

SiPixelFEDChannelContainerFromQualityConverter::~SiPixelFEDChannelContainerFromQualityConverter() {
delete myQualities;
}
SiPixelFEDChannelContainerFromQualityConverter::~SiPixelFEDChannelContainerFromQualityConverter() = default;

//
// member functions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ SiPixelFedCablingMapTestWriter::SiPixelFedCablingMapTestWriter(const edm::Parame
void SiPixelFedCablingMapTestWriter::endJob() {
cout << "Convert Tree to Map";

SiPixelFedCablingMap* cablingMap = new SiPixelFedCablingMap(cablingTree);
const auto& cablingMap = SiPixelFedCablingMap(cablingTree);
cout << "Now writing to DB" << endl;
edm::Service<cond::service::PoolDBOutputService> mydbservice;
if (!mydbservice.isAvailable()) {
Expand All @@ -57,10 +57,9 @@ void SiPixelFedCablingMapTestWriter::endJob() {

try {
if (mydbservice->isNewTagRequest(m_record)) {
mydbservice->createNewIOV<SiPixelFedCablingMap>(
cablingMap, mydbservice->beginOfTime(), mydbservice->endOfTime(), m_record);
mydbservice->createOneIOV<SiPixelFedCablingMap>(cablingMap, mydbservice->beginOfTime(), m_record);
} else {
mydbservice->appendSinceTime<SiPixelFedCablingMap>(cablingMap, mydbservice->currentTime(), m_record);
mydbservice->appendOneIOV<SiPixelFedCablingMap>(cablingMap, mydbservice->currentTime(), m_record);
}
} catch (std::exception& e) {
cout << "std::exception: " << e.what();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class SiPixelQualityProbabilitiesTestWriter : public edm::one::EDAnalyzer<> {
const std::string m_SnapshotInputs;
const std::string m_record;
const bool printdebug_;
SiPixelQualityProbabilities* myProbabilities;
std::unique_ptr<SiPixelQualityProbabilities> myProbabilities;
};

//
Expand All @@ -63,10 +63,10 @@ SiPixelQualityProbabilitiesTestWriter::SiPixelQualityProbabilitiesTestWriter(con
m_record(iConfig.getParameter<std::string>("record")),
printdebug_(iConfig.getUntrackedParameter<bool>("printDebug", false)) {
//now do what ever initialization is needed
myProbabilities = new SiPixelQualityProbabilities();
myProbabilities = std::make_unique<SiPixelQualityProbabilities>();
}

SiPixelQualityProbabilitiesTestWriter::~SiPixelQualityProbabilitiesTestWriter() { delete myProbabilities; }
SiPixelQualityProbabilitiesTestWriter::~SiPixelQualityProbabilitiesTestWriter() = default;

//
// member functions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class SiPixelQualityProbabilitiesWriteFromASCII : public edm::one::EDAnalyzer<>
const std::string m_ProbInputs;
const std::string m_record;
const bool printdebug_;
SiPixelQualityProbabilities* myProbabilities;
std::unique_ptr<SiPixelQualityProbabilities> myProbabilities;
};

//
Expand All @@ -61,10 +61,10 @@ SiPixelQualityProbabilitiesWriteFromASCII::SiPixelQualityProbabilitiesWriteFromA
m_record(iConfig.getParameter<std::string>("record")),
printdebug_(iConfig.getUntrackedParameter<bool>("printDebug", false)) {
//now do what ever initialization is needed
myProbabilities = new SiPixelQualityProbabilities();
myProbabilities = std::make_unique<SiPixelQualityProbabilities>();
}

SiPixelQualityProbabilitiesWriteFromASCII::~SiPixelQualityProbabilitiesWriteFromASCII() { delete myProbabilities; }
SiPixelQualityProbabilitiesWriteFromASCII::~SiPixelQualityProbabilitiesWriteFromASCII() = default;

//
// member functions
Expand Down
Loading

0 comments on commit 1411a3a

Please sign in to comment.