CMS 3D CMS Logo

RawToDigiConverter.cc
Go to the documentation of this file.
1 /****************************************************************************
2 *
3 * This is a part of TOTEM offline software.
4 * Authors:
5 * Jan Kašpar (jan.kaspar@gmail.com)
6 * Seyed Mohsen Etesami (setesami@cern.ch)
7 ****************************************************************************/
8 
10 
15 
19 
20 using namespace std;
21 using namespace edm;
22 
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)) {}
39 
41  const TotemDAQMapping &mapping,
42  map<TotemFramePosition, RawToDigiConverter::Record> &records) {
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  // check the id mismatch
105  if (testID != tfNoTest && record.frame->isIDPresent() &&
106  (record.frame->getChipID() & 0xFFF) != (record.info->hwID & 0xFFF)) {
107  if (verbosity > 0)
108  fes << " ID mismatch (data: 0x" << hex << record.frame->getChipID() << ", mapping: 0x" << record.info->hwID
109  << dec << ", symbId: " << record.info->symbolicID.symbolicID << ")" << endl;
110 
111  if (testID == tfErr) {
112  record.status.setIDMismatch();
113  stopProcessing = true;
114  }
115  }
116 
117  // if there were errors, put the information to ees buffer
118  if (verbosity > 0 && problemsPresent) {
119  string message = (stopProcessing) ? "(and will be dropped)" : "(but will be used though)";
120  if (verbosity > 2) {
121  ees << " Frame at " << fr.Position() << " seems corrupted " << message << ":" << endl;
122  ees << fes.rdbuf();
123  } else
124  ees << " Frame at " << fr.Position() << " seems corrupted " << message << "." << endl;
125  }
126 
127  // if there were serious errors, do not process this frame
128  if (stopProcessing)
129  continue;
130 
131  // fill EC and BC values to the statistics
132  if (fr.Data()->isECPresent())
133  ECChecker.Fill(fr.Data()->getEC(), fr.Position());
134 
135  if (fr.Data()->isBCPresent())
136  BCChecker.Fill(fr.Data()->getBC(), fr.Position());
137  }
138 
139  // analyze EC and BC statistics
141  ECChecker.Analyze(records, (testECMostFrequent == tfErr), ees);
142 
144  BCChecker.Analyze(records, (testBCMostFrequent == tfErr), ees);
145 
146  // add error message for missing frames
147  if (verbosity > 1) {
148  for (const auto &p : records) {
149  if (p.second.status.isMissing())
150  ees << "Frame for VFAT " << p.first << " is not present in the data." << endl;
151  }
152  }
153 
154  // print error message
155  if (verbosity > 0 && !ees.rdbuf()->str().empty()) {
156  if (verbosity > 1)
157  LogWarning("Totem") << "Error in RawToDigiConverter::runCommon > "
158  << "event contains the following problems:" << endl
159  << ees.rdbuf() << endl;
160  else
161  LogWarning("Totem") << "Error in RawToDigiConverter::runCommon > "
162  << "event contains problems." << endl;
163  }
164 
165  // increase error counters
166  if (printErrorSummary) {
167  for (const auto &it : records) {
168  if (!it.second.status.isOK()) {
169  auto &m = errorSummary[it.first];
170  m[it.second.status]++;
171  }
172  }
173  }
174 }
175 
177  const TotemDAQMapping &mapping,
178  const TotemAnalysisMask &analysisMask,
180  DetSetVector<TotemVFATStatus> &finalStatus) {
181  // structure merging vfat frame data with the mapping
182  map<TotemFramePosition, Record> records;
183 
184  // common processing - frame validation
185  runCommon(input, mapping, records);
186 
187  // second loop over data
188  for (auto &p : records) {
189  Record &record = p.second;
190 
191  // calculate ids
192  TotemRPDetId chipId(record.info->symbolicID.symbolicID);
193  uint8_t chipPosition = chipId.chip();
194  TotemRPDetId detId = chipId.planeId();
195 
196  // update chipPosition in status
197  record.status.setChipPosition(chipPosition);
198 
199  // produce digi only for good frames
200  if (record.status.isOK()) {
201  // find analysis mask (needs a default=no mask, if not in present the mapping)
203  anMa.fullMask = false;
204 
205  auto analysisIter = analysisMask.analysisMask.find(record.info->symbolicID);
206  if (analysisIter != analysisMask.analysisMask.end()) {
207  // if there is some information about masked channels - save it into conversionStatus
208  anMa = analysisIter->second;
209  if (anMa.fullMask)
210  record.status.setFullyMaskedOut();
211  else
212  record.status.setPartiallyMaskedOut();
213  }
214 
215  // create the digi
216  unsigned short offset = chipPosition * 128;
217  const vector<unsigned char> &activeChannels = record.frame->getActiveChannels();
218 
219  for (auto ch : activeChannels) {
220  // skip masked channels
221  if (!anMa.fullMask && anMa.maskedChannels.find(ch) == anMa.maskedChannels.end()) {
222  DetSet<TotemRPDigi> &digiDetSet = rpData.find_or_insert(detId);
223  digiDetSet.emplace_back(offset + ch);
224  }
225  }
226  }
227 
228  // save status
229  DetSet<TotemVFATStatus> &statusDetSet = finalStatus.find_or_insert(detId);
230  statusDetSet.push_back(record.status);
231  }
232 }
233 
235  const TotemDAQMapping &mapping,
236  const TotemAnalysisMask &mask,
239  // structure merging vfat frame data with the mapping
240  map<TotemFramePosition, Record> records;
241 
242  // common processing - frame validation
243  runCommon(coll, mapping, records);
244 
245  // second loop over data
246  for (auto &p : records) {
247  Record &record = p.second;
248 
249  // calculate ids
250  CTPPSDiamondDetId detId(record.info->symbolicID.symbolicID);
251 
252  if (record.status.isOK()) {
253  // update Event Counter in status
254  record.status.setEC(record.frame->getEC() & 0xFF);
255 
256  // create the digi
257  DetSet<CTPPSDiamondDigi> &digiDetSet = digi.find_or_insert(detId);
263  }
264 
265  // save status
266  DetSet<TotemVFATStatus> &statusDetSet = status.find_or_insert(detId);
267  statusDetSet.push_back(record.status);
268  }
269 }
270 
272  const TotemDAQMapping &mapping,
273  const TotemAnalysisMask &mask,
276  // structure merging vfat frame data with the mapping
277  map<TotemFramePosition, Record> records;
278 
279  // common processing - frame validation
280  runCommon(coll, mapping, records);
281 
282  // second loop over data
283  for (auto &p : records) {
284  Record &record = p.second;
285  if (!record.status.isOK())
286  continue;
287 
288  const TotemFramePosition *framepos = &p.first;
289 
290  if (((framepos->getIdxInFiber() % 2) == 0) && (framepos->getIdxInFiber() < 14)) {
291  //corresponding channel data are always in the neighbouring idx in fiber
292 
293  TotemFramePosition frameposdata(framepos->getSubSystemId(),
294  framepos->getTOTFEDId(),
295  framepos->getOptoRxId(),
296  framepos->getGOHId(),
297  (framepos->getIdxInFiber() + 1));
298  TotemFramePosition frameposEvtInfo(
299  framepos->getSubSystemId(), framepos->getTOTFEDId(), framepos->getOptoRxId(), framepos->getGOHId(), 0xe);
300 
301  auto channelwaveformPtr = records.find(frameposdata);
302  auto eventInfoPtr = records.find(frameposEvtInfo);
303 
304  if (channelwaveformPtr != records.end() && eventInfoPtr != records.end()) {
305  Record &channelwaveform = records[frameposdata];
306  Record &eventInfo = records[frameposEvtInfo];
307 
308  // Extract all the waveform information from the raw data
309  TotemSampicFrame totemSampicFrame((const uint8_t *)record.frame->getData(),
310  (const uint8_t *)channelwaveform.frame->getData(),
311  (const uint8_t *)eventInfo.frame->getData());
312 
313  if (totemSampicFrame.valid()) {
314  // create the digi
315  TotemTimingEventInfo eventInfoTmp(totemSampicFrame.getEventHardwareId(),
316  totemSampicFrame.getL1ATimestamp(),
317  totemSampicFrame.getBunchNumber(),
318  totemSampicFrame.getOrbitNumber(),
319  totemSampicFrame.getEventNumber(),
320  totemSampicFrame.getChannelMap(),
321  totemSampicFrame.getL1ALatency(),
322  totemSampicFrame.getNumberOfSentSamples(),
323  totemSampicFrame.getOffsetOfSamples(),
324  totemSampicFrame.getPLLInfo());
325  TotemTimingDigi digiTmp(totemSampicFrame.getHardwareId(),
326  totemSampicFrame.getFPGATimestamp(),
327  totemSampicFrame.getTimestampA(),
328  totemSampicFrame.getTimestampB(),
329  totemSampicFrame.getCellInfo(),
330  totemSampicFrame.getSamples(),
331  eventInfoTmp);
332  // calculate ids
333  TotemTimingDetId detId(record.info->symbolicID.symbolicID);
334 
336  mapping.getTimingChannel(totemSampicFrame.getHardwareId());
337  // for FW Version > 0 plane and channel are encoded in the dataframe
338  if (totemSampicFrame.getFWVersion() < 0x30) // Mapping not present in HW, read from SW for FW versions < 3.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  detId.setRP(SWpair.plane / 4); // Top:0 or Bottom:1
349  }
350  } else // Mapping read from HW, checked by SW
351  {
352  const int HWplane = totemSampicFrame.getDetPlane() % 16;
353  const int HWchannel = totemSampicFrame.getDetChannel() % 16;
354 
355  if (SWpair.plane == -1 || SWpair.channel == -1) {
356  if (verbosity > 0)
357  LogWarning("Totem") << "Warning in RawToDigiConverter::TotemTiming > "
358  << "HwId not recognized! hwId: " << std::hex
359  << (unsigned int)totemSampicFrame.getHardwareId()
360  << "\tUsing plane and ch from HW without check!" << endl;
361  } else {
362  if (verbosity > 0 && (SWpair.plane != HWplane || SWpair.channel != HWchannel))
363  LogWarning("Totem") << "Warning in RawToDigiConverter::TotemTiming > "
364  << "Hw mapping different from SW mapping. hwId: " << std::hex
365  << (unsigned int)totemSampicFrame.getHardwareId() << "HW: " << std::dec << HWplane
366  << ":" << HWchannel << "\tSW " << SWpair.plane << ":" << SWpair.channel
367  << "\tUsing plane and ch from HW!" << endl;
368  }
369  detId.setPlane(HWplane % 4);
370  detId.setChannel(HWchannel);
371  detId.setRP(HWplane / 4); // Top:0 or Bottom:1
372  }
373 
374  DetSet<TotemTimingDigi> &digiDetSet = digi.find_or_insert(detId);
375  digiDetSet.push_back(digiTmp);
376  }
377  }
378  }
379  }
380 }
381 
383  // print error summary
384  if (printErrorSummary) {
385  if (!errorSummary.empty()) {
386  stringstream ees;
387  for (const auto &vit : errorSummary) {
388  ees << vit.first << endl;
389 
390  for (const auto &it : vit.second)
391  ees << " " << it.first << " : " << it.second << endl;
392  }
393 
394  LogWarning("Totem") << "RawToDigiConverter: error summary (error signature : number of such events)\n"
395  << endl
396  << ees.rdbuf();
397  } else {
398  LogInfo("Totem") << "RawToDigiConverter: no errors to be reported.";
399  }
400  }
401 
402  // print summary of unknown frames (found in data but not in the mapping)
404  if (!unknownSummary.empty()) {
405  stringstream ees;
406  for (const auto &it : unknownSummary)
407  ees << " " << it.first << " : " << it.second << endl;
408 
409  LogWarning("Totem")
410  << "RawToDigiConverter: frames found in data, but not in the mapping (frame position : number of events)\n"
411  << endl
412  << ees.rdbuf();
413  } else {
414  LogInfo("Totem") << "RawToDigiConverter: no unknown frames to be reported.";
415  }
416  }
417 }
edm::DetSet::push_back
void push_back(const T &t)
Definition: DetSet.h:66
HIPAlignmentAlgorithm_cfi.verbosity
verbosity
Definition: HIPAlignmentAlgorithm_cfi.py:7
edm::DetSetVector
Definition: DetSetVector.h:61
VFATFrameCollection::Iterator
the VFATFrameCollection interator
Definition: VFATFrameCollection.h:49
input
static const std::string input
Definition: EdmProvDump.cc:48
MessageLogger.h
RawToDigiConverter::Record::frame
const VFATFrame * frame
Definition: RawToDigiConverter.h:61
TotemVFATAnalysisMask::fullMask
bool fullMask
whether all channels of the VFAT shall be masked
Definition: TotemAnalysisMask.h:33
RawToDigiConverter::verbosity
unsigned char verbosity
Definition: RawToDigiConverter.h:65
totemVFATRawToDigi_cfi.EC_fraction
EC_fraction
Definition: totemVFATRawToDigi_cfi.py:39
edm::DetSet
Definition: DetSet.h:23
RawToDigiConverter.h
mps_update.status
status
Definition: mps_update.py:69
RawToDigiConverter::testBCMostFrequent
unsigned int testBCMostFrequent
Definition: RawToDigiConverter.h:79
edm
HLT enums.
Definition: AlignableModifier.h:19
RawToDigiConverter::Record
Definition: RawToDigiConverter.h:59
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
totemVFATRawToDigi_cfi.BC_min
BC_min
Definition: totemVFATRawToDigi_cfi.py:36
GlobalPosition_Frontier_DevDB_cff.record
record
Definition: GlobalPosition_Frontier_DevDB_cff.py:10
TotemVFATStatus::setMissing
void setMissing(bool val=true)
Definition: TotemVFATStatus.h:37
TotemRPDetId::planeId
TotemRPDetId planeId() const
Definition: TotemRPDetId.h:67
totemTimingRawToDigi_cfi.testID
testID
Definition: totemTimingRawToDigi_cfi.py:18
RawToDigiConverter::printErrorSummary
unsigned int printErrorSummary
Definition: RawToDigiConverter.h:67
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
RawToDigiConverter::testCRC
unsigned int testCRC
Definition: RawToDigiConverter.h:74
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
TotemFramePosition::getTOTFEDId
unsigned short getTOTFEDId() const
Definition: TotemFramePosition.h:96
totemTimingRawToDigi_cfi.printUnknownFrameSummary
printUnknownFrameSummary
Definition: totemTimingRawToDigi_cfi.py:26
TotemFramePosition::getOptoRxId
unsigned short getOptoRxId() const
Definition: TotemFramePosition.h:104
TotemSampicFrame.h
VFATFrameCollection::Iterator::IsEnd
bool IsEnd()
returns whether the iterator points over the end of the collection
Definition: VFATFrameCollection.h:74
RawToDigiConverter::EC_fraction
double EC_fraction
the minimal required (relative) occupancy of the most frequent counter value to be accepted
Definition: RawToDigiConverter.h:85
RawToDigiConverter::testID
unsigned int testID
Definition: RawToDigiConverter.h:75
totemVFATRawToDigi_cfi.EC_min
EC_min
Definition: totemVFATRawToDigi_cfi.py:35
CounterChecker
Class for finding the most popular both EC and BC counter, and filling the conversion status 'wrong E...
Definition: CounterChecker.h:25
TotemAnalysisMask::analysisMask
std::map< TotemSymbID, TotemVFATAnalysisMask > analysisMask
Definition: TotemAnalysisMask.h:40
TotemTimingDigi
Definition: TotemTimingDigi.h:19
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
TotemTimingDetId.h
TotemFramePosition::getSubSystemId
unsigned short getSubSystemId() const
the getters and setters below are deprecated
Definition: TotemFramePosition.h:88
RawToDigiConverter::EC_min
unsigned int EC_min
the minimal required number of frames to determine the most frequent counter value
Definition: RawToDigiConverter.h:82
TotemDAQMapping
The mapping between FramePosition and VFATInfo.
Definition: TotemDAQMapping.h:39
RawToDigiConverter::run
void run(const VFATFrameCollection &coll, const TotemDAQMapping &mapping, const TotemAnalysisMask &mask, edm::DetSetVector< TotemRPDigi > &digi, edm::DetSetVector< TotemVFATStatus > &status)
Creates RP digi.
Definition: RawToDigiConverter.cc:176
totemTimingRawToDigi_cfi.testFootprint
testFootprint
Definition: totemTimingRawToDigi_cfi.py:16
TotemDAQMapping::TotemTimingPlaneChannelPair
Hw Id mapping for Totem Timing (dynamical mapping in Sampic)
Definition: TotemDAQMapping.h:44
TotemFramePosition::getIdxInFiber
unsigned short getIdxInFiber() const
Definition: TotemFramePosition.h:78
VFATFrame::getData
VFATFrame::word * getData()
Definition: VFATFrame.h:42
pps::diamond::vfat::getLeadingEdgeTime
uint32_t getLeadingEdgeTime(const VFATFrame &frame)
get timing information for single leading edge
Definition: DiamondVFATFrame.h:32
TotemSampicFrame
Definition: TotemSampicFrame.h:69
pps::diamond::vfat::getMultihit
VFATFrame::word getMultihit(const VFATFrame &frame)
flag stating whether the HPTDC channel encountered multiple hits
Definition: DiamondVFATFrame.h:46
TotemTimingDetId
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...
Definition: TotemTimingDetId.h:26
CTPPSDiamondDetId.h
CounterChecker::BCChecker
Definition: CounterChecker.h:37
RawToDigiConverter::tfNoTest
Definition: RawToDigiConverter.h:70
CTPPSDiamondDetId
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
Definition: CTPPSDiamondDetId.h:24
edm::ParameterSet
Definition: ParameterSet.h:47
TotemRPDetId::chip
uint32_t chip() const
Definition: TotemRPDetId.h:58
TotemFramePosition::getGOHId
unsigned short getGOHId() const
Definition: TotemFramePosition.h:70
edm::DetSet::emplace_back
decltype(auto) emplace_back(Args &&... args)
Definition: DetSet.h:68
TotemDAQMapping::TotemTimingPlaneChannelPair::plane
int plane
Definition: TotemDAQMapping.h:45
TotemFramePosition
Definition: TotemFramePosition.h:31
RawToDigiConverter::BC_min
unsigned int BC_min
Definition: RawToDigiConverter.h:82
CounterChecker::ECChecker
Definition: CounterChecker.h:37
createfilelist.int
int
Definition: createfilelist.py:10
TotemAnalysisMask
Channel-mask mapping.
Definition: TotemAnalysisMask.h:38
RawToDigiConverter::runCommon
void runCommon(const VFATFrameCollection &input, const TotemDAQMapping &mapping, std::map< TotemFramePosition, Record > &records)
Common processing for all VFAT based sub-systems.
Definition: RawToDigiConverter.cc:40
TotemVFATStatus
Definition: TotemVFATStatus.h:20
TotemTimingEventInfo
Definition: TotemTimingEventInfo.h:17
RawToDigiConverter::tfErr
Definition: RawToDigiConverter.h:70
dumpTauVariables_cfi.eventInfo
eventInfo
add run, event number and lumi section
Definition: dumpTauVariables_cfi.py:12
RawToDigiConverter::RawToDigiConverter
RawToDigiConverter(const edm::ParameterSet &conf)
Definition: RawToDigiConverter.cc:23
DiamondVFATFrame.h
std
Definition: JetResolutionObject.h:76
ctppsDiamondRawToDigi_cfi.testECMostFrequent
testECMostFrequent
Definition: ctppsDiamondRawToDigi_cfi.py:9
totemTimingRawToDigi_cfi.printErrorSummary
printErrorSummary
Definition: totemTimingRawToDigi_cfi.py:23
pps::diamond::vfat::getTrailingEdgeTime
uint32_t getTrailingEdgeTime(const VFATFrame &frame)
get timing information for single trailing edge
Definition: DiamondVFATFrame.h:37
RawToDigiConverter::testFootprint
unsigned int testFootprint
flags for which tests to run
Definition: RawToDigiConverter.h:73
ctppsDiamondRawToDigi_cfi.testCRC
testCRC
Definition: ctppsDiamondRawToDigi_cfi.py:8
pps::diamond::vfat::getThresholdVoltage
uint32_t getThresholdVoltage(const VFATFrame &frame)
retrieve the threshold voltage for this channel
Definition: DiamondVFATFrame.h:42
CounterChecker.h
CounterChecker::Analyze
void Analyze(T &status, bool error, std::ostream &es)
summarizes and fill the status (wrong EC and BC progress error for some frames)
Definition: CounterChecker.h:84
TotemRPDetId.h
totemTimingRawToDigi_cfi.testBCMostFrequent
testBCMostFrequent
Definition: totemTimingRawToDigi_cfi.py:20
RawToDigiConverter::unknownSummary
std::map< TotemFramePosition, unsigned int > unknownSummary
Definition: RawToDigiConverter.h:89
TotemDAQMapping::TotemTimingPlaneChannelPair::channel
int channel
Definition: TotemDAQMapping.h:46
edm::DetSetVector::find_or_insert
reference find_or_insert(det_id_type id)
Definition: DetSetVector.h:234
pps::diamond::vfat::getHptdcErrorFlag
VFATFrame::word getHptdcErrorFlag(const VFATFrame &frame)
retrieve the list of error/status flags for the HPTDC when the frame was recorded
Definition: DiamondVFATFrame.h:48
VFATFrameCollection
Definition: VFATFrameCollection.h:20
RawToDigiConverter::testECMostFrequent
unsigned int testECMostFrequent
Definition: RawToDigiConverter.h:78
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
RawToDigiConverter::printUnknownFrameSummary
unsigned int printUnknownFrameSummary
Definition: RawToDigiConverter.h:68
CounterChecker::Fill
void Fill(word counter, TotemFramePosition fr)
add new value to map, counter takes value of EC or BC number
Definition: CounterChecker.cc:14
taus_updatedMVAIds_cff.mapping
mapping
Definition: taus_updatedMVAIds_cff.py:29
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
TotemRPDetId
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:29
TotemVFATAnalysisMask
Contains data on masked channels of a VFAT.
Definition: TotemAnalysisMask.h:22
RawToDigiConverter::printSummaries
void printSummaries() const
Print error summaries.
Definition: RawToDigiConverter.cc:382
RawToDigiConverter::BC_fraction
double BC_fraction
Definition: RawToDigiConverter.h:85
RawToDigiConverter::errorSummary
std::map< TotemFramePosition, std::map< TotemVFATStatus, unsigned int > > errorSummary
error summaries
Definition: RawToDigiConverter.h:88
totemVFATRawToDigi_cfi.BC_fraction
BC_fraction
Definition: totemVFATRawToDigi_cfi.py:40
TotemVFATAnalysisMask::maskedChannels
std::set< unsigned char > maskedChannels
list of channels to be masked
Definition: TotemAnalysisMask.h:36