Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include <memory>
00008 #include <iostream>
00009 #include <fstream>
00010
00011 #include "FWCore/Utilities/interface/Exception.h"
00012 #include "FWCore/ParameterSet/interface/FileInPath.h"
00013
00014 #include "FWCore/Framework/interface/ValidityInterval.h"
00015
00016 #include "CalibCalorimetry/HcalAlgos/interface/HcalDbASCIIIO.h"
00017
00018 #include "CondFormats/DataRecord/interface/HcalAllRcds.h"
00019
00020 #include "HcalTextCalibrations.h"
00021
00022
00023
00024
00025 using namespace cms;
00026
00027 HcalTextCalibrations::HcalTextCalibrations ( const edm::ParameterSet& iConfig )
00028
00029 {
00030
00031 std::vector<edm::ParameterSet> data = iConfig.getParameter<std::vector<edm::ParameterSet> >("input");
00032 std::vector<edm::ParameterSet>::iterator request = data.begin ();
00033 for (; request != data.end (); request++) {
00034 std::string objectName = request->getParameter<std::string> ("object");
00035 edm::FileInPath fp = request->getParameter<edm::FileInPath>("file");
00036 mInputs [objectName] = fp.fullPath();
00037 if (objectName == "Pedestals") {
00038 setWhatProduced (this, &HcalTextCalibrations::producePedestals);
00039 findingRecord <HcalPedestalsRcd> ();
00040 }
00041 else if (objectName == "PedestalWidths") {
00042 setWhatProduced (this, &HcalTextCalibrations::producePedestalWidths);
00043 findingRecord <HcalPedestalWidthsRcd> ();
00044 }
00045 else if (objectName == "Gains") {
00046 setWhatProduced (this, &HcalTextCalibrations::produceGains);
00047 findingRecord <HcalGainsRcd> ();
00048 }
00049 else if (objectName == "GainWidths") {
00050 setWhatProduced (this, &HcalTextCalibrations::produceGainWidths);
00051 findingRecord <HcalGainWidthsRcd> ();
00052 }
00053 else if (objectName == "QIEData") {
00054 setWhatProduced (this, &HcalTextCalibrations::produceQIEData);
00055 findingRecord <HcalQIEDataRcd> ();
00056 }
00057 else if (objectName == "ChannelQuality") {
00058 setWhatProduced (this, &HcalTextCalibrations::produceChannelQuality);
00059 findingRecord <HcalChannelQualityRcd> ();
00060 }
00061 else if (objectName == "ZSThresholds") {
00062 setWhatProduced (this, &HcalTextCalibrations::produceZSThresholds);
00063 findingRecord <HcalZSThresholdsRcd> ();
00064 }
00065 else if (objectName == "RespCorrs") {
00066 setWhatProduced (this, &HcalTextCalibrations::produceRespCorrs);
00067 findingRecord <HcalRespCorrsRcd> ();
00068 }
00069 else if (objectName == "LUTCorrs") {
00070 setWhatProduced (this, &HcalTextCalibrations::produceLUTCorrs);
00071 findingRecord <HcalLUTCorrsRcd> ();
00072 }
00073 else if (objectName == "PFCorrs") {
00074 setWhatProduced (this, &HcalTextCalibrations::producePFCorrs);
00075 findingRecord <HcalPFCorrsRcd> ();
00076 }
00077 else if (objectName == "TimeCorrs") {
00078 setWhatProduced (this, &HcalTextCalibrations::produceTimeCorrs);
00079 findingRecord <HcalTimeCorrsRcd> ();
00080 }
00081 else if (objectName == "L1TriggerObjects") {
00082 setWhatProduced (this, &HcalTextCalibrations::produceL1TriggerObjects);
00083 findingRecord <HcalL1TriggerObjectsRcd> ();
00084 }
00085 else if (objectName == "ElectronicsMap") {
00086 setWhatProduced (this, &HcalTextCalibrations::produceElectronicsMap);
00087 findingRecord <HcalElectronicsMapRcd> ();
00088 }
00089 else if (objectName == "ValidationCorrs") {
00090 setWhatProduced (this, &HcalTextCalibrations::produceValidationCorrs);
00091 findingRecord <HcalValidationCorrsRcd> ();
00092 }
00093 else if (objectName == "LutMetadata") {
00094 setWhatProduced (this, &HcalTextCalibrations::produceLutMetadata);
00095 findingRecord <HcalLutMetadataRcd> ();
00096 }
00097 else if (objectName == "DcsValues") {
00098 setWhatProduced (this, &HcalTextCalibrations::produceDcsValues);
00099 findingRecord <HcalDcsRcd> ();
00100 }
00101 else if (objectName == "DcsMap") {
00102 setWhatProduced (this, &HcalTextCalibrations::produceDcsMap);
00103 findingRecord <HcalDcsMapRcd> ();
00104 }
00105 else if (objectName == "CholeskyMatrices") {
00106 setWhatProduced (this, &HcalTextCalibrations::produceCholeskyMatrices);
00107 findingRecord <HcalCholeskyMatricesRcd> ();
00108 }
00109 else if (objectName == "CovarianceMatrices") {
00110 setWhatProduced (this, &HcalTextCalibrations::produceCovarianceMatrices);
00111 findingRecord <HcalCovarianceMatricesRcd> ();
00112 }
00113 else {
00114 std::cerr << "HcalTextCalibrations-> Unknown object name '" << objectName
00115 << "', known names are: "
00116 << "Pedestals PedestalWidths Gains GainWidths QIEData ChannelQuality ElectronicsMap "
00117 << "ZSThresholds RespCorrs LUTCorrs PFCorrs TimeCorrs L1TriggerObjects "
00118 << "ValidationCorrs LutMetadata DcsValues DcsMap CholeskyMatrices CovarianceMatrices"
00119 << std::endl;
00120 }
00121 }
00122
00123 }
00124
00125
00126 HcalTextCalibrations::~HcalTextCalibrations()
00127 {
00128 }
00129
00130
00131
00132
00133
00134 void
00135 HcalTextCalibrations::setIntervalFor( const edm::eventsetup::EventSetupRecordKey& iKey, const edm::IOVSyncValue& iTime, edm::ValidityInterval& oInterval ) {
00136 std::string record = iKey.name ();
00137 oInterval = edm::ValidityInterval (edm::IOVSyncValue::beginOfTime(), edm::IOVSyncValue::endOfTime());
00138 }
00139
00140 template <class T>
00141 std::auto_ptr<T> produce_impl (const std::string& fFile) {
00142 std::auto_ptr<T> result (new T ());
00143
00144 std::ifstream inStream (fFile.c_str ());
00145 if (!inStream.good ()) {
00146 std::cerr << "HcalTextCalibrations-> Unable to open file '" << fFile << "'" << std::endl;
00147 throw cms::Exception("FileNotFound") << "Unable to open '" << fFile << "'" << std::endl;
00148 }
00149 if (!HcalDbASCIIIO::getObject (inStream, &*result)) {
00150 std::cerr << "HcalTextCalibrations-> Can not read object from file '" << fFile << "'" << std::endl;
00151 throw cms::Exception("ReadError") << "Can not read object from file '" << fFile << "'" << std::endl;
00152 }
00153 return result;
00154 }
00155
00156
00157
00158 std::auto_ptr<HcalPedestals> HcalTextCalibrations::producePedestals (const HcalPedestalsRcd&) {
00159 return produce_impl<HcalPedestals> (mInputs ["Pedestals"]);
00160 }
00161
00162 std::auto_ptr<HcalPedestalWidths> HcalTextCalibrations::producePedestalWidths (const HcalPedestalWidthsRcd&) {
00163 return produce_impl<HcalPedestalWidths> (mInputs ["PedestalWidths"]);
00164 }
00165
00166 std::auto_ptr<HcalGains> HcalTextCalibrations::produceGains (const HcalGainsRcd&) {
00167 return produce_impl<HcalGains> (mInputs ["Gains"]);
00168 }
00169
00170 std::auto_ptr<HcalGainWidths> HcalTextCalibrations::produceGainWidths (const HcalGainWidthsRcd&) {
00171 return produce_impl<HcalGainWidths> (mInputs ["GainWidths"]);
00172 }
00173
00174 std::auto_ptr<HcalQIEData> HcalTextCalibrations::produceQIEData (const HcalQIEDataRcd& rcd) {
00175 return produce_impl<HcalQIEData> (mInputs ["QIEData"]);
00176 }
00177
00178 std::auto_ptr<HcalChannelQuality> HcalTextCalibrations::produceChannelQuality (const HcalChannelQualityRcd& rcd) {
00179 return produce_impl<HcalChannelQuality> (mInputs ["ChannelQuality"]);
00180 }
00181
00182 std::auto_ptr<HcalZSThresholds> HcalTextCalibrations::produceZSThresholds (const HcalZSThresholdsRcd& rcd) {
00183 return produce_impl<HcalZSThresholds> (mInputs ["ZSThresholds"]);
00184 }
00185
00186 std::auto_ptr<HcalRespCorrs> HcalTextCalibrations::produceRespCorrs (const HcalRespCorrsRcd& rcd) {
00187 return produce_impl<HcalRespCorrs> (mInputs ["RespCorrs"]);
00188 }
00189
00190 std::auto_ptr<HcalLUTCorrs> HcalTextCalibrations::produceLUTCorrs (const HcalLUTCorrsRcd& rcd) {
00191 return produce_impl<HcalLUTCorrs> (mInputs ["LUTCorrs"]);
00192 }
00193
00194 std::auto_ptr<HcalPFCorrs> HcalTextCalibrations::producePFCorrs (const HcalPFCorrsRcd& rcd) {
00195 return produce_impl<HcalPFCorrs> (mInputs ["PFCorrs"]);
00196 }
00197
00198 std::auto_ptr<HcalTimeCorrs> HcalTextCalibrations::produceTimeCorrs (const HcalTimeCorrsRcd& rcd) {
00199 return produce_impl<HcalTimeCorrs> (mInputs ["TimeCorrs"]);
00200 }
00201
00202 std::auto_ptr<HcalL1TriggerObjects> HcalTextCalibrations::produceL1TriggerObjects (const HcalL1TriggerObjectsRcd& rcd) {
00203 return produce_impl<HcalL1TriggerObjects> (mInputs ["L1TriggerObjects"]);
00204 }
00205
00206 std::auto_ptr<HcalElectronicsMap> HcalTextCalibrations::produceElectronicsMap (const HcalElectronicsMapRcd& rcd) {
00207 return produce_impl<HcalElectronicsMap> (mInputs ["ElectronicsMap"]);
00208 }
00209
00210 std::auto_ptr<HcalValidationCorrs> HcalTextCalibrations::produceValidationCorrs (const HcalValidationCorrsRcd& rcd) {
00211 return produce_impl<HcalValidationCorrs> (mInputs ["ValidationCorrs"]);
00212 }
00213
00214 std::auto_ptr<HcalLutMetadata> HcalTextCalibrations::produceLutMetadata (const HcalLutMetadataRcd& rcd) {
00215 return produce_impl<HcalLutMetadata> (mInputs ["LutMetadata"]);
00216 }
00217
00218 std::auto_ptr<HcalDcsValues>
00219 HcalTextCalibrations::produceDcsValues(HcalDcsRcd const & rcd) {
00220 return produce_impl<HcalDcsValues> (mInputs ["DcsValues"]);
00221 }
00222
00223 std::auto_ptr<HcalDcsMap> HcalTextCalibrations::produceDcsMap (const HcalDcsMapRcd& rcd) {
00224 return produce_impl<HcalDcsMap> (mInputs ["DcsMap"]);
00225 }
00226
00227 std::auto_ptr<HcalCovarianceMatrices> HcalTextCalibrations::produceCovarianceMatrices (const HcalCovarianceMatricesRcd& rcd) {
00228 return produce_impl<HcalCovarianceMatrices> (mInputs ["CovarianceMatrices"]);
00229 }
00230
00231 std::auto_ptr<HcalCholeskyMatrices> HcalTextCalibrations::produceCholeskyMatrices (const HcalCholeskyMatricesRcd& rcd) {
00232 return produce_impl<HcalCholeskyMatrices> (mInputs ["CholeskyMatrices"]);
00233 }
00234