Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:10:53

0001 // -*- C++ -*-
0002 //
0003 // Package:    L1TValidationEventFilter
0004 // Class:      L1TValidationEventFilter
0005 //
0006 /**\class L1TValidationEventFilter L1TValidationEventFilter.cc EventFilter/L1TRawToDigi/src/L1TValidationEventFilter.cc
0007 
0008 Description: <one line class summary>
0009 Implementation:
0010 <Notes on implementation>
0011 */
0012 //
0013 // Original Author:  Jim Brooke
0014 //         Created:
0015 //
0016 //
0017 
0018 // system include files
0019 #include <memory>
0020 
0021 // user include files
0022 #include "FWCore/Framework/interface/Frameworkfwd.h"
0023 
0024 #include "FWCore/Framework/interface/global/EDFilter.h"
0025 #include "FWCore/Framework/interface/Event.h"
0026 #include "FWCore/Framework/interface/MakerMacros.h"
0027 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0028 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0029 #include "FWCore/Utilities/interface/InputTag.h"
0030 
0031 #include <string>
0032 #include <vector>
0033 #include <iostream>
0034 
0035 #include "DataFormats/FEDRawData/interface/FEDHeader.h"
0036 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
0037 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
0038 #include "DataFormats/FEDRawData/interface/FEDTrailer.h"
0039 
0040 #include "DataFormats/TCDS/interface/TCDSRecord.h"
0041 
0042 //
0043 // class declaration
0044 //
0045 
0046 class L1TValidationEventFilter : public edm::global::EDFilter<> {
0047 public:
0048   explicit L1TValidationEventFilter(const edm::ParameterSet&);
0049 
0050 private:
0051   bool filter(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
0052 
0053   // ----------member data ---------------------------
0054   edm::EDGetTokenT<TCDSRecord> tcsdRecord_;
0055 
0056   int period_;  // validation event period
0057 };
0058 
0059 //
0060 // constructors and destructor
0061 //
0062 L1TValidationEventFilter::L1TValidationEventFilter(const edm::ParameterSet& iConfig)
0063     : tcsdRecord_(consumes<TCDSRecord>(iConfig.getParameter<edm::InputTag>("tcdsRecord"))),
0064       period_(iConfig.getParameter<int>("period")) {
0065   //now do what ever initialization is needed
0066 }
0067 
0068 //
0069 // member functions
0070 //
0071 
0072 // ------------ method called on each new Event  ------------
0073 bool L1TValidationEventFilter::filter(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
0074   using namespace edm;
0075 
0076   Handle<TCDSRecord> record;
0077   iEvent.getByToken(tcsdRecord_, record);
0078   if (!record.isValid()) {
0079     LogError("L1T") << "TCDS data not unpacked: triggerCount not availble in Event.";
0080     return false;
0081   }
0082 
0083   bool fatEvent = (record->getTriggerCount() % period_ == 0);
0084 
0085   return fatEvent;
0086 }
0087 //define this as a plug-in
0088 DEFINE_FWK_MODULE(L1TValidationEventFilter);