00001 // ...CastorDbService... 00002 // first draft copy from CalibFormats/CastorDbService.cc 00003 // 00004 00005 #include "FWCore/Framework/interface/eventsetupdata_registration_macro.h" 00006 00007 #include "CalibFormats/CastorObjects/interface/CastorDbService.h" 00008 #include "CalibFormats/CastorObjects/interface/CastorCoderDb.h" 00009 #include "CalibFormats/CastorObjects/interface/QieShape.h" 00010 00011 #include "CalibFormats/CastorObjects/interface/CastorCalibrations.h" 00012 #include "CalibFormats/CastorObjects/interface/CastorCalibrationWidths.h" 00013 00014 #include "CondFormats/CastorObjects/interface/CastorPedestals.h" 00015 #include "CondFormats/CastorObjects/interface/CastorPedestalWidths.h" 00016 #include "CondFormats/CastorObjects/interface/CastorGains.h" 00017 #include "CondFormats/CastorObjects/interface/CastorGainWidths.h" 00018 #include "CondFormats/CastorObjects/interface/CastorQIEShape.h" 00019 #include "CondFormats/CastorObjects/interface/CastorQIEData.h" 00020 #include "CondFormats/CastorObjects/interface/CastorChannelQuality.h" 00021 #include "CondFormats/CastorObjects/interface/CastorElectronicsMap.h" 00022 00023 00024 CastorDbService::CastorDbService () 00025 : 00026 mQieShapeCache (0), 00027 mPedestals (0), 00028 mPedestalWidths (0), 00029 mGains (0), 00030 mGainWidths (0) 00031 {} 00032 00033 bool CastorDbService::makeCastorCalibration (const HcalGenericDetId& fId, CastorCalibrations* fObject) const { 00034 if (fObject) { 00035 const CastorPedestal* pedestal = getPedestal (fId); 00036 const CastorGain* gain = getGain (fId); 00037 if (pedestal && gain) { 00038 *fObject = CastorCalibrations (gain->getValues (), pedestal->getValues ()); 00039 return true; 00040 } 00041 } 00042 return false; 00043 } 00044 00045 bool CastorDbService::makeCastorCalibrationWidth (const HcalGenericDetId& fId, CastorCalibrationWidths* fObject) const { 00046 if (fObject) { 00047 const CastorPedestalWidth* pedestal = getPedestalWidth (fId); 00048 const CastorGainWidth* gain = getGainWidth (fId); 00049 if (pedestal && gain) { 00050 float pedestalWidth [4]; 00051 for (int i = 0; i < 4; i++) pedestalWidth [i] = pedestal->getWidth (i); 00052 *fObject = CastorCalibrationWidths (gain->getValues (), pedestalWidth); 00053 return true; 00054 } 00055 } 00056 return false; 00057 } 00058 00059 const CastorPedestal* CastorDbService::getPedestal (const HcalGenericDetId& fId) const { 00060 if (mPedestals) { 00061 return mPedestals->getValues (fId); 00062 } 00063 return 0; 00064 } 00065 00066 const CastorPedestalWidth* CastorDbService::getPedestalWidth (const HcalGenericDetId& fId) const { 00067 if (mPedestalWidths) { 00068 return mPedestalWidths->getValues (fId); 00069 } 00070 return 0; 00071 } 00072 00073 const CastorGain* CastorDbService::getGain (const HcalGenericDetId& fId) const { 00074 if (mGains) { 00075 return mGains->getValues(fId); 00076 } 00077 return 0; 00078 } 00079 00080 const CastorGainWidth* CastorDbService::getGainWidth (const HcalGenericDetId& fId) const { 00081 if (mGainWidths) { 00082 return mGainWidths->getValues (fId); 00083 } 00084 return 0; 00085 } 00086 00087 const CastorQIECoder* CastorDbService::getCastorCoder (const HcalGenericDetId& fId) const { 00088 if (mQIEData) { 00089 return mQIEData->getCoder (fId); 00090 } 00091 return 0; 00092 } 00093 00094 const CastorQIEShape* CastorDbService::getCastorShape () const { 00095 if (mQIEData) { 00096 return &mQIEData->getShape (); 00097 } 00098 return 0; 00099 } 00100 const CastorElectronicsMap* CastorDbService::getCastorMapping () const { 00101 return mElectronicsMap; 00102 } 00103 00104 EVENTSETUP_DATA_REG(CastorDbService);