File indexing completed on 2023-03-17 10:59:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef DTRawToDigi_DTuROSRawToDigi_h
0015 #define DTRawToDigi_DTuROSRawToDigi_h
0016
0017 #include "FWCore/Framework/interface/ConsumesCollector.h"
0018 #include "DataFormats/Common/interface/Handle.h"
0019 #include "FWCore/Framework/interface/ESHandle.h"
0020 #include "FWCore/Utilities/interface/ESGetToken.h"
0021 #include "FWCore/Framework/interface/Event.h"
0022 #include "FWCore/Framework/interface/EventSetup.h"
0023 #include "DataFormats/DTDigi/interface/DTDigiCollection.h"
0024 #include "DataFormats/MuonDetId/interface/DTLayerId.h"
0025 #include "CondFormats/DTObjects/interface/DTReadOutMapping.h"
0026 #include "CondFormats/DataRecord/interface/DTReadOutMappingRcd.h"
0027
0028 #include <DataFormats/FEDRawData/interface/FEDRawDataCollection.h>
0029 #include <DataFormats/FEDRawData/interface/FEDNumbering.h>
0030 #include <FWCore/Framework/interface/stream/EDProducer.h>
0031 #include <FWCore/ParameterSet/interface/ParameterSet.h>
0032 #include <FWCore/Utilities/interface/InputTag.h>
0033
0034 #include <string>
0035
0036 class DTReadOutMapping;
0037 class DTuROSFEDData;
0038
0039 class DTuROSRawToDigi : public edm::stream::EDProducer<> {
0040 public:
0041
0042 DTuROSRawToDigi(const edm::ParameterSet& pset);
0043
0044
0045 ~DTuROSRawToDigi() override;
0046
0047
0048 void produce(edm::Event& e, const edm::EventSetup& c) override;
0049
0050
0051 bool fillRawData(edm::Event& e, const edm::EventSetup& c, DTDigiCollection& digis, std::vector<DTuROSFEDData>& words);
0052
0053 private:
0054 edm::InputTag DTuROSInputTag_;
0055
0056 bool debug_;
0057
0058 int nfeds_;
0059
0060 std::vector<int> feds_;
0061
0062 unsigned char* lineFED;
0063
0064
0065
0066
0067
0068 void process(int DTuROSFED,
0069 edm::Handle<FEDRawDataCollection> data,
0070 edm::ESHandle<DTReadOutMapping> mapping,
0071 DTDigiCollection& digis,
0072 DTuROSFEDData& fwords);
0073
0074
0075 inline void readline(int& lines, long& dataWord) {
0076 dataWord = *((long*)lineFED);
0077 lineFED += 8;
0078 ++lines;
0079 }
0080
0081 int theDDU(int crate, int slot, int link, bool tenDDU);
0082
0083 int theROS(int slot, int link);
0084
0085 int theROB(int slot, int link);
0086
0087 edm::InputTag getDTuROSInputTag() { return DTuROSInputTag_; }
0088
0089 edm::EDGetTokenT<FEDRawDataCollection> Raw_token;
0090 edm::ESGetToken<DTReadOutMapping, DTReadOutMappingRcd> mapping_token_;
0091 };
0092 #endif