14 #include "boost/dynamic_bitset.hpp"
32 if (chamberId.
ring() == 4) {
38 template <
typename LCTCollection>
40 const CSCDetId& cscId,
const LCTCollection& lcts,
int bxMin,
int bxMax,
int nominalBX,
bool me1abCheck =
false) {
46 for (
typename LCTCollection::const_iterator lctItr = lctRange.first; lctItr != lctRange.second; ++lctItr) {
47 int bx = lctItr->getBX() - nominalBX;
57 if (
me1 &&
result ==
false && me1abCheck) {
59 lctRange = lcts.get(me1aId);
60 for (
typename LCTCollection::const_iterator lctItr = lctRange.first; lctItr != lctRange.second; ++lctItr) {
61 int bx = lctItr->getBX() - nominalBX;
86 int bx = *lctItr - nominalBX;
92 bool me1a = cscId.
station() == 1 && cscId.
ring() == 4;
93 if (me1a &&
result ==
false && me1abCheck) {
95 lctRange = lcts.get(cscId);
97 int bx = *lctItr - nominalBX;
110 : alctWindowMin_(
pset.getParameter<
int>(
"alctWindowMin")),
111 alctWindowMax_(
pset.getParameter<
int>(
"alctWindowMax")),
112 clctWindowMin_(
pset.getParameter<
int>(
"clctWindowMin")),
113 clctWindowMax_(
pset.getParameter<
int>(
"clctWindowMax")),
114 preTriggerWindowMin_(
pset.getParameter<
int>(
"preTriggerWindowMin")),
115 preTriggerWindowMax_(
pset.getParameter<
int>(
"preTriggerWindowMax")),
117 formatVersion_(
pset.getParameter<unsigned>(
"formatVersion")),
120 packEverything_(
pset.getParameter<
bool>(
"packEverything")),
121 usePreTriggers_(
pset.getParameter<
bool>(
"usePreTriggers")) {}
126 map<CSCDetId, CSCEventData>::iterator chamberMapItr =
info.theChamberDataMap.find(chamberId);
127 if (chamberMapItr ==
info.theChamberDataMap.end()) {
130 chamberMapItr =
info.theChamberDataMap
131 .insert(pair<CSCDetId, CSCEventData>(chamberId,
CSCEventData(chamberType,
info.formatVersion_)))
137 if (
info.formatVersion_ == 2013) {
139 bool me11 = ((chamberId.
station() == 1) && (chamberId.
ring() == 4)) ||
140 ((chamberId.
station() == 1) && (chamberId.
ring() == 1));
161 const bool usePreTriggers =
usePreTriggers_ and preTriggers !=
nullptr;
169 bool me1a = (cscDetId.
station() == 1) && (cscDetId.
ring() == 4);
171 bool me1b = (cscDetId.
station() == 1) && (cscDetId.
ring() == 1);
175 std::vector<CSCStripDigi>::const_iterator digiItr = (*j).second.first;
176 std::vector<CSCStripDigi>::const_iterator
last = (*j).second.second;
177 for (; digiItr !=
last; ++digiItr) {
185 if (me1b && !
zplus) {
198 if (me1b && !
zplus) {
206 cscData.
add(digi, cscDetId.
layer());
215 add(alctDigis, fedInfo);
223 std::vector<CSCWireDigi>::const_iterator digiItr = (*j).second.first;
224 std::vector<CSCWireDigi>::const_iterator
last = (*j).second.second;
225 for (; digiItr !=
last; ++digiItr) {
226 cscData.
add(*digiItr, cscDetId.
layer());
235 add(clctDigis, fedInfo);
236 for (
auto const&
j : comparatorDigis) {
243 bool me1a = (cscDetId.
station() == 1) && (cscDetId.
ring() == 4);
251 for (
auto digi =
j.second.first; digi !=
j.second.second; ++digi) {
257 cscData.
add(digi_corr, cscDetId);
259 cscData.
add(*digi, cscDetId);
267 cscData.
add(digi_corr, cscDetId.
layer());
269 cscData.
add(*digi, cscDetId.
layer());
282 cscData.
add(std::vector<CSCALCTDigi>((*j).second.first, (*j).second.second));
291 bool me11a = cscDetId.
station() == 1 && cscDetId.
ring() == 4;
296 std::vector<CSCCLCTDigi> shiftedDigis((*j).second.first, (*j).second.second);
297 for (std::vector<CSCCLCTDigi>::iterator iC = shiftedDigis.begin(); iC != shiftedDigis.end(); ++iC) {
311 cscData.
add(shiftedDigis);
313 cscData.
add(std::vector<CSCCLCTDigi>((*j).second.first, (*j).second.second));
323 bool me11a = cscDetId.
station() == 1 && cscDetId.
ring() == 4;
328 std::vector<CSCCorrelatedLCTDigi> shiftedDigis((*j).second.first, (*j).second.second);
329 for (std::vector<CSCCorrelatedLCTDigi>::iterator iC = shiftedDigis.begin(); iC != shiftedDigis.end(); ++iC) {
345 cscData.
add(shiftedDigis);
347 cscData.
add(std::vector<CSCCorrelatedLCTDigi>((*j).second.first, (*j).second.second));
353 for (
const auto& shower : cscShowerDigis) {
354 const CSCDetId& cscDetId = shower.first;
357 cscData.
add(std::vector<CSCShowerDigi>(shower.second.first, shower.second.second));
362 for (
const auto& jclus : gemPadClusters) {
363 const GEMDetId& gemDetId = jclus.first;
365 const int zendcap = gemDetId.
region() == 1 ? 1 : 2;
369 cscData.add(std::vector<GEMPadDigiCluster>(jclus.second.first, jclus.second.second), gemDetId);
389 add(stripDigis, preTriggers, preTriggerDigis, fedInfo);
390 add(wireDigis, alctDigis, fedInfo);
391 add(comparatorDigis, clctDigis, fedInfo);
392 add(correlatedLCTDigis, fedInfo);
395 if (cscShowerDigis) {
396 add(*cscShowerDigis, fedInfo);
400 if (gemPadDigiClusters) {
401 add(*gemPadDigiClusters, fedInfo);
403 int l1a =
eid.event();
406 if (fedInfo.formatVersion_ == 2005)
408 std::map<int, CSCDCCEventData> dccMap;
416 for (map<CSCDetId, CSCEventData>::iterator chamberItr = fedInfo.theChamberDataMap.begin();
417 chamberItr != fedInfo.theChamberDataMap.end();
419 int indexDCC =
mapping->slink(chamberItr->first);
420 if (indexDCC == idcc) {
422 std::map<int, CSCDCCEventData>::iterator dccMapItr = dccMap.find(indexDCC);
423 if (dccMapItr == dccMap.end()) {
424 throw cms::Exception(
"CSCDigiToRaw") <<
"Bad DCC number:" << indexDCC;
428 int dduId =
mapping->ddu(chamberItr->first);
429 int dduSlot =
mapping->dduSlot(chamberItr->first);
430 int dduInput =
mapping->dduInput(chamberItr->first);
431 int dmbId =
mapping->dmb(chamberItr->first);
432 dccMapItr->second.addChamber(chamberItr->second, dduId, dduSlot, dduInput, dmbId,
formatVersion_);
438 for (std::map<int, CSCDCCEventData>::iterator dccMapItr = dccMap.begin(); dccMapItr != dccMap.end(); ++dccMapItr) {
439 boost::dynamic_bitset<> dccBits = dccMapItr->second.pack();
454 std::map<int, CSCDDUEventData> dduMap;
455 unsigned int ddu_fmt_version = 0x7;
456 const unsigned postLS1_map[] = {841, 842, 843, 844, 845, 846, 847, 848, 849, 831, 832, 833,
457 834, 835, 836, 837, 838, 839, 861, 862, 863, 864, 865, 866,
458 867, 868, 869, 851, 852, 853, 854, 855, 856, 857, 858, 859};
461 for (
unsigned int i = 0;
i < 36;
i++) {
462 unsigned int iddu = postLS1_map[
i];
466 dduMap.insert(std::pair<int, CSCDDUEventData>(iddu,
CSCDDUEventData(newDDUHeader)));
470 for (
unsigned int i = 0;
i < 36;
i++) {
471 unsigned int iddu = postLS1_map[
i];
473 for (map<CSCDetId, CSCEventData>::iterator chamberItr = fedInfo.theChamberDataMap.begin();
474 chamberItr != fedInfo.theChamberDataMap.end();
476 unsigned int indexDDU =
mapping->slink(chamberItr->first);
481 int dduID =
mapping->ddu(chamberItr->first);
490 if ((dduID <= 36) && (dduID > 0))
491 indexDDU = postLS1_map[dduID - 1];
495 if (indexDDU == iddu) {
496 std::map<int, CSCDDUEventData>::iterator dduMapItr = dduMap.find(indexDDU);
497 if (dduMapItr == dduMap.end()) {
498 throw cms::Exception(
"CSCDigiToRaw") <<
"Bad DDU number:" << indexDDU;
502 int dduInput =
mapping->dduInput(chamberItr->first);
503 int dmbId =
mapping->dmb(chamberItr->first);
505 dduMapItr->second.add(chamberItr->second, dmbId, dduInput,
formatVersion_);
511 for (std::map<int, CSCDDUEventData>::iterator dduMapItr = dduMap.begin(); dduMapItr != dduMap.end(); ++dduMapItr) {
512 boost::dynamic_bitset<> dduBits = dduMapItr->second.pack();