CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/CalibCalorimetry/HcalPlugins/src/HcalTextCalibrations.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // Original Author:  Fedor Ratnikov
00003 // $Id: HcalTextCalibrations.cc,v 1.18 2010/04/26 19:17:00 devildog Exp $
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 // class decleration
00023 //
00024 
00025 using namespace cms;
00026 
00027 HcalTextCalibrations::HcalTextCalibrations ( const edm::ParameterSet& iConfig ) 
00028   
00029 {
00030   //parsing parameters
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   //  setWhatProduced(this);
00123 }
00124 
00125 
00126 HcalTextCalibrations::~HcalTextCalibrations()
00127 {
00128 }
00129 
00130 
00131 //
00132 // member functions
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()); //infinite
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   //  std::auto_ptr<T> result;
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