File indexing completed on 2024-04-06 12:29:34
0001 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
0002 #include "DataFormats/HcalDigi/interface/HcalTTPDigi.h"
0003 #include "DataFormats/L1GlobalTrigger/interface/L1GtTechnicalTriggerRecord.h"
0004 #include "DataFormats/Common/interface/Handle.h"
0005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0006 #include "FWCore/Framework/interface/stream/EDProducer.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 #include "FWCore/Framework/interface/Event.h"
0009 #include "FWCore/Framework/interface/EventSetup.h"
0010
0011 class HcalTTPTriggerRecord : public edm::stream::EDProducer<> {
0012 public:
0013 explicit HcalTTPTriggerRecord(const edm::ParameterSet& ps);
0014 ~HcalTTPTriggerRecord() override;
0015
0016 void produce(edm::Event& e, const edm::EventSetup& c) override;
0017
0018 private:
0019 edm::EDGetTokenT<HcalTTPDigiCollection> tok_ttp_;
0020 std::vector<unsigned int> ttpBits_;
0021 std::vector<std::string> names_;
0022 };
0023
0024 HcalTTPTriggerRecord::HcalTTPTriggerRecord(const edm::ParameterSet& ps) {
0025 tok_ttp_ = consumes<HcalTTPDigiCollection>(ps.getParameter<edm::InputTag>("ttpDigiCollection"));
0026 ttpBits_ = ps.getParameter<std::vector<unsigned int> >("ttpBits");
0027 names_ = ps.getParameter<std::vector<std::string> >("ttpBitNames");
0028
0029 produces<L1GtTechnicalTriggerRecord>();
0030 }
0031
0032 HcalTTPTriggerRecord::~HcalTTPTriggerRecord() {}
0033
0034 void HcalTTPTriggerRecord::produce(edm::Event& e, const edm::EventSetup& eventSetup) {
0035 std::vector<L1GtTechnicalTrigger> vecTT(ttpBits_.size());
0036
0037
0038 edm::Handle<HcalTTPDigiCollection> ttpDigiCollection;
0039 e.getByToken(tok_ttp_, ttpDigiCollection);
0040
0041 if (!ttpDigiCollection.failedToGet()) {
0042 const HcalTTPDigiCollection* ttpDigis = ttpDigiCollection.product();
0043 uint8_t ttpResults = ttpDigis->begin()->triggerOutput();
0044 bool bit8 = ttpResults & 0x1;
0045 bool bit9 = ttpResults & 0x2;
0046 bool bit10 = ttpResults & 0x4;
0047
0048 for (unsigned int i = 0; i < ttpBits_.size(); i++) {
0049 bool bitValue = false;
0050 if (ttpBits_.at(i) == 8)
0051 bitValue = bit8;
0052 if (ttpBits_.at(i) == 9)
0053 bitValue = bit9;
0054 if (ttpBits_.at(i) == 10)
0055 bitValue = bit10;
0056 vecTT.at(i) = L1GtTechnicalTrigger(names_.at(i), ttpBits_.at(i), 0, bitValue);
0057 }
0058 } else {
0059 vecTT.clear();
0060 }
0061
0062
0063 std::unique_ptr<L1GtTechnicalTriggerRecord> output(new L1GtTechnicalTriggerRecord());
0064 output->setGtTechnicalTrigger(vecTT);
0065 e.put(std::move(output));
0066 }
0067
0068 #include "FWCore/PluginManager/interface/ModuleDef.h"
0069 #include "FWCore/Framework/interface/MakerMacros.h"
0070
0071 DEFINE_FWK_MODULE(HcalTTPTriggerRecord);