File indexing completed on 2024-04-06 12:11:02
0001
0002 #ifndef EventFilter_SiStripRawToDigi_SiStripDigiToRaw_H
0003 #define EventFilter_SiStripRawToDigi_SiStripDigiToRaw_H
0004
0005 #include "DataFormats/Common/interface/Handle.h"
0006 #include "DataFormats/Common/interface/DetSetVector.h"
0007 #include "FWCore/Framework/interface/ESHandle.h"
0008 #include "FWCore/Framework/interface/Event.h"
0009 #include "FWCore/Utilities/interface/Visibility.h"
0010 #include <string>
0011
0012 #include "EventFilter/SiStripRawToDigi/interface/SiStripFEDBufferGenerator.h"
0013 #include "WarningSummary.h"
0014 #include <cstdint>
0015
0016 class SiStripFedCabling;
0017 class FEDRawDataCollection;
0018 class SiStripDigi;
0019 class SiStripRawDigi;
0020
0021 namespace sistrip {
0022
0023
0024
0025
0026
0027
0028
0029
0030 class dso_hidden DigiToRaw {
0031 public:
0032 DigiToRaw(FEDReadoutMode mode, uint8_t packetCode, bool use_fed_key);
0033 ~DigiToRaw();
0034
0035
0036 void createFedBuffers(edm::Event&,
0037 edm::ESHandle<SiStripFedCabling>& cabling,
0038 edm::Handle<edm::DetSetVector<SiStripDigi> >& digis,
0039 std::unique_ptr<FEDRawDataCollection>& buffers);
0040 void createFedBuffers(edm::Event&,
0041 edm::ESHandle<SiStripFedCabling>& cabling,
0042 edm::Handle<edm::DetSetVector<SiStripRawDigi> >& digis,
0043 std::unique_ptr<FEDRawDataCollection>& buffers);
0044
0045
0046 void createFedBuffers(edm::Event&,
0047 edm::ESHandle<SiStripFedCabling>& cabling,
0048 edm::Handle<FEDRawDataCollection>& rawbuffers,
0049 edm::Handle<edm::DetSetVector<SiStripDigi> >& digis,
0050 std::unique_ptr<FEDRawDataCollection>& buffers);
0051 void createFedBuffers(edm::Event&,
0052 edm::ESHandle<SiStripFedCabling>& cabling,
0053 edm::Handle<FEDRawDataCollection>& rawbuffers,
0054 edm::Handle<edm::DetSetVector<SiStripRawDigi> >& digis,
0055 std::unique_ptr<FEDRawDataCollection>& buffers);
0056
0057 inline void fedReadoutMode(FEDReadoutMode mode) { mode_ = mode; }
0058
0059 void printWarningSummary() const { warnings_.printSummary(); }
0060
0061 private:
0062 template <class Digi_t>
0063 void createFedBuffers_(edm::Event&,
0064 edm::ESHandle<SiStripFedCabling>& cabling,
0065 edm::Handle<edm::DetSetVector<Digi_t> >& digis,
0066 std::unique_ptr<FEDRawDataCollection>& buffers,
0067 bool zeroSuppressed);
0068
0069 template <class Digi_t>
0070 void createFedBuffers_(edm::Event&,
0071 edm::ESHandle<SiStripFedCabling>& cabling,
0072 edm::Handle<FEDRawDataCollection>& rawbuffers,
0073 edm::Handle<edm::DetSetVector<Digi_t> >& digis,
0074 std::unique_ptr<FEDRawDataCollection>& buffers,
0075 bool zeroSuppressed);
0076
0077 uint16_t STRIP(const edm::DetSet<SiStripDigi>::const_iterator& it,
0078 const edm::DetSet<SiStripDigi>::const_iterator& begin) const;
0079 uint16_t STRIP(const edm::DetSet<SiStripRawDigi>::const_iterator& it,
0080 const edm::DetSet<SiStripRawDigi>::const_iterator& begin) const;
0081
0082 FEDReadoutMode mode_;
0083 uint8_t packetCode_;
0084 bool useFedKey_;
0085 FEDBufferGenerator bufferGenerator_;
0086
0087 WarningSummary warnings_;
0088 };
0089
0090 }
0091
0092 #endif