Go to the documentation of this file.00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <memory>
00023 #include <vector>
00024
00025
00026 #include "FWCore/Framework/interface/Frameworkfwd.h"
00027 #include "FWCore/Framework/interface/EDAnalyzer.h"
00028
00029 #include "FWCore/Framework/interface/Event.h"
00030 #include "FWCore/Framework/interface/MakerMacros.h"
00031
00032 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00033 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00034
00035 #include "FWCore/Framework/interface/ESHandle.h"
00036
00037 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
00038 #include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
00039
00040 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
00041 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetup.h"
00042 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
00043
00044 #include "FWCore/Framework/interface/MakerMacros.h"
00045 #include "L1TriggerOffline/L1Analyzer/interface/SimpleHBits.h"
00046
00047
00048
00049
00050 using namespace std;
00051
00052 class TriggerOperation : public edm::EDAnalyzer {
00053 public:
00054 explicit TriggerOperation(const edm::ParameterSet&);
00055 ~TriggerOperation();
00056
00057
00058 private:
00059 virtual void beginJob() ;
00060 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00061 virtual void endJob() ;
00062
00063 edm::InputTag m_l1GtReadoutRecord;
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 SimpleHBits *m_TriggerBits;
00076
00077
00078
00079
00080 };
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 TriggerOperation::TriggerOperation(const edm::ParameterSet& iConfig) :
00094 m_l1GtReadoutRecord(iConfig.getUntrackedParameter<edm::InputTag>("L1GtReadoutRecordTag"))
00095 {
00096
00097 m_TriggerBits = new SimpleHBits("TriggerBits",iConfig);
00098
00099
00100
00101
00102
00103
00104
00105 }
00106
00107
00108 TriggerOperation::~TriggerOperation()
00109 {
00110
00111
00112
00113 delete m_TriggerBits;
00114 }
00115
00116
00117
00118
00119
00120
00121
00122 void
00123 TriggerOperation::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00124 {
00125 using namespace edm;
00126
00127
00128 edm::Handle<L1GlobalTriggerReadoutRecord> gtRecord;
00129 iEvent.getByLabel(m_l1GtReadoutRecord, gtRecord);
00130
00131 if (!gtRecord.isValid()) {
00132
00133 LogDebug("L1GlobalTriggerRecordProducer")
00134 << "\n\n Error: no L1GlobalTriggerReadoutRecord found with input tag "
00135 << m_l1GtReadoutRecord
00136 << "\n Returning empty L1GlobalTriggerRecord.\n\n"
00137 << std::endl;
00138
00139 return;
00140 }
00141
00142 DecisionWord algoDecisionWord = gtRecord->decisionWord();
00143 TechnicalTriggerWord techDecisionWord = gtRecord->technicalTriggerWord();
00144
00145 int tBit=0;
00146
00147 for (std::vector<bool>::iterator
00148 itBit = algoDecisionWord.begin(); itBit != algoDecisionWord.end(); ++itBit) {
00149 bool algoTrigger = algoDecisionWord.at(tBit);
00150 if (algoTrigger) {m_TriggerBits->FillTB(static_cast<float>(tBit));}
00151 tBit++;
00152 }
00153
00154 #ifdef THIS_IS_AN_EVENT_EXAMPLE
00155 Handle<ExampleData> pIn;
00156 iEvent.getByLabel("example",pIn);
00157 #endif
00158
00159 #ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE
00160 ESHandle<SetupData> pSetup;
00161 iSetup.get<SetupRecord>().get(pSetup);
00162 #endif
00163 }
00164
00165
00166
00167 void
00168 TriggerOperation::beginJob()
00169 {
00170 }
00171
00172
00173 void
00174 TriggerOperation::endJob() {
00175 }
00176
00177
00178 DEFINE_FWK_MODULE(TriggerOperation);