CMS 3D CMS Logo

L1CondDBIOVWriter.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    L1CondDBIOVWriter
00004 // Class:      L1CondDBIOVWriter
00005 // 
00013 //
00014 // Original Author:  Werner Man-Li Sun
00015 //         Created:  Sun Mar  2 20:09:46 CET 2008
00016 // $Id: L1CondDBIOVWriter.cc,v 1.3 2008/09/12 04:53:10 wsun Exp $
00017 //
00018 //
00019 
00020 
00021 // system include files
00022 
00023 // user include files
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 // class declaration
00033 //
00034 
00035 //
00036 // constants, enums and typedefs
00037 //
00038 
00039 //
00040 // static data member definitions
00041 //
00042 
00043 //
00044 // constructors and destructor
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    //now do what ever initialization is needed
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       // Copy items to the list items list
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    // do anything here that needs to be done at desctruction time
00073    // (e.g. close files, deallocate resources etc.)
00074 
00075 }
00076 
00077 
00078 //
00079 // member functions
00080 //
00081 
00082 // ------------ method called to for each event  ------------
00083 void
00084 L1CondDBIOVWriter::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00085 {
00086    using namespace edm;
00087 
00088    // Get L1TriggerKeyList
00089    ESHandle< L1TriggerKeyList > keyList ;
00090    iSetup.get< L1TriggerKeyListRcd >().get( keyList ) ;
00091 
00092    // Get dummy L1TriggerKey -- only has TSC key, not subsystem keys
00093    ESHandle< L1TriggerKey > dummyKey ;
00094    iSetup.get< L1TriggerKeyRcd >().get( dummyKey ) ;
00095 
00096    unsigned long long run = iEvent.id().run() ;
00097 
00098    // Use TSC key and L1TriggerKeyList to find next run's L1TriggerKey token
00099    std::string keyToken = keyList->token( dummyKey->getTSCKey() ) ;
00100 
00101    // Update IOV sequence for this token with since-time = new run 
00102    m_writer.updateIOV( m_keyTag, keyToken, run ) ;
00103 
00104    // Read current L1TriggerKey directly from ORCON using token
00105 //    L1TriggerKey key ;
00106 //    m_reader.readPayload( keyToken, key ) ;
00107    L1TriggerKey key = m_reader.readKey( keyToken ) ;
00108 
00109    // Loop over record@type in L1TriggerKey
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       // Find payload token
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       // assert( !payloadToken.empty() ) ;
00126 
00127       // Extract record name from recordType
00128       std::string recordName( recordType, 0, recordType.find_first_of("@") ) ;
00129 
00130       // Find tag for IOV token
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       // assert( recordToTagItr != m_recordToTagMap.end() ) ;
00139 
00140       m_writer.updateIOV( recordToTagItr->second, payloadToken, run ) ;
00141    }
00142 }
00143 
00144 
00145 // ------------ method called once each job just before starting event loop  ------------
00146 void 
00147 L1CondDBIOVWriter::beginJob(const edm::EventSetup&)
00148 {
00149 }
00150 
00151 // ------------ method called once each job just after ending the event loop  ------------
00152 void 
00153 L1CondDBIOVWriter::endJob() {
00154 }
00155 
00156 //define this as a plug-in
00157 //DEFINE_FWK_MODULE(L1CondDBIOVWriter);

Generated on Tue Jun 9 17:26:55 2009 for CMSSW by  doxygen 1.5.4