File indexing completed on 2024-04-06 12:19:14
0001 #ifndef CSCFileReader_h
0002 #define CSCFileReader_h
0003
0004 #include "FWCore/Framework/interface/stream/EDProducer.h"
0005 #include "FWCore/Framework/interface/Event.h"
0006 #include "FWCore/Framework/interface/EventSetup.h"
0007 #include "DataFormats/Provenance/interface/EventID.h"
0008 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
0009
0010 #include <vector>
0011 #include <string>
0012 #include <list>
0013 #include <map>
0014
0015 #include "FileReaderDDU.h"
0016 #include "FileReaderDCC.h"
0017
0018 class CSCFileReader : public edm::stream::EDProducer<> {
0019 private:
0020 std::vector<std::string> fileNames[40];
0021 std::vector<std::string>::const_iterator currentFile[40];
0022
0023 int firstEvent, nEvents, tfDDUnumber;
0024 int expectedNextL1A, currentL1A[40];
0025 int nActiveRUIs, nActiveFUs;
0026 unsigned int runNumber;
0027
0028 unsigned short *tmpBuf;
0029 const unsigned short *fuEvent[4];
0030 size_t fuEventSize[4];
0031 const unsigned short *ruBuf[40];
0032 size_t ruBufSize[40];
0033
0034 FileReaderDDU RUI[40];
0035 FileReaderDCC FU[4];
0036
0037 std::map<unsigned int, std::list<unsigned int> > FED;
0038
0039 int readRUI(int rui, const unsigned short *&buf, size_t &length);
0040 int buildEventFromRUIs(FEDRawDataCollection *data);
0041
0042 int readFU(int fu, const unsigned short *&buf, size_t &length);
0043 int nextEventFromFUs(FEDRawDataCollection *data);
0044
0045 public:
0046 CSCFileReader(const edm::ParameterSet &pset);
0047 ~CSCFileReader(void) override;
0048
0049 virtual int fillRawData(edm::Event &e, FEDRawDataCollection *&data);
0050
0051 void produce(edm::Event &, edm::EventSetup const &) override;
0052
0053 bool fFirstReadBug;
0054 };
0055
0056 #endif