CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes
RawToDigiConverter Class Reference

Collection of code to convert TOTEM raw data into digi. More...

#include <RawToDigiConverter.h>

Classes

struct  Record
 

Public Member Functions

void printSummaries () const
 Print error summaries. More...
 
 RawToDigiConverter (const edm::ParameterSet &conf)
 
void run (const VFATFrameCollection &coll, const TotemDAQMapping &mapping, const TotemAnalysisMask &mask, edm::DetSetVector< TotemRPDigi > &digi, edm::DetSetVector< TotemVFATStatus > &status)
 Creates RP digi. More...
 
void run (const VFATFrameCollection &coll, const TotemDAQMapping &mapping, const TotemAnalysisMask &mask, edm::DetSetVector< CTPPSDiamondDigi > &digi, edm::DetSetVector< TotemVFATStatus > &status)
 Creates Diamond digi. More...
 
void run (const VFATFrameCollection &coll, const TotemDAQMapping &mapping, const TotemAnalysisMask &mask, edm::DetSetVector< TotemTimingDigi > &digi, edm::DetSetVector< TotemVFATStatus > &status)
 Creates Totem Timing digi. More...
 

Private Types

enum  TestFlag { tfNoTest, tfWarn, tfErr }
 

Private Member Functions

void runCommon (const VFATFrameCollection &input, const TotemDAQMapping &mapping, std::map< TotemFramePosition, Record > &records)
 Common processing for all VFAT based sub-systems. More...
 

Private Attributes

double BC_fraction
 
unsigned int BC_min
 
double EC_fraction
 the minimal required (relative) occupancy of the most frequent counter value to be accepted More...
 
unsigned int EC_min
 the minimal required number of frames to determine the most frequent counter value More...
 
std::map< TotemFramePosition, std::map< TotemVFATStatus, unsigned int > > errorSummary
 error summaries More...
 
unsigned int printErrorSummary
 
unsigned int printUnknownFrameSummary
 
unsigned int testBCMostFrequent
 
unsigned int testCRC
 
unsigned int testECDAQ
 
unsigned int testECMostFrequent
 
unsigned int testECRaw
 
unsigned int testFootprint
 flags for which tests to run More...
 
unsigned int testID
 
std::map< TotemFramePosition, unsigned int > unknownSummary
 
unsigned char verbosity
 

Detailed Description

Collection of code to convert TOTEM raw data into digi.

Definition at line 26 of file RawToDigiConverter.h.

Member Enumeration Documentation

◆ TestFlag

Constructor & Destructor Documentation

◆ RawToDigiConverter()

RawToDigiConverter::RawToDigiConverter ( const edm::ParameterSet conf)

Definition at line 23 of file RawToDigiConverter.cc.

24  : verbosity(conf.getUntrackedParameter<unsigned int>("verbosity", 0)),
25  printErrorSummary(conf.getUntrackedParameter<unsigned int>("printErrorSummary", 1)),
26  printUnknownFrameSummary(conf.getUntrackedParameter<unsigned int>("printUnknownFrameSummary", 1)),
27 
28  testFootprint(conf.getParameter<unsigned int>("testFootprint")),
29  testCRC(conf.getParameter<unsigned int>("testCRC")),
30  testID(conf.getParameter<unsigned int>("testID")),
31  testECMostFrequent(conf.getParameter<unsigned int>("testECMostFrequent")),
32  testBCMostFrequent(conf.getParameter<unsigned int>("testBCMostFrequent")),
33 
34  EC_min(conf.getUntrackedParameter<unsigned int>("EC_min", 10)),
35  BC_min(conf.getUntrackedParameter<unsigned int>("BC_min", 10)),
36 
37  EC_fraction(conf.getUntrackedParameter<double>("EC_fraction", 0.6)),
38  BC_fraction(conf.getUntrackedParameter<double>("BC_fraction", 0.6)) {}
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
unsigned int testECMostFrequent
unsigned int printErrorSummary
unsigned int testFootprint
flags for which tests to run
T getUntrackedParameter(std::string const &, T const &) const
unsigned int printUnknownFrameSummary
unsigned char verbosity
unsigned int testBCMostFrequent
double EC_fraction
the minimal required (relative) occupancy of the most frequent counter value to be accepted ...
unsigned int EC_min
the minimal required number of frames to determine the most frequent counter value ...

Member Function Documentation

◆ printSummaries()

void RawToDigiConverter::printSummaries ( ) const

Print error summaries.

Definition at line 380 of file RawToDigiConverter.cc.

References errorSummary, printErrorSummary, printUnknownFrameSummary, and unknownSummary.

Referenced by TotemVFATRawToDigi::endStream().

380  {
381  // print error summary
382  if (printErrorSummary) {
383  if (!errorSummary.empty()) {
384  stringstream ees;
385  for (const auto &vit : errorSummary) {
386  ees << vit.first << endl;
387 
388  for (const auto &it : vit.second)
389  ees << " " << it.first << " : " << it.second << endl;
390  }
391 
392  LogWarning("Totem") << "RawToDigiConverter: error summary (error signature : number of such events)\n"
393  << endl
394  << ees.rdbuf();
395  } else {
396  LogInfo("Totem") << "RawToDigiConverter: no errors to be reported.";
397  }
398  }
399 
400  // print summary of unknown frames (found in data but not in the mapping)
402  if (!unknownSummary.empty()) {
403  stringstream ees;
404  for (const auto &it : unknownSummary)
405  ees << " " << it.first << " : " << it.second << endl;
406 
407  LogWarning("Totem")
408  << "RawToDigiConverter: frames found in data, but not in the mapping (frame position : number of events)\n"
409  << endl
410  << ees.rdbuf();
411  } else {
412  LogInfo("Totem") << "RawToDigiConverter: no unknown frames to be reported.";
413  }
414  }
415 }
unsigned int printErrorSummary
unsigned int printUnknownFrameSummary
Log< level::Info, false > LogInfo
std::map< TotemFramePosition, unsigned int > unknownSummary
std::map< TotemFramePosition, std::map< TotemVFATStatus, unsigned int > > errorSummary
error summaries
Log< level::Warning, false > LogWarning

◆ run() [1/3]

void RawToDigiConverter::run ( const VFATFrameCollection coll,
const TotemDAQMapping mapping,
const TotemAnalysisMask mask,
edm::DetSetVector< TotemRPDigi > &  digi,
edm::DetSetVector< TotemVFATStatus > &  status 
)

Creates RP digi.

Definition at line 177 of file RawToDigiConverter.cc.

References TotemAnalysisMask::analysisMask, TotemRPDetId::chip(), edm::DetSet< T >::emplace_back(), edm::DetSetVector< T >::find_or_insert(), TotemVFATAnalysisMask::fullMask, input, taus_updatedMVAIds_cff::mapping, TotemVFATAnalysisMask::maskedChannels, hltrates_dqm_sourceclient-live_cfg::offset, AlCaHLTBitMon_ParallelJobs::p, TotemRPDetId::planeId(), edm::DetSet< T >::push_back(), AlCaHarvesting_cff::record, and runCommon().

Referenced by Types.EventID::cppID(), Types.LuminosityBlockID::cppID(), and TotemVFATRawToDigi::run().

181  {
182  // structure merging vfat frame data with the mapping
183  map<TotemFramePosition, Record> records;
184 
185  // common processing - frame validation
186  runCommon(input, mapping, records);
187 
188  // second loop over data
189  for (auto &p : records) {
190  Record &record = p.second;
191 
192  // calculate ids
193  TotemRPDetId chipId(record.info->symbolicID.symbolicID);
194  uint8_t chipPosition = chipId.chip();
195  TotemRPDetId detId = chipId.planeId();
196 
197  // update chipPosition in status
198  record.status.setChipPosition(chipPosition);
199 
200  // produce digi only for good frames
201  if (record.status.isOK()) {
202  // find analysis mask (needs a default=no mask, if not in present the mapping)
204  anMa.fullMask = false;
205 
206  auto analysisIter = analysisMask.analysisMask.find(record.info->symbolicID);
207  if (analysisIter != analysisMask.analysisMask.end()) {
208  // if there is some information about masked channels - save it into conversionStatus
209  anMa = analysisIter->second;
210  if (anMa.fullMask)
211  record.status.setFullyMaskedOut();
212  else
213  record.status.setPartiallyMaskedOut();
214  }
215 
216  // create the digi
217  unsigned short offset = chipPosition * 128;
218  const vector<unsigned char> &activeChannels = record.frame->getActiveChannels();
219 
220  for (auto ch : activeChannels) {
221  // skip masked channels
222  if (!anMa.fullMask && anMa.maskedChannels.find(ch) == anMa.maskedChannels.end()) {
223  DetSet<TotemRPDigi> &digiDetSet = rpData.find_or_insert(detId);
224  digiDetSet.emplace_back(offset + ch);
225  }
226  }
227  }
228 
229  // save status
230  DetSet<TotemVFATStatus> &statusDetSet = finalStatus.find_or_insert(detId);
231  statusDetSet.push_back(record.status);
232  }
233 }
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:30
Contains data on masked channels of a VFAT.
void push_back(const T &t)
Definition: DetSet.h:66
void runCommon(const VFATFrameCollection &input, const TotemDAQMapping &mapping, std::map< TotemFramePosition, Record > &records)
Common processing for all VFAT based sub-systems.
static std::string const input
Definition: EdmProvDump.cc:47
decltype(auto) emplace_back(Args &&... args)
Definition: DetSet.h:68
bool fullMask
whether all channels of the VFAT shall be masked
TotemRPDetId planeId() const
Definition: TotemRPDetId.h:62
std::set< unsigned char > maskedChannels
list of channels to be masked

◆ run() [2/3]

void RawToDigiConverter::run ( const VFATFrameCollection coll,
const TotemDAQMapping mapping,
const TotemAnalysisMask mask,
edm::DetSetVector< CTPPSDiamondDigi > &  digi,
edm::DetSetVector< TotemVFATStatus > &  status 
)

Creates Diamond digi.

Definition at line 235 of file RawToDigiConverter.cc.

References edm::DetSet< T >::emplace_back(), edm::DetSetVector< T >::find_or_insert(), pps::diamond::vfat::getHptdcErrorFlag(), pps::diamond::vfat::getLeadingEdgeTime(), pps::diamond::vfat::getMultihit(), pps::diamond::vfat::getThresholdVoltage(), pps::diamond::vfat::getTrailingEdgeTime(), taus_updatedMVAIds_cff::mapping, AlCaHLTBitMon_ParallelJobs::p, edm::DetSet< T >::push_back(), AlCaHarvesting_cff::record, runCommon(), and mps_update::status.

Referenced by Types.EventID::cppID(), and Types.LuminosityBlockID::cppID().

239  {
240  // structure merging vfat frame data with the mapping
241  map<TotemFramePosition, Record> records;
242 
243  // common processing - frame validation
244  runCommon(coll, mapping, records);
245 
246  // second loop over data
247  for (auto &p : records) {
248  Record &record = p.second;
249 
250  // calculate ids
251  CTPPSDiamondDetId detId(record.info->symbolicID.symbolicID);
252 
253  if (record.status.isOK()) {
254  // update Event Counter in status
255  record.status.setEC(record.frame->getEC() & 0xFF);
256 
257  // create the digi
258  DetSet<CTPPSDiamondDigi> &digiDetSet = digi.find_or_insert(detId);
264  }
265 
266  // save status
267  DetSet<TotemVFATStatus> &statusDetSet = status.find_or_insert(detId);
268  statusDetSet.push_back(record.status);
269  }
270 }
uint32_t getLeadingEdgeTime(const VFATFrame &frame)
get timing information for single leading edge
void push_back(const T &t)
Definition: DetSet.h:66
void runCommon(const VFATFrameCollection &input, const TotemDAQMapping &mapping, std::map< TotemFramePosition, Record > &records)
Common processing for all VFAT based sub-systems.
reference find_or_insert(det_id_type id)
Definition: DetSetVector.h:234
VFATFrame::word getMultihit(const VFATFrame &frame)
flag stating whether the HPTDC channel encountered multiple hits
uint32_t getTrailingEdgeTime(const VFATFrame &frame)
get timing information for single trailing edge
VFATFrame::word getHptdcErrorFlag(const VFATFrame &frame)
retrieve the list of error/status flags for the HPTDC when the frame was recorded ...
decltype(auto) emplace_back(Args &&... args)
Definition: DetSet.h:68
uint32_t getThresholdVoltage(const VFATFrame &frame)
retrieve the threshold voltage for this channel
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...

◆ run() [3/3]

void RawToDigiConverter::run ( const VFATFrameCollection coll,
const TotemDAQMapping mapping,
const TotemAnalysisMask mask,
edm::DetSetVector< TotemTimingDigi > &  digi,
edm::DetSetVector< TotemVFATStatus > &  status 
)

Creates Totem Timing digi.

Definition at line 272 of file RawToDigiConverter.cc.

References TotemDAQMapping::TotemTimingPlaneChannelPair::channel, TauDecayModes::dec, dumpTauVariables_cfi::eventInfo, edm::DetSetVector< T >::find_or_insert(), RawToDigiConverter::Record::frame, VFATFrame::getData(), TotemFramePosition::getGOHId(), TotemFramePosition::getIdxInFiber(), TotemFramePosition::getOptoRxId(), TotemFramePosition::getSubSystemId(), TotemFramePosition::getTOTFEDId(), createfilelist::int, taus_updatedMVAIds_cff::mapping, AlCaHLTBitMon_ParallelJobs::p, TotemDAQMapping::TotemTimingPlaneChannelPair::plane, edm::DetSet< T >::push_back(), AlCaHarvesting_cff::record, runCommon(), and verbosity.

Referenced by Types.EventID::cppID(), and Types.LuminosityBlockID::cppID().

276  {
277  // structure merging vfat frame data with the mapping
278  map<TotemFramePosition, Record> records;
279 
280  // common processing - frame validation
281  runCommon(coll, mapping, records);
282 
283  // second loop over data
284  for (auto &p : records) {
285  Record &record = p.second;
286  if (!record.status.isOK())
287  continue;
288 
289  const TotemFramePosition *framepos = &p.first;
290 
291  if (((framepos->getIdxInFiber() % 2) == 0) && (framepos->getIdxInFiber() < 14)) {
292  //corresponding channel data are always in the neighbouring idx in fiber
293 
294  TotemFramePosition frameposdata(framepos->getSubSystemId(),
295  framepos->getTOTFEDId(),
296  framepos->getOptoRxId(),
297  framepos->getGOHId(),
298  (framepos->getIdxInFiber() + 1));
299  TotemFramePosition frameposEvtInfo(
300  framepos->getSubSystemId(), framepos->getTOTFEDId(), framepos->getOptoRxId(), framepos->getGOHId(), 0xe);
301 
302  auto channelwaveformPtr = records.find(frameposdata);
303  auto eventInfoPtr = records.find(frameposEvtInfo);
304 
305  if (channelwaveformPtr != records.end() && eventInfoPtr != records.end()) {
306  Record &channelwaveform = records[frameposdata];
307  Record &eventInfo = records[frameposEvtInfo];
308 
309  // Extract all the waveform information from the raw data
310  TotemSampicFrame totemSampicFrame((const uint8_t *)record.frame->getData(),
311  (const uint8_t *)channelwaveform.frame->getData(),
312  (const uint8_t *)eventInfo.frame->getData());
313 
314  if (totemSampicFrame.valid()) {
315  // create the digi
316  TotemTimingEventInfo eventInfoTmp(totemSampicFrame.getEventHardwareId(),
317  totemSampicFrame.getL1ATimestamp(),
318  totemSampicFrame.getBunchNumber(),
319  totemSampicFrame.getOrbitNumber(),
320  totemSampicFrame.getEventNumber(),
321  totemSampicFrame.getChannelMap(),
322  totemSampicFrame.getL1ALatency(),
323  totemSampicFrame.getNumberOfSentSamples(),
324  totemSampicFrame.getOffsetOfSamples(),
325  totemSampicFrame.getPLLInfo());
326  TotemTimingDigi digiTmp(totemSampicFrame.getHardwareId(),
327  totemSampicFrame.getFPGATimestamp(),
328  totemSampicFrame.getTimestampA(),
329  totemSampicFrame.getTimestampB(),
330  totemSampicFrame.getCellInfo(),
331  totemSampicFrame.getSamples(),
332  eventInfoTmp);
333  // calculate ids
334  TotemTimingDetId detId(record.info->symbolicID.symbolicID);
336  mapping.getTimingChannel(totemSampicFrame.getHardwareId());
337  // for FW Version > 0 plane and channel are encoded in the dataframe
338  if (totemSampicFrame.getFWVersion() == 0) // Mapping not present in HW, read from SW for FW versions == 0
339  {
340  if (SWpair.plane == -1 || SWpair.channel == -1) {
341  if (verbosity > 0)
342  LogWarning("Totem") << "Error in RawToDigiConverter::TotemTiming > "
343  << "HwId not recognized! hwId: " << std::hex
344  << (unsigned int)totemSampicFrame.getHardwareId() << endl;
345  } else {
346  detId.setPlane(SWpair.plane % 4);
347  detId.setChannel(SWpair.channel);
348  }
349  } else // Mapping read from HW, checked by SW
350  {
351  const int HWplane = totemSampicFrame.getDetPlane() % 16;
352  const int HWchannel = totemSampicFrame.getDetChannel() % 16;
353 
354  if (SWpair.plane == -1 || SWpair.channel == -1) {
355  if (verbosity > 0)
356  LogWarning("Totem") << "Warning in RawToDigiConverter::TotemTiming > "
357  << "HwId not recognized! hwId: " << std::hex
358  << (unsigned int)totemSampicFrame.getHardwareId()
359  << "\tUsing plane and ch from HW without check!" << endl;
360  } else {
361  if (verbosity > 0 && (SWpair.plane != HWplane || SWpair.channel != HWchannel))
362  LogWarning("Totem") << "Warning in RawToDigiConverter::TotemTiming > "
363  << "Hw mapping different from SW mapping. hwId: " << std::hex
364  << (unsigned int)totemSampicFrame.getHardwareId() << "HW: " << std::dec << HWplane
365  << ":" << HWchannel << "\tSW " << SWpair.plane << ":" << SWpair.channel
366  << "\tUsing plane and ch from HW!" << endl;
367  }
368  detId.setPlane(HWplane % 4);
369  detId.setChannel(HWchannel);
370  }
371 
372  DetSet<TotemTimingDigi> &digiDetSet = digi.find_or_insert(detId);
373  digiDetSet.push_back(digiTmp);
374  }
375  }
376  }
377  }
378 }
void push_back(const T &t)
Definition: DetSet.h:66
void runCommon(const VFATFrameCollection &input, const TotemDAQMapping &mapping, std::map< TotemFramePosition, Record > &records)
Common processing for all VFAT based sub-systems.
unsigned short getOptoRxId() const
reference find_or_insert(det_id_type id)
Definition: DetSetVector.h:234
unsigned short getSubSystemId() const
the getters and setters below are deprecated
unsigned short getTOTFEDId() const
unsigned short getGOHId() const
Hw Id mapping for Totem Timing (dynamical mapping in Sampic)
unsigned char verbosity
unsigned short getIdxInFiber() const
eventInfo
add run, event number and lumi section
Log< level::Warning, false > LogWarning
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...

◆ runCommon()

void RawToDigiConverter::runCommon ( const VFATFrameCollection input,
const TotemDAQMapping mapping,
std::map< TotemFramePosition, Record > &  records 
)
private

Common processing for all VFAT based sub-systems.

Definition at line 40 of file RawToDigiConverter.cc.

References CounterChecker::Analyze(), BC_fraction, BC_min, CounterChecker::BCChecker, TauDecayModes::dec, EC_fraction, EC_min, CounterChecker::ECChecker, errorSummary, CounterChecker::Fill(), input, VFATFrameCollection::Iterator::IsEnd(), visualization-live-secondInstance_cfg::m, taus_updatedMVAIds_cff::mapping, AlCaHLTBitMon_ParallelJobs::p, printErrorSummary, AlCaHarvesting_cff::record, TotemVFATStatus::setMissing(), testBCMostFrequent, testCRC, testECMostFrequent, testFootprint, testID, tfErr, tfNoTest, unknownSummary, and verbosity.

Referenced by run().

42  {
43  // EC and BC checks (wrt. the most frequent value), BC checks per subsystem
46 
47  // initialise structure merging vfat frame data with the mapping
48  for (auto &p : mapping.VFATMapping) {
49  TotemVFATStatus st;
50  st.setMissing(true);
51  records[p.first] = {&p.second, nullptr, st};
52  }
53 
54  // event error message buffer
55  stringstream ees;
56 
57  // associate data frames with records
58  for (VFATFrameCollection::Iterator fr(&input); !fr.IsEnd(); fr.Next()) {
59  // frame error message buffer
60  stringstream fes;
61 
62  bool problemsPresent = false;
63  bool stopProcessing = false;
64 
65  // skip data frames not listed in the DAQ mapping
66  auto records_it = records.find(fr.Position());
67  if (records_it == records.end()) {
68  unknownSummary[fr.Position()]++;
69  continue;
70  }
71 
72  // update record
73  Record &record = records_it->second;
74  record.frame = fr.Data();
75  record.status.setMissing(false);
76  record.status.setNumberOfClustersSpecified(record.frame->isNumberOfClustersPresent());
77  record.status.setNumberOfClusters(record.frame->getNumberOfClusters());
78 
79  // check footprint
80  if (testFootprint != tfNoTest && !record.frame->checkFootprint()) {
81  problemsPresent = true;
82 
83  if (verbosity > 0)
84  fes << " invalid footprint" << endl;
85 
86  if (testFootprint == tfErr) {
87  record.status.setFootprintError();
88  stopProcessing = true;
89  }
90  }
91 
92  // check CRC
93  if (testCRC != tfNoTest && !record.frame->checkCRC()) {
94  problemsPresent = true;
95 
96  if (verbosity > 0)
97  fes << " CRC failure" << endl;
98 
99  if (testCRC == tfErr) {
100  record.status.setCRCError();
101  stopProcessing = true;
102  }
103  }
104 
105  // check the id mismatch
106  if (testID != tfNoTest && record.frame->isIDPresent() &&
107  (record.frame->getChipID() & 0xFFF) != (record.info->hwID & 0xFFF)) {
108  if (verbosity > 0)
109  fes << " ID mismatch (data: 0x" << hex << record.frame->getChipID() << ", mapping: 0x" << record.info->hwID
110  << dec << ", symbId: " << record.info->symbolicID.symbolicID << ")" << endl;
111 
112  if (testID == tfErr) {
113  record.status.setIDMismatch();
114  stopProcessing = true;
115  }
116  }
117 
118  // if there were errors, put the information to ees buffer
119  if (verbosity > 0 && problemsPresent) {
120  string message = (stopProcessing) ? "(and will be dropped)" : "(but will be used though)";
121  if (verbosity > 2) {
122  ees << " Frame at " << fr.Position() << " seems corrupted " << message << ":" << endl;
123  ees << fes.rdbuf();
124  } else
125  ees << " Frame at " << fr.Position() << " seems corrupted " << message << "." << endl;
126  }
127 
128  // if there were serious errors, do not process this frame
129  if (stopProcessing)
130  continue;
131 
132  // fill EC and BC values to the statistics
133  if (fr.Data()->isECPresent())
134  ECChecker.Fill(fr.Data()->getEC(), fr.Position());
135 
136  if (fr.Data()->isBCPresent())
137  BCChecker.Fill(fr.Data()->getBC(), fr.Position());
138  }
139 
140  // analyze EC and BC statistics
142  ECChecker.Analyze(records, (testECMostFrequent == tfErr), ees);
143 
145  BCChecker.Analyze(records, (testBCMostFrequent == tfErr), ees);
146 
147  // add error message for missing frames
148  if (verbosity > 1) {
149  for (const auto &p : records) {
150  if (p.second.status.isMissing())
151  ees << "Frame for VFAT " << p.first << " is not present in the data." << endl;
152  }
153  }
154 
155  // print error message
156  if (verbosity > 0 && !ees.rdbuf()->str().empty()) {
157  if (verbosity > 1)
158  LogWarning("Totem") << "Error in RawToDigiConverter::runCommon > "
159  << "event contains the following problems:" << endl
160  << ees.rdbuf() << endl;
161  else
162  LogWarning("Totem") << "Error in RawToDigiConverter::runCommon > "
163  << "event contains problems." << endl;
164  }
165 
166  // increase error counters
167  if (printErrorSummary) {
168  for (const auto &it : records) {
169  if (!it.second.status.isOK()) {
170  auto &m = errorSummary[it.first];
171  m[it.second.status]++;
172  }
173  }
174  }
175 }
unsigned int testECMostFrequent
unsigned int printErrorSummary
Class for finding the most popular both EC and BC counter, and filling the conversion status &#39;wrong E...
unsigned int testFootprint
flags for which tests to run
static std::string const input
Definition: EdmProvDump.cc:47
the VFATFrameCollection interator
void setMissing(bool val=true)
unsigned char verbosity
std::map< TotemFramePosition, unsigned int > unknownSummary
unsigned int testBCMostFrequent
std::map< TotemFramePosition, std::map< TotemVFATStatus, unsigned int > > errorSummary
error summaries
bool IsEnd()
returns whether the iterator points over the end of the collection
double EC_fraction
the minimal required (relative) occupancy of the most frequent counter value to be accepted ...
Log< level::Warning, false > LogWarning
unsigned int EC_min
the minimal required number of frames to determine the most frequent counter value ...

Member Data Documentation

◆ BC_fraction

double RawToDigiConverter::BC_fraction
private

Definition at line 81 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ BC_min

unsigned int RawToDigiConverter::BC_min
private

Definition at line 78 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ EC_fraction

double RawToDigiConverter::EC_fraction
private

the minimal required (relative) occupancy of the most frequent counter value to be accepted

Definition at line 81 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ EC_min

unsigned int RawToDigiConverter::EC_min
private

the minimal required number of frames to determine the most frequent counter value

Definition at line 78 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ errorSummary

std::map<TotemFramePosition, std::map<TotemVFATStatus, unsigned int> > RawToDigiConverter::errorSummary
private

error summaries

Definition at line 84 of file RawToDigiConverter.h.

Referenced by printSummaries(), and runCommon().

◆ printErrorSummary

unsigned int RawToDigiConverter::printErrorSummary
private

Definition at line 63 of file RawToDigiConverter.h.

Referenced by printSummaries(), and runCommon().

◆ printUnknownFrameSummary

unsigned int RawToDigiConverter::printUnknownFrameSummary
private

Definition at line 64 of file RawToDigiConverter.h.

Referenced by printSummaries().

◆ testBCMostFrequent

unsigned int RawToDigiConverter::testBCMostFrequent
private

Definition at line 75 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ testCRC

unsigned int RawToDigiConverter::testCRC
private

Definition at line 70 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ testECDAQ

unsigned int RawToDigiConverter::testECDAQ
private

Definition at line 73 of file RawToDigiConverter.h.

◆ testECMostFrequent

unsigned int RawToDigiConverter::testECMostFrequent
private

Definition at line 74 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ testECRaw

unsigned int RawToDigiConverter::testECRaw
private

Definition at line 72 of file RawToDigiConverter.h.

◆ testFootprint

unsigned int RawToDigiConverter::testFootprint
private

flags for which tests to run

Definition at line 69 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ testID

unsigned int RawToDigiConverter::testID
private

Definition at line 71 of file RawToDigiConverter.h.

Referenced by runCommon().

◆ unknownSummary

std::map<TotemFramePosition, unsigned int> RawToDigiConverter::unknownSummary
private

Definition at line 85 of file RawToDigiConverter.h.

Referenced by printSummaries(), and runCommon().

◆ verbosity

unsigned char RawToDigiConverter::verbosity
private

Definition at line 61 of file RawToDigiConverter.h.

Referenced by run(), and runCommon().