File indexing completed on 2023-03-30 22:38:07
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <stdexcept>
0015 #include <string>
0016 #include <iostream>
0017 #include <fstream>
0018 #include <sstream>
0019 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0020 #include "FWCore/Framework/interface/Event.h"
0021 #include "FWCore/Framework/interface/MakerMacros.h"
0022
0023 #include "FWCore/Framework/interface/EventSetup.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025
0026 #include "CondFormats/DataRecord/interface/HcalAllRcds.h"
0027
0028 #include "CalibCalorimetry/HcalAlgos/interface/HcalDbASCIIIO.h"
0029
0030 #include "CalibFormats/HcalObjects/interface/HcalDbService.h"
0031 #include "CalibFormats/HcalObjects/interface/HcalDbRecord.h"
0032 #include "Geometry/Records/interface/HcalRecNumberingRecord.h"
0033
0034 #include "FWCore/Framework/interface/IOVSyncValue.h"
0035 #include "CondFormats/HcalObjects/interface/AllObjects.h"
0036
0037 namespace edmtest {
0038 class HcalDumpConditions : public edm::one::EDAnalyzer<> {
0039 public:
0040 explicit HcalDumpConditions(edm::ParameterSet const& p) {
0041 front = p.getUntrackedParameter<std::string>("outFilePrefix", "Dump");
0042 mDumpRequest = p.getUntrackedParameter<std::vector<std::string> >("dump", std::vector<std::string>());
0043 m_toktopo = esConsumes<HcalTopology, HcalRecNumberingRecord>();
0044 m_tokdb = esConsumes<HcalDbService, HcalDbRecord>();
0045
0046 tok_ElectronicsMap = esConsumes<HcalElectronicsMap, HcalElectronicsMapRcd>();
0047 tok_FrontEndMap = esConsumes<HcalFrontEndMap, HcalFrontEndMapRcd>();
0048 tok_QIEData = esConsumes<HcalQIEData, HcalQIEDataRcd>();
0049 tok_QIETypes = esConsumes<HcalQIETypes, HcalQIETypesRcd>();
0050 tok_Pedestals = esConsumes<HcalPedestals, HcalPedestalsRcd>();
0051 tok_PedestalWidths = esConsumes<HcalPedestalWidths, HcalPedestalWidthsRcd>();
0052 tok_Pedestals_effective = esConsumes<HcalPedestals, HcalPedestalsRcd>(edm::ESInputTag("", "effective"));
0053 tok_PedestalWidths_effective =
0054 esConsumes<HcalPedestalWidths, HcalPedestalWidthsRcd>(edm::ESInputTag("", "effective"));
0055 tok_Gains = esConsumes<HcalGains, HcalGainsRcd>();
0056 tok_GainWidths = esConsumes<HcalGainWidths, HcalGainWidthsRcd>();
0057 tok_PFCuts = esConsumes<HcalPFCuts, HcalPFCutsRcd>();
0058 tok_ChannelQuality = esConsumes<HcalChannelQuality, HcalChannelQualityRcd>();
0059 tok_RespCorrs = esConsumes<HcalRespCorrs, HcalRespCorrsRcd>();
0060 tok_ZSThresholds = esConsumes<HcalZSThresholds, HcalZSThresholdsRcd>();
0061 tok_L1TriggerObjects = esConsumes<HcalL1TriggerObjects, HcalL1TriggerObjectsRcd>();
0062 tok_TimeCorrs = esConsumes<HcalTimeCorrs, HcalTimeCorrsRcd>();
0063 tok_LUTCorrs = esConsumes<HcalLUTCorrs, HcalLUTCorrsRcd>();
0064 tok_PFCorrs = esConsumes<HcalPFCorrs, HcalPFCorrsRcd>();
0065 tok_ValidationCorrs = esConsumes<HcalValidationCorrs, HcalValidationCorrsRcd>();
0066 tok_LutMetadata = esConsumes<HcalLutMetadata, HcalLutMetadataRcd>();
0067 tok_DcsValues = esConsumes<HcalDcsValues, HcalDcsRcd>();
0068 tok_DcsMap = esConsumes<HcalDcsMap, HcalDcsMapRcd>();
0069 tok_RecoParams = esConsumes<HcalRecoParams, HcalRecoParamsRcd>();
0070 tok_TimingParams = esConsumes<HcalTimingParams, HcalTimingParamsRcd>();
0071 tok_LongRecoParams = esConsumes<HcalLongRecoParams, HcalLongRecoParamsRcd>();
0072 tok_ZDCLowGainFractions = esConsumes<HcalZDCLowGainFractions, HcalZDCLowGainFractionsRcd>();
0073 tok_MCParams = esConsumes<HcalMCParams, HcalMCParamsRcd>();
0074 tok_FlagHFDigiTimeParams = esConsumes<HcalFlagHFDigiTimeParams, HcalFlagHFDigiTimeParamsRcd>();
0075 tok_SiPMParameters = esConsumes<HcalSiPMParameters, HcalSiPMParametersRcd>();
0076 tok_SiPMCharacteristics = esConsumes<HcalSiPMCharacteristics, HcalSiPMCharacteristicsRcd>();
0077 tok_TPChannelParameters = esConsumes<HcalTPChannelParameters, HcalTPChannelParametersRcd>();
0078 tok_TPParameters = esConsumes<HcalTPParameters, HcalTPParametersRcd>();
0079 }
0080
0081 explicit HcalDumpConditions(int i) {}
0082 ~HcalDumpConditions() override {}
0083 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0084
0085 template <class S, class SRcd>
0086 void dumpIt(const std::vector<std::string>& mDumpRequest,
0087 const edm::Event& e,
0088 const edm::EventSetup& context,
0089 const std::string name,
0090 const edm::ESGetToken<S, SRcd> tok);
0091 template <class S, class SRcd>
0092 void dumpIt(const std::vector<std::string>& mDumpRequest,
0093 const edm::Event& e,
0094 const edm::EventSetup& context,
0095 const std::string name,
0096 const HcalTopology* topo,
0097 const edm::ESGetToken<S, SRcd> tok);
0098 template <class S>
0099 void writeToFile(const S& myS, const edm::Event& e, const std::string name);
0100
0101 private:
0102 std::string front;
0103 std::vector<std::string> mDumpRequest;
0104 edm::ESGetToken<HcalTopology, HcalRecNumberingRecord> m_toktopo;
0105 edm::ESGetToken<HcalDbService, HcalDbRecord> m_tokdb;
0106 edm::ESGetToken<HcalElectronicsMap, HcalElectronicsMapRcd> tok_ElectronicsMap;
0107 edm::ESGetToken<HcalFrontEndMap, HcalFrontEndMapRcd> tok_FrontEndMap;
0108 edm::ESGetToken<HcalQIEData, HcalQIEDataRcd> tok_QIEData;
0109 edm::ESGetToken<HcalQIETypes, HcalQIETypesRcd> tok_QIETypes;
0110 edm::ESGetToken<HcalPedestals, HcalPedestalsRcd> tok_Pedestals;
0111 edm::ESGetToken<HcalPedestalWidths, HcalPedestalWidthsRcd> tok_PedestalWidths;
0112 edm::ESGetToken<HcalPedestals, HcalPedestalsRcd> tok_Pedestals_effective;
0113 edm::ESGetToken<HcalPedestalWidths, HcalPedestalWidthsRcd> tok_PedestalWidths_effective;
0114 edm::ESGetToken<HcalGains, HcalGainsRcd> tok_Gains;
0115 edm::ESGetToken<HcalGainWidths, HcalGainWidthsRcd> tok_GainWidths;
0116 edm::ESGetToken<HcalPFCuts, HcalPFCutsRcd> tok_PFCuts;
0117 edm::ESGetToken<HcalChannelQuality, HcalChannelQualityRcd> tok_ChannelQuality;
0118 edm::ESGetToken<HcalRespCorrs, HcalRespCorrsRcd> tok_RespCorrs;
0119 edm::ESGetToken<HcalZSThresholds, HcalZSThresholdsRcd> tok_ZSThresholds;
0120 edm::ESGetToken<HcalL1TriggerObjects, HcalL1TriggerObjectsRcd> tok_L1TriggerObjects;
0121 edm::ESGetToken<HcalTimeCorrs, HcalTimeCorrsRcd> tok_TimeCorrs;
0122 edm::ESGetToken<HcalLUTCorrs, HcalLUTCorrsRcd> tok_LUTCorrs;
0123 edm::ESGetToken<HcalPFCorrs, HcalPFCorrsRcd> tok_PFCorrs;
0124 edm::ESGetToken<HcalValidationCorrs, HcalValidationCorrsRcd> tok_ValidationCorrs;
0125 edm::ESGetToken<HcalLutMetadata, HcalLutMetadataRcd> tok_LutMetadata;
0126 edm::ESGetToken<HcalDcsValues, HcalDcsRcd> tok_DcsValues;
0127 edm::ESGetToken<HcalDcsMap, HcalDcsMapRcd> tok_DcsMap;
0128 edm::ESGetToken<HcalRecoParams, HcalRecoParamsRcd> tok_RecoParams;
0129 edm::ESGetToken<HcalTimingParams, HcalTimingParamsRcd> tok_TimingParams;
0130 edm::ESGetToken<HcalLongRecoParams, HcalLongRecoParamsRcd> tok_LongRecoParams;
0131 edm::ESGetToken<HcalZDCLowGainFractions, HcalZDCLowGainFractionsRcd> tok_ZDCLowGainFractions;
0132 edm::ESGetToken<HcalMCParams, HcalMCParamsRcd> tok_MCParams;
0133 edm::ESGetToken<HcalFlagHFDigiTimeParams, HcalFlagHFDigiTimeParamsRcd> tok_FlagHFDigiTimeParams;
0134 edm::ESGetToken<HcalSiPMParameters, HcalSiPMParametersRcd> tok_SiPMParameters;
0135 edm::ESGetToken<HcalSiPMCharacteristics, HcalSiPMCharacteristicsRcd> tok_SiPMCharacteristics;
0136 edm::ESGetToken<HcalTPChannelParameters, HcalTPChannelParametersRcd> tok_TPChannelParameters;
0137 edm::ESGetToken<HcalTPParameters, HcalTPParametersRcd> tok_TPParameters;
0138 };
0139
0140 template <class S, class SRcd>
0141 void HcalDumpConditions::dumpIt(const std::vector<std::string>& mDumpRequest,
0142 const edm::Event& e,
0143 const edm::EventSetup& context,
0144 const std::string name,
0145 const edm::ESGetToken<S, SRcd> tok) {
0146 if (std::find(mDumpRequest.begin(), mDumpRequest.end(), name) != mDumpRequest.end()) {
0147 const S& myobject = context.getData(tok);
0148
0149 writeToFile(myobject, e, name);
0150
0151 if (context.get<SRcd>().validityInterval().first() == edm::IOVSyncValue::invalidIOVSyncValue())
0152 std::cout << "error: invalid IOV sync value !" << std::endl;
0153 }
0154 }
0155
0156 template <class S, class SRcd>
0157 void HcalDumpConditions::dumpIt(const std::vector<std::string>& mDumpRequest,
0158 const edm::Event& e,
0159 const edm::EventSetup& context,
0160 const std::string name,
0161 const HcalTopology* topo,
0162 const edm::ESGetToken<S, SRcd> tok) {
0163 if (std::find(mDumpRequest.begin(), mDumpRequest.end(), name) != mDumpRequest.end()) {
0164 S myobject = context.getData(tok);
0165 if (topo)
0166 myobject.setTopo(topo);
0167
0168 writeToFile(myobject, e, name);
0169
0170 if (context.get<SRcd>().validityInterval().first() == edm::IOVSyncValue::invalidIOVSyncValue())
0171 std::cout << "error: invalid IOV sync value !" << std::endl;
0172 }
0173 }
0174
0175 template <class S>
0176 void HcalDumpConditions::writeToFile(const S& myS, const edm::Event& e, const std::string name) {
0177 int myrun = e.id().run();
0178 std::ostringstream file;
0179 file << front << name.c_str() << "_Run" << myrun << ".txt";
0180 std::ofstream outStream(file.str().c_str());
0181 std::cout << "HcalDumpConditions: ---- Dumping " << name << " ----" << std::endl;
0182 HcalDbASCIIIO::dumpObject(outStream, myS);
0183 }
0184
0185 void HcalDumpConditions::analyze(const edm::Event& e, const edm::EventSetup& context) {
0186 const HcalTopology* topo = &context.getData(m_toktopo);
0187
0188 using namespace edm::eventsetup;
0189 std::cout << "HcalDumpConditions::analyze-> I AM IN RUN NUMBER " << e.id().run() << std::endl;
0190
0191 if (mDumpRequest.empty())
0192 return;
0193
0194
0195
0196 dumpIt<HcalElectronicsMap, HcalElectronicsMapRcd>(mDumpRequest, e, context, "ElectronicsMap", tok_ElectronicsMap);
0197 dumpIt<HcalFrontEndMap, HcalFrontEndMapRcd>(mDumpRequest, e, context, "FrontEndMap", tok_FrontEndMap);
0198 dumpIt<HcalQIEData, HcalQIEDataRcd>(mDumpRequest, e, context, "QIEData", topo, tok_QIEData);
0199 dumpIt<HcalQIETypes, HcalQIETypesRcd>(mDumpRequest, e, context, "QIETypes", topo, tok_QIETypes);
0200 dumpIt<HcalPedestals, HcalPedestalsRcd>(mDumpRequest, e, context, "Pedestals", topo, tok_Pedestals);
0201 dumpIt<HcalPedestalWidths, HcalPedestalWidthsRcd>(
0202 mDumpRequest, e, context, "PedestalWidths", topo, tok_PedestalWidths);
0203 dumpIt<HcalPedestals, HcalPedestalsRcd>(
0204 mDumpRequest, e, context, "EffectivePedestals", topo, tok_Pedestals_effective);
0205 dumpIt<HcalPedestalWidths, HcalPedestalWidthsRcd>(
0206 mDumpRequest, e, context, "EffectivePedestalWidths", topo, tok_PedestalWidths_effective);
0207 dumpIt<HcalGains, HcalGainsRcd>(mDumpRequest, e, context, "Gains", topo, tok_Gains);
0208 dumpIt<HcalGainWidths, HcalGainWidthsRcd>(mDumpRequest, e, context, "GainWidths", topo, tok_GainWidths);
0209 dumpIt<HcalPFCuts, HcalPFCutsRcd>(mDumpRequest, e, context, "PFCuts", topo, tok_PFCuts);
0210 dumpIt<HcalChannelQuality, HcalChannelQualityRcd>(
0211 mDumpRequest, e, context, "ChannelQuality", topo, tok_ChannelQuality);
0212 dumpIt<HcalRespCorrs, HcalRespCorrsRcd>(mDumpRequest, e, context, "RespCorrs", topo, tok_RespCorrs);
0213 dumpIt<HcalZSThresholds, HcalZSThresholdsRcd>(mDumpRequest, e, context, "ZSThresholds", topo, tok_ZSThresholds);
0214 dumpIt<HcalL1TriggerObjects, HcalL1TriggerObjectsRcd>(
0215 mDumpRequest, e, context, "L1TriggerObjects", topo, tok_L1TriggerObjects);
0216 dumpIt<HcalTimeCorrs, HcalTimeCorrsRcd>(mDumpRequest, e, context, "TimeCorrs", topo, tok_TimeCorrs);
0217 dumpIt<HcalLUTCorrs, HcalLUTCorrsRcd>(mDumpRequest, e, context, "LUTCorrs", topo, tok_LUTCorrs);
0218 dumpIt<HcalPFCorrs, HcalPFCorrsRcd>(mDumpRequest, e, context, "PFCorrs", topo, tok_PFCorrs);
0219 dumpIt<HcalValidationCorrs, HcalValidationCorrsRcd>(
0220 mDumpRequest, e, context, "ValidationCorrs", topo, tok_ValidationCorrs);
0221 dumpIt<HcalLutMetadata, HcalLutMetadataRcd>(mDumpRequest, e, context, "LutMetadata", topo, tok_LutMetadata);
0222 dumpIt<HcalDcsValues, HcalDcsRcd>(mDumpRequest, e, context, "DcsValues", tok_DcsValues);
0223 dumpIt<HcalDcsMap, HcalDcsMapRcd>(mDumpRequest, e, context, "DcsMap", tok_DcsMap);
0224 dumpIt<HcalRecoParams, HcalRecoParamsRcd>(mDumpRequest, e, context, "RecoParams", topo, tok_RecoParams);
0225 dumpIt<HcalTimingParams, HcalTimingParamsRcd>(mDumpRequest, e, context, "TimingParams", topo, tok_TimingParams);
0226 dumpIt<HcalLongRecoParams, HcalLongRecoParamsRcd>(
0227 mDumpRequest, e, context, "LongRecoParams", topo, tok_LongRecoParams);
0228 dumpIt<HcalZDCLowGainFractions, HcalZDCLowGainFractionsRcd>(
0229 mDumpRequest, e, context, "ZDCLowGainFractions", topo, tok_ZDCLowGainFractions);
0230 dumpIt<HcalMCParams, HcalMCParamsRcd>(mDumpRequest, e, context, "MCParams", topo, tok_MCParams);
0231 dumpIt<HcalFlagHFDigiTimeParams, HcalFlagHFDigiTimeParamsRcd>(
0232 mDumpRequest, e, context, "FlagHFDigiTimeParams", topo, tok_FlagHFDigiTimeParams);
0233 dumpIt<HcalSiPMParameters, HcalSiPMParametersRcd>(
0234 mDumpRequest, e, context, "SiPMParameters", topo, tok_SiPMParameters);
0235 dumpIt<HcalSiPMCharacteristics, HcalSiPMCharacteristicsRcd>(
0236 mDumpRequest, e, context, "SiPMCharacteristics", tok_SiPMCharacteristics);
0237 dumpIt<HcalTPChannelParameters, HcalTPChannelParametersRcd>(
0238 mDumpRequest, e, context, "TPChannelParameters", topo, tok_TPChannelParameters);
0239 dumpIt<HcalTPParameters, HcalTPParametersRcd>(mDumpRequest, e, context, "TPParameters", tok_TPParameters);
0240 }
0241 DEFINE_FWK_MODULE(HcalDumpConditions);
0242 }