![]() |
![]() |
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);