CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
RPCAMCRawToDigi Class Reference

#include <RPCAMCRawToDigi.h>

Inheritance diagram for RPCAMCRawToDigi:
edm::stream::EDProducer<>

Public Member Functions

void beginRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void produce (edm::Event &event, edm::EventSetup const &setup) override
 
 RPCAMCRawToDigi (edm::ParameterSet const &config)
 
 ~RPCAMCRawToDigi ()
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Static Public Member Functions

static void compute_crc16_64bit (std::uint16_t &crc, std::uint64_t const &word)
 
static void fillDescriptions (edm::ConfigurationDescriptions &descs)
 

Protected Member Functions

bool processBlocks (int fed, std::uint64_t const *&word, std::uint64_t const *word_end, std::uint16_t &crc, RPCAMCLinkCounters &counters, std::map< RPCAMCLink, rpcamc13::AMCPayload > &amc_payload) const
 
bool processCDFHeaders (int fed, std::uint64_t const *&word, std::uint64_t const *&word_end, std::uint16_t &crc, RPCAMCLinkCounters &counters) const
 
bool processCDFTrailers (int fed, unsigned int nwords, std::uint64_t const *&word, std::uint64_t const *&word_end, std::uint16_t &crc, RPCAMCLinkCounters &counters) const
 

Protected Attributes

bool calculate_crc_
 
bool fill_counters_
 
edm::EDGetTokenT< FEDRawDataCollectionraw_token_
 
std::unique_ptr< RPCAMCUnpackerrpc_unpacker_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 21 of file RPCAMCRawToDigi.h.

Constructor & Destructor Documentation

RPCAMCRawToDigi::RPCAMCRawToDigi ( edm::ParameterSet const &  config)

Definition at line 20 of file RPCAMCRawToDigi.cc.

References fill_counters_, edm::ParameterSet::getParameter(), and raw_token_.

21  : calculate_crc_(config.getParameter<bool>("calculateCRC"))
22  , fill_counters_(config.getParameter<bool>("fillCounters"))
23  , rpc_unpacker_(RPCAMCUnpackerFactory::get()->create(config.getParameter<std::string>("RPCAMCUnpacker")
24  , *this
25  , config.getParameter<edm::ParameterSet>("RPCAMCUnpackerSettings")))
26 {
27  if (fill_counters_) {
28  produces<RPCAMCLinkCounters>();
29  }
30 
31  raw_token_ = consumes<FEDRawDataCollection>(config.getParameter<edm::InputTag>("inputTag"));
32 }
def create(alignables, pedeDump, additionalData, outputFile, config)
edm::EDGetTokenT< FEDRawDataCollection > raw_token_
Definition: config.py:1
std::unique_ptr< RPCAMCUnpacker > rpc_unpacker_
T get(const Candidate &c)
Definition: component.h:55
RPCAMCRawToDigi::~RPCAMCRawToDigi ( )

Definition at line 34 of file RPCAMCRawToDigi.cc.

35 {}

Member Function Documentation

void RPCAMCRawToDigi::beginRun ( edm::Run const &  run,
edm::EventSetup const &  setup 
)
override

Definition at line 48 of file RPCAMCRawToDigi.cc.

References rpc_unpacker_.

49 {
50  rpc_unpacker_->beginRun(run, setup);
51 }
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
std::unique_ptr< RPCAMCUnpacker > rpc_unpacker_
void RPCAMCRawToDigi::compute_crc16_64bit ( std::uint16_t &  crc,
std::uint64_t const &  word 
)
inlinestatic

Definition at line 58 of file RPCAMCRawToDigi.h.

References evf::compute_crc_8bit().

Referenced by processBlocks(), processCDFHeaders(), and produce().

59 { // overcome constness problem evf::compute_crc_64bit
60  unsigned char const * uchars(reinterpret_cast<unsigned char const *>(&word));
61  for (unsigned char const * uchar = uchars + 7
62  ; uchar >= uchars ; --uchar) {
63  crc = evf::compute_crc_8bit(crc, *uchar);
64  }
65 }
unsigned short compute_crc_8bit(unsigned short crc, unsigned char data)
Definition: CRC16.h:56
void RPCAMCRawToDigi::fillDescriptions ( edm::ConfigurationDescriptions descs)
static

Definition at line 37 of file RPCAMCRawToDigi.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), RPCAMCUnpacker::fillDescription(), and AlCaHLTBitMon_QueryRunRegistry::string.

38 {
40  desc.add<edm::InputTag>("inputTag", edm::InputTag("rawDataCollector", ""));
41  desc.add<bool>("calculateCRC", true);
42  desc.add<bool>("fillCounters", true);
43  desc.add<std::string>("RPCAMCUnpacker", "RPCAMCUnpacker");
45  descs.add("RPCAMCRawToDigi", desc);
46 }
static void fillDescription(edm::ParameterSetDescription &desc)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool RPCAMCRawToDigi::processBlocks ( int  fed,
std::uint64_t const *&  word,
std::uint64_t const *  word_end,
std::uint16_t &  crc,
RPCAMCLinkCounters counters,
std::map< RPCAMCLink, rpcamc13::AMCPayload > &  amc_payload 
) const
protected

Definition at line 208 of file RPCAMCRawToDigi.cc.

References RPCAMCLinkCounters::add(), amc, RPCAMCLinkEvents::amc_amc13_block_incomplete_, RPCAMCLinkEvents::amc_amc13_crc_mismatch_, RPCAMCLinkEvents::amc_amc13_evc_bc_invalid_, RPCAMCLinkEvents::amc_amc13_length_incorrect_, RPCAMCLinkEvents::amc_amc13_size_inconsistent_, RPCAMCLinkEvents::amc_event_, RPCAMCLinkEvents::amc_number_mismatch_, RPCAMCLinkEvents::amc_payload_incomplete_, RPCAMCLinkEvents::amc_size_mismatch_, calculate_crc_, compute_crc16_64bit(), DEFINE_FWK_MODULE, RPCAMCLinkEvents::fed_amc13_amc_number_invalid_, RPCAMCLinkEvents::fed_amc13_block_incomplete_, fill_counters_, rpcamc13::AMCPayload::getAMCHeader(), rpcamc::Header::getAMCNumber(), rpcamc13::AMCHeader::getAMCNumber(), rpcamc13::AMCPayload::getData(), rpcamc::Header::getDataLength(), rpcamc13::Header::getNAMC(), rpcamc13::AMCHeader::getSize(), rpcamc13::AMCHeader::getSizeInBlock(), rpcamc::Header::hasDataLength(), rpcamc13::AMCHeader::hasTotalSize(), RecoTauValidation_cfi::header, rpcamc13::AMCPayload::insert(), rpcamc13::AMCHeader::isCRCOk(), rpcamc13::AMCHeader::isFirstBlock(), rpcamc13::AMCHeader::isLastBlock(), rpcamc13::AMCHeader::isLengthCorrect(), rpcamc13::AMCHeader::isValid(), RPCAMCLink::max_amcnumber_, jets_cff::payload, rpcamc13::AMCPayload::setAMCHeader(), rpcamc13::AMCHeader::setCRCOk(), rpcamc13::AMCHeader::setLengthCorrect(), rpcamc13::AMCPayload::setValid(), and RPCAMCLink::wildcard_.

Referenced by produce().

213 {
214  while (word < word_end) {
215  rpcamc13::Header header(*word);
216  if (calculate_crc_) {
217  compute_crc16_64bit(crc, *word);
218  }
219  ++word;
220 
221  unsigned int n_amc(header.getNAMC());
222  if (word + n_amc + 1 >= word_end) { // AMC Headers and AMC13 Trailer
223  if (fill_counters_) {
225  }
226  edm::LogWarning("RPCAMCRawToDigi") << "AMC13 Block can not be complete for FED " << fed;
227  word = word_end;
228  return false;
229  }
230 
231  std::uint64_t const * payload_word(word + n_amc);
232  std::uint64_t const * payload_word_end(payload_word);
233  for (unsigned int amc = 0 ; amc < n_amc ; ++amc) {
234  rpcamc13::AMCHeader amc13_amc_header(*word);
235  if (calculate_crc_) {
236  compute_crc16_64bit(crc, *word);
237  }
238  ++word;
239 
240  unsigned int size_in_block(amc13_amc_header.getSizeInBlock());
241  if (size_in_block == 0) {
242  continue;
243  }
244  payload_word = payload_word_end;
245  payload_word_end += size_in_block;
246 
247  unsigned int amc_number(amc13_amc_header.getAMCNumber());
248  if (amc_number > (unsigned int)RPCAMCLink::max_amcnumber_) {
249  if (fill_counters_) {
251  }
252  edm::LogWarning("RPCAMCRawToDigi") << "Invalid AMC Number " << amc_number << " for FED " << fed;
253  continue;
254  }
255 
256  if (payload_word_end > word_end) {
257  if (fill_counters_) {
259  }
260  edm::LogWarning("RPCAMCRawToDigi") << "AMC Block can not be complete for FED " << fed
261  << " at AMC " << amc_number;
262  return false;
263  }
264 
265  rpcamc13::AMCPayload & payload(amc_payload[RPCAMCLink(fed, amc_number)]);
266 
267  if (amc13_amc_header.isFirstBlock()) {
268  payload.setAMCHeader(amc13_amc_header);
269  if (fill_counters_) {
270  counters.add(RPCAMCLinkEvents::amc_event_, RPCAMCLink(fed, amc_number));
271  }
272 
273  if (!amc13_amc_header.isValid()) {
274  if (fill_counters_) {
275  counters.add(RPCAMCLinkEvents::amc_amc13_evc_bc_invalid_, RPCAMCLink(fed, amc_number));
276  }
277  edm::LogWarning("RPCAMCRawToDigi") << "AMC13 AMC Header is reporting an invalid "
278  << "Event Counter or Bunch Counter for FED " << fed
279  << ", AMC " << amc_number;
280  payload.setValid(false);
281  }
282 
283  rpcamc::Header amc_amc_header(payload_word);
284  if (amc_number!= amc_amc_header.getAMCNumber()) {
285  if (fill_counters_) {
286  counters.add(RPCAMCLinkEvents::amc_number_mismatch_, RPCAMCLink(fed, amc_number));
287  }
288  edm::LogWarning("RPCAMCRawToDigi") << "AMC Number inconsistent in AMC13 AMC Header vs AMC Header: " << amc_number
289  << " vs " << amc_amc_header.getAMCNumber();
290  payload.setValid(false);
291  }
292 
293  if (amc_amc_header.hasDataLength()
294  && amc13_amc_header.hasTotalSize()
295  && amc13_amc_header.getSize() != amc_amc_header.getDataLength()) {
296  if (fill_counters_) {
297  counters.add(RPCAMCLinkEvents::amc_size_mismatch_, RPCAMCLink(fed, amc_number));
298  }
299  edm::LogWarning("RPCAMCRawToDigi") << "AMC size inconsistent in AMC13 AMC Header vs AMC Header: " << amc13_amc_header.getSize()
300  << " vs " << amc_amc_header.getDataLength();
301  payload.setValid(false);
302  }
303  }
304 
305  if (amc13_amc_header.isLastBlock()) {
306  if (!amc13_amc_header.isFirstBlock()) {
307  edm::LogWarning("RPCAMCRawToDigi") << "Multiple blocks";
308  }
309  payload.getAMCHeader().setCRCOk(amc13_amc_header.isCRCOk());
310  payload.getAMCHeader().setLengthCorrect(amc13_amc_header.isLengthCorrect());
311 
312  if (!amc13_amc_header.isCRCOk()) {
313  if (fill_counters_) {
314  counters.add(RPCAMCLinkEvents::amc_amc13_crc_mismatch_, RPCAMCLink(fed, amc_number));
315  }
316  edm::LogWarning("RPCAMCRawToDigi") << "AMC13 AMC Header is reporting a mismatched "
317  << "Event Counter or Bunch Counter for FED " << fed
318  << ", AMC " << amc_number;
319  payload.setValid(false);
320  }
321 
322  if (!amc13_amc_header.isLengthCorrect()) {
323  if (fill_counters_) {
325  }
326  edm::LogWarning("RPCAMCRawToDigi") << "AMC13 AMC Header is reporting an incorrect length "
327  << "for FED " << fed << ", AMC " << amc_number;
328  payload.setValid(false);
329  }
330 
331  if (amc13_amc_header.hasTotalSize()
332  && amc13_amc_header.getSize() != (payload.getData().size() + size_in_block)) {
333  if (fill_counters_) {
335  }
336  edm::LogWarning("RPCAMCRawToDigi") << "Size in AMC13 AMC Header doesn't match payload size "
337  << "for FED " << fed << ", AMC " << amc_number;
338  payload.setValid(false);
339  }
340 
341  if (!payload.getData().empty() && (payload.getData().size() + size_in_block) < 3) {
342  if (fill_counters_) {
343  counters.add(RPCAMCLinkEvents::amc_payload_incomplete_, RPCAMCLink(fed, amc_number));
344  }
345  edm::LogWarning("RPCAMCRawToDigi") << "Size in AMC13 AMC Header doesn't match payload size "
346  << "for FED " << fed << ", AMC " << amc_number;
347  payload.setValid(false);
348  }
349  }
350 
351  if (size_in_block > 0) {
352  payload.insert(payload_word, size_in_block);
353  }
354  }
355 
356  if (calculate_crc_) {
357  for ( ; word < payload_word_end ; ++word) {
358  compute_crc16_64bit(crc, *word);
359  }
360  } else {
361  word = payload_word_end;
362  }
363 
364  if (calculate_crc_) {
365  compute_crc16_64bit(crc, *word);
366  }
367  ++word;
368  }
369  return true;
370 }
static unsigned int const fed_amc13_amc_number_invalid_
static unsigned int const amc_payload_incomplete_
static unsigned int const amc_size_mismatch_
static void compute_crc16_64bit(std::uint16_t &crc, std::uint64_t const &word)
static unsigned int const amc_event_
static unsigned int const amc_amc13_evc_bc_invalid_
double amc
Definition: hdecay.h:20
static unsigned int const amc_amc13_length_incorrect_
static unsigned int const amc_amc13_size_inconsistent_
static unsigned int const amc_number_mismatch_
static unsigned int const fed_amc13_block_incomplete_
void add(unsigned int event, RPCAMCLink const &link, unsigned int count=1)
unsigned long long uint64_t
Definition: Time.h:15
static unsigned int const amc_amc13_block_incomplete_
static unsigned int const amc_amc13_crc_mismatch_
Definition: AMCSpec.h:8
bool RPCAMCRawToDigi::processCDFHeaders ( int  fed,
std::uint64_t const *&  word,
std::uint64_t const *&  word_end,
std::uint16_t &  crc,
RPCAMCLinkCounters counters 
) const
protected

Definition at line 132 of file RPCAMCRawToDigi.cc.

References RPCAMCLinkCounters::add(), calculate_crc_, FEDHeader::check(), compute_crc16_64bit(), TauDecayModes::dec, RPCAMCLinkEvents::fed_header_check_fail_, RPCAMCLinkEvents::fed_header_id_mismatch_, fill_counters_, RecoTauValidation_cfi::header, LogDebug, FEDHeader::sourceID(), and RPCAMCLink::wildcard_.

Referenced by produce().

136 {
137  bool more_headers(true);
138  for ( ; word < word_end && more_headers ; ++word) {
139  if (calculate_crc_) {
140  compute_crc16_64bit(crc, *word);
141  }
142 
143  LogDebug("RPCAMCRawToDigi") << "CDF Header " << std::hex << *word << std::dec;
144  FEDHeader header(reinterpret_cast<unsigned char const *>(word));
145  if (!header.check()) {
146  if (fill_counters_) {
148  }
149  edm::LogWarning("RPCAMCRawToDigi") << "FED Header check failed for FED id " << fed;
150  ++word;
151  return false;
152  }
153  if (header.sourceID() != fed) {
154  if (fill_counters_) {
156  }
157  edm::LogWarning("RPCAMCRawToDigi") << "FED Header Source ID " << header.sourceID()
158  << " does not match requested FED id " << fed;
159  ++word;
160  return false;
161  }
162 
163  // moreHeaders() not used
164  // more_headers = header.moreHeaders();
165  more_headers = false;
166  }
167 
168  return !more_headers;
169 }
#define LogDebug(id)
static void compute_crc16_64bit(std::uint16_t &crc, std::uint64_t const &word)
static unsigned int const fed_header_check_fail_
static unsigned int const fed_header_id_mismatch_
void add(unsigned int event, RPCAMCLink const &link, unsigned int count=1)
bool RPCAMCRawToDigi::processCDFTrailers ( int  fed,
unsigned int  nwords,
std::uint64_t const *&  word,
std::uint64_t const *&  word_end,
std::uint16_t &  crc,
RPCAMCLinkCounters counters 
) const
protected

Definition at line 171 of file RPCAMCRawToDigi.cc.

References RPCAMCLinkCounters::add(), FEDTrailer::check(), TauDecayModes::dec, RPCAMCLinkEvents::fed_trailer_check_fail_, RPCAMCLinkEvents::fed_trailer_length_mismatch_, fill_counters_, FEDTrailer::fragmentLength(), LogDebug, and RPCAMCLink::wildcard_.

Referenced by produce().

175 {
176  bool more_trailers(true);
177  for (--word_end ; word_end > word && more_trailers ; --word_end) {
178  FEDTrailer trailer(reinterpret_cast<unsigned char const *>(word_end));
179  LogDebug("RPCAMCRawToDigi") << "CDF Trailer " << std::hex << *word_end << std::dec
180  << ", length " << trailer.fragmentLength();
181  if (!trailer.check()) {
182  if (fill_counters_) {
184  }
185  edm::LogWarning("RPCAMCRawToDigi") << "FED Trailer check failed for FED id " << fed;
186  return false;
187  }
188  if (trailer.fragmentLength() != nwords) {
189  if (fill_counters_) {
191  }
192  edm::LogWarning("RPCAMCRawToDigi") << "FED Trailer length " << trailer.fragmentLength()
193  << " does not match actual data size " << nwords
194  << " for FED id " << fed;
195  return false;
196  }
197 
198  // moreTrailers() not used
199  // more_trailers = trailer.moreTrailers();
200  more_trailers = false;
201  }
202 
203  ++word_end;
204 
205  return !more_trailers;
206 }
#define LogDebug(id)
static unsigned int const fed_trailer_length_mismatch_
void add(unsigned int event, RPCAMCLink const &link, unsigned int count=1)
static unsigned int const fed_trailer_check_fail_
void RPCAMCRawToDigi::produce ( edm::Event event,
edm::EventSetup const &  setup 
)
override

Definition at line 53 of file RPCAMCRawToDigi.cc.

References calculate_crc_, compute_crc16_64bit(), FEDTrailer::crc(), FEDRawData::data(), RPCAMCLinkEvents::fed_event_, RPCAMCLinkEvents::fed_trailer_crc_mismatch_, FEDRawDataCollection::FEDData(), fill_counters_, LogDebug, eostools::move(), processBlocks(), processCDFHeaders(), processCDFTrailers(), raw_token_, rpc_unpacker_, FEDRawData::size(), and RPCAMCLink::wildcard_.

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

54 {
55  // Get RAW Data
56  edm::Handle<FEDRawDataCollection> raw_data_collection;
57  event.getByToken(raw_token_, raw_data_collection);
58 
59  std::unique_ptr<RPCAMCLinkCounters> counters(new RPCAMCLinkCounters());
60 
61  std::map<RPCAMCLink, rpcamc13::AMCPayload> amc_payload;
62 
63  // Loop over the FEDs
64  for (int fed : rpc_unpacker_->getFeds()) {
65 
66  if (fill_counters_) {
68  }
69 
70  std::uint16_t crc(0xffff);
71 
72  FEDRawData const & raw_data = raw_data_collection->FEDData(fed);
73  unsigned int nwords(raw_data.size() / sizeof(std::uint64_t));
74  if (!nwords) {
75  continue;
76  }
77 
78  std::uint64_t const * word(reinterpret_cast<std::uint64_t const *>(raw_data.data()));
79  std::uint64_t const * word_end = word + nwords;
80 
81  LogDebug("RPCAMCRawToDigi") << "Handling FED " << fed << " with length " << nwords;
82 
83  // Handle the CDF Headers
84  if (!processCDFHeaders(fed
85  , word, word_end
86  , crc, *counters)) {
87  continue;
88  }
89 
90  // Handle the CDF Trailers
91  if (!processCDFTrailers(fed, nwords
92  , word, word_end
93  , crc, *counters)) {
94  continue;
95  }
96 
97  // Loop over the Blocks
98  if (!processBlocks(fed
99  , word, word_end
100  , crc, *counters, amc_payload)) {
101  continue;
102  }
103 
104  // Complete CRC check with trailer
105  if (calculate_crc_) {
106  word = word_end;
107  word_end = reinterpret_cast<std::uint64_t const *>(raw_data.data()) + nwords - 1;
108  for ( ; word < word_end ; ++word) {
109  compute_crc16_64bit(crc, *word);
110  }
111  compute_crc16_64bit(crc, (*word & 0xffffffff0000ffff)); // trailer excluding crc
112  FEDTrailer trailer(reinterpret_cast<unsigned char const *>(word_end));
113  if ((unsigned int)(trailer.crc()) != crc) {
114  if (fill_counters_) {
116  }
117  edm::LogWarning("RPCAMCRawToDigi") << "FED Trailer CRC doesn't match for FED id " << fed;
118  continue;
119  }
120  }
121 
122  }
123 
124  rpc_unpacker_->produce(event, setup
125  , amc_payload);
126 
127  if (fill_counters_) {
128  event.put(std::move(counters));
129  }
130 }
#define LogDebug(id)
static unsigned int const fed_trailer_crc_mismatch_
static void compute_crc16_64bit(std::uint16_t &crc, std::uint64_t const &word)
edm::EDGetTokenT< FEDRawDataCollection > raw_token_
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
static unsigned int const fed_event_
unsigned long long uint64_t
Definition: Time.h:15
bool processCDFTrailers(int fed, unsigned int nwords, std::uint64_t const *&word, std::uint64_t const *&word_end, std::uint16_t &crc, RPCAMCLinkCounters &counters) const
bool processBlocks(int fed, std::uint64_t const *&word, std::uint64_t const *word_end, std::uint16_t &crc, RPCAMCLinkCounters &counters, std::map< RPCAMCLink, rpcamc13::AMCPayload > &amc_payload) const
bool processCDFHeaders(int fed, std::uint64_t const *&word, std::uint64_t const *&word_end, std::uint16_t &crc, RPCAMCLinkCounters &counters) const
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
std::unique_ptr< RPCAMCUnpacker > rpc_unpacker_
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

bool RPCAMCRawToDigi::calculate_crc_
protected

Definition at line 53 of file RPCAMCRawToDigi.h.

Referenced by processBlocks(), processCDFHeaders(), and produce().

bool RPCAMCRawToDigi::fill_counters_
protected
edm::EDGetTokenT<FEDRawDataCollection> RPCAMCRawToDigi::raw_token_
protected

Definition at line 51 of file RPCAMCRawToDigi.h.

Referenced by produce(), and RPCAMCRawToDigi().

std::unique_ptr<RPCAMCUnpacker> RPCAMCRawToDigi::rpc_unpacker_
protected

Definition at line 55 of file RPCAMCRawToDigi.h.

Referenced by beginRun(), and produce().