00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "CondTools/L1Trigger/plugins/L1CondDBIOVWriter.h"
00025
00026 #include "CondFormats/L1TObjects/interface/L1TriggerKey.h"
00027 #include "CondFormats/DataRecord/interface/L1TriggerKeyRcd.h"
00028 #include "CondFormats/L1TObjects/interface/L1TriggerKeyList.h"
00029 #include "CondFormats/DataRecord/interface/L1TriggerKeyListRcd.h"
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 L1CondDBIOVWriter::L1CondDBIOVWriter(const edm::ParameterSet& iConfig)
00047 : m_writer( iConfig.getParameter<std::string> ("offlineDB"),
00048 iConfig.getParameter<std::string> ("offlineAuthentication") ),
00049 m_reader( iConfig.getParameter<std::string> ("offlineDB"),
00050 iConfig.getParameter<std::string> ("offlineAuthentication") ),
00051 m_keyTag( iConfig.getParameter<std::string> ("L1TriggerKeyTag") )
00052
00053 {
00054
00055 typedef std::vector<edm::ParameterSet> ToSave;
00056 ToSave toSave = iConfig.getParameter<ToSave> ("toPut");
00057 for (ToSave::const_iterator it = toSave.begin (); it != toSave.end (); it++)
00058 {
00059 std::string record = it->getParameter<std::string> ("record");
00060 std::string tag = it->getParameter<std::string> ("tag");
00061
00062
00063 std::map<std::string, std::string >::iterator rec =
00064 m_recordToTagMap.insert( std::make_pair( record, tag ) ).first ;
00065 }
00066 }
00067
00068
00069 L1CondDBIOVWriter::~L1CondDBIOVWriter()
00070 {
00071
00072
00073
00074
00075 }
00076
00077
00078
00079
00080
00081
00082
00083 void
00084 L1CondDBIOVWriter::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00085 {
00086 using namespace edm;
00087
00088
00089 ESHandle< L1TriggerKeyList > keyList ;
00090 iSetup.get< L1TriggerKeyListRcd >().get( keyList ) ;
00091
00092
00093 ESHandle< L1TriggerKey > dummyKey ;
00094 iSetup.get< L1TriggerKeyRcd >().get( dummyKey ) ;
00095
00096 unsigned long long run = iEvent.id().run() ;
00097
00098
00099 std::string keyToken = keyList->token( dummyKey->getTSCKey() ) ;
00100
00101
00102 m_writer.updateIOV( m_keyTag, keyToken, run ) ;
00103
00104
00105
00106
00107 L1TriggerKey key = m_reader.readKey( keyToken ) ;
00108
00109
00110 L1TriggerKey::RecordToKey::const_iterator itr =
00111 key.recordToKeyMap().begin() ;
00112 L1TriggerKey::RecordToKey::const_iterator end =
00113 key.recordToKeyMap().end() ;
00114
00115 for( ; itr != end ; ++itr )
00116 {
00117
00118 std::string recordType = itr->first ;
00119 std::string subsystemKey = itr->second ;
00120 std::string payloadToken = keyList->token( recordType, subsystemKey ) ;
00121 if( payloadToken.empty() )
00122 {
00123 throw cond::Exception( "L1CondDBIOVWriter: empty payload token" ) ;
00124 }
00125
00126
00127
00128 std::string recordName( recordType, 0, recordType.find_first_of("@") ) ;
00129
00130
00131 std::map<std::string, std::string >::const_iterator recordToTagItr =
00132 m_recordToTagMap.find( recordName ) ;
00133 if( recordToTagItr == m_recordToTagMap.end() )
00134 {
00135 throw cond::Exception( "L1CondDBIOVWriter: no tag for record "
00136 + recordName ) ;
00137 }
00138
00139
00140 m_writer.updateIOV( recordToTagItr->second, payloadToken, run ) ;
00141 }
00142 }
00143
00144
00145
00146 void
00147 L1CondDBIOVWriter::beginJob(const edm::EventSetup&)
00148 {
00149 }
00150
00151
00152 void
00153 L1CondDBIOVWriter::endJob() {
00154 }
00155
00156
00157