Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009 #include <memory>
00010 #include <vector>
00011 #include <map>
00012 #include <set>
00013
00014
00015 #include "DPGAnalysis/Skims/interface/PhysDecl.h"
00016
00017 #include "FWCore/Utilities/interface/InputTag.h"
00018 #include "FWCore/Framework/interface/Frameworkfwd.h"
00019 #include "FWCore/Framework/interface/EDFilter.h"
00020 #include "FWCore/Framework/interface/Event.h"
00021 #include "FWCore/Framework/interface/MakerMacros.h"
00022 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00023 #include "FWCore/Framework/interface/ESHandle.h"
00024 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00025 #include "DataFormats/L1GlobalTrigger/interface/L1GtFdlWord.h"
00026 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
00027 #include "DataFormats/Common/interface/TriggerResults.h"
00028 #include "FWCore/Common/interface/TriggerNames.h"
00029
00030 using namespace edm;
00031 using namespace std;
00032
00033 PhysDecl::PhysDecl(const edm::ParameterSet& iConfig)
00034 {
00035 applyfilter = iConfig.getUntrackedParameter<bool>("applyfilter",true);
00036 debugOn = iConfig.getUntrackedParameter<bool>("debugOn",false);
00037 hlTriggerResults_ = iConfig.getParameter<edm::InputTag> ("HLTriggerResults");
00038 init_ = false;
00039 }
00040
00041 PhysDecl::~PhysDecl()
00042 {
00043 }
00044
00045 bool PhysDecl::filter( edm::Event& iEvent, const edm::EventSetup& iSetup)
00046 {
00047
00048 bool accepted = false;
00049
00050 int ievt = iEvent.id().event();
00051 int irun = iEvent.id().run();
00052 int ils = iEvent.luminosityBlock();
00053 int bx = iEvent.bunchCrossing();
00054
00055
00056
00057 edm::Handle<TriggerResults> HLTR;
00058 iEvent.getByLabel(hlTriggerResults_,HLTR);
00059
00060 if(HLTR.isValid())
00061 {
00062 if (!init_) {
00063 init_=true;
00064 const edm::TriggerNames & triggerNames = iEvent.triggerNames(*HLTR);
00065 hlNames_=triggerNames.triggerNames();
00066 }
00067 if(debugOn)
00068 {
00069 std::cout << "HLT_debug: Run " << irun << " Ev " << ievt << " LB " << ils << " BX " << bx << " Acc: " ;
00070 const unsigned int n(hlNames_.size());
00071 for (unsigned int i=0; i!=n; ++i)
00072 {
00073 if (HLTR->accept(i))
00074 {
00075 std::cout << hlNames_[i] << ",";
00076 }
00077 }
00078 std::cout << std::endl;
00079 }
00080
00081 }
00082
00083
00084
00085 edm::Handle<L1GlobalTriggerReadoutRecord> gtrr_handle;
00086 iEvent.getByLabel("gtDigis", gtrr_handle);
00087 L1GlobalTriggerReadoutRecord const* gtrr = gtrr_handle.product();
00088
00089 L1GtFdlWord fdlWord = gtrr->gtFdlWord();
00090
00091 if (fdlWord.physicsDeclared() ==1) accepted=true;
00092
00093
00094 if (debugOn) {
00095
00096 std::cout << "PhysDecl_debug: Run " << irun << " Event " << ievt << " Lumi Block " << ils << " Bunch Crossing " << bx << " Accepted " << accepted << std::endl;
00097 }
00098
00099 if (applyfilter)
00100 return accepted;
00101 else
00102 return true;
00103
00104 }
00105
00106
00107 DEFINE_FWK_MODULE(PhysDecl);