CMS 3D CMS Logo

HcalTextCalibrations.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // Original Author:  Fedor Ratnikov
00003 // $Id: HcalTextCalibrations.cc,v 1.7 2008/03/03 20:22:44 rofierzy 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/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 // class decleration
00040 //
00041 
00042 using namespace cms;
00043 
00044 HcalTextCalibrations::HcalTextCalibrations ( const edm::ParameterSet& iConfig ) 
00045   
00046 {
00047   //parsing parameters
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   //  setWhatProduced(this);
00098 }
00099 
00100 
00101 HcalTextCalibrations::~HcalTextCalibrations()
00102 {
00103 }
00104 
00105 
00106 //
00107 // member functions
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()); //infinite
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 

Generated on Tue Jun 9 17:25:20 2009 for CMSSW by  doxygen 1.5.4