CMS 3D CMS Logo

PrintEventSetupContent.cc

Go to the documentation of this file.
00001 
00002 // -*- C++ -*-
00003 //
00004 // Package:    PrintEventSetupContent
00005 // Class:      PrintEventSetupContent
00006 // 
00014 //
00015 // Original Author:  Weng Yao
00016 //         Created:  Tue Oct  2 13:49:56 EDT 2007
00017 // $Id: PrintEventSetupContent.cc,v 1.3 2008/03/18 17:19:47 chrjones Exp $
00018 //
00019 //
00020 
00021 
00022 // system include files
00023 #include <memory>
00024 #include <map>
00025 #include <iostream>
00026 // user include files
00027 #include "FWCore/Framework/interface/EDAnalyzer.h"
00028 
00029 #include "FWCore/Framework/interface/MakerMacros.h"
00030 
00031 #include "FWCore/Modules/src/EventSetupRecordDataGetter.h"
00032 
00033 #include "FWCore/Framework/interface/EventSetup.h"
00034 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00035 
00036 #include "FWCore/Framework/interface/ValidityInterval.h"
00037 #include "FWCore/Framework/interface/IOVSyncValue.h"
00038 #include "DataFormats/Provenance/interface/EventID.h" 
00039 //
00040 // class decleration
00041 //
00042 
00043 
00044 class PrintEventSetupContent : public edm::EDAnalyzer {
00045    public:
00046       explicit PrintEventSetupContent(const edm::ParameterSet&);
00047       ~PrintEventSetupContent();
00048      
00049 
00050 
00051    private:
00052       virtual void beginJob(const edm::EventSetup&) ;
00053       virtual void analyze(const edm::Event&, const edm::EventSetup&);
00054       virtual void endJob() ;
00055        
00056       // ----------member data ---------------------------
00057 std::map<edm::eventsetup::EventSetupRecordKey, unsigned long long > cacheIdentifiers_;
00058 };
00059 
00060 //
00061 // constants, enums and typedefs
00062 //
00063 
00064 //
00065 // static data member definitions
00066 //
00067 
00068 //
00069 // constructors and destructor
00070 //
00071 PrintEventSetupContent::PrintEventSetupContent(const edm::ParameterSet& iConfig)
00072 
00073 {
00074    //now do what ever initialization is neededEventSetupRecordDataGetter::EventSetupRecordDataGetter(const edm::ParameterSet& iConfig):
00075   //  getter = new edm::EventSetupRecordDataGetter::EventSetupRecordDataGetter(iConfig);
00076 }
00077 
00078 
00079 PrintEventSetupContent::~PrintEventSetupContent()
00080 {
00081  
00082    // do anything here that needs to be done at desctruction time
00083    // (e.g. close files, deallocate resources etc.)
00084 
00085 }
00086 
00087 
00088 //
00089 // member functions
00090 //
00091 
00092 // ------------ method called to for each event  ------------
00093 void
00094 PrintEventSetupContent::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00095 { 
00096   typedef std::vector<edm::eventsetup::EventSetupRecordKey> Records;
00097   typedef std::vector<edm::eventsetup::DataKey> Data;
00098   
00099   Records records;
00100   Data data;
00101   iSetup.fillAvailableRecordKeys(records);
00102   int iflag=0;
00103   
00104   
00105   for(Records::iterator itrecords = records.begin(), itrecordsend = records.end();
00106      itrecords != itrecordsend; ++itrecords ) {
00107     
00108     const edm::eventsetup::EventSetupRecord* rec = iSetup.find(*itrecords);
00109     
00110     
00111     
00112     if( 0 != rec && cacheIdentifiers_[*itrecords] != rec->cacheIdentifier() ) {
00113       iflag++;
00114         if(iflag==1)
00115           edm::LogSystem("ESContent")<<"\n"<<"Changed Record"<<"\n  "<<"<datatype>"<<" "<<"'label'"; 
00116       cacheIdentifiers_[*itrecords] = rec->cacheIdentifier();
00117       edm::LogAbsolute("ESContent")<<itrecords->name()<<std::endl;
00118 
00119       edm::LogAbsolute("ESContent")<<" start: "<<rec->validityInterval().first().eventID()<<" time: "<<rec->validityInterval().first().time().value()<<std::endl;
00120       edm::LogAbsolute("ESContent")<<" end:   "<<rec->validityInterval().last().eventID()<<" time: "<<rec->validityInterval().last().time().value()<<std::endl;
00121       rec->fillRegisteredDataKeys(data);
00122       for(Data::iterator itdata = data.begin(), itdataend = data.end(); itdata != itdataend; ++itdata){
00123         edm::LogAbsolute("ESContent")<<"  "<<itdata->type().name()<<" '"<<itdata->name().value()<<"'"<<std::endl;
00124       }         
00125       
00126      
00127     }   
00128   }
00129   
00130   
00131 }
00132 
00133    //#ifdef THIS_IS_AN_EVENT_EXAMPLE
00134    //   Handle<ExampleData> pIn;
00135    //   iEvent.getByLabel("example",pIn);
00136    //#endif
00137    
00138    //#ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE
00139    //   ESHandle<SetupData> pSetup;
00140    //   iSetup.get<SetupRecord>().get(pSetup);
00141    //#endif
00142 //}
00143 
00144 
00145 // ------------ method called once each job just before starting event loop  ------------
00146 void 
00147 PrintEventSetupContent::beginJob(const edm::EventSetup&)
00148 {
00149 }
00150 
00151 // ------------ method called once each job just after ending the event loop  ------------
00152 void 
00153 PrintEventSetupContent::endJob() {
00154 }
00155 
00156 //define this as a plug-in
00157 DEFINE_FWK_MODULE(PrintEventSetupContent);

Generated on Tue Jun 9 17:36:22 2009 for CMSSW by  doxygen 1.5.4