CMS 3D CMS Logo

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

Public Member Functions

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

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void beginRun (edm::Run const &, edm::EventSetup const &) override
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

bool ctp7_mode_
 
int evtType_
 
int fedId_
 
unsigned fwId_
 
std::unique_ptr< PackingSetupsetup_
 
int slinkHeaderSize_
 
int slinkTrailerSize_
 
std::unique_ptr< PackerTokenstokens_
 

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 47 of file L1TDigiToRaw.cc.

Constructor & Destructor Documentation

◆ L1TDigiToRaw()

L1TDigiToRaw::L1TDigiToRaw ( const edm::ParameterSet config)
explicit

Definition at line 81 of file L1TDigiToRaw.cc.

82  : fedId_(config.getParameter<int>("FedId")), ctp7_mode_(config.getUntrackedParameter<bool>("CTP7")) {
83  // Register products
84  produces<FEDRawDataCollection>();
85 
86  fwId_ = config.getParameter<unsigned int>("FWId");
87  evtType_ = config.getUntrackedParameter<int>("eventType", 1);
88 
89  auto cc = edm::ConsumesCollector(consumesCollector());
90 
91  setup_ = PackingSetupFactory::get()->make(config.getParameter<std::string>("Setup"));
92  tokens_ = setup_->registerConsumes(config, cc);
93 
94  slinkHeaderSize_ = config.getUntrackedParameter<int>("lenSlinkHeader", 8);
95  slinkTrailerSize_ = config.getUntrackedParameter<int>("lenSlinkTrailer", 8);
96  }

References evtType_, fwId_, l1t::PackingSetupFactory::get(), l1t::PackingSetupFactory::make(), setup_, slinkHeaderSize_, slinkTrailerSize_, AlCaHLTBitMon_QueryRunRegistry::string, and tokens_.

◆ ~L1TDigiToRaw()

L1TDigiToRaw::~L1TDigiToRaw ( )
override

Definition at line 98 of file L1TDigiToRaw.cc.

98 {}

Member Function Documentation

◆ beginLuminosityBlock()

void l1t::L1TDigiToRaw::beginLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &   
)
inlineoverrideprivate

Definition at line 61 of file L1TDigiToRaw.cc.

61 {};

◆ beginRun()

void l1t::L1TDigiToRaw::beginRun ( edm::Run const &  ,
edm::EventSetup const &   
)
inlineoverrideprivate

Definition at line 59 of file L1TDigiToRaw.cc.

59 {};

◆ endLuminosityBlock()

void l1t::L1TDigiToRaw::endLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &   
)
inlineoverrideprivate

Definition at line 62 of file L1TDigiToRaw.cc.

62 {};

◆ endRun()

void l1t::L1TDigiToRaw::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
inlineoverrideprivate

Definition at line 60 of file L1TDigiToRaw.cc.

60 {};

◆ fillDescriptions()

void L1TDigiToRaw::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 239 of file L1TDigiToRaw.cc.

239  {
241  desc.add<unsigned int>("FWId", -1);
242  desc.add<int>("FedId");
243  desc.addUntracked<int>("eventType", 1);
244  desc.add<std::string>("Setup");
245  desc.addOptional<edm::InputTag>("InputLabel", edm::InputTag(""));
246  desc.addOptional<edm::InputTag>("InputLabel2", edm::InputTag(""));
247  desc.addUntracked<int>("lenSlinkHeader", 8);
248  desc.addUntracked<int>("lenSlinkTrailer", 8);
249  desc.addUntracked<bool>("CTP7", false);
250 
252 
253  descriptions.add("l1tDigiToRaw", desc);
254  }

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, l1t::PackingSetupFactory::fillDescription(), l1t::PackingSetupFactory::get(), HLT_FULL_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ produce()

void L1TDigiToRaw::produce ( edm::Event event,
const edm::EventSetup setup 
)
overrideprivate

Definition at line 101 of file L1TDigiToRaw.cc.

101  {
102  using namespace edm;
103 
104  LogDebug("L1T") << "Packing data with FED ID " << fedId_;
105 
107 
108  auto bxId = event.bunchCrossing();
109  // Note: L1ID != event ID
110  // See e.g. triggerCount vs. eventNumber
111  // in EventFilter/FEDInterface/interface/FED1024.h
112  // But the trigger count is not stored in cmssw event class
113  auto evtId = event.id().event();
114  auto orbit = event.eventAuxiliary().orbitNumber();
115  LogDebug("L1T") << "Forming FED with metadata bxId=" << bxId << ", l1ID=" << evtId << ", orbit=" << orbit;
116 
117  // Create all the AMC payloads to pack into the AMC13
118  for (const auto& item : setup_->getPackers(fedId_, fwId_)) {
119  auto amc_no = item.first.first;
120  auto board = item.first.second;
121  auto packers = item.second;
122 
123  Blocks block_load;
124  for (const auto& packer : packers) {
125  LogDebug("L1T") << "Adding packed blocks";
126  packer->setBoard(board);
127  auto blocks = packer->pack(event, tokens_.get());
128  block_load.insert(block_load.end(), blocks.begin(), blocks.end());
129  }
130 
131  std::sort(block_load.begin(), block_load.end());
132 
133  LogDebug("L1T") << "Concatenating blocks";
134 
135  std::vector<uint32_t> load32;
136  // CTP7 stores this info in AMC user header
137  if (not ctp7_mode_) {
138  // TODO Infrastructure firmware version. Currently not used.
139  // Would change the way the payload has to be unpacked.
140  load32.push_back(0);
141  load32.push_back(fwId_);
142  }
143  for (const auto& block : block_load) {
144  LogDebug("L1T") << "Adding block " << block.header().getID() << " with size " << block.payload().size();
145  auto load = block.payload();
146 
147 #ifdef EDM_ML_DEBUG
148  std::stringstream s("");
149  s << "Block content:" << std::endl << std::hex << std::setfill('0');
150  for (const auto& word : load)
151  s << std::setw(8) << word << std::endl;
152  LogDebug("L1T") << s.str();
153 #endif
154 
155  if (block.header().getType() == CTP7) {
156  // Header is two words for CTP7, first word is just a magic
157  load32.push_back(0xA110CA7E);
158  }
159  load32.push_back(block.header().raw());
160  load32.insert(load32.end(), load.begin(), load.end());
161  }
162 
163  LogDebug("L1T") << "Converting payload";
164 
165  std::vector<uint64_t> load64;
166  for (unsigned int i = 0; i < load32.size(); i += 2) {
167  uint64_t word = load32[i];
168  if (i + 1 < load32.size()) {
169  word |= static_cast<uint64_t>(load32[i + 1]) << 32;
170  } else {
171  word |= static_cast<uint64_t>(0xffffffff) << 32;
172  }
173  load64.push_back(word);
174  }
175 
176  LogDebug("L1T") << "Creating AMC packet";
177 
178  unsigned amc_user_header = 0;
179  if (ctp7_mode_)
180  amc_user_header = fwId_;
181  amc13.add(amc_no, board, evtId, orbit, bxId, load64, amc_user_header);
182  }
183 
184  std::unique_ptr<FEDRawDataCollection> raw_coll(new FEDRawDataCollection());
185  FEDRawData& fed_data = raw_coll->FEDData(fedId_);
186 
187  unsigned int size = slinkHeaderSize_ + slinkTrailerSize_ + amc13.size() * 8;
188  fed_data.resize(size);
189  unsigned char* payload = fed_data.data();
190  unsigned char* payload_start = payload;
191 
193  header.set(payload, evtType_, evtId, bxId, fedId_);
194 
196 
198  payload += amc13.size() * 8;
199 
200  FEDTrailer trailer(payload);
201  trailer.set(payload, size / 8, evf::compute_crc(payload_start, size), 0, 0);
202 
203  event.put(std::move(raw_coll));
204  }

References groupFilesInBlocks::block, gather_cfg::blocks, evf::compute_crc(), l1t::CTP7, ctp7_mode_, FEDRawData::data(), evtType_, fedId_, EcalFEDMonitor_cfi::FEDRawDataCollection, fwId_, RecoTauValidation_cfi::header, mps_fire::i, B2GTnPMonitor_cfi::item, svgfig::load(), LogDebug, eostools::move(), jets_cff::payload, FEDRawData::resize(), alignCSCRings::s, FEDTrailer::set(), setup_, findQualityFiles::size, slinkHeaderSize_, slinkTrailerSize_, jetUpdater_cfi::sort, and tokens_.

Member Data Documentation

◆ ctp7_mode_

bool l1t::L1TDigiToRaw::ctp7_mode_
private

Definition at line 76 of file L1TDigiToRaw.cc.

Referenced by produce().

◆ evtType_

int l1t::L1TDigiToRaw::evtType_
private

Definition at line 62 of file L1TDigiToRaw.cc.

Referenced by L1TDigiToRaw(), and produce().

◆ fedId_

int l1t::L1TDigiToRaw::fedId_
private

Definition at line 66 of file L1TDigiToRaw.cc.

Referenced by produce().

◆ fwId_

unsigned l1t::L1TDigiToRaw::fwId_
private

Definition at line 67 of file L1TDigiToRaw.cc.

Referenced by L1TDigiToRaw(), and produce().

◆ setup_

std::unique_ptr<PackingSetup> l1t::L1TDigiToRaw::setup_
private

◆ slinkHeaderSize_

int l1t::L1TDigiToRaw::slinkHeaderSize_
private

Definition at line 70 of file L1TDigiToRaw.cc.

Referenced by L1TDigiToRaw(), and produce().

◆ slinkTrailerSize_

int l1t::L1TDigiToRaw::slinkTrailerSize_
private

Definition at line 71 of file L1TDigiToRaw.cc.

Referenced by L1TDigiToRaw(), and produce().

◆ tokens_

std::unique_ptr<PackerTokens> l1t::L1TDigiToRaw::tokens_
private

Definition at line 74 of file L1TDigiToRaw.cc.

Referenced by L1TDigiToRaw(), and produce().

l1t::Blocks
std::vector< Block > Blocks
Definition: Block.h:99
l1t::L1TDigiToRaw::fedId_
int fedId_
Definition: L1TDigiToRaw.cc:66
l1t::L1TDigiToRaw::evtType_
int evtType_
Definition: L1TDigiToRaw.cc:62
mps_fire.i
i
Definition: mps_fire.py:428
l1t::L1TDigiToRaw::slinkHeaderSize_
int slinkHeaderSize_
Definition: L1TDigiToRaw.cc:70
edm
HLT enums.
Definition: AlignableModifier.h:19
l1t::CTP7
Definition: Block.h:11
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
amc13
Definition: AMC13Spec.h:14
FEDRawData::data
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:24
FEDRawData
Definition: FEDRawData.h:19
cc
word
uint64_t word
Definition: CTPPSTotemDataFormatter.cc:29
config
Definition: config.py:1
l1t::L1TDigiToRaw::fwId_
unsigned fwId_
Definition: L1TDigiToRaw.cc:67
alignCSCRings.s
s
Definition: alignCSCRings.py:92
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
l1t::L1TDigiToRaw::setup_
std::unique_ptr< PackingSetup > setup_
Definition: L1TDigiToRaw.cc:73
amc13::Packet
Definition: AMC13Spec.h:69
svgfig.load
def load(fileName)
Definition: svgfig.py:547
EcalFEDMonitor_cfi.FEDRawDataCollection
FEDRawDataCollection
Definition: EcalFEDMonitor_cfi.py:6
jets_cff.payload
payload
Definition: jets_cff.py:32
evf::compute_crc
unsigned short compute_crc(unsigned char *buffer, unsigned int bufSize)
Definition: CRC16.h:46
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
l1t::L1TDigiToRaw::tokens_
std::unique_ptr< PackerTokens > tokens_
Definition: L1TDigiToRaw.cc:74
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
FEDTrailer
Definition: FEDTrailer.h:14
l1t::L1TDigiToRaw::slinkTrailerSize_
int slinkTrailerSize_
Definition: L1TDigiToRaw.cc:71
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
l1t::PackingSetupFactory::fillDescription
void fillDescription(edm::ParameterSetDescription &) const
Definition: PackingSetupFactory.cc:12
groupFilesInBlocks.block
block
Definition: groupFilesInBlocks.py:150
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
FEDRawData::resize
void resize(size_t newsize)
Definition: FEDRawData.cc:28
l1t::L1TDigiToRaw::ctp7_mode_
bool ctp7_mode_
Definition: L1TDigiToRaw.cc:76
l1t::PackingSetupFactory::make
std::unique_ptr< PackingSetup > make(const std::string &) const
Definition: PackingSetupFactory.cc:8
RecoTauValidation_cfi.header
header
Definition: RecoTauValidation_cfi.py:292
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
l1t::PackingSetupFactory::get
static const PackingSetupFactory * get()
Definition: PackingSetupFactory.h:14
event
Definition: event.py:1
FEDHeader
Definition: FEDHeader.h:14
gather_cfg.blocks
blocks
Definition: gather_cfg.py:90
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443