File indexing completed on 2024-04-06 12:20:05
0001 #include "L1Trigger/HardwareValidation/plugins/L1DEFilter.h"
0002 #include "L1Trigger/HardwareValidation/interface/DEtrait.h"
0003 using dedefs::DEnsys;
0004
0005 L1DEFilter::L1DEFilter(const edm::ParameterSet& iConfig) : nEvt_{0}, nAgree_{0} {
0006 DEsource_ = iConfig.getParameter<edm::InputTag>("DataEmulCompareSource");
0007 flagSys_ = iConfig.getUntrackedParameter<std::vector<unsigned int> >("FlagSystems");
0008 }
0009
0010 L1DEFilter::~L1DEFilter() {}
0011
0012 void L1DEFilter::endJob() {
0013
0014 double rate = (nEvt_ > 0) ? (double)nAgree_ / (double)nEvt_ : 0;
0015 std::cout << "[L1DEFilter] Data|Emul mismatch event rate: " << rate << std::endl;
0016 }
0017
0018
0019 bool L1DEFilter::filter(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
0020 nEvt_++;
0021
0022 bool pass = true;
0023
0024 edm::Handle<L1DataEmulRecord> deRecord;
0025 iEvent.getByLabel(DEsource_, deRecord);
0026
0027 bool dematch = deRecord->get_status();
0028 if (dematch)
0029 nAgree_++;
0030
0031 bool deMatch[DEnsys];
0032 deRecord->get_status(deMatch);
0033
0034 for (int i = 0; i < DEnsys; i++)
0035 if (flagSys_[i])
0036 pass &= deMatch[i];
0037
0038 return pass;
0039 }