File indexing completed on 2024-04-06 12:10:57
0001 #ifndef RctRawToDigi_h
0002 #define RctRawToDigi_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #include <memory>
0019 #include <ostream>
0020 #include <string>
0021
0022
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/Framework/interface/stream/EDProducer.h"
0025 #include "FWCore/Framework/interface/Event.h"
0026 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0027 #include "FWCore/Utilities/interface/InputTag.h"
0028
0029 #include "DataFormats/FEDRawData/interface/FEDRawData.h"
0030 #include "EventFilter/RctRawToDigi/src/RctUnpackCollections.h"
0031 #include "EventFilter/RctRawToDigi/src/RCTInfo.hh"
0032 #include "EventFilter/RctRawToDigi/src/CTP7Format.hh"
0033 #include "EventFilter/L1TRawToDigi/interface/AMCSpec.h"
0034 #include "EventFilter/RctRawToDigi/src/RctDataDecoder.hh"
0035
0036
0037
0038
0039
0040 class RctRawToDigi : public edm::stream::EDProducer<> {
0041 public:
0042 explicit RctRawToDigi(const edm::ParameterSet &);
0043 ~RctRawToDigi() override;
0044
0045
0046
0047
0048 private:
0049 void produce(edm::Event &, const edm::EventSetup &) override;
0050
0051
0052
0053 void unpack(const FEDRawData &d, edm::Event &e, RctUnpackCollections *const colls);
0054
0055 void unpackCTP7(const uint32_t *data, const unsigned block_id, const unsigned size, RctUnpackCollections *const colls);
0056
0057 bool decodeLinkID(const uint32_t inputValue, uint32_t &crateNumber, uint32_t &linkNumber, bool &even);
0058
0059 bool printAll(const unsigned char *data, const unsigned size);
0060
0061
0062 void checkHeaders();
0063
0064
0065 virtual void endJob();
0066
0067 private:
0068
0069 static const unsigned sLinkHeaderSize_ = 8;
0070
0071
0072 static const unsigned sLinkTrailerSize_ = 8;
0073
0074
0075 static const unsigned amc13HeaderSize_ = 16;
0076
0077
0078 static const unsigned amc13TrailerSize_ = 8;
0079
0080
0081 static const unsigned ctp7HeaderSize_ = 8;
0082
0083
0084 static const unsigned ctp7TrailerSize_ = 8;
0085
0086
0087 static const unsigned MAX_DATA = 4680;
0088
0089
0090 static const unsigned MIN_DATA = 900;
0091
0092
0093 edm::InputTag inputLabel_;
0094 int fedId_;
0095
0096 const bool verbose_;
0097
0098
0099
0100
0101
0102 static const unsigned MAX_ERR_CODE = 6;
0103 L1TriggerErrorCollection *errors_;
0104 std::vector<unsigned> errorCounters_;
0105 unsigned unpackFailures_;
0106 };
0107
0108 #endif