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/HcalObjects/interface/HcalPedestals.h"
00019 #include "CondFormats/HcalObjects/interface/HcalPedestalWidths.h"
00020 #include "CondFormats/HcalObjects/interface/HcalGains.h"
00021 #include "CondFormats/HcalObjects/interface/HcalGainWidths.h"
00022 #include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h"
00023 #include "CondFormats/HcalObjects/interface/HcalChannelQuality.h"
00024 #include "CondFormats/HcalObjects/interface/HcalQIEData.h"
00025
00026 #include "CondFormats/DataRecord/interface/HcalPedestalsRcd.h"
00027 #include "CondFormats/DataRecord/interface/HcalPedestalWidthsRcd.h"
00028 #include "CondFormats/DataRecord/interface/HcalGainsRcd.h"
00029 #include "CondFormats/DataRecord/interface/HcalGainWidthsRcd.h"
00030 #include "CondFormats/DataRecord/interface/HcalElectronicsMapRcd.h"
00031 #include "CondFormats/DataRecord/interface/HcalChannelQualityRcd.h"
00032 #include "CondFormats/DataRecord/interface/HcalQIEDataRcd.h"
00033 #include "CondFormats/DataRecord/interface/HcalRespCorrsRcd.h"
00034 #include "CondFormats/DataRecord/interface/HcalZSThresholdsRcd.h"
00035
00036
00037 #include "HcalTextCalibrations.h"
00038
00039
00040
00041
00042 using namespace cms;
00043
00044 HcalTextCalibrations::HcalTextCalibrations ( const edm::ParameterSet& iConfig )
00045
00046 {
00047
00048 std::vector<edm::ParameterSet> data = iConfig.getParameter<std::vector<edm::ParameterSet> >("input");
00049 std::vector<edm::ParameterSet>::iterator request = data.begin ();
00050 for (; request != data.end (); request++) {
00051 std::string objectName = request->getParameter<std::string> ("object");
00052 edm::FileInPath fp = request->getParameter<edm::FileInPath>("file");
00053 mInputs [objectName] = fp.fullPath();
00054 if (objectName == "Pedestals") {
00055 setWhatProduced (this, &HcalTextCalibrations::producePedestals);
00056 findingRecord <HcalPedestalsRcd> ();
00057 }
00058 else if (objectName == "PedestalWidths") {
00059 setWhatProduced (this, &HcalTextCalibrations::producePedestalWidths);
00060 findingRecord <HcalPedestalWidthsRcd> ();
00061 }
00062 else if (objectName == "Gains") {
00063 setWhatProduced (this, &HcalTextCalibrations::produceGains);
00064 findingRecord <HcalGainsRcd> ();
00065 }
00066 else if (objectName == "GainWidths") {
00067 setWhatProduced (this, &HcalTextCalibrations::produceGainWidths);
00068 findingRecord <HcalGainWidthsRcd> ();
00069 }
00070 else if (objectName == "QIEData") {
00071 setWhatProduced (this, &HcalTextCalibrations::produceQIEData);
00072 findingRecord <HcalQIEDataRcd> ();
00073 }
00074 else if (objectName == "ChannelQuality") {
00075 setWhatProduced (this, &HcalTextCalibrations::produceChannelQuality);
00076 findingRecord <HcalChannelQualityRcd> ();
00077 }
00078 else if (objectName == "ZSThresholds") {
00079 setWhatProduced (this, &HcalTextCalibrations::produceZSThresholds);
00080 findingRecord <HcalZSThresholdsRcd> ();
00081 }
00082 else if (objectName == "RespCorrs") {
00083 setWhatProduced (this, &HcalTextCalibrations::produceRespCorrs);
00084 findingRecord <HcalRespCorrsRcd> ();
00085 }
00086 else if (objectName == "ElectronicsMap") {
00087 setWhatProduced (this, &HcalTextCalibrations::produceElectronicsMap);
00088 findingRecord <HcalElectronicsMapRcd> ();
00089 }
00090 else {
00091 std::cerr << "HcalTextCalibrations-> Unknown object name '" << objectName
00092 << "', known names are: "
00093 << "Pedestals PedestalWidths Gains GainWidths QIEData ChannelQuality ElectronicsMap"
00094 << std::endl;
00095 }
00096 }
00097
00098 }
00099
00100
00101 HcalTextCalibrations::~HcalTextCalibrations()
00102 {
00103 }
00104
00105
00106
00107
00108
00109 void
00110 HcalTextCalibrations::setIntervalFor( const edm::eventsetup::EventSetupRecordKey& iKey, const edm::IOVSyncValue& iTime, edm::ValidityInterval& oInterval ) {
00111 std::string record = iKey.name ();
00112 oInterval = edm::ValidityInterval (edm::IOVSyncValue::beginOfTime(), edm::IOVSyncValue::endOfTime());
00113 }
00114
00115 template <class T>
00116 std::auto_ptr<T> produce_impl (const std::string& fFile) {
00117 std::auto_ptr<T> result (new T ());
00118 std::ifstream inStream (fFile.c_str ());
00119 if (!inStream.good ()) {
00120 std::cerr << "HcalTextCalibrations-> Unable to open file '" << fFile << "'" << std::endl;
00121 throw cms::Exception("FileNotFound") << "Unable to open '" << fFile << "'" << std::endl;
00122 }
00123 if (!HcalDbASCIIIO::getObject (inStream, &*result)) {
00124 std::cerr << "HcalTextCalibrations-> Can not read object from file '" << fFile << "'" << std::endl;
00125 throw cms::Exception("ReadError") << "Can not read object from file '" << fFile << "'" << std::endl;
00126 }
00127 return result;
00128 }
00129
00130
00131 std::auto_ptr<HcalPedestals> HcalTextCalibrations::producePedestals (const HcalPedestalsRcd&) {
00132 return produce_impl<HcalPedestals> (mInputs ["Pedestals"]);
00133 }
00134
00135 std::auto_ptr<HcalPedestalWidths> HcalTextCalibrations::producePedestalWidths (const HcalPedestalWidthsRcd&) {
00136 return produce_impl<HcalPedestalWidths> (mInputs ["PedestalWidths"]);
00137 }
00138
00139 std::auto_ptr<HcalGains> HcalTextCalibrations::produceGains (const HcalGainsRcd&) {
00140 return produce_impl<HcalGains> (mInputs ["Gains"]);
00141 }
00142
00143 std::auto_ptr<HcalGainWidths> HcalTextCalibrations::produceGainWidths (const HcalGainWidthsRcd&) {
00144 return produce_impl<HcalGainWidths> (mInputs ["GainWidths"]);
00145 }
00146
00147 std::auto_ptr<HcalQIEData> HcalTextCalibrations::produceQIEData (const HcalQIEDataRcd& rcd) {
00148 return produce_impl<HcalQIEData> (mInputs ["QIEData"]);
00149 }
00150
00151 std::auto_ptr<HcalChannelQuality> HcalTextCalibrations::produceChannelQuality (const HcalChannelQualityRcd& rcd) {
00152 return produce_impl<HcalChannelQuality> (mInputs ["ChannelQuality"]);
00153 }
00154
00155 std::auto_ptr<HcalZSThresholds> HcalTextCalibrations::produceZSThresholds (const HcalZSThresholdsRcd& rcd) {
00156 return produce_impl<HcalZSThresholds> (mInputs ["ZSThresholds"]);
00157 }
00158
00159 std::auto_ptr<HcalRespCorrs> HcalTextCalibrations::produceRespCorrs (const HcalRespCorrsRcd& rcd) {
00160 return produce_impl<HcalRespCorrs> (mInputs ["RespCorrs"]);
00161 }
00162
00163 std::auto_ptr<HcalElectronicsMap> HcalTextCalibrations::produceElectronicsMap (const HcalElectronicsMapRcd& rcd) {
00164 return produce_impl<HcalElectronicsMap> (mInputs ["ElectronicsMap"]);
00165 }
00166