CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
RctRawToDigi Class Reference

#include <EventFilter/RctRawToDigi/src/RctRawToDigi.cc>

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

Public Member Functions

 RctRawToDigi (const edm::ParameterSet &)
 
 ~RctRawToDigi () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Member Functions

void checkHeaders ()
 
bool decodeLinkID (const uint32_t inputValue, uint32_t &crateNumber, uint32_t &linkNumber, bool &even)
 
virtual void endJob ()
 method called at job end - use to print summary report More...
 
bool printAll (const unsigned char *data, const unsigned size)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
void unpack (const FEDRawData &d, edm::Event &e, RctUnpackCollections *const colls)
 Unpacks the raw data. More...
 
void unpackCTP7 (const uint32_t *data, const unsigned block_id, const unsigned size, RctUnpackCollections *const colls)
 

Private Attributes

std::vector< unsigned > errorCounters_
 Counts number of errors for each code (index) More...
 
L1TriggerErrorCollectionerrors_
 pointer to error collection More...
 
int fedId_
 RCT FED ID. More...
 
edm::InputTag inputLabel_
 FED collection label. More...
 
unsigned unpackFailures_
 To count the total number of RCT unpack failures. More...
 
const bool verbose_
 If true, then debug print out for each event. More...
 

Static Private Attributes

static const unsigned amc13HeaderSize_ = 16
 
static const unsigned amc13TrailerSize_ = 8
 
static const unsigned ctp7HeaderSize_ = 8
 
static const unsigned ctp7TrailerSize_ = 8
 
static const unsigned MAX_DATA = 4680
 The maximum number of blocks we will try to unpack before thinking something is wrong. More...
 
static const unsigned MAX_ERR_CODE = 6
 
static const unsigned MIN_DATA = 900
 The minimum number of blocks we will try to unpack before thinking something is wrong (really this should be 920, to be tested) More...
 
static const unsigned sLinkHeaderSize_ = 8
 
static const unsigned sLinkTrailerSize_ = 8
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Description: Produce RCT digis from raw data

Implementation: <Notes on="" implementation>="">

Definition at line 40 of file RctRawToDigi.h.

Constructor & Destructor Documentation

RctRawToDigi::RctRawToDigi ( const edm::ParameterSet iConfig)
explicit

Register Products

Definition at line 34 of file RctRawToDigi.cc.

References fedId_, inputLabel_, and LogDebug.

35  : inputLabel_(iConfig.getParameter<edm::InputTag>("inputLabel")),
36  fedId_(iConfig.getUntrackedParameter<int>("rctFedId", FEDNumbering::MINRCTFEDID)),
37  verbose_(iConfig.getUntrackedParameter<bool>("verbose", false)) {
38  LogDebug("RCT") << "RctRawToDigi will unpack FED Id " << fedId_;
40  // RCT collections
41  produces<L1CaloEmCollection>();
42  produces<L1CaloRegionCollection>();
43 
44  // Error collection
45  consumes<FEDRawDataCollection>(inputLabel_);
46 }
T getUntrackedParameter(std::string const &, T const &) const
edm::InputTag inputLabel_
FED collection label.
Definition: RctRawToDigi.h:93
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
int fedId_
RCT FED ID.
Definition: RctRawToDigi.h:94
const bool verbose_
If true, then debug print out for each event.
Definition: RctRawToDigi.h:96
#define LogDebug(id)
RctRawToDigi::~RctRawToDigi ( )
override

Definition at line 48 of file RctRawToDigi.cc.

48  {
49  // do anything here that needs to be done at destruction time
50  // (e.g. close files, deallocate resources etc.)
51  //delete formatTranslator_;
52 }

Member Function Documentation

void RctRawToDigi::checkHeaders ( )
private

Looks at the firmware version header in the S-Link packet and instantiates relevant format translator. check block headers for consistency

bool RctRawToDigi::decodeLinkID ( const uint32_t  inputValue,
uint32_t &  crateNumber,
uint32_t &  linkNumber,
bool &  even 
)
private
void RctRawToDigi::endJob ( void  )
privatevirtual

method called at job end - use to print summary report

Definition at line 311 of file RctRawToDigi.cc.

References errorCounters_, mps_fire::i, MAX_ERR_CODE, dqmMemoryStats::total, and verbose_.

311  {
312  unsigned total = 0;
313  std::ostringstream os;
314 
315  for (unsigned i = 0; i <= MAX_ERR_CODE; ++i) {
316  total += errorCounters_.at(i);
317  os << "Error " << i << " (" << errorCounters_.at(i) << ")";
318  if (i < MAX_ERR_CODE) {
319  os << ", ";
320  }
321  }
322 
323  if (total > 0 && verbose_) {
324  edm::LogError("RCT") << "Encountered " << total << " unpacking errors: " << os.str();
325  }
326 }
std::vector< unsigned > errorCounters_
Counts number of errors for each code (index)
Definition: RctRawToDigi.h:104
Log< level::Error, false > LogError
static const unsigned MAX_ERR_CODE
Definition: RctRawToDigi.h:102
const bool verbose_
If true, then debug print out for each event.
Definition: RctRawToDigi.h:96
bool RctRawToDigi::printAll ( const unsigned char *  data,
const unsigned  size 
)
private

Definition at line 301 of file RctRawToDigi.cc.

References gather_cfg::cout, mps_fire::i, and findQualityFiles::size.

301  {
302  for (unsigned i = 0; i < size; i++) {
303  std::cout << data[i] << " ";
304  if (i % 6 == 5)
305  std::cout << std::endl;
306  }
307  return true;
308 }
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
tuple cout
Definition: gather_cfg.py:144
tuple size
Write out results.
void RctRawToDigi::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 55 of file RctRawToDigi.cc.

References amc13HeaderSize_, amc13TrailerSize_, TauDecayModes::dec, fedId_, unpackBuffers-CaloStage1::feds, edm::Event::get(), edm::Event::getByLabel(), inputLabel_, LogDebug, MIN_DATA, FEDRawData::size(), sLinkHeaderSize_, sLinkTrailerSize_, and unpack().

55  {
56  using namespace edm;
57 
58  // Instantiate all the collections the unpacker needs; puts them in event when this object goes out of scope.
59  std::unique_ptr<RctUnpackCollections> colls(new RctUnpackCollections(iEvent));
60 
61  // get raw data collection
63  iEvent.getByLabel(inputLabel_, feds);
64 
65  // if raw data collection is present, check the headers and do the unpacking
66  if (feds.isValid()) {
67  const FEDRawData& rctRcd = feds->FEDData(fedId_);
68 
69  //Check FED size
70  LogDebug("RCT") << "Upacking FEDRawData of size " << std::dec << rctRcd.size();
71 
72  //check header size
74  if (rctRcd.size() > 0) {
75  LogError("L1T") << "Cannot unpack: empty/invalid L1T raw data (size = " << rctRcd.size() << ") for ID "
76  << fedId_ << ". Returning empty collections!";
77  } else {
78  // there's no MC packer for this payload, so totally expected that sometimes it will be absent... no warning issued.
79  }
80  //continue;
81  return;
82  }
83 
84  // do the unpacking
85  unpack(rctRcd, iEvent, colls.get());
86 
87  } else {
88  LogError("L1T") << "Cannot unpack: no collection found";
89 
90  return;
91  }
92 }
static const unsigned sLinkTrailerSize_
Definition: RctRawToDigi.h:72
static const unsigned sLinkHeaderSize_
Definition: RctRawToDigi.h:69
static const unsigned amc13TrailerSize_
Definition: RctRawToDigi.h:78
static const unsigned MIN_DATA
The minimum number of blocks we will try to unpack before thinking something is wrong (really this sh...
Definition: RctRawToDigi.h:90
Log< level::Error, false > LogError
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:45
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:346
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:500
edm::InputTag inputLabel_
FED collection label.
Definition: RctRawToDigi.h:93
void unpack(const FEDRawData &d, edm::Event &e, RctUnpackCollections *const colls)
Unpacks the raw data.
Definition: RctRawToDigi.cc:94
int fedId_
RCT FED ID.
Definition: RctRawToDigi.h:94
static const unsigned amc13HeaderSize_
Definition: RctRawToDigi.h:75
#define LogDebug(id)
void RctRawToDigi::unpack ( const FEDRawData d,
edm::Event e,
RctUnpackCollections *const  colls 
)
private

Unpacks the raw data.

Parameters
invalidDataFlag- if true, then won't attempt unpack but just output empty collecions.

Definition at line 94 of file RctRawToDigi.cc.

References FEDHeader::bxID(), FEDHeader::check(), FEDTrailer::check(), FEDTrailer::crc(), FEDRawData::data(), data, FEDTrailer::evtStatus(), FEDTrailer::fragmentLength(), LogDebug, FEDHeader::lvl1ID(), FEDRawData::size(), sLinkTrailerSize_, FEDHeader::sourceID(), FEDHeader::triggerType(), FEDTrailer::ttsBits(), unpackCTP7(), and FEDHeader::version().

Referenced by produce().

94  {
95  const unsigned char* data = d.data(); // The 8-bit wide raw-data array.
96  // Data offset - starts at 16 as there is a 64-bit S-Link header followed
97  // by a 64-bit software-controlled header (for pipeline format version
98  // info that is not yet used).
99 
100  FEDHeader header(data);
101 
102  if (header.check()) {
103  LogDebug("L1T") << "Found SLink header:"
104  << " Trigger type " << header.triggerType() << " L1 event ID " << header.lvl1ID() << " BX Number "
105  << header.bxID() << " FED source " << header.sourceID() << " FED version " << header.version();
106  } else {
107  LogWarning("L1T") << "Did not find a valid SLink header!";
108  }
109 
110  FEDTrailer trailer(data + (d.size() - sLinkTrailerSize_));
111 
112  if (trailer.check()) {
113  LogDebug("L1T") << "Found SLink trailer:"
114  << " Length " << trailer.fragmentLength() << " CRC " << trailer.crc() << " Status "
115  << trailer.evtStatus() << " Throttling bits " << trailer.ttsBits();
116  } else {
117  LogWarning("L1T") << "Did not find a SLink trailer!";
118  }
119 
120  unpackCTP7(reinterpret_cast<const uint32_t*>(data), 0, sizeof(data), colls);
121 }
static const unsigned sLinkTrailerSize_
Definition: RctRawToDigi.h:72
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:45
void unpackCTP7(const uint32_t *data, const unsigned block_id, const unsigned size, RctUnpackCollections *const colls)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:24
Log< level::Warning, false > LogWarning
#define LogDebug(id)
void RctRawToDigi::unpackCTP7 ( const uint32_t *  data,
const unsigned  block_id,
const unsigned  size,
RctUnpackCollections *const  colls 
)
private

Definition at line 123 of file RctRawToDigi.cc.

References cms::cuda::assert(), dqmiolumiharvest::j, isotrackApplyRegressor::k, LogDebug, visualization-live-secondInstance_cfg::m, class-composition::o, haddnano::of, hltrates_dqm_sourceclient-live_cfg::offset, submitPVResolutionJobs::q, RctUnpackCollections::rctCalo(), RctUnpackCollections::rctEm(), L1CaloEmCand::setBx(), L1CaloRegion::setBx(), findQualityFiles::size, submitPVValidationJobs::t, createJobs::tmp, and parallelization::uint().

Referenced by unpack().

126  {
127  //offset from 6 link header words
128  uint32_t of = 6;
129  LogDebug("L1T") << "Block ID = " << block_id << " size = " << size;
130 
131  CTP7Format ctp7Format;
132  RctDataDecoder rctDataDecoder;
133  uint32_t nBXTemp = 0;
134  uint32_t ctp7FWVersion;
135  uint32_t L1ID, L1aBCID;
136  std::vector<RCTInfo> allCrateRCTInfo[5];
137 
138  L1ID = data[1 + of]; // extract the L1 ID number
139  L1aBCID = data[5 + of] & 0x00000FFF; // extract the BCID number of L1A
140  nBXTemp = (data[5 + of] & 0x00FF0000) >> 16; // extract number of BXs readout per L1A
141  ctp7FWVersion = data[4 + of];
142 
143  if (nBXTemp != 1 && nBXTemp != 3 && nBXTemp != 5)
144  nBXTemp = 1;
145 
146  const uint32_t nBX = nBXTemp;
147 
148  LogDebug("L1T") << "CTP7 L1ID = " << L1ID << " L1A BCID = " << L1aBCID << " BXs in capture = " << nBX
149  << " CTP7 DAQ FW = " << ctp7FWVersion;
150 
151  struct link_data {
152  bool even;
153  unsigned int crateID;
154  unsigned int ctp7LinkNumber;
155  std::vector<unsigned int> uint;
156  };
157 
158  //nBX max 5, nLinks max 36 [nBX][nLinks]
159  link_data allLinks[5][36];
160  const uint32_t NLinks = ctp7Format.NLINKS;
161  assert(NLinks <= 36);
162 
163  //change this implementation
164  uint32_t iDAQBuffer = 0;
165 
166  //Step 1: Grab all data from ctp7 buffer and put into link format
167  for (unsigned int iLink = 0; iLink < NLinks; iLink++) {
168  iDAQBuffer = of + ctp7Format.EVENT_HEADER_WORDS +
169  iLink * (ctp7Format.CHANNEL_HEADER_WORDS + nBX * ctp7Format.CHANNEL_DATA_WORDS_PER_BX);
170 
171  //first decode linkID
172  uint32_t linkID = data[iDAQBuffer++];
173  uint32_t tmp = data[iDAQBuffer++];
174  uint32_t CRCErrCnt = tmp & 0x0000FFFF;
175  //uint32_t linkStatus = (tmp & 0xFFFF0000) >> 16;
176 
177  uint32_t crateID = 0;
178  uint32_t expectedCrateID = 0;
179  bool even = false;
180  bool expectedEven = false;
181 
182  //getExpected Link ID
183  rctDataDecoder.getExpectedLinkID(iLink, expectedCrateID, expectedEven);
184  //getDecodedLink ID
185  rctDataDecoder.decodeLinkID(linkID, crateID, even);
186 
187  //Perform a check to see if the link ID is as expected, if not then report an error but continue unpacking
188  if (expectedCrateID != crateID || even != expectedEven) {
189  LogError("L1T") << "Expected Crate ID " << expectedCrateID << " expectedEven " << expectedEven
190  << "does not match actual Crate ID " << crateID << " even " << even;
191  }
192 
193  if (CRCErrCnt != 0)
194  LogError("L1T") << "WARNING CRC ErrorFound linkID " << linkID << " expected crateID " << expectedCrateID;
195 
196  // Loop over multiple BX
197  for (uint32_t iBX = 0; iBX < nBX; iBX++) {
198  allLinks[iBX][iLink].uint.reserve(6);
199  allLinks[iBX][iLink].ctp7LinkNumber = iLink;
200  allLinks[iBX][iLink].crateID = expectedCrateID;
201  allLinks[iBX][iLink].even = expectedEven;
202 
203  //Notice 6 words per BX
204  for (unsigned int iWord = 0; iWord < 6; iWord++) {
205  allLinks[iBX][iLink].uint.push_back(data[iDAQBuffer + iWord + iBX * 6]);
206  }
207  }
208  }
209 
210  //Step 2: Dynamically match links and create RCTInfo Objects
211  uint32_t nCratesFound = 0;
212  for (unsigned int iCrate = 0; iCrate < 18; iCrate++) {
213  bool foundEven = false, foundOdd = false;
214  link_data even[5];
215  link_data odd[5];
216 
217  for (unsigned int iLink = 0; iLink < NLinks; iLink++) {
218  if ((allLinks[0][iLink].crateID == iCrate) && (allLinks[0][iLink].even == true)) {
219  foundEven = true;
220  for (unsigned int iBX = 0; iBX < nBX; iBX++)
221  even[iBX] = allLinks[iBX][iLink];
222  } else if ((allLinks[0][iLink].crateID == iCrate) && (allLinks[0][iLink].even == false)) {
223  foundOdd = true;
224  for (unsigned int iBX = 0; iBX < nBX; iBX++)
225  odd[iBX] = allLinks[iBX][iLink];
226  }
227 
228  //if success then create RCTInfoVector and fill output object
229  if (foundEven && foundOdd) {
230  nCratesFound++;
231 
232  //fill rctInfoVector for all BX read out
233  for (unsigned int iBX = 0; iBX < nBX; iBX++) {
234  //RCTInfoFactory rctInfoFactory;
235  std::vector<RCTInfo> rctInfoData;
236  rctDataDecoder.decodeLinks(even[iBX].uint, odd[iBX].uint, rctInfoData);
237  rctDataDecoder.setRCTInfoCrateID(rctInfoData, iCrate);
238  allCrateRCTInfo[iBX].push_back(rctInfoData.at(0));
239  }
240  break;
241  }
242  }
243  }
244 
245  if (nCratesFound != 18)
246  LogError("L1T") << "Warning -- only found " << nCratesFound << " valid crates";
247 
248  //start assuming 1 BX readout
249  int32_t startBX = 0;
250  if (nBX == 1)
251  startBX = 0;
252  else if (nBX == 3)
253  startBX = -1;
254  else if (nBX == 5)
255  startBX = -2;
256 
257  //Step 3: Create Collections from RCTInfo Objects
258  //Notice, iBX used for grabbing data from array, startBX used for storing in Collection
259  for (uint32_t iBX = 0; iBX < nBX; iBX++, startBX++) {
260  for (unsigned int iCrate = 0; iCrate < nCratesFound; iCrate++) {
261  RCTInfo rctInfo = allCrateRCTInfo[iBX].at(iCrate);
262  //Use Crate ID to identify eta/phi of candidate
263  for (int j = 0; j < 4; j++) {
264  L1CaloEmCand em = L1CaloEmCand(rctInfo.neRank[j], rctInfo.neRegn[j], rctInfo.neCard[j], rctInfo.crateID, false);
265  em.setBx(startBX);
266  colls->rctEm()->push_back(em);
267  }
268 
269  for (int j = 0; j < 4; j++) {
270  L1CaloEmCand em = L1CaloEmCand(rctInfo.ieRank[j], rctInfo.ieRegn[j], rctInfo.ieCard[j], rctInfo.crateID, true);
271  em.setBx(startBX);
272  colls->rctEm()->push_back(em);
273  }
274 
275  for (int j = 0; j < 7; j++) {
276  for (int k = 0; k < 2; k++) {
277  bool o = (((rctInfo.oBits >> (j * 2 + k)) & 0x1) == 0x1);
278  bool t = (((rctInfo.tBits >> (j * 2 + k)) & 0x1) == 0x1);
279  bool m = (((rctInfo.mBits >> (j * 2 + k)) & 0x1) == 0x1);
280  bool q = (((rctInfo.qBits >> (j * 2 + k)) & 0x1) == 0x1);
281  L1CaloRegion rgn = L1CaloRegion(rctInfo.rgnEt[j][k], o, t, m, q, rctInfo.crateID, j, k);
282  rgn.setBx(startBX);
283  colls->rctCalo()->push_back(rgn);
284  }
285  }
286 
287  for (int k = 0; k < 4; k++) {
288  for (int j = 0; j < 2; j++) {
289  // 0 1 4 5 2 3 6 7
290  uint32_t offset = j * 2 + k % 2 + (k / 2) * 4;
291  bool fg = (((rctInfo.hfQBits >> offset) & 0x1) == 0x1);
292  L1CaloRegion rgn = L1CaloRegion(rctInfo.hfEt[j][k], fg, rctInfo.crateID, (j * 4 + k));
293  rgn.setBx(startBX);
294  colls->rctCalo()->push_back(rgn);
295  }
296  }
297  }
298  }
299 }
L1CaloRegionCollection *const rctCalo() const
Input calo regions from the RCT to the RCT.
void setBx(int16_t bx)
set bx
void setBx(int16_t bx)
set BX
Definition: L1CaloEmCand.cc:49
Level-1 Region Calorimeter Trigger EM candidate.
Definition: L1CaloEmCand.h:17
L1CaloEmCollection *const rctEm() const
Input electrons from the RCT to the RCT.
Log< level::Error, false > LogError
assert(be >=bs)
tuple of
Definition: haddnano.py:40
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
A calorimeter trigger region (sum of 4x4 trigger towers)
Definition: L1CaloRegion.h:21
tmp
align.sh
Definition: createJobs.py:716
tuple size
Write out results.
#define LogDebug(id)

Member Data Documentation

const unsigned RctRawToDigi::amc13HeaderSize_ = 16
staticprivate

Definition at line 75 of file RctRawToDigi.h.

Referenced by produce().

const unsigned RctRawToDigi::amc13TrailerSize_ = 8
staticprivate

Definition at line 78 of file RctRawToDigi.h.

Referenced by produce().

const unsigned RctRawToDigi::ctp7HeaderSize_ = 8
staticprivate

Definition at line 81 of file RctRawToDigi.h.

const unsigned RctRawToDigi::ctp7TrailerSize_ = 8
staticprivate

Definition at line 84 of file RctRawToDigi.h.

std::vector<unsigned> RctRawToDigi::errorCounters_
private

Counts number of errors for each code (index)

Definition at line 104 of file RctRawToDigi.h.

Referenced by endJob().

L1TriggerErrorCollection* RctRawToDigi::errors_
private

pointer to error collection

Definition at line 103 of file RctRawToDigi.h.

int RctRawToDigi::fedId_
private

RCT FED ID.

Definition at line 94 of file RctRawToDigi.h.

Referenced by produce(), and RctRawToDigi().

edm::InputTag RctRawToDigi::inputLabel_
private

FED collection label.

Definition at line 93 of file RctRawToDigi.h.

Referenced by produce(), and RctRawToDigi().

const unsigned RctRawToDigi::MAX_DATA = 4680
staticprivate

The maximum number of blocks we will try to unpack before thinking something is wrong.

Definition at line 87 of file RctRawToDigi.h.

const unsigned RctRawToDigi::MAX_ERR_CODE = 6
staticprivate

Definition at line 102 of file RctRawToDigi.h.

Referenced by endJob().

const unsigned RctRawToDigi::MIN_DATA = 900
staticprivate

The minimum number of blocks we will try to unpack before thinking something is wrong (really this should be 920, to be tested)

Definition at line 90 of file RctRawToDigi.h.

Referenced by produce().

const unsigned RctRawToDigi::sLinkHeaderSize_ = 8
staticprivate

Definition at line 69 of file RctRawToDigi.h.

Referenced by produce().

const unsigned RctRawToDigi::sLinkTrailerSize_ = 8
staticprivate

Definition at line 72 of file RctRawToDigi.h.

Referenced by produce(), and unpack().

unsigned RctRawToDigi::unpackFailures_
private

To count the total number of RCT unpack failures.

Definition at line 105 of file RctRawToDigi.h.

const bool RctRawToDigi::verbose_
private

If true, then debug print out for each event.

Definition at line 96 of file RctRawToDigi.h.

Referenced by endJob().