00001 // -*- C++ -*- 00002 // 00003 // Package: L1ObjectKeysOnlineProdBase 00004 // Class: L1ObjectKeysOnlineProdBase 00005 // 00013 // 00014 // Original Author: Werner Man-Li Sun 00015 // Created: Fri Aug 22 19:51:36 CEST 2008 00016 // $Id: L1ObjectKeysOnlineProdBase.cc,v 1.2 2010/02/01 22:00:05 wsun Exp $ 00017 // 00018 // 00019 00020 00021 // system include files 00022 00023 // user include files 00024 #include "CondTools/L1Trigger/interface/L1ObjectKeysOnlineProdBase.h" 00025 00026 #include "CondTools/L1Trigger/interface/Exception.h" 00027 00028 #include "CondFormats/L1TObjects/interface/L1TriggerKeyList.h" 00029 #include "CondFormats/DataRecord/interface/L1TriggerKeyListRcd.h" 00030 00031 #include "FWCore/Framework/interface/EventSetup.h" 00032 00033 // 00034 // class declaration 00035 // 00036 00037 // 00038 // constants, enums and typedefs 00039 // 00040 00041 // 00042 // static data member definitions 00043 // 00044 00045 // 00046 // constructors and destructor 00047 // 00048 L1ObjectKeysOnlineProdBase::L1ObjectKeysOnlineProdBase(const edm::ParameterSet& iConfig) 00049 : m_omdsReader( 00050 iConfig.getParameter< std::string >( "onlineDB" ), 00051 iConfig.getParameter< std::string >( "onlineAuthentication" ) ) 00052 { 00053 //the following line is needed to tell the framework what 00054 // data is being produced 00055 00056 // The subsystemLabel is used by L1TriggerKeyOnlineProd to identify the 00057 // L1TriggerKeys to concatenate. 00058 setWhatProduced(this, 00059 iConfig.getParameter< std::string >( "subsystemLabel" ) 00060 ); 00061 00062 //now do what ever other initialization is needed 00063 } 00064 00065 00066 L1ObjectKeysOnlineProdBase::~L1ObjectKeysOnlineProdBase() 00067 { 00068 00069 // do anything here that needs to be done at desctruction time 00070 // (e.g. close files, deallocate resources etc.) 00071 00072 } 00073 00074 00075 // 00076 // member functions 00077 // 00078 00079 // ------------ method called to produce the data ------------ 00080 L1ObjectKeysOnlineProdBase::ReturnType 00081 L1ObjectKeysOnlineProdBase::produce(const L1TriggerKeyRcd& iRecord) 00082 { 00083 using namespace edm::es; 00084 00085 // Get L1TriggerKey with label "SubsystemKeysOnly". Re-throw exception if 00086 // not present. 00087 edm::ESHandle< L1TriggerKey > subsystemKeys ; 00088 try 00089 { 00090 iRecord.get( "SubsystemKeysOnly", subsystemKeys ) ; 00091 } 00092 catch( l1t::DataAlreadyPresentException& ex ) 00093 { 00094 throw ex ; 00095 } 00096 00097 // Copy L1TriggerKey to new object. 00098 boost::shared_ptr<L1TriggerKey> pL1TriggerKey ; 00099 pL1TriggerKey = boost::shared_ptr< L1TriggerKey >( 00100 new L1TriggerKey( *subsystemKeys ) ) ; 00101 00102 // Get object keys. 00103 fillObjectKeys( pL1TriggerKey ) ; 00104 00105 return pL1TriggerKey ; 00106 } 00107 00108 //define this as a plug-in 00109 //DEFINE_FWK_EVENTSETUP_MODULE(L1ObjectKeysOnlineProdBase);