CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1GlobalTrigger.cc
Go to the documentation of this file.
1 
15 // this class header
17 
18 // system include files
19 #include <memory>
20 #include <iostream>
21 #include <iomanip>
22 #include <algorithm>
23 
24 #include <boost/cstdint.hpp>
25 
26 // user include files
27 //#include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
31 
33 
37 
44 
48 
51 
54 
59 
63 
67 
70 
74 
78 
81 
84 
85 
86 
87 // constructors
88 
90  m_muGmtInputTag(parSet.getParameter<edm::InputTag> ("GmtInputTag")),
91  m_caloGctInputTag(parSet.getParameter<edm::InputTag> ("GctInputTag")),
92  m_castorInputTag(parSet.getParameter<edm::InputTag> ("CastorInputTag")),
93  m_technicalTriggersInputTags(parSet.getParameter<std::vector<edm::InputTag> > (
94  "TechnicalTriggersInputTags")),
95  m_produceL1GtDaqRecord(parSet.getParameter<bool> ("ProduceL1GtDaqRecord")),
96  m_produceL1GtEvmRecord(parSet.getParameter<bool> ("ProduceL1GtEvmRecord")),
97  m_produceL1GtObjectMapRecord(parSet.getParameter<bool> ("ProduceL1GtObjectMapRecord")),
98  m_writePsbL1GtDaqRecord(parSet.getParameter<bool> ("WritePsbL1GtDaqRecord")),
99  m_readTechnicalTriggerRecords(parSet.getParameter<bool> ("ReadTechnicalTriggerRecords")),
100  m_emulateBxInEvent(parSet.getParameter<int> ("EmulateBxInEvent")),
101  m_recordLength(parSet.getParameter<std::vector<int> > ("RecordLength")),
102  m_alternativeNrBxBoardDaq(parSet.getParameter<unsigned int> ("AlternativeNrBxBoardDaq")),
103  m_alternativeNrBxBoardEvm(parSet.getParameter<unsigned int> ("AlternativeNrBxBoardEvm")),
104  m_psBstLengthBytes(parSet.getParameter<int> ("BstLengthBytes")),
105  m_algorithmTriggersUnprescaled(parSet.getParameter<bool> ("AlgorithmTriggersUnprescaled")),
106  m_algorithmTriggersUnmasked(parSet.getParameter<bool> ("AlgorithmTriggersUnmasked")),
107  m_technicalTriggersUnprescaled(parSet.getParameter<bool> ("TechnicalTriggersUnprescaled")),
108  m_technicalTriggersUnmasked(parSet.getParameter<bool> ("TechnicalTriggersUnmasked")),
109  m_technicalTriggersVetoUnmasked(parSet.getParameter<bool> ("TechnicalTriggersVetoUnmasked")),
110  m_verbosity(parSet.getUntrackedParameter<int>("Verbosity", 0)),
111  m_isDebugEnabled(edm::isDebugEnabled())
112 
113 
114 {
115 
116  if (m_verbosity) {
117 
118  LogDebug("L1GlobalTrigger") << std::endl;
119 
120  LogTrace("L1GlobalTrigger")
121  << "\nInput tag for muon collection from GMT: " << m_muGmtInputTag
122  << "\nInput tag for calorimeter collections from GCT: " << m_caloGctInputTag
123  << "\nInput tag for CASTOR record: " << m_castorInputTag
124  << "\nInput tag for technical triggers: "
125  << std::endl;
126 
127  // loop over all producers of technical trigger records
128  for (std::vector<edm::InputTag>::const_iterator it = m_technicalTriggersInputTags.begin(); it
129  != m_technicalTriggersInputTags.end(); it++) {
130  LogTrace("L1GlobalTrigger") << "\n " << ( *it ) << std::endl;
131  }
132 
133  LogTrace("L1GlobalTrigger")
134  << "\nProduce the L1 GT DAQ readout record: " << m_produceL1GtDaqRecord
135  << "\nProduce the L1 GT EVM readout record: " << m_produceL1GtEvmRecord
136  << "\nProduce the L1 GT Object Map record: " << m_produceL1GtObjectMapRecord
137  << " \n"
138  << "\nWrite Psb content to L1 GT DAQ Record: " << m_writePsbL1GtDaqRecord
139  << " \n"
140  << "\nRead technical trigger records: " << m_readTechnicalTriggerRecords
141  << " \n"
142  << "\nNumber of BxInEvent to be emulated: " << m_emulateBxInEvent
143  << "\nNumber of BXs corresponding to alternative 0: " << m_recordLength.at(0)
144  << "\nNumber of BXs corresponding to alternative 1: " << m_recordLength.at(1)
145  << " \n"
146  << "\nAlternative for number of BX in GT DAQ record: 0x" << std::hex
148  << "\nAlternative for number of BX in GT EVM record: 0x" << std::hex
149  << m_alternativeNrBxBoardEvm << std::dec
150  << " \n"
151  << "\nLength of BST message [bytes]: " << m_psBstLengthBytes
152  << "\n"
153  << "\nRun algorithm triggers unprescaled: " << m_algorithmTriggersUnprescaled
154  << "\nRun algorithm triggers unmasked (all enabled): " << m_algorithmTriggersUnmasked
155  << "\n"
156  << "\nRun technical triggers unprescaled: " << m_technicalTriggersUnprescaled
157  << "\nRun technical triggers unmasked (all enabled): " << m_technicalTriggersUnmasked
158  << "\nRun technical triggers veto unmasked (no veto): " << m_technicalTriggersUnmasked
159  << "\n"
160  << std::endl;
161  }
162 
163 
164  if ( ( m_emulateBxInEvent > 0 ) && ( ( m_emulateBxInEvent % 2 ) == 0 )) {
166 
167  if (m_verbosity) {
168  edm::LogWarning("L1GlobalTrigger")
169  << "\nWARNING: Number of bunch crossing to be emulated rounded to: "
170  << m_emulateBxInEvent << "\n The number must be an odd number!\n"
171  << std::endl;
172  }
173  }
174 
175  int requiredRecordLength = std::max(m_recordLength.at(0), m_recordLength.at(1));
176  if ((m_emulateBxInEvent >= 0) && (m_emulateBxInEvent < requiredRecordLength) ) {
177 
178  m_emulateBxInEvent = requiredRecordLength;
179 
180  if (m_verbosity) {
181  edm::LogWarning("L1GlobalTrigger")
182  << "\nWARNING: Number of bunch crossing required to be emulated ( "
183  << m_emulateBxInEvent << " BX) smaller as required in RecordLength:"
184  << "\n Number of BXs corresponding to alternative 0: " << m_recordLength.at(0)
185  << "\n Number of BXs corresponding to alternative 1: " << m_recordLength.at(1)
186  << "\nEmulating " << requiredRecordLength << " BX!"
187  << "\n"
188  << std::endl;
189  }
190 
191  }
192 
193  // register products
195  produces<L1GlobalTriggerReadoutRecord>();
196  }
197 
199  produces<L1GlobalTriggerEvmReadoutRecord>();
200  }
201 
203  produces<L1GlobalTriggerObjectMapRecord>();
204  }
205 
206  // create new PSBs
207  m_gtPSB = new L1GlobalTriggerPSB();
209 
210  // create new GTL
211  m_gtGTL = new L1GlobalTriggerGTL();
213 
214  // create new FDL
215  m_gtFDL = new L1GlobalTriggerFDL();
217 
218  // initialize cached IDs
219 
220  //
221  m_l1GtStableParCacheID = 0ULL;
222 
226 
227  m_nrL1Mu = 0;
228 
229  m_nrL1NoIsoEG = 0;
230  m_nrL1IsoEG = 0;
231 
232  m_nrL1CenJet = 0;
233  m_nrL1ForJet = 0;
234  m_nrL1TauJet = 0;
235 
236  m_nrL1JetCounts = 0;
237 
240 
241  //
242  m_l1GtParCacheID = 0ULL;
243 
244  m_totalBxInEvent = 0;
245 
248  m_bstLengthBytes = 0;
249 
250  //
251  m_l1GtBMCacheID = 0ULL;
252 
253  //
254  m_l1GtPfAlgoCacheID = 0ULL;
255  m_l1GtPfTechCacheID = 0ULL;
256 
257  m_l1GtTmAlgoCacheID = 0ULL;
258  m_l1GtTmTechCacheID = 0ULL;
259 
262 
263 }
264 
265 // destructor
267 {
268 
269  delete m_gtPSB;
270  delete m_gtGTL;
271  delete m_gtFDL;
272 }
273 
274 // member functions
275 
276 // method called to produce the data
278 {
279 
280  // process event iEvent
281 
282  // get / update the stable parameters from the EventSetup
283  // local cache & check on cacheIdentifier
284 
285  unsigned long long l1GtStableParCacheID =
286  evSetup.get<L1GtStableParametersRcd>().cacheIdentifier();
287 
288  if (m_l1GtStableParCacheID != l1GtStableParCacheID) {
289 
291  evSetup.get< L1GtStableParametersRcd >().get( l1GtStablePar );
292  m_l1GtStablePar = l1GtStablePar.product();
293 
294  // number of physics triggers
296 
297  // number of technical triggers
299 
300  // number of DAQ partitions
301  m_numberDaqPartitions = 8; // FIXME add it to stable parameters
302 
303  // number of objects of each type
304  m_nrL1Mu = static_cast<int> (m_l1GtStablePar->gtNumberL1Mu());
305 
306  m_nrL1NoIsoEG = static_cast<int> (m_l1GtStablePar->gtNumberL1NoIsoEG());
307  m_nrL1IsoEG = static_cast<int> (m_l1GtStablePar->gtNumberL1IsoEG());
308 
309  m_nrL1CenJet = static_cast<int> (m_l1GtStablePar->gtNumberL1CenJet());
310  m_nrL1ForJet = static_cast<int> (m_l1GtStablePar->gtNumberL1ForJet());
311  m_nrL1TauJet = static_cast<int> (m_l1GtStablePar->gtNumberL1TauJet());
312 
313  m_nrL1JetCounts = static_cast<int> (m_l1GtStablePar->gtNumberL1JetCounts());
314 
315  // ... the rest of the objects are global
316 
319 
320  // (re)initialize L1GlobalTriggerGTL
322 
323  // (re)initialize L1GlobalTriggerPSB
327 
328  //
329  m_l1GtStableParCacheID = l1GtStableParCacheID;
330 
331  }
332 
333  // get / update the parameters from the EventSetup
334  // local cache & check on cacheIdentifier
335 
336  unsigned long long l1GtParCacheID = evSetup.get<L1GtParametersRcd>().cacheIdentifier();
337 
338  if (m_l1GtParCacheID != l1GtParCacheID) {
339 
341  evSetup.get< L1GtParametersRcd >().get( l1GtPar );
342  m_l1GtPar = l1GtPar.product();
343 
344  // total number of Bx's in the event coming from EventSetup
346 
347  // active boards in L1 GT DAQ record and in L1 GT EVM record
350 
353 
354 
355  m_l1GtParCacheID = l1GtParCacheID;
356 
357  }
358 
359  // negative value: emulate TotalBxInEvent as given in EventSetup
360  if (m_emulateBxInEvent < 0) {
362  }
363 
364  int minBxInEvent = (m_emulateBxInEvent + 1)/2 - m_emulateBxInEvent;
365  int maxBxInEvent = (m_emulateBxInEvent + 1)/2 - 1;
366 
367  int recordLength0 = m_recordLength.at(0);
368  int recordLength1 = m_recordLength.at(1);
369 
370  if ((recordLength0 < 0) || (recordLength1 < 0) ) {
371 
372  // take them from event setup
373  // FIXME implement later - temporary solution
374 
375  recordLength0 = m_emulateBxInEvent;
376  recordLength1 = m_emulateBxInEvent;
377 
378  }
379 
380 
381 
382  if (m_verbosity) {
383 
384  LogDebug("L1GlobalTrigger")
385  << "\nTotal number of BX to emulate in the GT readout record: "
386  << m_emulateBxInEvent << " = " << "[" << minBxInEvent << ", " << maxBxInEvent
387  << "] BX\n"
388  << "\nNumber of BX for alternative 0: " << recordLength0
389  << "\nNumber of BX for alternative 1: " << recordLength1
390  << "\nActive boards in L1 GT DAQ record (hex format) = " << std::hex
391  << std::setw(sizeof(m_activeBoardsGtDaq) * 2) << std::setfill('0')
392  << m_activeBoardsGtDaq << std::dec << std::setfill(' ')
393  << "\nActive boards in L1 GT EVM record (hex format) = " << std::hex
394  << std::setw(sizeof(m_activeBoardsGtEvm) * 2) << std::setfill('0')
395  << m_activeBoardsGtEvm << std::dec << std::setfill(' ') << "\n"
396  << std::endl;
397  }
398 
399  // get / update the board maps from the EventSetup
400  // local cache & check on cacheIdentifier
401 
402  typedef std::vector<L1GtBoard>::const_iterator CItBoardMaps;
403 
404  unsigned long long l1GtBMCacheID = evSetup.get<L1GtBoardMapsRcd>().cacheIdentifier();
405 
406  if (m_l1GtBMCacheID != l1GtBMCacheID) {
407 
409  evSetup.get< L1GtBoardMapsRcd >().get( l1GtBM );
410  m_l1GtBM = l1GtBM.product();
411 
412  m_l1GtBMCacheID = l1GtBMCacheID;
413 
414  }
415 
416  // TODO need changes in CondFormats to cache the maps
417  const std::vector<L1GtBoard>& boardMaps = m_l1GtBM->gtBoardMaps();
418 
419  // get / update the prescale factors from the EventSetup
420  // local cache & check on cacheIdentifier
421 
422  unsigned long long l1GtPfAlgoCacheID =
423  evSetup.get<L1GtPrescaleFactorsAlgoTrigRcd>().cacheIdentifier();
424 
425  if (m_l1GtPfAlgoCacheID != l1GtPfAlgoCacheID) {
426 
428  evSetup.get< L1GtPrescaleFactorsAlgoTrigRcd >().get( l1GtPfAlgo );
429  m_l1GtPfAlgo = l1GtPfAlgo.product();
430 
432 
433  m_l1GtPfAlgoCacheID = l1GtPfAlgoCacheID;
434 
435  }
436 
437  unsigned long long l1GtPfTechCacheID =
438  evSetup.get<L1GtPrescaleFactorsTechTrigRcd>().cacheIdentifier();
439 
440  if (m_l1GtPfTechCacheID != l1GtPfTechCacheID) {
441 
443  evSetup.get< L1GtPrescaleFactorsTechTrigRcd >().get( l1GtPfTech );
444  m_l1GtPfTech = l1GtPfTech.product();
445 
447 
448  m_l1GtPfTechCacheID = l1GtPfTechCacheID;
449 
450  }
451 
452 
453  // get / update the trigger mask from the EventSetup
454  // local cache & check on cacheIdentifier
455 
456  unsigned long long l1GtTmAlgoCacheID =
457  evSetup.get<L1GtTriggerMaskAlgoTrigRcd>().cacheIdentifier();
458 
459  if (m_l1GtTmAlgoCacheID != l1GtTmAlgoCacheID) {
460 
462  evSetup.get< L1GtTriggerMaskAlgoTrigRcd >().get( l1GtTmAlgo );
463  m_l1GtTmAlgo = l1GtTmAlgo.product();
464 
466 
467  m_l1GtTmAlgoCacheID = l1GtTmAlgoCacheID;
468 
469  }
470 
471 
472  unsigned long long l1GtTmTechCacheID =
473  evSetup.get<L1GtTriggerMaskTechTrigRcd>().cacheIdentifier();
474 
475  if (m_l1GtTmTechCacheID != l1GtTmTechCacheID) {
476 
478  evSetup.get< L1GtTriggerMaskTechTrigRcd >().get( l1GtTmTech );
479  m_l1GtTmTech = l1GtTmTech.product();
480 
482 
483  m_l1GtTmTechCacheID = l1GtTmTechCacheID;
484 
485  }
486 
487  unsigned long long l1GtTmVetoAlgoCacheID =
488  evSetup.get<L1GtTriggerMaskVetoAlgoTrigRcd>().cacheIdentifier();
489 
490  if (m_l1GtTmVetoAlgoCacheID != l1GtTmVetoAlgoCacheID) {
491 
492  edm::ESHandle< L1GtTriggerMask > l1GtTmVetoAlgo;
493  evSetup.get< L1GtTriggerMaskVetoAlgoTrigRcd >().get( l1GtTmVetoAlgo );
494  m_l1GtTmVetoAlgo = l1GtTmVetoAlgo.product();
495 
497 
498  m_l1GtTmVetoAlgoCacheID = l1GtTmVetoAlgoCacheID;
499 
500  }
501 
502 
503  unsigned long long l1GtTmVetoTechCacheID =
504  evSetup.get<L1GtTriggerMaskVetoTechTrigRcd>().cacheIdentifier();
505 
506  if (m_l1GtTmVetoTechCacheID != l1GtTmVetoTechCacheID) {
507 
508  edm::ESHandle< L1GtTriggerMask > l1GtTmVetoTech;
509  evSetup.get< L1GtTriggerMaskVetoTechTrigRcd >().get( l1GtTmVetoTech );
510  m_l1GtTmVetoTech = l1GtTmVetoTech.product();
511 
513 
514  m_l1GtTmVetoTechCacheID = l1GtTmVetoTechCacheID;
515 
516  }
517 
518  // loop over blocks in the GT DAQ record receiving data, count them if they are active
519  // all board type are defined in CondFormats/L1TObjects/L1GtFwd
520  // enum L1GtBoardType { GTFE, FDL, PSB, GMT, TCS, TIM };
521  // &
522  // set the active flag for each object type received from GMT and GCT
523  // all objects in the GT system are defined in enum L1GtObject from
524  // DataFormats/L1Trigger/L1GlobalTriggerReadoutSetupFwd
525 
526  int daqNrGtfeBoards = 0;
527 
528  int daqNrFdlBoards = 0;
529  int daqNrPsbBoards = 0;
530  int daqNrGmtBoards = 0;
531  int daqNrTcsBoards = 0;
532  int daqNrTimBoards = 0;
533 
534  //
535  bool receiveMu = false;
536  bool receiveNoIsoEG = false;
537  bool receiveIsoEG = false;
538  bool receiveCenJet = false;
539  bool receiveForJet = false;
540  bool receiveTauJet = false;
541  bool receiveETM = false;
542  bool receiveETT = false;
543  bool receiveHTT = false;
544  bool receiveHTM = false;
545  bool receiveJetCounts = false;
546  bool receiveHfBitCounts = false;
547  bool receiveHfRingEtSums = false;
548 
549  bool receiveExternal = false;
550 
551  bool receiveTechTr = false;
552 
553  for (CItBoardMaps
554  itBoard = boardMaps.begin();
555  itBoard != boardMaps.end(); ++itBoard) {
556 
557  int iPosition = itBoard->gtPositionDaqRecord();
558  if (iPosition > 0) {
559 
560  int iActiveBit = itBoard->gtBitDaqActiveBoards();
561  bool activeBoard = false;
562 
563  if (iActiveBit >= 0) {
564  activeBoard = m_activeBoardsGtDaq & (1 << iActiveBit);
565  }
566 
567  // use board if: in the record, but not in ActiveBoardsMap (iActiveBit < 0)
568  // in the record and ActiveBoardsMap, and active
569  if ((iActiveBit < 0) || activeBoard) {
570 
571  switch (itBoard->gtBoardType()) {
572 
573  case GTFE: {
574  daqNrGtfeBoards++;
575  }
576 
577  break;
578  case FDL: {
579  daqNrFdlBoards++;
580  }
581 
582  break;
583  case PSB: {
584  daqNrPsbBoards++;
585 
586  // get the objects coming to this PSB
587  std::vector<L1GtPsbQuad> quadInPsb = itBoard->gtQuadInPsb();
588  for (std::vector<L1GtPsbQuad>::const_iterator
589  itQuad = quadInPsb.begin();
590  itQuad != quadInPsb.end(); ++itQuad) {
591 
592  switch (*itQuad) {
593 
594  case TechTr: {
595  receiveTechTr = true;
596  }
597 
598  break;
599  case NoIsoEGQ: {
600  receiveNoIsoEG = true;
601  }
602 
603  break;
604  case IsoEGQ: {
605  receiveIsoEG = true;
606  }
607 
608  break;
609  case CenJetQ: {
610  receiveCenJet = true;
611  }
612 
613  break;
614  case ForJetQ: {
615  receiveForJet = true;
616  }
617 
618  break;
619  case TauJetQ: {
620  receiveTauJet = true;
621  }
622 
623  break;
624  case ESumsQ: {
625  receiveETM = true;
626  receiveETT = true;
627  receiveHTT = true;
628  receiveHTM = true;
629  }
630 
631  break;
632  case JetCountsQ: {
633  receiveJetCounts = true;
634  }
635 
636  break;
637  case CastorQ: {
638  // obsolete
639  }
640 
641  break;
642  case BptxQ: {
643  // obsolete
644  }
645 
646  break;
647  case GtExternalQ: {
648  receiveExternal = true;
649  }
650 
651  break;
652  case HfQ: {
653  receiveHfBitCounts = true;
654  receiveHfRingEtSums = true;
655  }
656 
657  break;
658  // FIXME add MIP/Iso bits
659  default: {
660  // do nothing
661  }
662 
663  break;
664  }
665 
666  }
667 
668  }
669 
670  break;
671  case GMT: {
672  daqNrGmtBoards++;
673  receiveMu = true;
674  }
675 
676  break;
677  case TCS: {
678  daqNrTcsBoards++;
679  }
680 
681  break;
682  case TIM: {
683  daqNrTimBoards++;
684  }
685 
686  break;
687  default: {
688  // do nothing, all blocks are given in GtBoardType enum
689  }
690 
691  break;
692  }
693  }
694  }
695 
696  }
697 
698  // produce the L1GlobalTriggerReadoutRecord now, after we found how many
699  // BxInEvent the record has and how many boards are active
700  std::auto_ptr<L1GlobalTriggerReadoutRecord> gtDaqReadoutRecord(
702  m_emulateBxInEvent, daqNrFdlBoards, daqNrPsbBoards) );
703 
704 
705  // * produce the L1GlobalTriggerEvmReadoutRecord
706  std::auto_ptr<L1GlobalTriggerEvmReadoutRecord> gtEvmReadoutRecord(
708  // daqNrFdlBoards OK, just reserve memory at this point
709 
710  // * produce the L1GlobalTriggerObjectMapRecord
711  std::auto_ptr<L1GlobalTriggerObjectMapRecord> gtObjectMapRecord(
713 
714 
715  // fill the boards not depending on the BxInEvent in the L1 GT DAQ record
716  // GMT, PSB and FDL depend on BxInEvent
717 
718  // fill in emulator the same bunch crossing (12 bits - hardwired number of bits...)
719  // and the same local bunch crossing for all boards
720  int bxCross = iEvent.bunchCrossing();
721  boost::uint16_t bxCrossHw = 0;
722  if ((bxCross & 0xFFF) == bxCross) {
723  bxCrossHw = static_cast<boost::uint16_t> (bxCross);
724  }
725  else {
726  bxCrossHw = 0; // Bx number too large, set to 0!
727  if (m_verbosity) {
728 
729  LogDebug("L1GlobalTrigger")
730  << "\nBunch cross number [hex] = " << std::hex << bxCross
731  << "\n larger than 12 bits. Set to 0! \n" << std::dec
732  << std::endl;
733  }
734  }
735 
736 
738 
739  for (CItBoardMaps
740  itBoard = boardMaps.begin();
741  itBoard != boardMaps.end(); ++itBoard) {
742 
743  int iPosition = itBoard->gtPositionDaqRecord();
744  if (iPosition > 0) {
745 
746  int iActiveBit = itBoard->gtBitDaqActiveBoards();
747  bool activeBoard = false;
748 
749  if (iActiveBit >= 0) {
750  activeBoard = m_activeBoardsGtDaq & (1 << iActiveBit);
751  }
752 
753  // use board if: in the record, but not in ActiveBoardsMap (iActiveBit < 0)
754  // in the record and ActiveBoardsMap, and active
755  if ((iActiveBit < 0) || activeBoard) {
756 
757  switch (itBoard->gtBoardType()) {
758 
759  case GTFE: {
760  L1GtfeWord gtfeWordValue;
761 
762  gtfeWordValue.setBoardId( itBoard->gtBoardId() );
763 
764  // cast int to boost::uint16_t
765  // there are normally 3 or 5 BxInEvent
766  gtfeWordValue.setRecordLength(
767  static_cast<boost::uint16_t>(recordLength0));
768 
769  gtfeWordValue.setRecordLength1(
770  static_cast<boost::uint16_t>(recordLength1));
771 
772  // bunch crossing
773  gtfeWordValue.setBxNr(bxCrossHw);
774 
775  // set the list of active boards
776  gtfeWordValue.setActiveBoards(m_activeBoardsGtDaq);
777 
778  // set alternative for number of BX per board
779  gtfeWordValue.setAltNrBxBoard(
780  static_cast<boost::uint16_t> (m_alternativeNrBxBoardDaq));
781 
782  // set the TOTAL_TRIGNR as read from iEvent
783  // TODO check again - PTC stuff
784 
785  gtfeWordValue.setTotalTriggerNr(
786  static_cast<boost::uint32_t>(iEvent.id().event()));
787 
788  // ** fill L1GtfeWord in GT DAQ record
789 
790  gtDaqReadoutRecord->setGtfeWord(gtfeWordValue);
791  }
792 
793  break;
794  case TCS: {
795  // nothing
796  }
797 
798  break;
799  case TIM: {
800  // nothing
801  }
802 
803  break;
804  default: {
805  // do nothing, all blocks are given in GtBoardType enum
806  }
807 
808  break;
809  }
810  }
811  }
812 
813  }
814 
815  }
816 
817  // fill the boards not depending on the BxInEvent in the L1 GT EVM record
818 
819  int evmNrFdlBoards = 0;
820 
822 
823  // get the length of the BST message from parameter set or from event setup
824 
825  int bstLengthBytes = 0;
826 
827  if (m_psBstLengthBytes < 0) {
828  // length from event setup
829  bstLengthBytes = static_cast<int> (m_bstLengthBytes);
830 
831  } else {
832  // length from parameter set
833  bstLengthBytes = m_psBstLengthBytes;
834  }
835 
836  if (m_verbosity) {
837 
838  LogTrace("L1GlobalTrigger")
839  << "\n Length of BST message (in bytes): "
840  << bstLengthBytes << "\n"
841  << std::endl;
842  }
843 
844  for (CItBoardMaps
845  itBoard = boardMaps.begin();
846  itBoard != boardMaps.end(); ++itBoard) {
847 
848  int iPosition = itBoard->gtPositionEvmRecord();
849  if (iPosition > 0) {
850 
851  int iActiveBit = itBoard->gtBitEvmActiveBoards();
852  bool activeBoard = false;
853 
854  if (iActiveBit >= 0) {
855  activeBoard = m_activeBoardsGtEvm & (1 << iActiveBit);
856  }
857 
858  // use board if: in the record, but not in ActiveBoardsMap (iActiveBit < 0)
859  // in the record and ActiveBoardsMap, and active
860  if ((iActiveBit < 0) || activeBoard) {
861 
862  switch (itBoard->gtBoardType()) {
863 
864  case GTFE: {
865  L1GtfeExtWord gtfeWordValue(bstLengthBytes);
866 
867  gtfeWordValue.setBoardId(itBoard->gtBoardId() );
868 
869  // cast int to boost::uint16_t
870  // there are normally 3 or 5 BxInEvent
871  gtfeWordValue.setRecordLength(
872  static_cast<boost::uint16_t>(recordLength0));
873 
874  gtfeWordValue.setRecordLength1(
875  static_cast<boost::uint16_t>(recordLength1));
876 
877  // bunch crossing
878  gtfeWordValue.setBxNr(bxCrossHw);
879 
880  // set the list of active boards
881  gtfeWordValue.setActiveBoards(m_activeBoardsGtEvm);
882 
883  // set alternative for number of BX per board
884  gtfeWordValue.setAltNrBxBoard(
885  static_cast<boost::uint16_t> (m_alternativeNrBxBoardEvm));
886 
887  // set the TOTAL_TRIGNR as read from iEvent
888  // TODO check again - PTC stuff
889 
890  gtfeWordValue.setTotalTriggerNr(
891  static_cast<boost::uint32_t>(iEvent.id().event()));
892 
893  // set the GPS time to the value read from Timestamp
894  edm::TimeValue_t evTime = iEvent.time().value();
895 
896  gtfeWordValue.setGpsTime(evTime);
897 
898  //LogDebug("L1GlobalTrigger")
899  //<< "\nEvent timestamp value [hex] = " << std::hex << evTime
900  //<< "\nBST retrieved value [hex] = " << gtfeWordValue.gpsTime()
901  //<< std::dec << std::endl;
902 
903  // source of BST message: DDDD simulated data
904  boost::uint16_t bstSourceVal = 0xDDDD;
905  gtfeWordValue.setBstSource(bstSourceVal);
906 
907  // ** fill L1GtfeWord in GT EVM record
908 
909  gtEvmReadoutRecord->setGtfeWord(gtfeWordValue);
910  }
911 
912  break;
913  case FDL: {
914  evmNrFdlBoards++;
915  }
916 
917  break;
918  case TCS: {
919 
920  L1TcsWord tcsWordValue;
921 
922  tcsWordValue.setBoardId( itBoard->gtBoardId() );
923 
924  // bunch crossing
925  tcsWordValue.setBxNr(bxCrossHw);
926 
927  boost::uint16_t trigType = 0x5; // 0101 simulated event
928  tcsWordValue.setTriggerType(trigType);
929 
930  // luminosity segment number
931  tcsWordValue.setLuminositySegmentNr(
932  static_cast<boost::uint16_t>(iEvent.luminosityBlock()));
933 
934 
935  // set the Event_Nr as read from iEvent
936  tcsWordValue.setEventNr(
937  static_cast<boost::uint32_t>(iEvent.id().event()));
938 
939  // orbit number
940  tcsWordValue.setOrbitNr(
941  static_cast<boost::uint64_t>(iEvent.orbitNumber()) );
942 
943  // ** fill L1TcsWord in the EVM record
944 
945  gtEvmReadoutRecord->setTcsWord(tcsWordValue);
946 
947  }
948 
949  break;
950  case TIM: {
951  // nothing
952  }
953 
954  break;
955  default: {
956  // do nothing, all blocks are given in GtBoardType enum
957  }
958 
959  break;
960  }
961  }
962  }
963 
964  }
965 
966  }
967 
968  // get the prescale factor set used in the actual luminosity segment
969  int pfAlgoSetIndex = 0; // FIXME
970  const std::vector<int>& prescaleFactorsAlgoTrig =
971  (*m_prescaleFactorsAlgoTrig).at(pfAlgoSetIndex);
972 
973  int pfTechSetIndex = 0; // FIXME
974  const std::vector<int>& prescaleFactorsTechTrig =
975  (*m_prescaleFactorsTechTrig).at(pfTechSetIndex);
976 
977  //
978 
979  // loop over BxInEvent
980  for (int iBxInEvent = minBxInEvent; iBxInEvent <= maxBxInEvent;
981  ++iBxInEvent) {
982 
983  // * receive GCT object data via PSBs
984  //LogDebug("L1GlobalTrigger")
985  //<< "\nL1GlobalTrigger : receiving PSB data for bx = " << iBxInEvent << "\n"
986  //<< std::endl;
987 
989  iEvent,
990  m_caloGctInputTag, iBxInEvent,
991  receiveNoIsoEG, m_nrL1NoIsoEG,
992  receiveIsoEG, m_nrL1IsoEG,
993  receiveCenJet, m_nrL1CenJet,
994  receiveForJet, m_nrL1ForJet,
995  receiveTauJet, m_nrL1TauJet,
996  receiveETM, receiveETT, receiveHTT, receiveHTM,
997  receiveJetCounts,
998  receiveHfBitCounts,
999  receiveHfRingEtSums);
1000 
1004  m_technicalTriggersInputTags, iBxInEvent, receiveTechTr,
1006  }
1007 
1008  if (receiveExternal) {
1009  // FIXME read the external conditions
1010  }
1011 
1012 
1015  iEvent, m_activeBoardsGtDaq, recordLength0, recordLength1,
1016  m_alternativeNrBxBoardDaq, boardMaps, iBxInEvent, gtDaqReadoutRecord);
1017  }
1018 
1019  // * receive GMT object data via GTL
1020  //LogDebug("L1GlobalTrigger")
1021  //<< "\nL1GlobalTrigger : receiving GMT data for bx = " << iBxInEvent << "\n"
1022  //<< std::endl;
1023 
1024  m_gtGTL->receiveGmtObjectData(iEvent, m_muGmtInputTag, iBxInEvent,
1025  receiveMu, m_nrL1Mu);
1026 
1027  // * run GTL
1028  //LogDebug("L1GlobalTrigger")
1029  //<< "\nL1GlobalTrigger : running GTL for bx = " << iBxInEvent << "\n"
1030  //<< std::endl;
1031 
1032  m_gtGTL->run(iEvent, evSetup, m_gtPSB,
1033  m_produceL1GtObjectMapRecord, iBxInEvent, gtObjectMapRecord,
1035  m_nrL1Mu,
1036  m_nrL1NoIsoEG,
1037  m_nrL1IsoEG,
1038  m_nrL1CenJet,
1039  m_nrL1ForJet,
1040  m_nrL1TauJet,
1044 
1045  //LogDebug("L1GlobalTrigger")
1046  //<< "\n AlgorithmOR\n" << m_gtGTL->getAlgorithmOR() << "\n"
1047  //<< std::endl;
1048 
1049  // * run FDL
1050  //LogDebug("L1GlobalTrigger")
1051  //<< "\nL1GlobalTrigger : running FDL for bx = " << iBxInEvent << "\n"
1052  //<< std::endl;
1053 
1054  m_gtFDL->run(iEvent,
1055  prescaleFactorsAlgoTrig, prescaleFactorsTechTrig,
1058  boardMaps, m_emulateBxInEvent, iBxInEvent,
1061  m_gtGTL, m_gtPSB,
1062  pfAlgoSetIndex,
1063  pfTechSetIndex,
1069  );
1070 
1071  if (m_produceL1GtDaqRecord && ( daqNrFdlBoards > 0 )) {
1072  m_gtFDL->fillDaqFdlBlock(iBxInEvent,
1073  m_activeBoardsGtDaq, recordLength0, recordLength1, m_alternativeNrBxBoardDaq,
1074  boardMaps, gtDaqReadoutRecord);
1075  }
1076 
1077 
1078  if (m_produceL1GtEvmRecord && ( evmNrFdlBoards > 0 )) {
1079  m_gtFDL->fillEvmFdlBlock(iBxInEvent,
1080  m_activeBoardsGtEvm, recordLength0, recordLength1, m_alternativeNrBxBoardEvm,
1081  boardMaps, gtEvmReadoutRecord);
1082  }
1083 
1084  // reset
1085  m_gtPSB->reset();
1086  m_gtGTL->reset();
1087  m_gtFDL->reset();
1088 
1089  //LogDebug("L1GlobalTrigger") << "\n Reset PSB, GTL, FDL\n" << std::endl;
1090 
1091  }
1092 
1093 
1094  if ( receiveMu ) {
1095 
1096 
1097  //LogDebug("L1GlobalTrigger")
1098  //<< "\n**** "
1099  //<< "\n Persistent reference for L1MuGMTReadoutCollection with input tag: "
1100  //<< m_muGmtInputTag
1101  //<< "\n**** \n"
1102  //<< std::endl;
1103 
1104  // get L1MuGMTReadoutCollection reference and set it in GT record
1105 
1107  iEvent.getByLabel(m_muGmtInputTag, gmtRcHandle);
1108 
1109 
1110 
1111  if (!gmtRcHandle.isValid()) {
1112  if (m_verbosity) {
1113  edm::LogWarning("L1GlobalTrigger")
1114  << "\nWarning: L1MuGMTReadoutCollection with input tag " << m_muGmtInputTag
1115  << "\nrequested in configuration, but not found in the event.\n"
1116  << std::endl;
1117  }
1118  } else {
1119 
1120  gtDaqReadoutRecord->setMuCollectionRefProd(gmtRcHandle);
1121 
1122  }
1123 
1124  }
1125 
1126  if ( m_verbosity && m_isDebugEnabled ) {
1127 
1128  std::ostringstream myCoutStream;
1129  gtDaqReadoutRecord->print(myCoutStream);
1130  LogTrace("L1GlobalTrigger")
1131  << "\n The following L1 GT DAQ readout record was produced:\n"
1132  << myCoutStream.str() << "\n"
1133  << std::endl;
1134 
1135  myCoutStream.str("");
1136  myCoutStream.clear();
1137 
1138  gtEvmReadoutRecord->print(myCoutStream);
1139  LogTrace("L1GlobalTrigger")
1140  << "\n The following L1 GT EVM readout record was produced:\n"
1141  << myCoutStream.str() << "\n"
1142  << std::endl;
1143 
1144  myCoutStream.str("");
1145  myCoutStream.clear();
1146 
1147  const std::vector<L1GlobalTriggerObjectMap> objMapVec =
1148  gtObjectMapRecord->gtObjectMap();
1149 
1150  for (std::vector<L1GlobalTriggerObjectMap>::const_iterator
1151  it = objMapVec.begin(); it != objMapVec.end(); ++it) {
1152 
1153  (*it).print(myCoutStream);
1154 
1155  }
1156 
1157 
1158  LogDebug("L1GlobalTrigger")
1159  << "Test gtObjectMapRecord in L1GlobalTrigger \n\n" << myCoutStream.str() << "\n\n"
1160  << std::endl;
1161 
1162  myCoutStream.str("");
1163  myCoutStream.clear();
1164 
1165  }
1166 
1167  // **
1168  // register products
1169  if (m_produceL1GtDaqRecord) {
1170  iEvent.put( gtDaqReadoutRecord );
1171  }
1172 
1173  if (m_produceL1GtEvmRecord) {
1174  iEvent.put( gtEvmReadoutRecord );
1175  }
1176 
1178  iEvent.put( gtObjectMapRecord );
1179  }
1180 
1181 }
1182 
1183 // static data members
1184 
#define LogDebug(id)
unsigned int gtNumberL1TauJet() const
get / set the number of L1 tau jets received by GT
EventNumber_t event() const
Definition: EventID.h:44
bool isDebugEnabled()
const L1GtTriggerMask * m_l1GtTmVetoTech
void init(const int nrL1Mu, const int numberPhysTriggers)
initialize the class (mainly reserve)
const L1GtTriggerMask * m_l1GtTmVetoAlgo
unsigned long long m_l1GtParCacheID
const L1GtStableParameters * m_l1GtStablePar
cached stuff
void run(edm::Event &iEvent, const edm::EventSetup &evSetup, const L1GlobalTriggerPSB *ptrGtPSB, const bool produceL1GtObjectMapRecord, const int iBxInEvent, std::auto_ptr< L1GlobalTriggerObjectMapRecord > &gtObjectMapRecord, const unsigned int numberPhysTriggers, const int nrL1Mu, const int nrL1NoIsoEG, const int nrL1IsoEG, const int nrL1CenJet, const int nrL1ForJet, const int nrL1TauJet, const int nrL1JetCounts, const int ifMuEtaNumberBits, const int ifCaloEtaNumberBits)
run the GTL
std::vector< unsigned int > m_triggerMaskVetoAlgoTrig
void setBxNr(cms_uint16_t bxNrValue)
Definition: L1GtfeWord.h:127
void setBstSource(const cms_uint16_t bstSourceVal)
std::vector< int > m_recordLength
const boost::uint16_t gtDaqActiveBoards() const
get / set the active boards for L1 GT DAQ record
bool m_technicalTriggersVetoUnmasked
const int gtTotalBxInEvent() const
get / set the total Bx&#39;s in the event
const std::vector< std::vector< int > > * m_prescaleFactorsAlgoTrig
std::vector< unsigned int > m_triggerMaskAlgoTrig
void setBxNr(const cms_uint16_t bxNrValue)
Definition: L1TcsWord.h:92
const unsigned int gtBstLengthBytes() const
get / set length of BST message (in bytes) for L1 GT EVM record
int bunchCrossing() const
Definition: EventBase.h:62
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
void receiveGctObjectData(edm::Event &iEvent, const edm::InputTag &caloGctInputTag, const int iBxInEvent, const bool receiveNoIsoEG, const int nrL1NoIsoEG, const bool receiveIsoEG, const int nrL1IsoEG, const bool receiveCenJet, const int nrL1CenJet, const bool receiveForJet, const int nrL1ForJet, const bool receiveTauJet, const int nrL1TauJet, const bool receiveETM, const bool receiveETT, const bool receiveHTT, const bool receiveHTM, const bool receiveJetCounts, const bool receiveHfBitCounts, const bool receiveHfRingEtSums)
receive Global Calorimeter Trigger objects
bool m_technicalTriggersUnprescaled
void fillEvmFdlBlock(const int iBxInEvent, const boost::uint16_t &activeBoardsGtEvm, const int recordLength0, const int recordLength1, const unsigned int altNrBxBoardEvm, const std::vector< L1GtBoard > &boardMaps, std::auto_ptr< L1GlobalTriggerEvmReadoutRecord > &gtEvmReadoutRecord)
fill the FDL block in the L1 GT EVM record for iBxInEvent
unsigned long long m_l1GtStableParCacheID
void setRecordLength(cms_uint16_t recordLengthValue)
Definition: L1GtfeWord.h:109
void setLuminositySegmentNr(const cms_uint16_t luminositySegmentNrValue)
Definition: L1TcsWord.h:171
const L1GtPrescaleFactors * m_l1GtPfAlgo
prescale factors
unsigned int m_numberPhysTriggers
number of physics triggers
L1GlobalTrigger(const edm::ParameterSet &)
unsigned int gtNumberL1CenJet() const
get / set the number of L1 central jets received by GT
L1GlobalTriggerGTL * m_gtGTL
unsigned int m_bstLengthBytes
length of BST record (in bytes) from event setup
const std::vector< std::vector< int > > * m_prescaleFactorsTechTrig
std::vector< unsigned int > m_triggerMaskVetoTechTrig
bool m_algorithmTriggersUnprescaled
unsigned int gtNumberTechnicalTriggers() const
get / set the number of technical triggers
void setAltNrBxBoard(cms_uint16_t altNrBxBoardValue)
Definition: L1GtfeWord.h:192
unsigned int gtNumberPhysTriggers() const
get / set the number of physics trigger algorithms
void setTotalTriggerNr(cms_uint32_t totalTriggerNrValue)
Definition: L1GtfeWord.h:216
unsigned int gtIfMuEtaNumberBits() const
get / set the number of bits for eta of muon objects
int iEvent
Definition: GenABIO.cc:243
const L1GtTriggerMask * m_l1GtTmTech
void setVerbosity(const int verbosity)
void setVerbosity(const int verbosity)
const T & max(const T &a, const T &b)
unsigned int gtNumberL1ForJet() const
get / set the number of L1 forward jets received by GT
const std::vector< unsigned int > & gtTriggerMask() const
get the trigger mask
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
bool m_algorithmTriggersUnmasked
edm::InputTag m_caloGctInputTag
input tag for calorimeter collections from GCT
boost::uint16_t m_activeBoardsGtEvm
unsigned long long m_l1GtPfTechCacheID
void receiveTechnicalTriggers(edm::Event &iEvent, const std::vector< edm::InputTag > &technicalTriggersInputTags, const int iBxInEvent, const bool receiveTechTr, const int nrL1TechTr)
receive technical trigger
void reset()
clear PSB
virtual void produce(edm::Event &, const edm::EventSetup &)
unsigned int m_alternativeNrBxBoardDaq
int m_verbosity
verbosity level
L1GlobalTriggerFDL * m_gtFDL
const L1GtParameters * m_l1GtPar
parameters
std::vector< unsigned int > m_triggerMaskTechTrig
const L1GtPrescaleFactors * m_l1GtPfTech
unsigned long long m_l1GtTmAlgoCacheID
int orbitNumber() const
Definition: EventBase.h:63
void setRecordLength1(cms_uint16_t recordLengthValue)
Definition: L1GtfeWord.h:90
std::vector< edm::InputTag > m_technicalTriggersInputTags
input tag for technical triggers
unsigned int m_alternativeNrBxBoardEvm
bool isValid() const
Definition: HandleBase.h:76
unsigned long long TimeValue_t
Definition: Timestamp.h:28
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
#define LogTrace(id)
bool m_produceL1GtDaqRecord
logical flag to produce the L1 GT DAQ readout record
unsigned int gtNumberL1NoIsoEG() const
get / set the number of L1 e/gamma objects received by GT
unsigned int gtNumberL1JetCounts() const
get / set the number of L1 jet counts received by GT
void setBoardId(cms_uint16_t boardIdValue)
set BoardId from a BoardId value
Definition: L1GtfeWord.h:71
bool m_produceL1GtObjectMapRecord
logical flag to produce the L1 GT object map record
void setBoardId(const cms_uint16_t boardIdValue)
set BoardId from a BoardId value
Definition: L1TcsWord.h:72
boost::uint16_t m_activeBoardsGtDaq
active boards in L1 GT DAQ record and in L1 GT EVM record
unsigned int gtIfCaloEtaNumberBits() const
get / set the number of bits for eta of calorimeter objects
edm::InputTag m_muGmtInputTag
input tag for muon collection from GMT
bool m_produceL1GtEvmRecord
logical flag to produce the L1 GT EVM readout record
void reset()
clear FDL
const L1GtTriggerMask * m_l1GtTmAlgo
trigger masks &amp; veto masks
const std::vector< std::vector< int > > & gtPrescaleFactors() const
get the prescale factors by reference
void setActiveBoards(cms_uint16_t activeBoardsValue)
Definition: L1GtfeWord.h:168
const boost::uint16_t gtEvmActiveBoards() const
get / set the active boards for L1 GT EVM record
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
unsigned long long m_l1GtTmVetoTechCacheID
void receiveGmtObjectData(edm::Event &, const edm::InputTag &, const int iBxInEvent, const bool receiveMu, const int nrL1Mu)
receive data from Global Muon Trigger
unsigned long long m_l1GtBMCacheID
L1GlobalTriggerPSB * m_gtPSB
bool m_technicalTriggersUnmasked
bool m_readTechnicalTriggerRecords
logical flag to read the technical trigger records
edm::EventID id() const
Definition: EventBase.h:56
bool m_writePsbL1GtDaqRecord
logical flag to write the PSB content in the L1 GT DAQ record
void run(edm::Event &iEvent, const std::vector< int > &prescaleFactorsAlgoTrig, const std::vector< int > &prescaleFactorsTechTrig, const std::vector< unsigned int > &triggerMaskAlgoTrig, const std::vector< unsigned int > &triggerMaskTechTrig, const std::vector< unsigned int > &triggerMaskVetoAlgoTrig, const std::vector< unsigned int > &triggerMaskVetoTechTrig, const std::vector< L1GtBoard > &boardMaps, const int totalBxInEvent, const int iBxInEvent, const unsigned int numberPhysTriggers, const unsigned int numberTechnicalTriggers, const unsigned int numberDaqPartitions, const L1GlobalTriggerGTL *ptrGTL, const L1GlobalTriggerPSB *ptrPSB, const int pfAlgoSetIndex, const int pfTechSetIndex, const bool algorithmTriggersUnprescaled, const bool algorithmTriggersUnmasked, const bool technicalTriggersUnprescaled, const bool technicalTriggersUnmasked, const bool technicalTriggersVetoUnmasked)
run the FDL
const std::vector< L1GtBoard > & gtBoardMaps() const
get / set / print the L1 GT board map
Definition: L1GtBoardMaps.h:45
void setGpsTime(const cms_uint64_t)
void setTriggerType(const cms_uint16_t triggerTypeValue)
Definition: L1TcsWord.h:132
int m_totalBxInEvent
total number of Bx&#39;s in the event coming from EventSetup
unsigned int m_numberTechnicalTriggers
number of technical triggers
void setEventNr(const cms_uint32_t eventNrValue)
Definition: L1TcsWord.h:251
void setVerbosity(const int verbosity)
const L1GtBoardMaps * m_l1GtBM
board maps - cache only the record
unsigned long long m_l1GtTmTechCacheID
unsigned int m_numberDaqPartitions
number of DAQ partitions
void fillPsbBlock(edm::Event &iEvent, const boost::uint16_t &activeBoardsGtDaq, const int recordLength0, const int recordLength1, const unsigned int altNrBxBoardDaq, const std::vector< L1GtBoard > &boardMaps, const int iBxInEvent, std::auto_ptr< L1GlobalTriggerReadoutRecord > &gtDaqReadoutRecord)
fill the content of active PSB boards
void init(const int nrL1NoIsoEG, const int nrL1IsoEG, const int nrL1CenJet, const int nrL1ForJet, const int nrL1TauJet, const int numberTechnicalTriggers)
initialize the class (mainly reserve)
edm::InputTag m_castorInputTag
input tag for CASTOR record
unsigned int gtNumberL1IsoEG() const
get / set the number of L1 isolated e/gamma objects received by GT
TimeValue_t value() const
Definition: Timestamp.h:56
int m_psBstLengthBytes
length of BST record (in bytes) from parameter set
void setOrbitNr(const cms_uint64_t orbitNrValue)
Definition: L1TcsWord.h:271
void fillDaqFdlBlock(const int iBxInEvent, const boost::uint16_t &activeBoardsGtDaq, const int recordLength0, const int recordLength1, const unsigned int altNrBxBoardDaq, const std::vector< L1GtBoard > &boardMaps, std::auto_ptr< L1GlobalTriggerReadoutRecord > &gtDaqReadoutRecord)
fill the FDL block in the L1 GT DAQ record for iBxInEvent
edm::Timestamp time() const
Definition: EventBase.h:57
unsigned long long m_l1GtTmVetoAlgoCacheID
unsigned int gtNumberL1Mu() const
get / set the number of L1 muons received by GT
unsigned long long m_l1GtPfAlgoCacheID
void reset()
clear GTL