From d26234e936488fa937f50f1083ee21987c05be52 Mon Sep 17 00:00:00 2001 From: Mateusz Date: Wed, 11 Aug 2021 15:47:03 +0200 Subject: [PATCH 1/5] Registered PPSAlignmentConfig. --- CondCore/CTPPSPlugins/src/plugin.cc | 3 +++ .../PPSObjects/interface/PPSAlignmentConfig.h | 2 ++ CondFormats/PPSObjects/src/classes_def.xml | 15 ++++++++++++++- CondFormats/PPSObjects/src/headers.h | 2 ++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CondCore/CTPPSPlugins/src/plugin.cc b/CondCore/CTPPSPlugins/src/plugin.cc index 28eab28ee1ade..7f9f109e123f1 100644 --- a/CondCore/CTPPSPlugins/src/plugin.cc +++ b/CondCore/CTPPSPlugins/src/plugin.cc @@ -19,6 +19,8 @@ #include "CondFormats/DataRecord/interface/PPSDirectSimulationDataRcd.h" #include "CondFormats/PPSObjects/interface/PPSPixelTopology.h" #include "CondFormats/DataRecord/interface/PPSPixelTopologyRcd.h" +#include "CondFormats/PPSObjects/interface/PPSAlignmentConfig.h" +#include "CondFormats/DataRecord/interface/PPSAlignmentConfigRcd.h" REGISTER_PLUGIN(CTPPSBeamParametersRcd, CTPPSBeamParameters); REGISTER_PLUGIN(CTPPSPixelDAQMappingRcd, CTPPSPixelDAQMapping); @@ -31,3 +33,4 @@ REGISTER_PLUGIN(PPSTimingCalibrationRcd, PPSTimingCalibration); REGISTER_PLUGIN(CTPPSOpticsRcd, LHCOpticalFunctionsSetCollection); REGISTER_PLUGIN(PPSDirectSimulationDataRcd, PPSDirectSimulationData); REGISTER_PLUGIN(PPSPixelTopologyRcd, PPSPixelTopology); +REGISTER_PLUGIN(PPSAlignmentConfigRcd, PPSAlignmentConfig); diff --git a/CondFormats/PPSObjects/interface/PPSAlignmentConfig.h b/CondFormats/PPSObjects/interface/PPSAlignmentConfig.h index cc4edb997b557..c75bedf888c7e 100644 --- a/CondFormats/PPSObjects/interface/PPSAlignmentConfig.h +++ b/CondFormats/PPSObjects/interface/PPSAlignmentConfig.h @@ -87,6 +87,8 @@ struct Binning { unsigned int n_bins_y_; double y_min_, y_max_; + + COND_SERIALIZABLE; }; std::ostream &operator<<(std::ostream &os, Binning &b); diff --git a/CondFormats/PPSObjects/src/classes_def.xml b/CondFormats/PPSObjects/src/classes_def.xml index 2b8be486f99ef..74cfa9a9761dc 100644 --- a/CondFormats/PPSObjects/src/classes_def.xml +++ b/CondFormats/PPSObjects/src/classes_def.xml @@ -68,4 +68,17 @@ - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CondFormats/PPSObjects/src/headers.h b/CondFormats/PPSObjects/src/headers.h index bb179fd8df892..1b77a578cb8ca 100644 --- a/CondFormats/PPSObjects/src/headers.h +++ b/CondFormats/PPSObjects/src/headers.h @@ -13,3 +13,5 @@ #include "CondFormats/PPSObjects/interface/PPSDirectSimulationData.h" #include "CondFormats/PPSObjects/interface/PPSPixelTopology.h" + +#include "CondFormats/PPSObjects/interface/PPSAlignmentConfig.h" From 9c2363e4575891985c3f3096ab25769513a48429 Mon Sep 17 00:00:00 2001 From: Mateusz Date: Wed, 11 Aug 2021 17:37:51 +0200 Subject: [PATCH 2/5] Moved typelookup to another file. --- CondFormats/PPSObjects/src/PPSAlignmentConfig.cc | 3 --- CondFormats/PPSObjects/src/T_EventSetup_PPSAlignmentConfig.cc | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 CondFormats/PPSObjects/src/T_EventSetup_PPSAlignmentConfig.cc diff --git a/CondFormats/PPSObjects/src/PPSAlignmentConfig.cc b/CondFormats/PPSObjects/src/PPSAlignmentConfig.cc index 6cd6a35f90bf5..427269cbdd42c 100644 --- a/CondFormats/PPSObjects/src/PPSAlignmentConfig.cc +++ b/CondFormats/PPSObjects/src/PPSAlignmentConfig.cc @@ -10,10 +10,7 @@ * ****************************************************************************/ -#include "FWCore/Utilities/interface/typelookup.h" - #include "CondFormats/PPSObjects/interface/PPSAlignmentConfig.h" -TYPELOOKUP_DATA_REG(PPSAlignmentConfig); #include #include diff --git a/CondFormats/PPSObjects/src/T_EventSetup_PPSAlignmentConfig.cc b/CondFormats/PPSObjects/src/T_EventSetup_PPSAlignmentConfig.cc new file mode 100644 index 0000000000000..5c45035747026 --- /dev/null +++ b/CondFormats/PPSObjects/src/T_EventSetup_PPSAlignmentConfig.cc @@ -0,0 +1,4 @@ +#include "CondFormats/PPSObjects/interface/PPSAlignmentConfig.h" +#include "FWCore/Utilities/interface/typelookup.h" + +TYPELOOKUP_DATA_REG(PPSAlignmentConfig); From 7ecf5ee9ec4a6d011bcb5efd000e0166ddfa8888 Mon Sep 17 00:00:00 2001 From: Mateusz Date: Thu, 12 Aug 2021 10:36:18 +0200 Subject: [PATCH 3/5] Added PPSAlignmentConfig to the utility tools. --- CondCore/Utilities/plugins/Module_2XML.cc | 1 + CondCore/Utilities/src/CondDBFetch.cc | 1 + CondCore/Utilities/src/CondDBImport.cc | 1 + CondCore/Utilities/src/CondFormats.h | 1 + 4 files changed, 4 insertions(+) diff --git a/CondCore/Utilities/plugins/Module_2XML.cc b/CondCore/Utilities/plugins/Module_2XML.cc index 29315adf8f158..e8786db1cb3b0 100644 --- a/CondCore/Utilities/plugins/Module_2XML.cc +++ b/CondCore/Utilities/plugins/Module_2XML.cc @@ -30,6 +30,7 @@ PAYLOAD_2XML_MODULE(pluginUtilities_payload2xml) { PAYLOAD_2XML_CLASS(CTPPSPixelAnalysisMask); PAYLOAD_2XML_CLASS(CTPPSPixelDAQMapping); PAYLOAD_2XML_CLASS(CTPPSPixelGainCalibrations); + PAYLOAD_2XML_CLASS(PPSAlignmentConfig) PAYLOAD_2XML_CLASS(CastorChannelQuality); PAYLOAD_2XML_CLASS(CastorElectronicsMap); PAYLOAD_2XML_CLASS(CastorGainWidths); diff --git a/CondCore/Utilities/src/CondDBFetch.cc b/CondCore/Utilities/src/CondDBFetch.cc index 65487da430c1b..fbf972e5ce79a 100644 --- a/CondCore/Utilities/src/CondDBFetch.cc +++ b/CondCore/Utilities/src/CondDBFetch.cc @@ -56,6 +56,7 @@ namespace cond { FETCH_PAYLOAD_CASE(CTPPSPixelAnalysisMask) FETCH_PAYLOAD_CASE(CTPPSPixelGainCalibrations) FETCH_PAYLOAD_CASE(CTPPSRPAlignmentCorrectionsData) + FETCH_PAYLOAD_CASE(PPSAlignmentConfig) FETCH_PAYLOAD_CASE(LHCOpticalFunctionsSetCollection) FETCH_PAYLOAD_CASE(CastorChannelQuality) FETCH_PAYLOAD_CASE(CastorElectronicsMap) diff --git a/CondCore/Utilities/src/CondDBImport.cc b/CondCore/Utilities/src/CondDBImport.cc index 051cded7514cd..4ff8b8e0b6bc1 100644 --- a/CondCore/Utilities/src/CondDBImport.cc +++ b/CondCore/Utilities/src/CondDBImport.cc @@ -76,6 +76,7 @@ namespace cond { IMPORT_PAYLOAD_CASE(CTPPSPixelAnalysisMask) IMPORT_PAYLOAD_CASE(CTPPSPixelGainCalibrations) IMPORT_PAYLOAD_CASE(CTPPSRPAlignmentCorrectionsData) + IMPORT_PAYLOAD_CASE(PPSAlignmentConfig) IMPORT_PAYLOAD_CASE(LHCOpticalFunctionsSetCollection) IMPORT_PAYLOAD_CASE(CastorChannelQuality) IMPORT_PAYLOAD_CASE(CastorElectronicsMap) diff --git a/CondCore/Utilities/src/CondFormats.h b/CondCore/Utilities/src/CondFormats.h index b317327cfd1b8..484bdc988b0d4 100644 --- a/CondCore/Utilities/src/CondFormats.h +++ b/CondCore/Utilities/src/CondFormats.h @@ -33,6 +33,7 @@ #include "CondFormats/PPSObjects/interface/CTPPSRPAlignmentCorrectionsData.h" #include "CondFormats/PPSObjects/interface/PPSTimingCalibration.h" #include "CondFormats/PPSObjects/interface/LHCOpticalFunctionsSetCollection.h" +#include "CondFormats/PPSObjects/interface/PPSAlignmentConfig.h" #include "CondFormats/DTObjects/interface/DTCCBConfig.h" #include "CondFormats/DTObjects/interface/DTDeadFlag.h" #include "CondFormats/DTObjects/interface/DTHVStatus.h" From 2d03e69b2d4571a8578f21ff49915dc16bd35398 Mon Sep 17 00:00:00 2001 From: Mateusz Date: Thu, 12 Aug 2021 13:54:15 +0200 Subject: [PATCH 4/5] Added serialization test for PPSAlignmentConfig. --- CondFormats/PPSObjects/test/BuildFile.xml | 4 ++++ .../test/testSerializationPPSAlignmentConfig.cc | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 CondFormats/PPSObjects/test/testSerializationPPSAlignmentConfig.cc diff --git a/CondFormats/PPSObjects/test/BuildFile.xml b/CondFormats/PPSObjects/test/BuildFile.xml index b4b34bf621ee7..edb32ad3438ca 100644 --- a/CondFormats/PPSObjects/test/BuildFile.xml +++ b/CondFormats/PPSObjects/test/BuildFile.xml @@ -9,3 +9,7 @@ + + + + diff --git a/CondFormats/PPSObjects/test/testSerializationPPSAlignmentConfig.cc b/CondFormats/PPSObjects/test/testSerializationPPSAlignmentConfig.cc new file mode 100644 index 0000000000000..e979996e0d532 --- /dev/null +++ b/CondFormats/PPSObjects/test/testSerializationPPSAlignmentConfig.cc @@ -0,0 +1,17 @@ +#include "CondFormats/Serialization/interface/Test.h" + +#include "../src/headers.h" + +int main() { + testSerialization(); + testSerialization(); + testSerialization(); + testSerialization(); + testSerialization(); + + testSerialization>(); + testSerialization>>(); + testSerialization>(); + + testSerialization(); +} From f2d90ce2ffd347abdcca6a9a125d757a03fa994e Mon Sep 17 00:00:00 2001 From: Mateusz Date: Thu, 12 Aug 2021 14:04:58 +0200 Subject: [PATCH 5/5] Added modules testing writing and retrieving PPSAlignmentConfig. --- .../plugins/RetrievePPSAlignmentConfig.cc | 42 +++++++++ .../CTPPS/plugins/WritePPSAlignmentConfig.cc | 51 +++++++++++ .../test/retrieve_PPSAlignmentConfig_cfg.py | 52 +++++++++++ .../test/write_PPSAlignmentConfig_cfg.py | 88 +++++++++++++++++++ 4 files changed, 233 insertions(+) create mode 100644 CondTools/CTPPS/plugins/RetrievePPSAlignmentConfig.cc create mode 100644 CondTools/CTPPS/plugins/WritePPSAlignmentConfig.cc create mode 100644 CondTools/CTPPS/test/retrieve_PPSAlignmentConfig_cfg.py create mode 100644 CondTools/CTPPS/test/write_PPSAlignmentConfig_cfg.py diff --git a/CondTools/CTPPS/plugins/RetrievePPSAlignmentConfig.cc b/CondTools/CTPPS/plugins/RetrievePPSAlignmentConfig.cc new file mode 100644 index 0000000000000..b780cf149ce30 --- /dev/null +++ b/CondTools/CTPPS/plugins/RetrievePPSAlignmentConfig.cc @@ -0,0 +1,42 @@ +/**************************************************************************** +* Author: +* Mateusz Kocot (mateuszkocot99@gmail.com) +****************************************************************************/ + +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ServiceRegistry/interface/Service.h" + +#include "CondFormats/PPSObjects/interface/PPSAlignmentConfig.h" +#include "CondFormats/DataRecord/interface/PPSAlignmentConfigRcd.h" + +#include + +class RetrievePPSAlignmentConfig : public edm::one::EDAnalyzer<> { +public: + explicit RetrievePPSAlignmentConfig(const edm::ParameterSet &); + +private: + void analyze(const edm::Event &, const edm::EventSetup &) override; + + edm::ESGetToken esToken_; +}; + +RetrievePPSAlignmentConfig::RetrievePPSAlignmentConfig(const edm::ParameterSet &iConfig) : esToken_(esConsumes()) {} + +void RetrievePPSAlignmentConfig::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) { + // get the data + const auto &ppsAlignmentConfig = iSetup.getData(esToken_); + + edm::LogInfo("PPS") << ppsAlignmentConfig; +} + +//define this as a plug-in +DEFINE_FWK_MODULE(RetrievePPSAlignmentConfig); diff --git a/CondTools/CTPPS/plugins/WritePPSAlignmentConfig.cc b/CondTools/CTPPS/plugins/WritePPSAlignmentConfig.cc new file mode 100644 index 0000000000000..84437bd4e3728 --- /dev/null +++ b/CondTools/CTPPS/plugins/WritePPSAlignmentConfig.cc @@ -0,0 +1,51 @@ +/**************************************************************************** +* Author: +* Mateusz Kocot (mateuszkocot99@gmail.com) +****************************************************************************/ + +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ServiceRegistry/interface/Service.h" + +#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" + +#include "CondFormats/PPSObjects/interface/PPSAlignmentConfig.h" +#include "CondFormats/DataRecord/interface/PPSAlignmentConfigRcd.h" + +#include + +class WritePPSAlignmentConfig : public edm::one::EDAnalyzer<> { +public: + explicit WritePPSAlignmentConfig(const edm::ParameterSet &); + +private: + void analyze(const edm::Event &, const edm::EventSetup &) override; + + edm::ESGetToken esToken_; +}; + +WritePPSAlignmentConfig::WritePPSAlignmentConfig(const edm::ParameterSet &iConfig) + : esToken_(esConsumes( + edm::ESInputTag("", iConfig.getParameter("label")))) {} + +void WritePPSAlignmentConfig::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) { + // get the data + const auto &ppsAlignmentConfig = iSetup.getData(esToken_); + + // store the data in a DB object + edm::Service poolDbService; + if (poolDbService.isAvailable()) { + poolDbService->writeOne(&ppsAlignmentConfig, poolDbService->currentTime(), "PPSAlignmentConfigRcd"); + } else { + throw cms::Exception("WritePPSAlignmentConfig") << "PoolDBService required."; + } +} + +//define this as a plug-in +DEFINE_FWK_MODULE(WritePPSAlignmentConfig); diff --git a/CondTools/CTPPS/test/retrieve_PPSAlignmentConfig_cfg.py b/CondTools/CTPPS/test/retrieve_PPSAlignmentConfig_cfg.py new file mode 100644 index 0000000000000..5614bfe76bc4f --- /dev/null +++ b/CondTools/CTPPS/test/retrieve_PPSAlignmentConfig_cfg.py @@ -0,0 +1,52 @@ +##### configuration ##### +input_conditions = 'sqlite_file:alignment_config.db' # input database +run_number = 1 # used to select the IOV +db_tag = 'PPSAlignmentConfig_test_v1_prompt' # database tag +######################### + +import FWCore.ParameterSet.Config as cms + +process = cms.Process("retrievePPSAlignmentConfig") + +# Message Logger +process.MessageLogger = cms.Service("MessageLogger", + destinations = cms.untracked.vstring('retrieve_PPSAlignmentConfig'), + retrieve_PPSAlignmentConfig = cms.untracked.PSet( + threshold = cms.untracked.string('INFO') + ) +) + +# Load CondDB service +process.load("CondCore.CondDB.CondDB_cfi") + +# input database (in this case the local sqlite file) +process.CondDB.connect = input_conditions + +# A data source must always be defined. We don't need it, so here's a dummy one. +process.source = cms.Source("EmptyIOVSource", + timetype = cms.string('runnumber'), + firstValue = cms.uint64(run_number), + lastValue = cms.uint64(run_number), + interval = cms.uint64(1) +) + +# input service +process.PoolDBESSource = cms.ESSource("PoolDBESSource", + process.CondDB, + DumbStat = cms.untracked.bool(True), + toGet = cms.VPSet(cms.PSet( + record = cms.string('PPSAlignmentConfigRcd'), + tag = cms.string(db_tag) + )) +) + +# DB object retrieve module +process.retrieve_config = cms.EDAnalyzer("RetrievePPSAlignmentConfig", + toGet = cms.VPSet(cms.PSet( + record = cms.string('PPSAlignmentConfigRcd'), + data = cms.vstring('PPSAlignmentConfig') + )), + verbose = cms.untracked.bool(True) +) + +process.path = cms.Path(process.retrieve_config) diff --git a/CondTools/CTPPS/test/write_PPSAlignmentConfig_cfg.py b/CondTools/CTPPS/test/write_PPSAlignmentConfig_cfg.py new file mode 100644 index 0000000000000..0a1fe540a76be --- /dev/null +++ b/CondTools/CTPPS/test/write_PPSAlignmentConfig_cfg.py @@ -0,0 +1,88 @@ +##### configuration ##### +output_conditions = 'sqlite_file:alignment_config.db' # output database +run_number = 1 # beginning of the IOV +db_tag = 'PPSAlignmentConfig_test_v1_prompt' # database tag +produce_logs = True # if set to True, a file with logs will be produced. +product_instance_label = 'db_test' # ES product label +######################### + +import FWCore.ParameterSet.Config as cms + +process = cms.Process("writePPSAlignmentConfig") + +# Message Logger +if produce_logs: + process.MessageLogger = cms.Service("MessageLogger", + destinations = cms.untracked.vstring('write_PPSAlignmentConfig', + 'cout' + ), + write_PPSAlignmentConfig = cms.untracked.PSet( + threshold = cms.untracked.string('INFO') + ), + cout = cms.untracked.PSet( + threshold = cms.untracked.string('WARNING') + ) + ) +else: + process.MessageLogger = cms.Service("MessageLogger", + destinations = cms.untracked.vstring('cout'), + cout = cms.untracked.PSet( + threshold = cms.untracked.string('WARNING') + ) + ) + +# Load CondDB service +process.load("CondCore.CondDB.CondDB_cfi") + +# output database +process.CondDB.connect = output_conditions + +# A data source must always be defined. We don't need it, so here's a dummy one. +process.source = cms.Source("EmptyIOVSource", + timetype = cms.string('runnumber'), + firstValue = cms.uint64(run_number), + lastValue = cms.uint64(run_number), + interval = cms.uint64(1) +) + +# output service +process.PoolDBOutputService = cms.Service("PoolDBOutputService", + process.CondDB, + timetype = cms.untracked.string('runnumber'), + toPut = cms.VPSet(cms.PSet( + record = cms.string('PPSAlignmentConfigRcd'), + tag = cms.string(db_tag) + )) +) + +# ESSource +process.ppsAlignmentConfigESSource = cms.ESSource("PPSAlignmentConfigESSource", + # PPSAlignmentConfigESSource parameters, defaults will be taken from fillDescriptions + label = cms.string(product_instance_label), + sector_45 = cms.PSet( + rp_N = cms.PSet( + name = cms.string('db_test_RP'), + id = cms.int32(44), + y_max_fit_mode = cms.double(66.6) + ) + ), + y_alignment = cms.PSet( + rp_L_F = cms.PSet( + x_min = cms.double(102), + x_max = cms.double(210.0) + ) + ) +) + +# DB object maker +process.config_writer = cms.EDAnalyzer("WritePPSAlignmentConfig", + record = cms.string('PPSAlignmentConfigRcd'), + loggingOn = cms.untracked.bool(True), + SinceAppendMode = cms.bool(True), + Source = cms.PSet( + IOVRun = cms.untracked.uint32(1) + ), + label = cms.string(product_instance_label) +) + +process.path = cms.Path(process.config_writer) \ No newline at end of file