CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
l1t::GlobalBoard Class Reference

#include <GlobalBoard.h>

Classes

struct  PrescaleCounter
 

Public Member Functions

void enableAXOScoreSaving (bool savescore)
 
void fillAlgRecord (int iBxInEvent, std::unique_ptr< GlobalAlgBlkBxCollection > &uGtAlgRecord, int prescaleSet, int menuUUID, int firmwareUUID)
 Fill the Daq Records. More...
 
void fillAXOScore (int iBxInEvent, std::unique_ptr< AXOL1TLScoreBxCollection > &AxoScoreRecord)
 
const std::bitset< GlobalAlgBlk::maxPhysicsTriggers > & getAlgorithmOR () const
 return algorithm OR decision More...
 
const BXVector< const l1t::L1Candidate * > * getCandL1EG () const
 pointer to EG data list More...
 
const BXVector< const l1t::EtSum * > * getCandL1EtSum () const
 pointer to EtSum data list More...
 
const BXVector< const l1t::EtSum * > * getCandL1EtSumZdc () const
 pointer to ZDC EtSum data list More...
 
const BXVector< const GlobalExtBlk * > * getCandL1External () const
 pointer to External data list More...
 
const BXVector< const l1t::L1Candidate * > * getCandL1Jet () const
 pointer to Jet data list More...
 
const BXVector< const l1t::Muon * > * getCandL1Mu () const
 return global muon trigger candidate More...
 
const BXVector< std::shared_ptr< l1t::MuonShower > > * getCandL1MuShower () const
 return global muon trigger candidate More...
 
const BXVector< const l1t::L1Candidate * > * getCandL1Tau () const
 pointer to Tau data list More...
 
const float getCICADAScore () const
 
const std::bitset< GlobalAlgBlk::maxPhysicsTriggers > & getDecisionWord () const
 return decision More...
 
 GlobalBoard ()
 
void init (const int numberPhysTriggers, const int nrL1Mu, const int nrL1MuShower, const int nrL1EG, const int nrL1Tau, const int nrL1Jet, int bxFirst, int bxLast)
 initialize the class (mainly reserve) More...
 
void printGmtData (const int iBxInEvent) const
 print received Muon dataWord More...
 
void receiveCaloObjectData (const edm::Event &, const edm::EDGetTokenT< BXVector< l1t::EGamma >> &, const edm::EDGetTokenT< BXVector< l1t::Tau >> &, const edm::EDGetTokenT< BXVector< l1t::Jet >> &, const edm::EDGetTokenT< BXVector< l1t::EtSum >> &, const edm::EDGetTokenT< BXVector< l1t::EtSum >> &, const edm::EDGetTokenT< BXVector< float >> &, const bool receiveEG, const int nrL1EG, const bool receiveTau, const int nrL1Tau, const bool receiveJet, const int nrL1Jet, const bool receiveEtSums, const bool receiveEtSumsZdc, const bool receiveCICADA)
 receive data from Global Muon Trigger More...
 
void receiveExternalData (const edm::Event &, const edm::EDGetTokenT< BXVector< GlobalExtBlk >> &, const bool receiveExt)
 
void receiveMuonObjectData (const edm::Event &, const edm::EDGetTokenT< BXVector< l1t::Muon >> &, const bool receiveMu, const int nrL1Mu)
 
void receiveMuonShowerObjectData (const edm::Event &, const edm::EDGetTokenT< BXVector< l1t::MuonShower >> &, const bool receiveMuShower, const int nrL1MuShower)
 
void reset ()
 clear uGT More...
 
void resetCalo ()
 
void resetExternal ()
 
void resetMu ()
 
void resetMuonShower ()
 
void runFDL (const edm::Event &iEvent, const int iBxInEvent, const int totalBxInEvent, const unsigned int numberPhysTriggers, const std::vector< double > &prescaleFactorsAlgoTrig, const std::vector< unsigned int > &triggerMaskAlgoTrig, const std::vector< int > &triggerMaskVetoAlgoTrig, const bool algorithmTriggersUnprescaled, const bool algorithmTriggersUnmasked)
 run the uGT FDL (Apply Prescales and Veto) More...
 
void runGTL (const edm::Event &iEvent, const edm::EventSetup &evSetup, const TriggerMenu *m_l1GtMenu, const bool produceL1GtObjectMapRecord, const int iBxInEvent, std::unique_ptr< GlobalObjectMapRecord > &gtObjectMapRecord, const unsigned int numberPhysTriggers, const int nrL1Mu, const int nrL1MuShower, const int nrL1EG, const int nrL1Tau, const int nrL1Jet)
 run the uGT GTL (Conditions and Algorithms) More...
 
void setBxFirst (int bx)
 
void setBxLast (int bx)
 
void setCICADAScore (float val)
 
void setResetPSCountersEachLumiSec (bool val)
 
void setSemiRandomInitialPSCounters (bool val)
 
void setVerbosity (const int verbosity)
 
virtual ~GlobalBoard ()
 

Static Private Member Functions

static std::vector< PrescaleCounterprescaleCounters (std::vector< double > const &prescaleFactorsAlgoTrig)
 
static std::vector< PrescaleCounterprescaleCountersWithSemirandomInitialCounter (std::vector< double > const &prescaleFactorsAlgoTrig, edm::Event const &iEvent)
 

Private Attributes

bool m_algFinalOr
 
bool m_algFinalOrVeto
 
bool m_algInitialOr
 
bool m_algIntermOr
 
bool m_algPrescaledOr
 
unsigned int m_boardEventCount
 
int m_bxFirst_
 
int m_bxLast_
 
BXVector< const l1t::L1Candidate * > * m_candL1EG
 
BXVector< const l1t::EtSum * > * m_candL1EtSum
 
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
 
BXVector< const GlobalExtBlk * > * m_candL1External
 
BXVector< const l1t::L1Candidate * > * m_candL1Jet
 
BXVector< const l1t::Muon * > * m_candL1Mu
 
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
 
BXVector< const l1t::L1Candidate * > * m_candL1Tau
 
float m_cicadaScore = 0.0
 
std::vector< AlgorithmEvaluation::ConditionEvaluationMapm_conditionResultMaps
 
unsigned int m_currentLumi
 
std::bitset< GlobalAlgBlk::maxPhysicsTriggersm_gtlAlgorithmOR
 
std::bitset< GlobalAlgBlk::maxPhysicsTriggersm_gtlDecisionWord
 
bool m_isDebugEnabled
 
const L1CaloGeometrym_l1CaloGeometry
 
unsigned long long m_l1CaloGeometryCacheID
 
const TriggerMenum_l1GtMenu
 
unsigned long long m_l1GtMenuCacheID
 
const L1MuTriggerScalesm_l1MuTriggerScales
 
unsigned long long m_l1MuTriggerScalesCacheID
 
std::vector< std::vector< PrescaleCounter > > m_prescaleCounterAlgoTrig
 
bool m_resetPSCountersEachLumiSec = false
 
bool m_saveAXOScore = false
 
bool m_semiRandomInitialPSCounters = false
 
float m_storedAXOScore = -999.0
 
GlobalAlgBlk m_uGtAlgBlk
 
AXOL1TLScore m_uGtAXOScore
 
int m_uGtBoardNumber
 
bool m_uGtFinalBoard
 
int m_verbosity
 verbosity level More...
 

Static Private Attributes

static constexpr size_t m_singlestep = 100
 

Detailed Description

Definition at line 57 of file GlobalBoard.h.

Constructor & Destructor Documentation

◆ GlobalBoard()

GlobalBoard::GlobalBoard ( )

Definition at line 69 of file GlobalBoard.cc.

References m_boardEventCount, m_gtlAlgorithmOR, m_gtlDecisionWord, m_l1CaloGeometryCacheID, m_l1GtMenuCacheID, m_l1MuTriggerScalesCacheID, m_prescaleCounterAlgoTrig, m_uGtAlgBlk, m_uGtAXOScore, m_uGtBoardNumber, m_uGtFinalBoard, AXOL1TLScore::reset(), and GlobalAlgBlk::reset().

71  m_candL1MuShower(new BXVector<std::shared_ptr<l1t::MuonShower>>),
78  m_currentLumi(0),
82 
83  m_gtlAlgorithmOR.reset();
84  m_gtlDecisionWord.reset();
85 
87 
88  // Initialize cached IDs
89  m_l1GtMenuCacheID = 0ULL;
92 
93  // Counter for number of events board sees
95 
96  // A single uGT GlobalBoard is taken into account in the emulator
97  m_uGtBoardNumber = 0;
98  m_uGtFinalBoard = true;
99 }
bool isDebugEnabled()
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:239
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:245
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:240
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:241
unsigned long long m_l1MuTriggerScalesCacheID
Definition: GlobalBoard.h:233
unsigned int m_currentLumi
Definition: GlobalBoard.h:271
unsigned long long m_l1GtMenuCacheID
Definition: GlobalBoard.h:226
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlDecisionWord
Definition: GlobalBoard.h:259
unsigned int m_boardEventCount
Definition: GlobalBoard.h:286
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:244
void reset()
reset the content of a GlobalAlgBlk
AXOL1TLScore m_uGtAXOScore
Definition: GlobalBoard.h:264
unsigned long long m_l1CaloGeometryCacheID
Definition: GlobalBoard.h:230
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:243
std::vector< std::vector< PrescaleCounter > > m_prescaleCounterAlgoTrig
Definition: GlobalBoard.h:322
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:261
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:246
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlAlgorithmOR
Definition: GlobalBoard.h:258
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:242

◆ ~GlobalBoard()

GlobalBoard::~GlobalBoard ( )
virtual

Definition at line 102 of file GlobalBoard.cc.

102  {
103  delete m_candL1Mu;
104  delete m_candL1MuShower;
105  delete m_candL1EG;
106  delete m_candL1Tau;
107  delete m_candL1Jet;
108  delete m_candL1EtSum;
109  delete m_candL1EtSumZdc;
110  delete m_candL1External;
111 }
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:239
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:245
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:240
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:241
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:244
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:243
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:246
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:242

Member Function Documentation

◆ enableAXOScoreSaving()

void l1t::GlobalBoard::enableAXOScoreSaving ( bool  savescore)
inline

Definition at line 219 of file GlobalBoard.h.

References m_saveAXOScore.

219 { m_saveAXOScore = savescore; }

◆ fillAlgRecord()

void GlobalBoard::fillAlgRecord ( int  iBxInEvent,
std::unique_ptr< GlobalAlgBlkBxCollection > &  uGtAlgRecord,
int  prescaleSet,
int  menuUUID,
int  firmwareUUID 
)

Fill the Daq Records.

Definition at line 1191 of file GlobalBoard.cc.

References LogDebug.

1195  {
1196  if (m_verbosity) {
1197  LogDebug("L1TGlobal") << "\n**** GlobalBoard fill DAQ Records for bx= " << iBxInEvent;
1198  }
1199 
1200  // Set header information
1201  m_uGtAlgBlk.setbxInEventNr((iBxInEvent & 0xF));
1202  m_uGtAlgBlk.setPreScColumn(prescaleSet);
1203  m_uGtAlgBlk.setL1MenuUUID(menuUUID);
1204  m_uGtAlgBlk.setL1FirmwareUUID(firmwareUUID);
1205 
1209 
1210  uGtAlgRecord->push_back(iBxInEvent, m_uGtAlgBlk);
1211 }
void setL1MenuUUID(int uuid)
set simple members
Definition: GlobalAlgBlk.h:55
void setFinalORPreVeto(bool fOR)
Definition: GlobalAlgBlk.h:59
void setbxInEventNr(int bxNr)
Definition: GlobalAlgBlk.h:57
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
void setFinalOR(bool fOR)
Definition: GlobalAlgBlk.h:60
void setFinalORVeto(bool fOR)
Definition: GlobalAlgBlk.h:58
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:261
void setL1FirmwareUUID(int fuuid)
Definition: GlobalAlgBlk.h:56
void setPreScColumn(int psC)
Definition: GlobalAlgBlk.h:61
#define LogDebug(id)

◆ fillAXOScore()

void GlobalBoard::fillAXOScore ( int  iBxInEvent,
std::unique_ptr< AXOL1TLScoreBxCollection > &  AxoScoreRecord 
)

Definition at line 524 of file GlobalBoard.cc.

524  {
526  m_uGtAXOScore.setbxInEventNr((iBxInEvent & 0xF));
527 
528  //save stored condition score if Bx is zero, else set to 0
529  float scorevalue = 0.0;
530  if (iBxInEvent == 0) {
531  scorevalue = m_storedAXOScore;
532  }
533 
534  //set dataformat value
535  m_uGtAXOScore.setAXOScore(scorevalue);
536  AxoScoreRecord->push_back(iBxInEvent, m_uGtAXOScore);
537 }
void setbxInEventNr(int bxNr)
Definition: AXOL1TLScore.h:53
AXOL1TLScore m_uGtAXOScore
Definition: GlobalBoard.h:264
float m_storedAXOScore
Definition: GlobalBoard.h:265
void setAXOScore(float score)
set/get axo score and other simple members
Definition: AXOL1TLScore.h:52

◆ getAlgorithmOR()

const std::bitset<GlobalAlgBlk::maxPhysicsTriggers>& l1t::GlobalBoard::getAlgorithmOR ( ) const
inline

return algorithm OR decision

Definition at line 154 of file GlobalBoard.h.

References m_gtlAlgorithmOR.

154 { return m_gtlAlgorithmOR; }
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlAlgorithmOR
Definition: GlobalBoard.h:258

◆ getCandL1EG()

const BXVector<const l1t::L1Candidate*>* l1t::GlobalBoard::getCandL1EG ( ) const
inline

pointer to EG data list

Definition at line 163 of file GlobalBoard.h.

References m_candL1EG.

163 { return m_candL1EG; }
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:241

◆ getCandL1EtSum()

const BXVector<const l1t::EtSum*>* l1t::GlobalBoard::getCandL1EtSum ( ) const
inline

pointer to EtSum data list

Definition at line 172 of file GlobalBoard.h.

References m_candL1EtSum.

172 { return m_candL1EtSum; }
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:244

◆ getCandL1EtSumZdc()

const BXVector<const l1t::EtSum*>* l1t::GlobalBoard::getCandL1EtSumZdc ( ) const
inline

pointer to ZDC EtSum data list

Definition at line 175 of file GlobalBoard.h.

References m_candL1EtSumZdc.

175 { return m_candL1EtSumZdc; }
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:245

◆ getCandL1External()

const BXVector<const GlobalExtBlk*>* l1t::GlobalBoard::getCandL1External ( ) const
inline

pointer to External data list

Definition at line 178 of file GlobalBoard.h.

References m_candL1External.

178 { return m_candL1External; }
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:246

◆ getCandL1Jet()

const BXVector<const l1t::L1Candidate*>* l1t::GlobalBoard::getCandL1Jet ( ) const
inline

pointer to Jet data list

Definition at line 166 of file GlobalBoard.h.

References m_candL1Jet.

166 { return m_candL1Jet; }
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:243

◆ getCandL1Mu()

const BXVector<const l1t::Muon*>* l1t::GlobalBoard::getCandL1Mu ( ) const
inline

return global muon trigger candidate

Definition at line 157 of file GlobalBoard.h.

References m_candL1Mu.

157 { return m_candL1Mu; }
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:239

◆ getCandL1MuShower()

const BXVector<std::shared_ptr<l1t::MuonShower> >* l1t::GlobalBoard::getCandL1MuShower ( ) const
inline

return global muon trigger candidate

Definition at line 160 of file GlobalBoard.h.

References m_candL1MuShower.

160 { return m_candL1MuShower; }
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:240

◆ getCandL1Tau()

const BXVector<const l1t::L1Candidate*>* l1t::GlobalBoard::getCandL1Tau ( ) const
inline

pointer to Tau data list

Definition at line 169 of file GlobalBoard.h.

References m_candL1Tau.

169 { return m_candL1Tau; }
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:242

◆ getCICADAScore()

const float l1t::GlobalBoard::getCICADAScore ( ) const
inline

Definition at line 180 of file GlobalBoard.h.

References m_cicadaScore.

180 { return m_cicadaScore; }

◆ getDecisionWord()

const std::bitset<GlobalAlgBlk::maxPhysicsTriggers>& l1t::GlobalBoard::getDecisionWord ( ) const
inline

return decision

Definition at line 151 of file GlobalBoard.h.

References m_gtlDecisionWord.

151 { return m_gtlDecisionWord; }
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlDecisionWord
Definition: GlobalBoard.h:259

◆ init()

void GlobalBoard::init ( const int  numberPhysTriggers,
const int  nrL1Mu,
const int  nrL1MuShower,
const int  nrL1EG,
const int  nrL1Tau,
const int  nrL1Jet,
int  bxFirst,
int  bxLast 
)

initialize the class (mainly reserve)

Definition at line 118 of file GlobalBoard.cc.

References simCaloStage2Layer1Digis_cfi::bxFirst, simCaloStage2Layer1Digis_cfi::bxLast, and LogDebug.

125  {
127  setBxLast(bxLast);
128 
137 
138  m_uGtAlgBlk.reset();
139 
140  LogDebug("L1TGlobal") << "\t Initializing Board with bxFirst = " << m_bxFirst_ << ", bxLast = " << m_bxLast_;
141 }
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:239
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:245
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:240
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:241
void setBxLast(int bx)
Definition: GlobalBoard.cc:116
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:244
void reset()
reset the content of a GlobalAlgBlk
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:243
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:261
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:246
void setBxFirst(int bx)
Definition: GlobalBoard.cc:114
void setBXRange(int bxFirst, int bxLast)
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:242
#define LogDebug(id)

◆ prescaleCounters()

std::vector< l1t::GlobalBoard::PrescaleCounter > GlobalBoard::prescaleCounters ( std::vector< double > const &  prescaleFactorsAlgoTrig)
staticprivate

Definition at line 1272 of file GlobalBoard.cc.

References MillePedeFileConverter_cfg::out.

1273  {
1274  std::vector<PrescaleCounter> out;
1275  out.reserve(prescaleFactorsAlgoTrig.size());
1276  for (size_t iAlgo = 0; iAlgo < prescaleFactorsAlgoTrig.size(); ++iAlgo) {
1277  out.emplace_back(prescaleFactorsAlgoTrig[iAlgo]);
1278  }
1279  return out;
1280 }

◆ prescaleCountersWithSemirandomInitialCounter()

std::vector< l1t::GlobalBoard::PrescaleCounter > GlobalBoard::prescaleCountersWithSemirandomInitialCounter ( std::vector< double > const &  prescaleFactorsAlgoTrig,
edm::Event const &  iEvent 
)
staticprivate

Definition at line 1283 of file GlobalBoard.cc.

References iEvent, and MillePedeFileConverter_cfg::out.

1284  {
1285  // pick a (semi)random number seeding based on run, lumi, event numbers,
1286  // this leads to different (semi)random numbers for different streams,
1287  // reminder: different streams have different initial event number
1288  std::srand(iEvent.id().run());
1289  std::srand(std::rand() + iEvent.id().luminosityBlock());
1290  std::srand(std::rand() + iEvent.id().event());
1291  int const semirandom = std::rand();
1292 
1293  std::vector<PrescaleCounter> out;
1294  out.reserve(prescaleFactorsAlgoTrig.size());
1295 
1296  for (size_t iAlgo = 0; iAlgo < prescaleFactorsAlgoTrig.size(); ++iAlgo) {
1297  out.emplace_back(prescaleFactorsAlgoTrig[iAlgo]);
1298  // initialise trigger_counter to a (semi)random integer
1299  // between 0 and prescale_count - 1 (both inclusive)
1300  // (this only changes the behaviour of triggers with PS > 1)
1301  auto& prescaleCounter = out.back();
1302  if (prescaleCounter.prescale_count > 0) {
1303  prescaleCounter.trigger_counter = semirandom % prescaleCounter.prescale_count;
1304  }
1305  }
1306 
1307  return out;
1308 }
int iEvent
Definition: GenABIO.cc:224

◆ printGmtData()

void GlobalBoard::printGmtData ( const int  iBxInEvent) const

print received Muon dataWord

Definition at line 1264 of file GlobalBoard.cc.

References LogTrace.

1264  {
1265  LogTrace("L1TGlobal") << "\nl1t::L1GlobalTrigger: uGMT data received for BxInEvent = " << iBxInEvent;
1266 
1267  int nrL1Mu = m_candL1Mu->size(iBxInEvent);
1268  LogTrace("L1TGlobal") << "Number of GMT muons = " << nrL1Mu << "\n";
1269 }
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:239
#define LogTrace(id)
unsigned size(int bx) const

◆ receiveCaloObjectData()

void GlobalBoard::receiveCaloObjectData ( const edm::Event iEvent,
const edm::EDGetTokenT< BXVector< l1t::EGamma >> &  egInputToken,
const edm::EDGetTokenT< BXVector< l1t::Tau >> &  tauInputToken,
const edm::EDGetTokenT< BXVector< l1t::Jet >> &  jetInputToken,
const edm::EDGetTokenT< BXVector< l1t::EtSum >> &  sumInputToken,
const edm::EDGetTokenT< BXVector< l1t::EtSum >> &  sumZdcInputToken,
const edm::EDGetTokenT< BXVector< float >> &  CICADAInputToken,
const bool  receiveEG,
const int  nrL1EG,
const bool  receiveTau,
const int  nrL1Tau,
const bool  receiveJet,
const int  nrL1Jet,
const bool  receiveEtSums,
const bool  receiveEtSumsZdc,
const bool  receiveCICADA 
)

receive data from Global Muon Trigger

Definition at line 144 of file GlobalBoard.cc.

References mps_fire::i, iEvent, edm::HandleBase::isValid(), metsig::jet, LogDebug, LogTrace, and metsig::tau.

159  {
160  if (m_verbosity) {
161  LogDebug("L1TGlobal") << "\n**** Board receiving Calo Data ";
162  }
163 
164  resetCalo();
165 
166  // get data from Calorimeter
167  if (receiveEG) {
169  iEvent.getByToken(egInputToken, egData);
170 
171  if (!egData.isValid()) {
172  if (m_verbosity) {
173  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::EGamma> collection"
174  << "\nrequested in configuration, but not found in the event.\n";
175  }
176  } else {
177  // bx in EG data
178  for (int i = egData->getFirstBX(); i <= egData->getLastBX(); ++i) {
179  // Prevent from pushing back bx that is outside of allowed range
180  if (i < m_bxFirst_ || i > m_bxLast_)
181  continue;
182 
183  //Loop over EG in this bx
184  int nObj = 0;
185  for (std::vector<l1t::EGamma>::const_iterator eg = egData->begin(i); eg != egData->end(i); ++eg) {
186  if (nObj < nrL1EG) {
187  (*m_candL1EG).push_back(i, &(*eg));
188  } else {
189  edm::LogWarning("L1TGlobal") << " Too many EG (" << nObj << ") for uGT Configuration maxEG =" << nrL1EG;
190  }
191  LogDebug("L1TGlobal") << "EG Pt " << eg->hwPt() << " Eta " << eg->hwEta() << " Phi " << eg->hwPhi()
192  << " Qual " << eg->hwQual() << " Iso " << eg->hwIso();
193 
194  nObj++;
195  } //end loop over EG in bx
196  } //end loop over bx
197  } //end if over valid EG data
198  } //end if ReceiveEG data
199 
200  if (receiveTau) {
202  iEvent.getByToken(tauInputToken, tauData);
203 
204  if (!tauData.isValid()) {
205  if (m_verbosity) {
206  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::Tau> collection"
207  << "\nrequested in configuration, but not found in the event.\n";
208  }
209  } else {
210  // bx in tau data
211  for (int i = tauData->getFirstBX(); i <= tauData->getLastBX(); ++i) {
212  // Prevent from pushing back bx that is outside of allowed range
213  if (i < m_bxFirst_ || i > m_bxLast_)
214  continue;
215 
216  //Loop over tau in this bx
217  int nObj = 0;
218  for (std::vector<l1t::Tau>::const_iterator tau = tauData->begin(i); tau != tauData->end(i); ++tau) {
219  if (nObj < nrL1Tau) {
220  (*m_candL1Tau).push_back(i, &(*tau));
221  } else {
222  LogTrace("L1TGlobal") << " Too many Tau (" << nObj << ") for uGT Configuration maxTau =" << nrL1Tau;
223  }
224 
225  LogDebug("L1TGlobal") << "tau Pt " << tau->hwPt() << " Eta " << tau->hwEta() << " Phi " << tau->hwPhi()
226  << " Qual " << tau->hwQual() << " Iso " << tau->hwIso();
227  nObj++;
228 
229  } //end loop over tau in bx
230  } //end loop over bx
231  } //end if over valid tau data
232  } //end if ReceiveTau data
233 
234  if (receiveJet) {
236  iEvent.getByToken(jetInputToken, jetData);
237 
238  if (!jetData.isValid()) {
239  if (m_verbosity) {
240  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::Jet> collection"
241  << "\nrequested in configuration, but not found in the event.\n";
242  }
243  } else {
244  // bx in jet data
245  for (int i = jetData->getFirstBX(); i <= jetData->getLastBX(); ++i) {
246  // Prevent from pushing back bx that is outside of allowed range
247  if (i < m_bxFirst_ || i > m_bxLast_)
248  continue;
249 
250  //Loop over jet in this bx
251  int nObj = 0;
252  for (std::vector<l1t::Jet>::const_iterator jet = jetData->begin(i); jet != jetData->end(i); ++jet) {
253  if (nObj < nrL1Jet) {
254  (*m_candL1Jet).push_back(i, &(*jet));
255  } else {
256  edm::LogWarning("L1TGlobal") << " Too many Jets (" << nObj << ") for uGT Configuration maxJet =" << nrL1Jet;
257  }
258 
259  LogDebug("L1TGlobal") << "Jet Pt " << jet->hwPt() << " Eta " << jet->hwEta() << " Phi " << jet->hwPhi()
260  << " Qual " << jet->hwQual() << " Iso " << jet->hwIso();
261  nObj++;
262  } //end loop over jet in bx
263  } //end loop over bx
264  } //end if over valid jet data
265  } //end if ReceiveJet data
266 
267  if (receiveEtSums) {
269  iEvent.getByToken(sumInputToken, etSumData);
270 
271  if (!etSumData.isValid()) {
272  if (m_verbosity) {
273  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::EtSum> collection"
274  << "\nrequested in configuration, but not found in the event.\n";
275  }
276  } else {
277  for (int i = etSumData->getFirstBX(); i <= etSumData->getLastBX(); ++i) {
278  // Prevent from pushing back bx that is outside of allowed range
279  if (i < m_bxFirst_ || i > m_bxLast_)
280  continue;
281 
282  //Loop over EtSum objects in this bx
283  for (std::vector<l1t::EtSum>::const_iterator etsum = etSumData->begin(i); etsum != etSumData->end(i); ++etsum) {
284  (*m_candL1EtSum).push_back(i, &(*etsum));
285 
286  /* In case we need to split these out
287  switch ( etsum->getType() ) {
288  case l1t::EtSum::EtSumType::kMissingEt:
289  {
290  //(*m_candETM).push_back(i,&(*etsum));
291  LogDebug("L1TGlobal") << "ETM: Pt " << etsum->hwPt() << " Phi " << etsum->hwPhi();
292  }
293  break;
294  case l1t::EtSum::EtSumType::kMissingHt:
295  {
296  //(*m_candHTM).push_back(i,&(*etsum));
297  LogDebug("L1TGlobal") << "HTM: Pt " << etsum->hwPt() << " Phi " << etsum->hwPhi();
298  }
299  break;
300  case l1t::EtSum::EtSumType::kTotalEt:
301  {
302  //(*m_candETT).push_back(i,&(*etsum));
303  LogDebug("L1TGlobal") << "ETT: Pt " << etsum->hwPt();
304  }
305  break;
306  case l1t::EtSum::EtSumType::kTotalHt:
307  {
308  //(*m_candHTT).push_back(i,&(*etsum));
309  LogDebug("L1TGlobal") << "HTT: Pt " << etsum->hwPt();
310  }
311  break;
312  case l1t::EtSum::EtSumType::kTowerCount:
313  {
314  //(*m_candTowerCount).push_back(i,&(*etsum));
315  LogDebug("L1TGlobal") << "TowerCount: " << etsum->hwPt();
316  }
317  break;
318  default:
319  LogDebug("L1TGlobal") << "Default encounted ";
320  break;
321  }
322 */
323 
324  } //end loop over EtSum objects in bx
325  } //end loop over Bx
326  }
327  }
328 
329  if (receiveEtSumsZdc) {
331  iEvent.getByToken(sumZdcInputToken, etSumData);
332 
333  if (!etSumData.isValid()) {
334  if (m_verbosity) {
335  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the ZDC Energy Sums collection"
336  << "\nrequested in configuration, but not found in the event.\n";
337  }
338  } else {
339  for (int i = etSumData->getFirstBX(); i <= etSumData->getLastBX(); ++i) {
340  // Prevent from pushing back bx that is outside of allowed range
341  if (i < m_bxFirst_ || i > m_bxLast_)
342  continue;
343 
344  for (std::vector<l1t::EtSum>::const_iterator etsum = etSumData->begin(i); etsum != etSumData->end(i); ++etsum) {
345  (*m_candL1EtSumZdc).push_back(i, &(*etsum));
346  }
347  } //end loop over Bx
348  }
349  }
350  if (receiveCICADA) {
351  edm::Handle<BXVector<float>> cicadaScoreHandle;
352  iEvent.getByToken(CICADAInputToken, cicadaScoreHandle);
353  if (not cicadaScoreHandle.isValid()) {
354  if (m_verbosity) {
355  edm::LogWarning("L1Tglobal") << "\nWarning: Input tag for the CICADA score"
356  << "\nrequested in configuration, but not found in the event.\n"
357  << "\nSetting score to 0.0";
358  }
359  setCICADAScore(0.0);
360  } else if (cicadaScoreHandle->isEmpty(0)) {
361  if (m_verbosity) {
362  edm::LogWarning("L1Tglobal")
363  << "\nWarning: CICADA score had a valid input tag, but an empty BX collection"
364  << "\nThe CICADA score will be filled with 0.0 to prevent any failure of uGT emulation";
365  }
366  setCICADAScore(0.0);
367  } else {
368  setCICADAScore(cicadaScoreHandle->at(
369  0,
370  0)); //CICADA emulation will only provide a central BX, and one value. Unpacking may have more values, but that can't be guaranteed.
371  }
372  }
373 }
#define LogTrace(id)
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
int iEvent
Definition: GenABIO.cc:224
void setCICADAScore(float val)
Definition: GlobalBoard.h:214
bool isValid() const
Definition: HandleBase.h:70
Log< level::Warning, false > LogWarning
#define LogDebug(id)

◆ receiveExternalData()

void GlobalBoard::receiveExternalData ( const edm::Event iEvent,
const edm::EDGetTokenT< BXVector< GlobalExtBlk >> &  extInputToken,
const bool  receiveExt 
)

Definition at line 487 of file GlobalBoard.cc.

References mps_fire::i, iEvent, edm::HandleBase::isValid(), and LogDebug.

489  {
490  if (m_verbosity) {
491  LogDebug("L1TGlobal") << "\n**** GlobalBoard receiving external data = ";
492  //<< "\n from input tag " << muInputTag << "\n"
493  }
494 
495  resetExternal();
496 
497  // get data from Global Muon Trigger
498  if (receiveExt) {
500  iEvent.getByToken(extInputToken, extData);
501 
502  if (!extData.isValid()) {
503  if (m_verbosity) {
504  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<GlobalExtBlk> collection"
505  << "\nrequested in configuration, but not found in the event.\n";
506  }
507  } else {
508  // bx in muon data
509  for (int i = extData->getFirstBX(); i <= extData->getLastBX(); ++i) {
510  // Prevent from pushing back bx that is outside of allowed range
511  if (i < m_bxFirst_ || i > m_bxLast_)
512  continue;
513 
514  //Loop over ext in this bx
515  for (std::vector<GlobalExtBlk>::const_iterator ext = extData->begin(i); ext != extData->end(i); ++ext) {
516  (*m_candL1External).push_back(i, &(*ext));
517  } //end loop over ext in bx
518  } //end loop over bx
519  } //end if over valid ext data
520  } //end if ReceiveExt data
521 }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
int iEvent
Definition: GenABIO.cc:224
bool isValid() const
Definition: HandleBase.h:70
Log< level::Warning, false > LogWarning
Definition: memstream.h:15
#define LogDebug(id)

◆ receiveMuonObjectData()

void GlobalBoard::receiveMuonObjectData ( const edm::Event iEvent,
const edm::EDGetTokenT< BXVector< l1t::Muon >> &  muInputToken,
const bool  receiveMu,
const int  nrL1Mu 
)

Definition at line 376 of file GlobalBoard.cc.

References mps_fire::i, iEvent, edm::HandleBase::isValid(), LogDebug, and amptDefaultParameters_cff::mu.

379  {
380  if (m_verbosity) {
381  LogDebug("L1TGlobal") << "\n**** GlobalBoard receiving muon data = ";
382  //<< "\n from input tag " << muInputTag << "\n"
383  }
384 
385  resetMu();
386 
387  // get data from Global Muon Trigger
388  if (receiveMu) {
390  iEvent.getByToken(muInputToken, muonData);
391 
392  if (!muonData.isValid()) {
393  if (m_verbosity) {
394  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::Muon> collection"
395  << "\nrequested in configuration, but not found in the event.\n";
396  }
397  } else {
398  // bx in muon data
399  for (int i = muonData->getFirstBX(); i <= muonData->getLastBX(); ++i) {
400  // Prevent from pushing back bx that is outside of allowed range
401  if (i < m_bxFirst_ || i > m_bxLast_)
402  continue;
403 
404  //Loop over Muons in this bx
405  int nObj = 0;
406  for (std::vector<l1t::Muon>::const_iterator mu = muonData->begin(i); mu != muonData->end(i); ++mu) {
407  if (nObj < nrL1Mu) {
408  (*m_candL1Mu).push_back(i, &(*mu));
409  } else {
410  edm::LogWarning("L1TGlobal") << " Too many Muons (" << nObj << ") for uGT Configuration maxMu =" << nrL1Mu;
411  }
412 
413  LogDebug("L1TGlobal") << "Muon Pt " << mu->hwPt() << " EtaAtVtx " << mu->hwEtaAtVtx() << " PhiAtVtx "
414  << mu->hwPhiAtVtx() << " Qual " << mu->hwQual() << " Iso " << mu->hwIso();
415  nObj++;
416  } //end loop over muons in bx
417  } //end loop over bx
418  } //end if over valid muon data
419  } //end if ReceiveMuon data
420 }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
int iEvent
Definition: GenABIO.cc:224
bool isValid() const
Definition: HandleBase.h:70
Log< level::Warning, false > LogWarning
#define LogDebug(id)

◆ receiveMuonShowerObjectData()

void GlobalBoard::receiveMuonShowerObjectData ( const edm::Event iEvent,
const edm::EDGetTokenT< BXVector< l1t::MuonShower >> &  muShowerInputToken,
const bool  receiveMuShower,
const int  nrL1MuShower 
)

Definition at line 423 of file GlobalBoard.cc.

References mps_fire::i, iEvent, edm::HandleBase::isValid(), and amptDefaultParameters_cff::mu.

426  {
427  // get data from Global Muon Trigger
428  if (receiveMuShower) {
430  iEvent.getByToken(muShowerInputToken, muonData);
431 
432  if (!muonData.isValid()) {
433  if (m_verbosity) {
434  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::MuonShower> collection"
435  << "\nrequested in configuration, but not found in the event.\n";
436  }
437  } else {
438  // Loop over bx in muon data
439  for (int i = muonData->getFirstBX(); i <= muonData->getLastBX(); ++i) {
440  // Prevent from pushing back bx that is outside of allowed range
441  if (i < m_bxFirst_ || i > m_bxLast_)
442  continue;
443 
444  // Loop over Muon Showers in this bx
445  int nObj = 0;
446  for (std::vector<l1t::MuonShower>::const_iterator mu = muonData->begin(i); mu != muonData->end(i); ++mu) {
447  if (nObj < nrL1MuShower) {
448  /* NOTE: here the single object is split up into 5 separate MuonShower objects
449  similarly to the description in the UTM library, where the conditions are four different objects.
450  */
451 
452  std::shared_ptr<l1t::MuonShower> musOneNominalInTime =
453  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
454  std::shared_ptr<l1t::MuonShower> musOneTightInTime =
455  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
456  std::shared_ptr<l1t::MuonShower> musTwoLooseDiffSectorsInTime =
457  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
458  std::shared_ptr<l1t::MuonShower> musOutOfTime0 =
459  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
460  std::shared_ptr<l1t::MuonShower> musOutOfTime1 =
461  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
462 
463  musOneNominalInTime->setOneNominalInTime(mu->isOneNominalInTime());
464  musOneTightInTime->setOneTightInTime(mu->isOneTightInTime());
465  musTwoLooseDiffSectorsInTime->setTwoLooseDiffSectorsInTime(mu->isTwoLooseDiffSectorsInTime());
466  musOutOfTime0->setMusOutOfTime0(mu->musOutOfTime0());
467  musOutOfTime1->setMusOutOfTime1(mu->musOutOfTime1());
468 
469  (*m_candL1MuShower).push_back(i, musOneNominalInTime);
470  (*m_candL1MuShower).push_back(i, musOneTightInTime);
471  (*m_candL1MuShower).push_back(i, musTwoLooseDiffSectorsInTime);
472  (*m_candL1MuShower).push_back(i, musOutOfTime0);
473  (*m_candL1MuShower).push_back(i, musOutOfTime1);
474 
475  } else {
476  edm::LogWarning("L1TGlobal") << " Too many Muon Showers (" << nObj
477  << ") for uGT Configuration maxMuShower =" << nrL1MuShower;
478  }
479  nObj++;
480  } //end loop over muon showers in bx
481  } //end loop over bx
482  } //end if over valid muon shower data
483  } //end if ReceiveMuonShower data
484 }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
int iEvent
Definition: GenABIO.cc:224
bool isValid() const
Definition: HandleBase.h:70
Log< level::Warning, false > LogWarning

◆ reset()

void GlobalBoard::reset ( void  )

clear uGT

Definition at line 1214 of file GlobalBoard.cc.

1214  {
1215  resetMu();
1216  resetMuonShower();
1217  resetCalo();
1218  resetExternal();
1219 
1220  m_uGtAlgBlk.reset();
1221 
1222  //reset AXO score
1223  m_storedAXOScore = -999.0;
1224  m_uGtAXOScore.reset();
1225 
1226  m_gtlDecisionWord.reset();
1227  m_gtlAlgorithmOR.reset();
1228 }
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlDecisionWord
Definition: GlobalBoard.h:259
void reset()
reset the content of a GlobalAlgBlk
AXOL1TLScore m_uGtAXOScore
Definition: GlobalBoard.h:264
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:261
float m_storedAXOScore
Definition: GlobalBoard.h:265
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlAlgorithmOR
Definition: GlobalBoard.h:258

◆ resetCalo()

void GlobalBoard::resetCalo ( )

Definition at line 1243 of file GlobalBoard.cc.

1243  {
1244  m_candL1EG->clear();
1245  m_candL1Tau->clear();
1246  m_candL1Jet->clear();
1247  m_candL1EtSum->clear();
1249  m_cicadaScore = 0.0;
1250 
1256 }
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:245
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:241
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:244
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:243
void clear()
void setBXRange(int bxFirst, int bxLast)
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:242

◆ resetExternal()

void GlobalBoard::resetExternal ( )

Definition at line 1258 of file GlobalBoard.cc.

1258  {
1261 }
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:246
void clear()
void setBXRange(int bxFirst, int bxLast)

◆ resetMu()

void GlobalBoard::resetMu ( )

Definition at line 1231 of file GlobalBoard.cc.

1231  {
1232  m_candL1Mu->clear();
1234 }
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:239
void clear()
void setBXRange(int bxFirst, int bxLast)

◆ resetMuonShower()

void GlobalBoard::resetMuonShower ( )

Definition at line 1237 of file GlobalBoard.cc.

1237  {
1240 }
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:240
void clear()
void setBXRange(int bxFirst, int bxLast)

◆ runFDL()

void GlobalBoard::runFDL ( const edm::Event iEvent,
const int  iBxInEvent,
const int  totalBxInEvent,
const unsigned int  numberPhysTriggers,
const std::vector< double > &  prescaleFactorsAlgoTrig,
const std::vector< unsigned int > &  triggerMaskAlgoTrig,
const std::vector< int > &  triggerMaskVetoAlgoTrig,
const bool  algorithmTriggersUnprescaled,
const bool  algorithmTriggersUnmasked 
)

run the uGT FDL (Apply Prescales and Veto)

if we are masking.

Definition at line 1070 of file GlobalBoard.cc.

References iEvent, LogDebug, and or.

1078  {
1079  if (m_verbosity) {
1080  LogDebug("L1TGlobal") << "\n**** GlobalBoard apply Final Decision Logic ";
1081  }
1082 
1083  // update and clear prescales at the beginning of the luminosity segment
1084  if (m_prescaleCounterAlgoTrig.empty() or
1085  (m_currentLumi != iEvent.luminosityBlock() and m_resetPSCountersEachLumiSec)) {
1086  m_prescaleCounterAlgoTrig.clear();
1087  m_prescaleCounterAlgoTrig.reserve(totalBxInEvent);
1088  auto const& prescaleCountersAlgoTrig =
1090  : prescaleCounters(prescaleFactorsAlgoTrig);
1091  for (int iBxInEvent = 0; iBxInEvent < totalBxInEvent; ++iBxInEvent) {
1092  m_prescaleCounterAlgoTrig.push_back(prescaleCountersAlgoTrig);
1093  }
1094 
1095  m_currentLumi = iEvent.luminosityBlock();
1096  }
1097 
1098  // Copy Algorithm bits to Prescaled word
1099  // Prescaling and Masking done below if requested.
1101 
1102  // -------------------------------------------
1103  // Apply Prescales or skip if turned off
1104  // -------------------------------------------
1105  if (!algorithmTriggersUnprescaled) {
1106  // iBxInEvent is ... -2 -1 0 1 2 ... while counters are 0 1 2 3 4 ...
1107  int const inBxInEvent = totalBxInEvent / 2 + iBxInEvent;
1108 
1109  bool temp_algPrescaledOr = false;
1110  bool alreadyReported = false;
1111  for (unsigned int iBit = 0; iBit < numberPhysTriggers; ++iBit) {
1112  bool const bitValue = m_uGtAlgBlk.getAlgoDecisionInitial(iBit);
1113  if (bitValue) {
1114  // Make sure algo bit in range, warn otherwise
1115  if (iBit < prescaleFactorsAlgoTrig.size()) {
1116  if (prescaleFactorsAlgoTrig.at(iBit) != 1) {
1117  bool const triggered = m_prescaleCounterAlgoTrig.at(inBxInEvent).at(iBit).accept();
1118  if (triggered) {
1119  temp_algPrescaledOr = true;
1120  } else {
1121  // change bit to false in prescaled word and final decision word
1122  m_uGtAlgBlk.setAlgoDecisionInterm(iBit, false);
1123  } //if Prescale counter reached zero
1124  } //if prescale factor is not 1 (ie. no prescale)
1125  else {
1126  temp_algPrescaledOr = true;
1127  }
1128  } // require bit in range
1129  else if (!alreadyReported) {
1130  alreadyReported = true;
1131  edm::LogWarning("L1TGlobal") << "\nWarning: algoBit >= prescaleFactorsAlgoTrig.size() in bx " << iBxInEvent;
1132  }
1133  } //if algo bit is set true
1134  } //loop over alg bits
1135 
1136  m_algPrescaledOr = temp_algPrescaledOr; //temp
1137 
1138  } else {
1139  // Since not Prescaling just take OR of Initial Work
1141 
1142  } //if we are going to apply prescales.
1143 
1144  // Copy Algorithm bits fron Prescaled word to Final Word
1145  // Masking done below if requested.
1147 
1148  if (!algorithmTriggersUnmasked) {
1149  bool temp_algFinalOr = false;
1150  bool alreadyReported = false;
1151  for (unsigned int iBit = 0; iBit < numberPhysTriggers; ++iBit) {
1152  const bool bitValue = m_uGtAlgBlk.getAlgoDecisionInterm(iBit);
1153 
1154  if (bitValue) {
1155  //bool isMasked = ( triggerMaskAlgoTrig.at(iBit) == 0 );
1156  bool isMasked = false;
1157  if (iBit < triggerMaskAlgoTrig.size())
1158  isMasked = (triggerMaskAlgoTrig.at(iBit) == 0);
1159  else if (!alreadyReported) {
1160  alreadyReported = true;
1161  edm::LogWarning("L1TGlobal") << "\nWarning: algoBit >= triggerMaskAlgoTrig.size() in bx " << iBxInEvent;
1162  }
1163 
1164  bool const passMask = (bitValue && !isMasked);
1165 
1166  if (passMask)
1167  temp_algFinalOr = true;
1168  else
1169  m_uGtAlgBlk.setAlgoDecisionFinal(iBit, false);
1170 
1171  // Check if veto mask is true, if it is, set the event veto flag.
1172  if (triggerMaskVetoAlgoTrig.at(iBit) == 1)
1173  m_algFinalOrVeto = true;
1174  }
1175  }
1176 
1177  m_algIntermOr = temp_algFinalOr;
1178 
1179  } else {
1181 
1182  }
1183 
1184  // --------------------------
1185  // Set FinalOR for this board
1186  // --------------------------
1188 }
void copyIntermToFinal()
Definition: GlobalAlgBlk.h:74
static std::vector< PrescaleCounter > prescaleCountersWithSemirandomInitialCounter(std::vector< double > const &prescaleFactorsAlgoTrig, edm::Event const &iEvent)
void copyInitialToInterm()
Copy vectors words.
Definition: GlobalAlgBlk.h:73
bool m_semiRandomInitialPSCounters
Definition: GlobalBoard.h:296
unsigned int m_currentLumi
Definition: GlobalBoard.h:271
static std::vector< PrescaleCounter > prescaleCounters(std::vector< double > const &prescaleFactorsAlgoTrig)
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
int iEvent
Definition: GenABIO.cc:224
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
void setAlgoDecisionInterm(unsigned int bit, bool val)
Definition: GlobalAlgBlk.cc:84
std::vector< std::vector< PrescaleCounter > > m_prescaleCounterAlgoTrig
Definition: GlobalBoard.h:322
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:261
std::vector< bool > const & getAlgoDecisionInterm() const
Definition: GlobalAlgBlk.h:83
std::vector< bool > const & getAlgoDecisionInitial() const
Get decision bits.
Definition: GlobalAlgBlk.h:82
Log< level::Warning, false > LogWarning
bool m_resetPSCountersEachLumiSec
Definition: GlobalBoard.h:293
void setAlgoDecisionFinal(unsigned int bit, bool val)
Definition: GlobalAlgBlk.cc:94
#define LogDebug(id)

◆ runGTL()

void GlobalBoard::runGTL ( const edm::Event iEvent,
const edm::EventSetup evSetup,
const TriggerMenu m_l1GtMenu,
const bool  produceL1GtObjectMapRecord,
const int  iBxInEvent,
std::unique_ptr< GlobalObjectMapRecord > &  gtObjectMapRecord,
const unsigned int  numberPhysTriggers,
const int  nrL1Mu,
const int  nrL1MuShower,
const int  nrL1EG,
const int  nrL1Tau,
const int  nrL1Jet 
)

run the uGT GTL (Conditions and Algorithms)

Definition at line 540 of file GlobalBoard.cc.

References CorrelationThreeBodyTemplate::cond0Category(), CorrelationTemplate::cond0Category(), CorrelationWithOverlapRemovalTemplate::cond0Category(), CorrelationThreeBodyTemplate::cond0Index(), CorrelationTemplate::cond0Index(), CorrelationWithOverlapRemovalTemplate::cond0Index(), CorrelationThreeBodyTemplate::cond1Category(), CorrelationTemplate::cond1Category(), CorrelationWithOverlapRemovalTemplate::cond1Category(), CorrelationThreeBodyTemplate::cond1Index(), CorrelationTemplate::cond1Index(), CorrelationWithOverlapRemovalTemplate::cond1Index(), CorrelationThreeBodyTemplate::cond2Category(), CorrelationWithOverlapRemovalTemplate::cond2Category(), CorrelationThreeBodyTemplate::cond2Index(), CorrelationWithOverlapRemovalTemplate::cond2Index(), l1t::CondAXOL1TL, l1t::CondCalo, l1t::CondCICADA, l1t::CondCorrelation, l1t::CondCorrelationThreeBody, l1t::CondCorrelationWithOverlapRemoval, l1t::CondEnergySum, l1t::CondEnergySumZdc, l1t::CondExternal, l1t::CondMuon, l1t::CondMuonShower, l1t::CondNull, TriggerMenu::corCaloTemplate(), TriggerMenu::corEnergySumTemplate(), TriggerMenu::corMuonTemplate(), l1t::AlgorithmEvaluation::evaluateAlgorithm(), l1t::ConditionEvaluation::evaluateConditionStoreResult(), newFWLiteAna::found, l1t::GlobalScales::getScalesName(), l1t::AXOL1TLCondition::getScore(), l1t::AlgorithmEvaluation::gtAlgoCombinationVector(), l1t::AlgorithmEvaluation::gtAlgoResult(), TriggerMenu::gtAlgorithmMap(), TriggerMenu::gtConditionMap(), TriggerMenu::gtScales(), LogDebug, LogTrace, l1t::AlgorithmEvaluation::operandTokenVector(), CalibrationSummaryClient_cfi::otype, print(), l1t::CICADACondition::print(), l1t::AXOL1TLCondition::print(), l1t::MuonShowerCondition::print(), l1t::EnergySumCondition::print(), l1t::ExternalCondition::print(), l1t::EnergySumZdcCondition::print(), l1t::MuCondition::print(), l1t::CorrCondition::print(), l1t::CaloCondition::print(), l1t::CorrThreeBodyCondition::print(), l1t::CorrWithOverlapRemovalCondition::print(), l1t::AlgorithmEvaluation::print(), GlobalObjectMap::print(), GlobalObjectMap::setAlgoBitNumber(), GlobalObjectMap::setAlgoGtlResult(), GlobalObjectMap::setAlgoName(), l1t::CorrCondition::setScales(), l1t::CorrThreeBodyCondition::setScales(), l1t::CorrWithOverlapRemovalCondition::setScales(), l1t::ConditionEvaluation::setVerbosity(), AlCaHLTBitMon_QueryRunRegistry::string, GlobalObjectMap::swapCombinationVector(), GlobalObjectMap::swapObjectTypeVector(), and GlobalObjectMap::swapOperandTokenVector().

551  {
552  const std::vector<ConditionMap>& conditionMap = m_l1GtMenu->gtConditionMap();
553  const AlgorithmMap& algorithmMap = m_l1GtMenu->gtAlgorithmMap();
554  const GlobalScales& gtScales = m_l1GtMenu->gtScales();
555  const std::string scaleSetName = gtScales.getScalesName();
556  LogDebug("L1TGlobal") << " L1 Menu Scales -- Set Name: " << scaleSetName;
557 
558  // Reset AlgBlk for this bx
559  m_uGtAlgBlk.reset();
560  m_algInitialOr = false;
561  m_algPrescaledOr = false;
562  m_algIntermOr = false;
563  m_algFinalOr = false;
564  m_algFinalOrVeto = false;
565 
566  const std::vector<std::vector<MuonTemplate>>& corrMuon = m_l1GtMenu->corMuonTemplate();
567 
568  const std::vector<std::vector<CaloTemplate>>& corrCalo = m_l1GtMenu->corCaloTemplate();
569 
570  const std::vector<std::vector<EnergySumTemplate>>& corrEnergySum = m_l1GtMenu->corEnergySumTemplate();
571 
572  LogDebug("L1TGlobal") << "Size corrMuon " << corrMuon.size() << "\nSize corrCalo " << corrCalo.size()
573  << "\nSize corrSums " << corrEnergySum.size();
574 
575  // -----------------------------------------------------
576  // Loop over condition maps (one map per condition chip),
577  // then loop over conditions in the map and
578  // save the results in temporary maps
579  // -----------------------------------------------------
580  // never happens in production but at first event...
581  if (m_conditionResultMaps.size() != conditionMap.size()) {
582  m_conditionResultMaps.clear();
583  m_conditionResultMaps.resize(conditionMap.size());
584  }
585 
586  int iChip = -1;
587 
588  for (std::vector<ConditionMap>::const_iterator itCondOnChip = conditionMap.begin();
589  itCondOnChip != conditionMap.end();
590  itCondOnChip++) {
591  iChip++;
592 
594 
595  for (CItCond itCond = itCondOnChip->begin(); itCond != itCondOnChip->end(); itCond++) {
596  // evaluate condition
597  switch ((itCond->second)->condCategory()) {
598  case CondMuon: {
599  // BLW Not sure what to do with this for now
600  const int ifMuEtaNumberBits = 0;
601 
602  MuCondition* muCondition = new MuCondition(itCond->second, this, nrL1Mu, ifMuEtaNumberBits);
603 
604  muCondition->setVerbosity(m_verbosity);
605 
606  muCondition->evaluateConditionStoreResult(iBxInEvent);
607 
608  cMapResults[itCond->first] = muCondition;
609 
610  if (m_verbosity && m_isDebugEnabled) {
611  std::ostringstream myCout;
612  muCondition->print(myCout);
613 
614  LogTrace("L1TGlobal") << myCout.str();
615  }
616  //delete muCondition;
617 
618  } break;
619  case CondMuonShower: {
620  MuonShowerCondition* muShowerCondition = new MuonShowerCondition(itCond->second, this, nrL1MuShower);
621 
622  muShowerCondition->setVerbosity(m_verbosity);
623 
624  muShowerCondition->evaluateConditionStoreResult(iBxInEvent);
625 
626  cMapResults[itCond->first] = muShowerCondition;
627 
628  if (m_verbosity && m_isDebugEnabled) {
629  std::ostringstream myCout;
630  muShowerCondition->print(myCout);
631 
632  edm::LogWarning("L1TGlobal") << "MuonShowerCondition " << myCout.str();
633  }
634  //delete muShowerCondition;
635 
636  } break;
637  case CondCalo: {
638  // BLW Not sure w hat to do with this for now
639  const int ifCaloEtaNumberBits = 0;
640 
641  CaloCondition* caloCondition =
642  new CaloCondition(itCond->second, this, nrL1EG, nrL1Jet, nrL1Tau, ifCaloEtaNumberBits);
643 
644  caloCondition->setVerbosity(m_verbosity);
645 
646  caloCondition->evaluateConditionStoreResult(iBxInEvent);
647 
648  cMapResults[itCond->first] = caloCondition;
649 
650  if (m_verbosity && m_isDebugEnabled) {
651  std::ostringstream myCout;
652  caloCondition->print(myCout);
653 
654  LogTrace("L1TGlobal") << myCout.str();
655  }
656  // delete caloCondition;
657 
658  } break;
659  case CondEnergySum: {
660  EnergySumCondition* eSumCondition = new EnergySumCondition(itCond->second, this);
661 
662  eSumCondition->setVerbosity(m_verbosity);
663  eSumCondition->evaluateConditionStoreResult(iBxInEvent);
664 
665  cMapResults[itCond->first] = eSumCondition;
666 
667  if (m_verbosity && m_isDebugEnabled) {
668  std::ostringstream myCout;
669  eSumCondition->print(myCout);
670 
671  LogTrace("L1TGlobal") << myCout.str();
672  }
673  // delete eSumCondition;
674 
675  } break;
676  case CondEnergySumZdc: {
677  EnergySumZdcCondition* eSumZdcCondition = new EnergySumZdcCondition(itCond->second, this);
678 
679  eSumZdcCondition->setVerbosity(m_verbosity);
680  eSumZdcCondition->evaluateConditionStoreResult(iBxInEvent);
681 
682  cMapResults[itCond->first] = eSumZdcCondition;
683 
684  if (m_verbosity && m_isDebugEnabled) {
685  std::ostringstream myCout;
686  eSumZdcCondition->print(myCout);
687 
688  LogTrace("L1TGlobal") << myCout.str();
689  }
690  // delete eSumZdcCondition;
691 
692  } break;
693  case CondAXOL1TL: {
694  AXOL1TLCondition* axol1tlCondition = new AXOL1TLCondition(itCond->second, this);
695 
696  axol1tlCondition->setVerbosity(m_verbosity);
697 
698  axol1tlCondition->evaluateConditionStoreResult(iBxInEvent);
699 
700  cMapResults[itCond->first] = axol1tlCondition;
701 
702  //for optional software-only saving of axol1tl score
703  //m_storedAXOScore < 0.0 ensures only sets once per condition if score not default of -999
704  if (m_saveAXOScore && m_storedAXOScore < 0.0) {
705  m_storedAXOScore = axol1tlCondition->getScore();
706  }
707 
708  if (m_verbosity && m_isDebugEnabled) {
709  std::ostringstream myCout;
710  axol1tlCondition->print(myCout);
711 
712  edm::LogWarning("L1TGlobal") << "axol1tlCondition " << myCout.str();
713  }
714  //delete axol1tlCCondition;
715 
716  } break;
717  case CondCICADA: {
718  CICADACondition* cicadaCondition = new CICADACondition(itCond->second, this);
719 
720  cicadaCondition->setVerbosity(m_verbosity);
721  cicadaCondition->evaluateConditionStoreResult(iBxInEvent);
722 
723  cMapResults[itCond->first] = cicadaCondition;
724 
725  if (m_verbosity && m_isDebugEnabled) {
726  std::ostringstream myCout;
727  cicadaCondition->print(myCout);
728 
729  edm::LogWarning("L1TGlobal") << "cicadaCondition " << myCout.str();
730  }
731  } break;
732 
733  case CondExternal: {
734  ExternalCondition* extCondition = new ExternalCondition(itCond->second, this);
735 
736  extCondition->setVerbosity(m_verbosity);
737  extCondition->evaluateConditionStoreResult(iBxInEvent);
738 
739  cMapResults[itCond->first] = extCondition;
740 
741  if (m_verbosity && m_isDebugEnabled) {
742  std::ostringstream myCout;
743  extCondition->print(myCout);
744 
745  LogTrace("L1TGlobal") << myCout.str();
746  }
747  // delete extCondition;
748 
749  } break;
750  case CondCorrelation: {
751  // get first the subconditions
752  const CorrelationTemplate* corrTemplate = static_cast<const CorrelationTemplate*>(itCond->second);
753  const GtConditionCategory cond0Categ = corrTemplate->cond0Category();
754  const GtConditionCategory cond1Categ = corrTemplate->cond1Category();
755  const int cond0Ind = corrTemplate->cond0Index();
756  const int cond1Ind = corrTemplate->cond1Index();
757 
758  const GlobalCondition* cond0Condition = nullptr;
759  const GlobalCondition* cond1Condition = nullptr;
760 
761  // maximum number of objects received for evaluation of l1t::Type1s condition
762  int cond0NrL1Objects = 0;
763  int cond1NrL1Objects = 0;
764  LogDebug("L1TGlobal") << " cond0NrL1Objects" << cond0NrL1Objects << " cond1NrL1Objects "
765  << cond1NrL1Objects;
766 
767  switch (cond0Categ) {
768  case CondMuon: {
769  cond0Condition = &((corrMuon[iChip])[cond0Ind]);
770  } break;
771  case CondCalo: {
772  cond0Condition = &((corrCalo[iChip])[cond0Ind]);
773  } break;
774  case CondEnergySum: {
775  cond0Condition = &((corrEnergySum[iChip])[cond0Ind]);
776  } break;
777  default: {
778  // do nothing, should not arrive here
779  } break;
780  }
781 
782  switch (cond1Categ) {
783  case CondMuon: {
784  cond1Condition = &((corrMuon[iChip])[cond1Ind]);
785  } break;
786  case CondCalo: {
787  cond1Condition = &((corrCalo[iChip])[cond1Ind]);
788  } break;
789  case CondEnergySum: {
790  cond1Condition = &((corrEnergySum[iChip])[cond1Ind]);
791  } break;
792  default: {
793  // do nothing, should not arrive here
794  } break;
795  }
796 
797  CorrCondition* correlationCond = new CorrCondition(itCond->second, cond0Condition, cond1Condition, this);
798 
799  correlationCond->setVerbosity(m_verbosity);
800  correlationCond->setScales(&gtScales);
801  correlationCond->evaluateConditionStoreResult(iBxInEvent);
802 
803  cMapResults[itCond->first] = correlationCond;
804 
805  if (m_verbosity && m_isDebugEnabled) {
806  std::ostringstream myCout;
807  correlationCond->print(myCout);
808 
809  LogTrace("L1TGlobal") << myCout.str();
810  }
811 
812  // delete correlationCond;
813 
814  } break;
816  // get first the subconditions
817  const CorrelationThreeBodyTemplate* corrTemplate =
818  static_cast<const CorrelationThreeBodyTemplate*>(itCond->second);
819  const GtConditionCategory cond0Categ = corrTemplate->cond0Category();
820  const GtConditionCategory cond1Categ = corrTemplate->cond1Category();
821  const GtConditionCategory cond2Categ = corrTemplate->cond2Category();
822  const int cond0Ind = corrTemplate->cond0Index();
823  const int cond1Ind = corrTemplate->cond1Index();
824  const int cond2Ind = corrTemplate->cond2Index();
825 
826  const GlobalCondition* cond0Condition = nullptr;
827  const GlobalCondition* cond1Condition = nullptr;
828  const GlobalCondition* cond2Condition = nullptr;
829 
830  // maximum number of objects received for evaluation of l1t::Type1s condition
831  int cond0NrL1Objects = 0;
832  int cond1NrL1Objects = 0;
833  int cond2NrL1Objects = 0;
834  LogDebug("L1TGlobal") << " cond0NrL1Objects " << cond0NrL1Objects << " cond1NrL1Objects "
835  << cond1NrL1Objects << " cond2NrL1Objects " << cond2NrL1Objects;
836  if (cond0Categ == CondMuon) {
837  cond0Condition = &((corrMuon[iChip])[cond0Ind]);
838  } else {
839  LogDebug("L1TGlobal") << "No muon0 to evaluate three-body correlation condition";
840  }
841  if (cond1Categ == CondMuon) {
842  cond1Condition = &((corrMuon[iChip])[cond1Ind]);
843  } else {
844  LogDebug("L1TGlobal") << "No muon1 to evaluate three-body correlation condition";
845  }
846  if (cond2Categ == CondMuon) {
847  cond2Condition = &((corrMuon[iChip])[cond2Ind]);
848  } else {
849  LogDebug("L1TGlobal") << "No muon2 to evaluate three-body correlation condition";
850  }
851 
852  CorrThreeBodyCondition* correlationThreeBodyCond =
853  new CorrThreeBodyCondition(itCond->second, cond0Condition, cond1Condition, cond2Condition, this);
854 
855  correlationThreeBodyCond->setVerbosity(m_verbosity);
856  correlationThreeBodyCond->setScales(&gtScales);
857  correlationThreeBodyCond->evaluateConditionStoreResult(iBxInEvent);
858  cMapResults[itCond->first] = correlationThreeBodyCond;
859 
860  if (m_verbosity && m_isDebugEnabled) {
861  std::ostringstream myCout;
862  correlationThreeBodyCond->print(myCout);
863 
864  LogTrace("L1TGlobal") << myCout.str();
865  }
866  // delete correlationThreeBodyCond;
867  } break;
868 
870  // get first the subconditions
871  const CorrelationWithOverlapRemovalTemplate* corrTemplate =
872  static_cast<const CorrelationWithOverlapRemovalTemplate*>(itCond->second);
873  const GtConditionCategory cond0Categ = corrTemplate->cond0Category();
874  const GtConditionCategory cond1Categ = corrTemplate->cond1Category();
875  const GtConditionCategory cond2Categ = corrTemplate->cond2Category();
876  const int cond0Ind = corrTemplate->cond0Index();
877  const int cond1Ind = corrTemplate->cond1Index();
878  const int cond2Ind = corrTemplate->cond2Index();
879 
880  const GlobalCondition* cond0Condition = nullptr;
881  const GlobalCondition* cond1Condition = nullptr;
882  const GlobalCondition* cond2Condition = nullptr;
883 
884  // maximum number of objects received for evaluation of l1t::Type1s condition
885  int cond0NrL1Objects = 0;
886  int cond1NrL1Objects = 0;
887  int cond2NrL1Objects = 0;
888  LogDebug("L1TGlobal") << " cond0NrL1Objects" << cond0NrL1Objects << " cond1NrL1Objects " << cond1NrL1Objects
889  << " cond2NrL1Objects " << cond2NrL1Objects;
890 
891  switch (cond0Categ) {
892  case CondMuon: {
893  cond0Condition = &((corrMuon[iChip])[cond0Ind]);
894  } break;
895  case CondCalo: {
896  cond0Condition = &((corrCalo[iChip])[cond0Ind]);
897  } break;
898  case CondEnergySum: {
899  cond0Condition = &((corrEnergySum[iChip])[cond0Ind]);
900  } break;
901  default: {
902  // do nothing, should not arrive here
903  } break;
904  }
905 
906  switch (cond1Categ) {
907  case CondMuon: {
908  cond1Condition = &((corrMuon[iChip])[cond1Ind]);
909  } break;
910  case CondCalo: {
911  cond1Condition = &((corrCalo[iChip])[cond1Ind]);
912  } break;
913  case CondEnergySum: {
914  cond1Condition = &((corrEnergySum[iChip])[cond1Ind]);
915  } break;
916  default: {
917  // do nothing, should not arrive here
918  } break;
919  }
920 
921  switch (cond2Categ) {
922  case CondMuon: {
923  cond2Condition = &((corrMuon[iChip])[cond2Ind]);
924  } break;
925  case CondCalo: {
926  cond2Condition = &((corrCalo[iChip])[cond2Ind]);
927  } break;
928  case CondEnergySum: {
929  cond2Condition = &((corrEnergySum[iChip])[cond2Ind]);
930  } break;
931  default: {
932  // do nothing, should not arrive here
933  } break;
934  }
935 
936  CorrWithOverlapRemovalCondition* correlationCondWOR =
937  new CorrWithOverlapRemovalCondition(itCond->second, cond0Condition, cond1Condition, cond2Condition, this);
938 
939  correlationCondWOR->setVerbosity(m_verbosity);
940  correlationCondWOR->setScales(&gtScales);
941  correlationCondWOR->evaluateConditionStoreResult(iBxInEvent);
942 
943  cMapResults[itCond->first] = correlationCondWOR;
944 
945  if (m_verbosity && m_isDebugEnabled) {
946  std::ostringstream myCout;
947  correlationCondWOR->print(myCout);
948 
949  LogTrace("L1TGlobal") << myCout.str();
950  }
951 
952  // delete correlationCondWOR;
953 
954  } break;
955  case CondNull: {
956  // do nothing
957 
958  } break;
959  default: {
960  // do nothing
961 
962  } break;
963  }
964  }
965  }
966 
967  // -----------------------
968  // Loop over algorithm map
969  // -----------------------
970  // Empty vector for object maps - filled during loop
971  std::vector<GlobalObjectMap> objMapVec;
972  if (produceL1GtObjectMapRecord && (iBxInEvent == 0))
973  objMapVec.reserve(numberPhysTriggers);
974 
975  for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
976  AlgorithmEvaluation gtAlg(itAlgo->second);
977  gtAlg.evaluateAlgorithm((itAlgo->second).algoChipNumber(), m_conditionResultMaps);
978 
979  int algBitNumber = (itAlgo->second).algoBitNumber();
980  bool algResult = gtAlg.gtAlgoResult();
981 
982  LogDebug("L1TGlobal") << " ===> for iBxInEvent = " << iBxInEvent << ":\t algBitName = " << itAlgo->first
983  << ",\t algBitNumber = " << algBitNumber << ",\t algResult = " << algResult;
984 
985  if (algResult) {
986  // m_gtlAlgorithmOR.set(algBitNumber);
987  m_uGtAlgBlk.setAlgoDecisionInitial(algBitNumber, algResult);
988  m_algInitialOr = true;
989  }
990 
991  if (m_verbosity && m_isDebugEnabled) {
992  std::ostringstream myCout;
993  (itAlgo->second).print(myCout);
994  gtAlg.print(myCout);
995 
996  LogTrace("L1TGlobal") << myCout.str();
997  }
998 
999  // object maps only for BxInEvent = 0
1000  if (produceL1GtObjectMapRecord && (iBxInEvent == 0)) {
1001  std::vector<L1TObjectTypeInCond> otypes;
1002  for (auto iop = gtAlg.operandTokenVector().begin(); iop != gtAlg.operandTokenVector().end(); ++iop) {
1003  //cout << "INFO: operand name: " << iop->tokenName << "\n";
1004  int found = 0;
1006  for (auto imap = conditionMap.begin(); imap != conditionMap.end(); imap++) {
1007  auto match = imap->find(iop->tokenName);
1008 
1009  if (match != imap->end()) {
1010  found = 1;
1011  //cout << "DEBUG: found match for " << iop->tokenName << " at " << match->first << "\n";
1012 
1013  otype = match->second->objectType();
1014 
1015  for (auto itype = otype.begin(); itype != otype.end(); itype++) {
1016  //cout << "type: " << *itype << "\n";
1017  }
1018  }
1019  }
1020  if (!found) {
1021  edm::LogWarning("L1TGlobal") << "\n Failed to find match for operand token " << iop->tokenName << "\n";
1022  } else {
1023  otypes.push_back(otype);
1024  }
1025  }
1026 
1027  // set object map
1028  GlobalObjectMap objMap;
1029 
1030  objMap.setAlgoName(itAlgo->first);
1031  objMap.setAlgoBitNumber(algBitNumber);
1032  objMap.setAlgoGtlResult(algResult);
1033  objMap.swapOperandTokenVector(gtAlg.operandTokenVector());
1034  objMap.swapCombinationVector(gtAlg.gtAlgoCombinationVector());
1035  // gtAlg is empty now...
1036  objMap.swapObjectTypeVector(otypes);
1037 
1038  if (m_verbosity && m_isDebugEnabled) {
1039  std::ostringstream myCout1;
1040  objMap.print(myCout1);
1041 
1042  LogTrace("L1TGlobal") << myCout1.str();
1043  }
1044 
1045  objMapVec.push_back(objMap);
1046  }
1047  }
1048 
1049  // object maps only for BxInEvent = 0
1050  if (produceL1GtObjectMapRecord && (iBxInEvent == 0)) {
1051  gtObjectMapRecord->swapGtObjectMap(objMapVec);
1052  }
1053 
1054  // loop over condition maps (one map per condition chip)
1055  // then loop over conditions in the map
1056  // delete the conditions created with new, zero pointer, do not clear map, keep the vector as is...
1057  for (std::vector<AlgorithmEvaluation::ConditionEvaluationMap>::iterator itCondOnChip = m_conditionResultMaps.begin();
1058  itCondOnChip != m_conditionResultMaps.end();
1059  itCondOnChip++) {
1060  for (AlgorithmEvaluation::ItEvalMap itCond = itCondOnChip->begin(); itCond != itCondOnChip->end(); itCond++) {
1061  delete itCond->second;
1062  itCond->second = nullptr;
1063  }
1064  }
1065 }
void setAlgoBitNumber(int algoBitNumberValue)
const int cond0Index() const
get / set the index of the two sub-conditions in the cor* vector from menu
const l1t::GlobalScales & gtScales() const
get the scales
Definition: TriggerMenu.h:215
std::vector< l1t::GlobalObject > L1TObjectTypeInCond
void swapOperandTokenVector(std::vector< GlobalLogicParser::OperandToken > &operandTokenVectorValue)
const std::vector< std::vector< CaloTemplate > > & corCaloTemplate() const
Definition: TriggerMenu.h:192
void setAlgoDecisionInitial(unsigned int bit, bool val)
Set decision bits.
Definition: GlobalAlgBlk.cc:73
std::map< std::string, L1GtAlgorithm > AlgorithmMap
map containing the algorithms
ConditionMap::const_iterator CItCond
iterators through map containing the conditions
const l1t::AlgorithmMap & gtAlgorithmMap() const
get / set the algorithm map (by name)
Definition: TriggerMenu.h:205
const int cond1Index() const
const std::vector< std::vector< MuonTemplate > > & corMuonTemplate() const
Definition: TriggerMenu.h:187
const l1t::GtConditionCategory cond1Category() const
const int cond0Index() const
get / set the index of the two sub-conditions in the cor* vector from menu
void print(std::ostream &myCout) const
print the full object map
const l1t::GtConditionCategory cond1Category() const
void swapObjectTypeVector(std::vector< L1TObjectTypeInCond > &objectTypeVectorValue)
void swapCombinationVector(std::vector< CombinationsInCond > &combinationVectorValue)
ConditionEvaluationMap::iterator ItEvalMap
#define LogTrace(id)
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
const l1t::GtConditionCategory cond2Category() const
GtConditionCategory
condition categories
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
const l1t::GtConditionCategory cond0Category() const
get / set the category of the thre sub-conditions
const l1t::GtConditionCategory cond0Category() const
get / set the category of the two sub-conditions
void reset()
reset the content of a GlobalAlgBlk
const TriggerMenu * m_l1GtMenu
Definition: GlobalBoard.h:225
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
const l1t::GtConditionCategory cond1Category() const
void setAlgoGtlResult(bool algoGtlResultValue)
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:261
float m_storedAXOScore
Definition: GlobalBoard.h:265
void setAlgoName(const std::string &algoNameValue)
const std::vector< l1t::ConditionMap > & gtConditionMap() const
get / set / build the condition maps
Definition: TriggerMenu.h:85
const std::vector< std::vector< EnergySumTemplate > > & corEnergySumTemplate() const
Definition: TriggerMenu.h:198
const int cond0Index() const
get / set the index of the three subconditions in the cor* vector from menu
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
std::unordered_map< std::string, ConditionEvaluation * > ConditionEvaluationMap
copy constructor
const l1t::GtConditionCategory cond0Category() const
get / set the category of the three subconditions
Log< level::Warning, false > LogWarning
const l1t::GtConditionCategory cond2Category() const
#define LogDebug(id)
std::vector< AlgorithmEvaluation::ConditionEvaluationMap > m_conditionResultMaps
Definition: GlobalBoard.h:269

◆ setBxFirst()

void GlobalBoard::setBxFirst ( int  bx)

Definition at line 114 of file GlobalBoard.cc.

References nano_mu_digi_cff::bx.

◆ setBxLast()

void GlobalBoard::setBxLast ( int  bx)

Definition at line 116 of file GlobalBoard.cc.

References nano_mu_digi_cff::bx.

◆ setCICADAScore()

void l1t::GlobalBoard::setCICADAScore ( float  val)
inline

Definition at line 214 of file GlobalBoard.h.

References m_cicadaScore, and heppy_batch::val.

◆ setResetPSCountersEachLumiSec()

void l1t::GlobalBoard::setResetPSCountersEachLumiSec ( bool  val)
inline

Definition at line 211 of file GlobalBoard.h.

References m_resetPSCountersEachLumiSec, and heppy_batch::val.

◆ setSemiRandomInitialPSCounters()

void l1t::GlobalBoard::setSemiRandomInitialPSCounters ( bool  val)
inline

◆ setVerbosity()

void l1t::GlobalBoard::setVerbosity ( const int  verbosity)
inline

Definition at line 217 of file GlobalBoard.h.

References m_verbosity, and verbosity.

217 { m_verbosity = verbosity; }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:275
const int verbosity

Member Data Documentation

◆ m_algFinalOr

bool l1t::GlobalBoard::m_algFinalOr
private

Definition at line 282 of file GlobalBoard.h.

◆ m_algFinalOrVeto

bool l1t::GlobalBoard::m_algFinalOrVeto
private

Definition at line 283 of file GlobalBoard.h.

◆ m_algInitialOr

bool l1t::GlobalBoard::m_algInitialOr
private

Definition at line 279 of file GlobalBoard.h.

◆ m_algIntermOr

bool l1t::GlobalBoard::m_algIntermOr
private

Definition at line 280 of file GlobalBoard.h.

◆ m_algPrescaledOr

bool l1t::GlobalBoard::m_algPrescaledOr
private

Definition at line 281 of file GlobalBoard.h.

◆ m_boardEventCount

unsigned int l1t::GlobalBoard::m_boardEventCount
private

Definition at line 286 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_bxFirst_

int l1t::GlobalBoard::m_bxFirst_
private

Definition at line 253 of file GlobalBoard.h.

◆ m_bxLast_

int l1t::GlobalBoard::m_bxLast_
private

Definition at line 254 of file GlobalBoard.h.

◆ m_candL1EG

BXVector<const l1t::L1Candidate*>* l1t::GlobalBoard::m_candL1EG
private

Definition at line 241 of file GlobalBoard.h.

Referenced by getCandL1EG().

◆ m_candL1EtSum

BXVector<const l1t::EtSum*>* l1t::GlobalBoard::m_candL1EtSum
private

Definition at line 244 of file GlobalBoard.h.

Referenced by getCandL1EtSum().

◆ m_candL1EtSumZdc

BXVector<const l1t::EtSum*>* l1t::GlobalBoard::m_candL1EtSumZdc
private

Definition at line 245 of file GlobalBoard.h.

Referenced by getCandL1EtSumZdc().

◆ m_candL1External

BXVector<const GlobalExtBlk*>* l1t::GlobalBoard::m_candL1External
private

Definition at line 246 of file GlobalBoard.h.

Referenced by getCandL1External().

◆ m_candL1Jet

BXVector<const l1t::L1Candidate*>* l1t::GlobalBoard::m_candL1Jet
private

Definition at line 243 of file GlobalBoard.h.

Referenced by getCandL1Jet().

◆ m_candL1Mu

BXVector<const l1t::Muon*>* l1t::GlobalBoard::m_candL1Mu
private

Definition at line 239 of file GlobalBoard.h.

Referenced by getCandL1Mu().

◆ m_candL1MuShower

BXVector<std::shared_ptr<l1t::MuonShower> >* l1t::GlobalBoard::m_candL1MuShower
private

Definition at line 240 of file GlobalBoard.h.

Referenced by getCandL1MuShower().

◆ m_candL1Tau

BXVector<const l1t::L1Candidate*>* l1t::GlobalBoard::m_candL1Tau
private

Definition at line 242 of file GlobalBoard.h.

Referenced by getCandL1Tau().

◆ m_cicadaScore

float l1t::GlobalBoard::m_cicadaScore = 0.0
private

Definition at line 256 of file GlobalBoard.h.

Referenced by getCICADAScore(), and setCICADAScore().

◆ m_conditionResultMaps

std::vector<AlgorithmEvaluation::ConditionEvaluationMap> l1t::GlobalBoard::m_conditionResultMaps
private

Definition at line 269 of file GlobalBoard.h.

◆ m_currentLumi

unsigned int l1t::GlobalBoard::m_currentLumi
private

Definition at line 271 of file GlobalBoard.h.

◆ m_gtlAlgorithmOR

std::bitset<GlobalAlgBlk::maxPhysicsTriggers> l1t::GlobalBoard::m_gtlAlgorithmOR
private

Definition at line 258 of file GlobalBoard.h.

Referenced by getAlgorithmOR(), and GlobalBoard().

◆ m_gtlDecisionWord

std::bitset<GlobalAlgBlk::maxPhysicsTriggers> l1t::GlobalBoard::m_gtlDecisionWord
private

Definition at line 259 of file GlobalBoard.h.

Referenced by getDecisionWord(), and GlobalBoard().

◆ m_isDebugEnabled

bool l1t::GlobalBoard::m_isDebugEnabled
private

Definition at line 276 of file GlobalBoard.h.

◆ m_l1CaloGeometry

const L1CaloGeometry* l1t::GlobalBoard::m_l1CaloGeometry
private

Definition at line 229 of file GlobalBoard.h.

◆ m_l1CaloGeometryCacheID

unsigned long long l1t::GlobalBoard::m_l1CaloGeometryCacheID
private

Definition at line 230 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_l1GtMenu

const TriggerMenu* l1t::GlobalBoard::m_l1GtMenu
private

Definition at line 225 of file GlobalBoard.h.

◆ m_l1GtMenuCacheID

unsigned long long l1t::GlobalBoard::m_l1GtMenuCacheID
private

Definition at line 226 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_l1MuTriggerScales

const L1MuTriggerScales* l1t::GlobalBoard::m_l1MuTriggerScales
private

Definition at line 232 of file GlobalBoard.h.

◆ m_l1MuTriggerScalesCacheID

unsigned long long l1t::GlobalBoard::m_l1MuTriggerScalesCacheID
private

Definition at line 233 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_prescaleCounterAlgoTrig

std::vector<std::vector<PrescaleCounter> > l1t::GlobalBoard::m_prescaleCounterAlgoTrig
private

Definition at line 322 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_resetPSCountersEachLumiSec

bool l1t::GlobalBoard::m_resetPSCountersEachLumiSec = false
private

Definition at line 293 of file GlobalBoard.h.

Referenced by setResetPSCountersEachLumiSec().

◆ m_saveAXOScore

bool l1t::GlobalBoard::m_saveAXOScore = false
private

Definition at line 266 of file GlobalBoard.h.

Referenced by enableAXOScoreSaving().

◆ m_semiRandomInitialPSCounters

bool l1t::GlobalBoard::m_semiRandomInitialPSCounters = false
private

Definition at line 296 of file GlobalBoard.h.

Referenced by setSemiRandomInitialPSCounters().

◆ m_singlestep

constexpr size_t l1t::GlobalBoard::m_singlestep = 100
staticprivate

Definition at line 301 of file GlobalBoard.h.

Referenced by l1t::GlobalBoard::PrescaleCounter::PrescaleCounter().

◆ m_storedAXOScore

float l1t::GlobalBoard::m_storedAXOScore = -999.0
private

Definition at line 265 of file GlobalBoard.h.

◆ m_uGtAlgBlk

GlobalAlgBlk l1t::GlobalBoard::m_uGtAlgBlk
private

Definition at line 261 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_uGtAXOScore

AXOL1TLScore l1t::GlobalBoard::m_uGtAXOScore
private

Definition at line 264 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_uGtBoardNumber

int l1t::GlobalBoard::m_uGtBoardNumber
private

Definition at line 289 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_uGtFinalBoard

bool l1t::GlobalBoard::m_uGtFinalBoard
private

Definition at line 290 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_verbosity

int l1t::GlobalBoard::m_verbosity
private

verbosity level

Definition at line 275 of file GlobalBoard.h.

Referenced by setVerbosity().