CMS 3D CMS Logo

DCCSRPBlock.cc
Go to the documentation of this file.
5 
8  // Todo : include data integrity collections
10  // Set SR flags to zero
11  for (unsigned int i = 0; i < SRP_NUMBFLAGS; i++) {
12  srFlags_[i] = 0;
13  }
14 }
15 
16 int DCCSRPBlock::unpack(const uint64_t** data, unsigned int* dwToEnd, unsigned int numbFlags) {
17  // Set SR flags to zero
18  for (unsigned int i = 0; i < SRP_NUMBFLAGS; i++) {
19  srFlags_[i] = 0;
20  }
21 
22  expNumbSrFlags_ = numbFlags;
23  error_ = false;
24  datap_ = data;
25  data_ = *data;
26  dwToEnd_ = dwToEnd;
27 
28  // Check SRP Length
29  if ((*dwToEnd_) < blockLength_) {
31  edm::LogWarning("IncorrectEvent") << "\n Event " << l1_ << "\n Unable to unpack SRP block for event "
32  << event_->l1A() << " in fed <<" << mapper_->getActiveDCC() << "\n Only "
33  << ((*dwToEnd_) * 8) << " bytes are available while " << (blockLength_ * 8)
34  << " are needed!";
35  }
36 
37  //Note : add to error collection
38 
39  return STOP_EVENT_UNPACKING;
40  }
41 
42  // Point to begin of block
43  data_++;
44 
45  srpId_ = (*data_) & SRP_ID_MASK;
46  bx_ = (*data_ >> SRP_BX_B) & SRP_BX_MASK;
47  l1_ = (*data_ >> SRP_L1_B) & SRP_L1_MASK;
49 
51 
52  if (!checkSrpIdAndNumbSRFlags()) {
54  //return STOP_EVENT_UNPACKING;
56  return SKIP_BLOCK_UNPACKING;
57  }
58 
59  // Check synchronization
60  if (sync_) {
61  const unsigned int dccL1 = (event_->l1A()) & SRP_L1_MASK;
62  const unsigned int dccBx = (event_->bx()) & SRP_BX_MASK;
63  const unsigned int fov = (event_->fov()) & H_FOV_MASK;
64 
65  if (!isSynced(dccBx, bx_, dccL1, l1_, TCC_SRP, fov)) {
67  edm::LogWarning("IncorrectEvent")
68  << "Synchronization error for SRP block"
69  << " (L1A " << event_->l1A() << " bx " << event_->bx() << " fed " << mapper_->getActiveDCC() << ")\n"
70  << " dccBx = " << dccBx << " bx_ = " << bx_ << " dccL1 = " << dccL1 << " l1_ = " << l1_ << "\n"
71  << " => Stop event unpacking";
72  }
73  //Note : add to error collection ?
75  // return STOP_EVENT_UNPACKING;
77  return SKIP_BLOCK_UNPACKING;
78  }
79  }
80 
81  // initialize array, protecting in case of inconsistently formatted data
82  for (int dccCh = 0; dccCh < SRP_NUMBFLAGS; dccCh++)
83  srFlags_[dccCh] = 0;
84 
85  //display(cout);
87 
89 
90  return true;
91 }
92 
93 void DCCSRPBlock::display(std::ostream& o) {
94  o << "\n Unpacked Info for SRP Block"
95  << "\n DW1 ============================="
96  << "\n SRP Id " << srpId_ << "\n Numb Flags " << nSRFlags_ << "\n Bx " << bx_ << "\n L1 " << l1_;
97 
98  for (unsigned int i = 0; i < SRP_NUMBFLAGS; i++) {
99  o << "\n SR flag " << (i + 1) << " = " << (srFlags_[i]);
100  }
101 }
SiPixelPI::unpack
std::pair< unsigned int, unsigned int > unpack(cond::Time_t since)
Definition: SiPixelPayloadInspectorHelper.h:44
DCCDataBlockPrototype::dwToEnd_
unsigned int * dwToEnd_
Definition: DCCDataBlockPrototype.h:74
DCCDataUnpacker.h
DCCEventBlock
Definition: DCCEventBlock.h:29
DCCEventBlock::setSRPSyncNumbers
void setSRPSyncNumbers(short l1, short bx)
Definition: DCCEventBlock.h:61
mps_fire.i
i
Definition: mps_fire.py:355
SRP_ID_MASK
Definition: DCCRawDataDefinitions.h:198
SKIP_BLOCK_UNPACKING
Definition: DCCRawDataDefinitions.h:7
DCCSRPBlock::srFlags_
unsigned short srFlags_[SRP_NUMBFLAGS]
Definition: DCCSRPBlock.h:51
DCCSRPBlock::nSRFlags_
unsigned int nSRFlags_
Definition: DCCSRPBlock.h:48
DCCDataBlockPrototype::data_
const uint64_t * data_
Definition: DCCDataBlockPrototype.h:73
DCCSRPBlock::expNumbSrFlags_
unsigned int expNumbSrFlags_
Definition: DCCSRPBlock.h:49
DCCSRPBlock::addSRFlagToCollection
virtual void addSRFlagToCollection()
Definition: DCCSRPBlock.h:41
isSynced
bool isSynced(const unsigned int dccBx, const unsigned int bx, const unsigned int dccL1, const unsigned int l1, const BlockType type, const unsigned int fov)
Definition: DCCEventBlock.cc:228
SRP_BX_MASK
Definition: DCCRawDataDefinitions.h:200
H_FOV_MASK
Definition: DCCRawDataDefinitions.h:102
SRP_NFLAGS_MASK
Definition: DCCRawDataDefinitions.h:206
SRP_BLOCKLENGTH
Definition: DCCRawDataDefinitions.h:32
DCCSRPBlock::display
void display(std::ostream &o) override
Definition: DCCSRPBlock.cc:93
DCCDataUnpacker
Definition: DCCDataUnpacker.h:49
DCCDataBlockPrototype::updateEventPointers
virtual void updateEventPointers()
Definition: DCCDataBlockPrototype.h:51
DCCSRPBlock::l1_
unsigned int l1_
Definition: DCCSRPBlock.h:47
DCCDataUnpacker::silentMode_
static std::atomic< bool > silentMode_
Definition: DCCDataUnpacker.h:185
DCCSRPBlock.h
DCCDataBlockPrototype::error_
bool error_
Definition: DCCDataBlockPrototype.h:68
DCCDataBlockPrototype
Definition: DCCDataBlockPrototype.h:28
EcalElectronicsMapper.h
DCCEventBlock::fov
unsigned int fov()
Definition: DCCEventBlock.h:55
EcalTangentSkim_cfg.o
o
Definition: EcalTangentSkim_cfg.py:36
DCCSRPBlock::checkSrpIdAndNumbSRFlags
virtual bool checkSrpIdAndNumbSRFlags()
Definition: DCCSRPBlock.h:43
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
DCCEventBlock::bx
unsigned int bx()
Definition: DCCEventBlock.h:58
EcalElectronicsMapper::getActiveDCC
unsigned int getActiveDCC()
Definition: EcalElectronicsMapper.h:126
DCCSRPBlock::DCCSRPBlock
DCCSRPBlock(DCCDataUnpacker *u, EcalElectronicsMapper *m, DCCEventBlock *e, bool unpack)
Definition: DCCSRPBlock.cc:6
edm::LogWarning
Definition: MessageLogger.h:141
STOP_EVENT_UNPACKING
Definition: DCCRawDataDefinitions.h:8
SRP_NFLAGS_B
Definition: DCCRawDataDefinitions.h:207
DCCEventBlock.h
DCCDataBlockPrototype::sync_
bool sync_
Definition: DCCDataBlockPrototype.h:78
DCCDataBlockPrototype::event_
DCCEventBlock * event_
Definition: DCCDataBlockPrototype.h:70
TCC_SRP
Definition: DCCEventBlock.h:138
DCCSRPBlock::unpack
int unpack(const uint64_t **data, unsigned int *dwToEnd, unsigned int numbFlags=SRP_NUMBFLAGS)
Definition: DCCSRPBlock.cc:16
SRP_NUMBFLAGS
Definition: DCCRawDataDefinitions.h:31
DCCSRPBlock::bx_
unsigned int bx_
Definition: DCCSRPBlock.h:46
DCCEventBlock::l1A
unsigned int l1A()
Definition: DCCEventBlock.h:57
EcalElectronicsMapper
Definition: EcalElectronicsMapper.h:36
SRP_L1_MASK
Definition: DCCRawDataDefinitions.h:203
DCCDataBlockPrototype::mapper_
EcalElectronicsMapper * mapper_
Definition: DCCDataBlockPrototype.h:69
SRP_L1_B
Definition: DCCRawDataDefinitions.h:204
DCCDataBlockPrototype::datap_
const uint64_t ** datap_
Definition: DCCDataBlockPrototype.h:72
SRP_BX_B
Definition: DCCRawDataDefinitions.h:201
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
DCCDataBlockPrototype::blockLength_
unsigned int blockLength_
Definition: DCCDataBlockPrototype.h:76
DCCSRPBlock::srpId_
unsigned int srpId_
Definition: DCCSRPBlock.h:43
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37