Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 //-------------------------------------------------
0002 //
0003 /**  \class DTuROSDigiToRaw
0004  *
0005  *   L1 DT uROS Raw-to-Digi
0006  *
0007  *
0008  *
0009  *   J. Troconiz  - UAM Madrid
0010  */
0011 //
0012 //--------------------------------------------------
0013 #ifndef DTRawToDigi_DTuROSDigiToRaw_h
0014 #define DTRawToDigi_DTuROSDigiToRaw_h
0015 
0016 #include "FWCore/Framework/interface/ConsumesCollector.h"
0017 #include "DataFormats/Common/interface/Handle.h"
0018 #include "FWCore/Framework/interface/ESHandle.h"
0019 #include "FWCore/Utilities/interface/ESGetToken.h"
0020 #include "FWCore/Framework/interface/Event.h"
0021 #include "FWCore/Framework/interface/EventSetup.h"
0022 #include "DataFormats/DTDigi/interface/DTDigiCollection.h"
0023 #include "DataFormats/DTDigi/interface/DTuROSControlData.h"
0024 #include "DataFormats/MuonDetId/interface/DTLayerId.h"
0025 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
0026 #include <DataFormats/FEDRawData/interface/FEDRawDataCollection.h>
0027 #include <FWCore/Framework/interface/stream/EDProducer.h>
0028 #include <FWCore/ParameterSet/interface/ParameterSet.h>
0029 #include <FWCore/Utilities/interface/InputTag.h>
0030 #include "CondFormats/DTObjects/interface/DTReadOutMapping.h"
0031 #include "CondFormats/DataRecord/interface/DTReadOutMappingRcd.h"
0032 
0033 #include <string>
0034 
0035 class DTReadOutMapping;
0036 
0037 class DTuROSDigiToRaw : public edm::stream::EDProducer<> {
0038 public:
0039   /// Constructor
0040   DTuROSDigiToRaw(const edm::ParameterSet& pset);
0041 
0042   /// Destructor
0043   ~DTuROSDigiToRaw() override;
0044 
0045   /// Produce digis out of raw data
0046   void produce(edm::Event& e, const edm::EventSetup& c) override;
0047 
0048   /// Generate and fill FED raw data for a full event
0049   bool fillRawData(edm::Event& e, const edm::EventSetup& c, FEDRawDataCollection& data);
0050 
0051 private:
0052   unsigned int eventNum;
0053 
0054   edm::InputTag DTDigiInputTag_;
0055 
0056   bool debug_;
0057 
0058   int nfeds_;
0059 
0060   std::vector<int> feds_;
0061 
0062   int bslts[DOCESLOTS], dslts[DOCESLOTS];
0063 
0064   std::vector<int> wslts[DOCESLOTS];
0065 
0066   // Operations
0067 
0068   //process data
0069 
0070   void process(int DTuROSFED,
0071                edm::Handle<DTDigiCollection> digis,
0072                edm::ESHandle<DTReadOutMapping> mapping,
0073                FEDRawDataCollection& data);
0074 
0075   // utilities
0076   void clear();
0077 
0078   int theCRT(int ddu, int ros);
0079 
0080   int theSLT(int ddu, int ros, int rob);
0081 
0082   int theLNK(int ddu, int ros, int rob);
0083 
0084   edm::InputTag getDTDigiInputTag() { return DTDigiInputTag_; }
0085 
0086   edm::EDGetTokenT<DTDigiCollection> Raw_token;
0087   edm::ESGetToken<DTReadOutMapping, DTReadOutMappingRcd> mapping_token_;
0088 };
0089 #endif