CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
TotemTriggerRawToDigi Class Reference
Inheritance diagram for TotemTriggerRawToDigi:
edm::stream::EDProducer<>

Public Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 
 TotemTriggerRawToDigi (const edm::ParameterSet &)
 
 ~TotemTriggerRawToDigi () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

int ProcessLoneGFrame (uint64_t *oBuf, unsigned long size, TotemTriggerCounters &data)
 Process one LoneG frame. More...
 

Private Attributes

edm::EDGetTokenT< FEDRawDataCollectionfedDataToken
 
unsigned int fedId
 

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 25 of file TotemTriggerRawToDigi.cc.

Constructor & Destructor Documentation

TotemTriggerRawToDigi::TotemTriggerRawToDigi ( const edm::ParameterSet conf)
explicit

Definition at line 44 of file TotemTriggerRawToDigi.cc.

References fedDataToken, fedId, edm::ParameterSet::getParameter(), and FEDNumbering::MINTotemTriggerFEDID.

45  : fedId(conf.getParameter<unsigned int>("fedId")) {
46  fedDataToken = consumes<FEDRawDataCollection>(conf.getParameter<edm::InputTag>("rawDataTag"));
47 
48  if (fedId == 0)
50 
51  produces<TotemTriggerCounters>();
52 }
T getParameter(std::string const &) const
edm::EDGetTokenT< FEDRawDataCollection > fedDataToken
TotemTriggerRawToDigi::~TotemTriggerRawToDigi ( )
override

Definition at line 54 of file TotemTriggerRawToDigi.cc.

54 {}

Member Function Documentation

int TotemTriggerRawToDigi::ProcessLoneGFrame ( uint64_t *  oBuf,
unsigned long  size,
TotemTriggerCounters data 
)
private

Process one LoneG frame.

Definition at line 75 of file TotemTriggerRawToDigi.cc.

References TotemTriggerCounters::bunch_num, cuy::col, DEFINE_FWK_MODULE, TotemTriggerCounters::event_num, mps_fire::i, TotemTriggerCounters::inhibited_triggers_num, TotemTriggerCounters::input_status_bits, TotemTriggerCounters::orbit_num, TotemTriggerCounters::revision_num, TotemTriggerCounters::run_num, TotemTriggerCounters::src_id, TotemTriggerCounters::trigger_num, and TotemTriggerCounters::type.

Referenced by produce().

75  {
76  if (size != 20) {
77  LogError("Totem") << "Error in TotemTriggerRawToDigi::ProcessLoneGFrame > "
78  << "Wrong LoneG frame size: " << size << " (shall be 20)." << endl;
79  return 1;
80  }
81 
82  // buffer mapping: OptoRx buffer --> LoneG buffer
83  uint64_t buf[5];
84  for (unsigned int i = 0; i < 5; i++)
85  buf[i] = 0;
86 
87  for (unsigned int i = 0; i < 20; i++) {
88  int row = i / 4;
89  int col = i % 4;
90  buf[row] |= (oBuf[i] & 0xFFFF) << (col * 16);
91  }
92 
93  td.type = (buf[0] >> 56) & 0xF;
94  td.event_num = (buf[0] >> 32) & 0xFFFFFF;
95  td.bunch_num = (buf[0] >> 20) & 0xFFF;
96  td.src_id = (buf[0] >> 8) & 0xFFF;
97 
98  td.orbit_num = (buf[1] >> 32) & 0xFFFFFFFF;
99  td.revision_num = (buf[1] >> 24) & 0xFF;
100 
101  td.run_num = (buf[2] >> 32) & 0xFFFFFFFF;
102  td.trigger_num = (buf[2] >> 0) & 0xFFFFFFFF;
103 
104  td.inhibited_triggers_num = (buf[3] >> 32) & 0xFFFFFFFF;
105  td.input_status_bits = (buf[3] >> 0) & 0xFFFFFFFF;
106 
107 #ifdef DEBUG
108  printf(">> RawDataUnpacker::ProcessLoneGFrame > size = %li\n", size);
109  printf(
110  "\ttype = %x, event number = %x, bunch number = %x, id = %x\n", td.type, td.event_num, td.bunch_num, td.src_id);
111  printf("\torbit number = %x, revision = %x\n", td.orbit_num, td.revision_num);
112  printf("\trun number = %x, trigger number = %x\n", td.run_num, td.trigger_num);
113  printf("\tinhibited triggers = %x, input status bits = %x\n", td.inhibited_triggers_num, td.input_status_bits);
114 #endif
115 
116  return 0;
117 }
size
Write out results.
unsigned long long uint64_t
Definition: Time.h:13
col
Definition: cuy.py:1010
void TotemTriggerRawToDigi::produce ( edm::Event event,
const edm::EventSetup es 
)
override

Definition at line 56 of file TotemTriggerRawToDigi.cc.

References FEDRawData::data(), data, FEDRawDataCollection::FEDData(), fedDataToken, fedId, ProcessLoneGFrame(), l1tstage2_dqm_sourceclient-live_cfg::rawData, and FEDRawData::size().

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

56  {
57  // raw data handle
59  event.getByToken(fedDataToken, rawData);
60 
61  // book output products
62  TotemTriggerCounters totemTriggerCounters;
63 
64  // unpack trigger data
65  const FEDRawData &data = rawData->FEDData(fedId);
66  uint64_t *buf = (uint64_t *)data.data();
67  unsigned int sizeInWords = data.size() / 8; // bytes -> words
68  if (data.size() > 0)
69  ProcessLoneGFrame(buf + 2, sizeInWords - 4, totemTriggerCounters);
70 
71  // commit products to event
72  event.put(make_unique<TotemTriggerCounters>(totemTriggerCounters));
73 }
int ProcessLoneGFrame(uint64_t *oBuf, unsigned long size, TotemTriggerCounters &data)
Process one LoneG frame.
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:45
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
unsigned long long uint64_t
Definition: Time.h:13
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
edm::EDGetTokenT< FEDRawDataCollection > fedDataToken

Member Data Documentation

edm::EDGetTokenT<FEDRawDataCollection> TotemTriggerRawToDigi::fedDataToken
private

Definition at line 35 of file TotemTriggerRawToDigi.cc.

Referenced by produce(), and TotemTriggerRawToDigi().

unsigned int TotemTriggerRawToDigi::fedId
private

Definition at line 33 of file TotemTriggerRawToDigi.cc.

Referenced by produce(), and TotemTriggerRawToDigi().