Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:03:08

0001 
0002 /*----------------------------------------------------------------------
0003 
0004 R.Ofierzynski - 2.Oct. 2007
0005    modified to dump all pedestals on screen, see 
0006    testHcalDBFake.cfg
0007    testHcalDBFrontier.cfg
0008 
0009 July 29, 2009       Added HcalValidationCorrs - Gena Kukartsev
0010 September 21, 2009  Added HcalLutMetadata - Gena Kukartsev
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     // dumpIt called for all possible ValueMaps. The function checks if the dump is actually requested.
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 }  // namespace edmtest