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, const std::vector< l1t::Muon > *muonVec_bxm2, const std::vector< l1t::Muon > *muonVec_bxm1)
 
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:241
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:247
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:242
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:243
unsigned long long m_l1MuTriggerScalesCacheID
Definition: GlobalBoard.h:235
unsigned int m_currentLumi
Definition: GlobalBoard.h:273
unsigned long long m_l1GtMenuCacheID
Definition: GlobalBoard.h:228
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlDecisionWord
Definition: GlobalBoard.h:261
unsigned int m_boardEventCount
Definition: GlobalBoard.h:288
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:246
void reset()
reset the content of a GlobalAlgBlk
AXOL1TLScore m_uGtAXOScore
Definition: GlobalBoard.h:266
unsigned long long m_l1CaloGeometryCacheID
Definition: GlobalBoard.h:232
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:245
std::vector< std::vector< PrescaleCounter > > m_prescaleCounterAlgoTrig
Definition: GlobalBoard.h:324
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:263
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:248
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlAlgorithmOR
Definition: GlobalBoard.h:260
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:244

◆ ~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:241
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:247
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:242
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:243
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:246
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:245
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:248
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:244

Member Function Documentation

◆ enableAXOScoreSaving()

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

Definition at line 221 of file GlobalBoard.h.

References m_saveAXOScore.

221 { 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 1222 of file GlobalBoard.cc.

References LogDebug.

1226  {
1227  if (m_verbosity) {
1228  LogDebug("L1TGlobal") << "\n**** GlobalBoard fill DAQ Records for bx= " << iBxInEvent;
1229  }
1230 
1231  // Set header information
1232  m_uGtAlgBlk.setbxInEventNr((iBxInEvent & 0xF));
1233  m_uGtAlgBlk.setPreScColumn(prescaleSet);
1234  m_uGtAlgBlk.setL1MenuUUID(menuUUID);
1235  m_uGtAlgBlk.setL1FirmwareUUID(firmwareUUID);
1236 
1240 
1241  uGtAlgRecord->push_back(iBxInEvent, m_uGtAlgBlk);
1242 }
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:277
void setFinalOR(bool fOR)
Definition: GlobalAlgBlk.h:60
void setFinalORVeto(bool fOR)
Definition: GlobalAlgBlk.h:58
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:263
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 555 of file GlobalBoard.cc.

555  {
557  m_uGtAXOScore.setbxInEventNr((iBxInEvent & 0xF));
558 
559  //save stored condition score if Bx is zero, else set to 0
560  float scorevalue = 0.0;
561  if (iBxInEvent == 0) {
562  scorevalue = m_storedAXOScore;
563  }
564 
565  //set dataformat value
566  m_uGtAXOScore.setAXOScore(scorevalue);
567  AxoScoreRecord->push_back(iBxInEvent, m_uGtAXOScore);
568 }
void setbxInEventNr(int bxNr)
Definition: AXOL1TLScore.h:53
AXOL1TLScore m_uGtAXOScore
Definition: GlobalBoard.h:266
float m_storedAXOScore
Definition: GlobalBoard.h:267
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 156 of file GlobalBoard.h.

References m_gtlAlgorithmOR.

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

◆ getCandL1EG()

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

pointer to EG data list

Definition at line 165 of file GlobalBoard.h.

References m_candL1EG.

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

◆ getCandL1EtSum()

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

pointer to EtSum data list

Definition at line 174 of file GlobalBoard.h.

References m_candL1EtSum.

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

◆ getCandL1EtSumZdc()

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

pointer to ZDC EtSum data list

Definition at line 177 of file GlobalBoard.h.

References m_candL1EtSumZdc.

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

◆ getCandL1External()

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

pointer to External data list

Definition at line 180 of file GlobalBoard.h.

References m_candL1External.

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

◆ getCandL1Jet()

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

pointer to Jet data list

Definition at line 168 of file GlobalBoard.h.

References m_candL1Jet.

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

◆ getCandL1Mu()

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

return global muon trigger candidate

Definition at line 159 of file GlobalBoard.h.

References m_candL1Mu.

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

◆ getCandL1MuShower()

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

return global muon trigger candidate

Definition at line 162 of file GlobalBoard.h.

References m_candL1MuShower.

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

◆ getCandL1Tau()

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

pointer to Tau data list

Definition at line 171 of file GlobalBoard.h.

References m_candL1Tau.

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

◆ getCICADAScore()

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

Definition at line 182 of file GlobalBoard.h.

References m_cicadaScore.

182 { return m_cicadaScore; }

◆ getDecisionWord()

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

return decision

Definition at line 153 of file GlobalBoard.h.

References m_gtlDecisionWord.

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

◆ 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:241
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:247
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:242
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:243
void setBxLast(int bx)
Definition: GlobalBoard.cc:116
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:246
void reset()
reset the content of a GlobalAlgBlk
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:245
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:263
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:248
void setBxFirst(int bx)
Definition: GlobalBoard.cc:114
void setBXRange(int bxFirst, int bxLast)
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:244
#define LogDebug(id)

◆ prescaleCounters()

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

Definition at line 1303 of file GlobalBoard.cc.

References MillePedeFileConverter_cfg::out.

1304  {
1305  std::vector<PrescaleCounter> out;
1306  out.reserve(prescaleFactorsAlgoTrig.size());
1307  for (size_t iAlgo = 0; iAlgo < prescaleFactorsAlgoTrig.size(); ++iAlgo) {
1308  out.emplace_back(prescaleFactorsAlgoTrig[iAlgo]);
1309  }
1310  return out;
1311 }

◆ prescaleCountersWithSemirandomInitialCounter()

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

Definition at line 1314 of file GlobalBoard.cc.

References iEvent, and MillePedeFileConverter_cfg::out.

1315  {
1316  // pick a (semi)random number seeding based on run, lumi, event numbers,
1317  // this leads to different (semi)random numbers for different streams,
1318  // reminder: different streams have different initial event number
1319  std::srand(iEvent.id().run());
1320  std::srand(std::rand() + iEvent.id().luminosityBlock());
1321  std::srand(std::rand() + iEvent.id().event());
1322  int const semirandom = std::rand();
1323 
1324  std::vector<PrescaleCounter> out;
1325  out.reserve(prescaleFactorsAlgoTrig.size());
1326 
1327  for (size_t iAlgo = 0; iAlgo < prescaleFactorsAlgoTrig.size(); ++iAlgo) {
1328  out.emplace_back(prescaleFactorsAlgoTrig[iAlgo]);
1329  // initialise trigger_counter to a (semi)random integer
1330  // between 0 and prescale_count - 1 (both inclusive)
1331  // (this only changes the behaviour of triggers with PS > 1)
1332  auto& prescaleCounter = out.back();
1333  if (prescaleCounter.prescale_count > 0) {
1334  prescaleCounter.trigger_counter = semirandom % prescaleCounter.prescale_count;
1335  }
1336  }
1337 
1338  return out;
1339 }
int iEvent
Definition: GenABIO.cc:224

◆ printGmtData()

void GlobalBoard::printGmtData ( const int  iBxInEvent) const

print received Muon dataWord

Definition at line 1295 of file GlobalBoard.cc.

References LogTrace.

1295  {
1296  LogTrace("L1TGlobal") << "\nl1t::L1GlobalTrigger: uGMT data received for BxInEvent = " << iBxInEvent;
1297 
1298  int nrL1Mu = m_candL1Mu->size(iBxInEvent);
1299  LogTrace("L1TGlobal") << "Number of GMT muons = " << nrL1Mu << "\n";
1300 }
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:241
#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:277
int iEvent
Definition: GenABIO.cc:224
void setCICADAScore(float val)
Definition: GlobalBoard.h:216
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 518 of file GlobalBoard.cc.

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

520  {
521  if (m_verbosity) {
522  LogDebug("L1TGlobal") << "\n**** GlobalBoard receiving external data = ";
523  //<< "\n from input tag " << muInputTag << "\n"
524  }
525 
526  resetExternal();
527 
528  // get data from Global Muon Trigger
529  if (receiveExt) {
531  iEvent.getByToken(extInputToken, extData);
532 
533  if (!extData.isValid()) {
534  if (m_verbosity) {
535  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<GlobalExtBlk> collection"
536  << "\nrequested in configuration, but not found in the event.\n";
537  }
538  } else {
539  // bx in muon data
540  for (int i = extData->getFirstBX(); i <= extData->getLastBX(); ++i) {
541  // Prevent from pushing back bx that is outside of allowed range
542  if (i < m_bxFirst_ || i > m_bxLast_)
543  continue;
544 
545  //Loop over ext in this bx
546  for (std::vector<GlobalExtBlk>::const_iterator ext = extData->begin(i); ext != extData->end(i); ++ext) {
547  (*m_candL1External).push_back(i, &(*ext));
548  } //end loop over ext in bx
549  } //end loop over bx
550  } //end if over valid ext data
551  } //end if ReceiveExt data
552 }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:277
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,
const std::vector< l1t::Muon > *  muonVec_bxm2,
const std::vector< l1t::Muon > *  muonVec_bxm1 
)

Definition at line 376 of file GlobalBoard.cc.

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

381  {
382  if (m_verbosity) {
383  LogDebug("L1TGlobal") << "\n**** GlobalBoard receiving muon data = ";
384  //<< "\n from input tag " << muInputTag << "\n"
385  }
386 
387  resetMu();
388 
389  // get data from Global Muon Trigger
390  if (receiveMu) {
392  iEvent.getByToken(muInputToken, muonData);
393 
394  if (!muonData.isValid()) {
395  if (m_verbosity) {
396  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::Muon> collection"
397  << "\nrequested in configuration, but not found in the event.\n";
398  }
399  } else {
400  // bx in muon data
401  for (int i = muonData->getFirstBX(); i <= muonData->getLastBX(); ++i) {
402  // Prevent from pushing back bx that is outside of allowed range
403  if (i < m_bxFirst_ || i > m_bxLast_)
404  continue;
405 
406  //Loop over Muons in this bx
407  int nObj = 0;
408  if (i == -2) {
409  for (std::vector<l1t::Muon>::const_iterator mu = muonVec_bxm2->begin(); mu != muonVec_bxm2->end(); ++mu) {
410  if (nObj < nrL1Mu) {
411  (*m_candL1Mu).push_back(i, &(*mu));
412  } else {
413  edm::LogWarning("L1TGlobal")
414  << " Too many Muons (" << nObj << ") for uGT Configuration maxMu =" << nrL1Mu;
415  }
416 
417  LogDebug("L1TGlobal") << "Muon Pt " << mu->hwPt() << " EtaAtVtx " << mu->hwEtaAtVtx() << " PhiAtVtx "
418  << mu->hwPhiAtVtx() << " Qual " << mu->hwQual() << " Iso " << mu->hwIso();
419  nObj++;
420  }
421  } else if (i == -1) {
422  for (std::vector<l1t::Muon>::const_iterator mu = muonVec_bxm1->begin(); mu != muonVec_bxm1->end(); ++mu) {
423  if (nObj < nrL1Mu) {
424  (*m_candL1Mu).push_back(i, &(*mu));
425  } else {
426  edm::LogWarning("L1TGlobal")
427  << " Too many Muons (" << nObj << ") for uGT Configuration maxMu =" << nrL1Mu;
428  }
429 
430  LogDebug("L1TGlobal") << "Muon Pt " << mu->hwPt() << " EtaAtVtx " << mu->hwEtaAtVtx() << " PhiAtVtx "
431  << mu->hwPhiAtVtx() << " Qual " << mu->hwQual() << " Iso " << mu->hwIso();
432  nObj++;
433  }
434  } else {
435  for (std::vector<l1t::Muon>::const_iterator mu = muonData->begin(i); mu != muonData->end(i); ++mu) {
436  if (nObj < nrL1Mu) {
437  (*m_candL1Mu).push_back(i, &(*mu));
438  } else {
439  edm::LogWarning("L1TGlobal")
440  << " Too many Muons (" << nObj << ") for uGT Configuration maxMu =" << nrL1Mu;
441  }
442 
443  LogDebug("L1TGlobal") << "Muon Pt " << mu->hwPt() << " EtaAtVtx " << mu->hwEtaAtVtx() << " PhiAtVtx "
444  << mu->hwPhiAtVtx() << " Qual " << mu->hwQual() << " Iso " << mu->hwIso();
445  nObj++;
446  }
447  } //end loop over muons in bx
448  } //end loop over bx
449  } //end if over valid muon data
450  } //end if ReceiveMuon data
451 }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:277
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 454 of file GlobalBoard.cc.

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

457  {
458  // get data from Global Muon Trigger
459  if (receiveMuShower) {
461  iEvent.getByToken(muShowerInputToken, muonData);
462 
463  if (!muonData.isValid()) {
464  if (m_verbosity) {
465  edm::LogWarning("L1TGlobal") << "\nWarning: Input tag for the BXVector<l1t::MuonShower> collection"
466  << "\nrequested in configuration, but not found in the event.\n";
467  }
468  } else {
469  // Loop over bx in muon data
470  for (int i = muonData->getFirstBX(); i <= muonData->getLastBX(); ++i) {
471  // Prevent from pushing back bx that is outside of allowed range
472  if (i < m_bxFirst_ || i > m_bxLast_)
473  continue;
474 
475  // Loop over Muon Showers in this bx
476  int nObj = 0;
477  for (std::vector<l1t::MuonShower>::const_iterator mu = muonData->begin(i); mu != muonData->end(i); ++mu) {
478  if (nObj < nrL1MuShower) {
479  /* NOTE: here the single object is split up into 5 separate MuonShower objects
480  similarly to the description in the UTM library, where the conditions are four different objects.
481  */
482 
483  std::shared_ptr<l1t::MuonShower> musOneNominalInTime =
484  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
485  std::shared_ptr<l1t::MuonShower> musOneTightInTime =
486  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
487  std::shared_ptr<l1t::MuonShower> musTwoLooseDiffSectorsInTime =
488  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
489  std::shared_ptr<l1t::MuonShower> musOutOfTime0 =
490  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
491  std::shared_ptr<l1t::MuonShower> musOutOfTime1 =
492  std::make_shared<l1t::MuonShower>(false, false, false, false, false, false);
493 
494  musOneNominalInTime->setOneNominalInTime(mu->isOneNominalInTime());
495  musOneTightInTime->setOneTightInTime(mu->isOneTightInTime());
496  musTwoLooseDiffSectorsInTime->setTwoLooseDiffSectorsInTime(mu->isTwoLooseDiffSectorsInTime());
497  musOutOfTime0->setMusOutOfTime0(mu->musOutOfTime0());
498  musOutOfTime1->setMusOutOfTime1(mu->musOutOfTime1());
499 
500  (*m_candL1MuShower).push_back(i, musOneNominalInTime);
501  (*m_candL1MuShower).push_back(i, musOneTightInTime);
502  (*m_candL1MuShower).push_back(i, musTwoLooseDiffSectorsInTime);
503  (*m_candL1MuShower).push_back(i, musOutOfTime0);
504  (*m_candL1MuShower).push_back(i, musOutOfTime1);
505 
506  } else {
507  edm::LogWarning("L1TGlobal") << " Too many Muon Showers (" << nObj
508  << ") for uGT Configuration maxMuShower =" << nrL1MuShower;
509  }
510  nObj++;
511  } //end loop over muon showers in bx
512  } //end loop over bx
513  } //end if over valid muon shower data
514  } //end if ReceiveMuonShower data
515 }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:277
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 1245 of file GlobalBoard.cc.

1245  {
1246  resetMu();
1247  resetMuonShower();
1248  resetCalo();
1249  resetExternal();
1250 
1251  m_uGtAlgBlk.reset();
1252 
1253  //reset AXO score
1254  m_storedAXOScore = -999.0;
1255  m_uGtAXOScore.reset();
1256 
1257  m_gtlDecisionWord.reset();
1258  m_gtlAlgorithmOR.reset();
1259 }
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlDecisionWord
Definition: GlobalBoard.h:261
void reset()
reset the content of a GlobalAlgBlk
AXOL1TLScore m_uGtAXOScore
Definition: GlobalBoard.h:266
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:263
float m_storedAXOScore
Definition: GlobalBoard.h:267
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlAlgorithmOR
Definition: GlobalBoard.h:260

◆ resetCalo()

void GlobalBoard::resetCalo ( )

Definition at line 1274 of file GlobalBoard.cc.

1274  {
1275  m_candL1EG->clear();
1276  m_candL1Tau->clear();
1277  m_candL1Jet->clear();
1278  m_candL1EtSum->clear();
1280  m_cicadaScore = 0.0;
1281 
1287 }
BXVector< const l1t::EtSum * > * m_candL1EtSumZdc
Definition: GlobalBoard.h:247
BXVector< const l1t::L1Candidate * > * m_candL1EG
Definition: GlobalBoard.h:243
BXVector< const l1t::EtSum * > * m_candL1EtSum
Definition: GlobalBoard.h:246
BXVector< const l1t::L1Candidate * > * m_candL1Jet
Definition: GlobalBoard.h:245
void clear()
void setBXRange(int bxFirst, int bxLast)
BXVector< const l1t::L1Candidate * > * m_candL1Tau
Definition: GlobalBoard.h:244

◆ resetExternal()

void GlobalBoard::resetExternal ( )

Definition at line 1289 of file GlobalBoard.cc.

1289  {
1292 }
BXVector< const GlobalExtBlk * > * m_candL1External
Definition: GlobalBoard.h:248
void clear()
void setBXRange(int bxFirst, int bxLast)

◆ resetMu()

void GlobalBoard::resetMu ( )

Definition at line 1262 of file GlobalBoard.cc.

1262  {
1263  m_candL1Mu->clear();
1265 }
BXVector< const l1t::Muon * > * m_candL1Mu
Definition: GlobalBoard.h:241
void clear()
void setBXRange(int bxFirst, int bxLast)

◆ resetMuonShower()

void GlobalBoard::resetMuonShower ( )

Definition at line 1268 of file GlobalBoard.cc.

1268  {
1271 }
BXVector< std::shared_ptr< l1t::MuonShower > > * m_candL1MuShower
Definition: GlobalBoard.h:242
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 1101 of file GlobalBoard.cc.

References iEvent, LogDebug, and or.

1109  {
1110  if (m_verbosity) {
1111  LogDebug("L1TGlobal") << "\n**** GlobalBoard apply Final Decision Logic ";
1112  }
1113 
1114  // update and clear prescales at the beginning of the luminosity segment
1115  if (m_prescaleCounterAlgoTrig.empty() or
1116  (m_currentLumi != iEvent.luminosityBlock() and m_resetPSCountersEachLumiSec)) {
1117  m_prescaleCounterAlgoTrig.clear();
1118  m_prescaleCounterAlgoTrig.reserve(totalBxInEvent);
1119  auto const& prescaleCountersAlgoTrig =
1121  : prescaleCounters(prescaleFactorsAlgoTrig);
1122  for (int iBxInEvent = 0; iBxInEvent < totalBxInEvent; ++iBxInEvent) {
1123  m_prescaleCounterAlgoTrig.push_back(prescaleCountersAlgoTrig);
1124  }
1125 
1126  m_currentLumi = iEvent.luminosityBlock();
1127  }
1128 
1129  // Copy Algorithm bits to Prescaled word
1130  // Prescaling and Masking done below if requested.
1132 
1133  // -------------------------------------------
1134  // Apply Prescales or skip if turned off
1135  // -------------------------------------------
1136  if (!algorithmTriggersUnprescaled) {
1137  // iBxInEvent is ... -2 -1 0 1 2 ... while counters are 0 1 2 3 4 ...
1138  int const inBxInEvent = totalBxInEvent / 2 + iBxInEvent;
1139 
1140  bool temp_algPrescaledOr = false;
1141  bool alreadyReported = false;
1142  for (unsigned int iBit = 0; iBit < numberPhysTriggers; ++iBit) {
1143  bool const bitValue = m_uGtAlgBlk.getAlgoDecisionInitial(iBit);
1144  if (bitValue) {
1145  // Make sure algo bit in range, warn otherwise
1146  if (iBit < prescaleFactorsAlgoTrig.size()) {
1147  if (prescaleFactorsAlgoTrig.at(iBit) != 1) {
1148  bool const triggered = m_prescaleCounterAlgoTrig.at(inBxInEvent).at(iBit).accept();
1149  if (triggered) {
1150  temp_algPrescaledOr = true;
1151  } else {
1152  // change bit to false in prescaled word and final decision word
1153  m_uGtAlgBlk.setAlgoDecisionInterm(iBit, false);
1154  } //if Prescale counter reached zero
1155  } //if prescale factor is not 1 (ie. no prescale)
1156  else {
1157  temp_algPrescaledOr = true;
1158  }
1159  } // require bit in range
1160  else if (!alreadyReported) {
1161  alreadyReported = true;
1162  edm::LogWarning("L1TGlobal") << "\nWarning: algoBit >= prescaleFactorsAlgoTrig.size() in bx " << iBxInEvent;
1163  }
1164  } //if algo bit is set true
1165  } //loop over alg bits
1166 
1167  m_algPrescaledOr = temp_algPrescaledOr; //temp
1168 
1169  } else {
1170  // Since not Prescaling just take OR of Initial Work
1172 
1173  } //if we are going to apply prescales.
1174 
1175  // Copy Algorithm bits fron Prescaled word to Final Word
1176  // Masking done below if requested.
1178 
1179  if (!algorithmTriggersUnmasked) {
1180  bool temp_algFinalOr = false;
1181  bool alreadyReported = false;
1182  for (unsigned int iBit = 0; iBit < numberPhysTriggers; ++iBit) {
1183  const bool bitValue = m_uGtAlgBlk.getAlgoDecisionInterm(iBit);
1184 
1185  if (bitValue) {
1186  //bool isMasked = ( triggerMaskAlgoTrig.at(iBit) == 0 );
1187  bool isMasked = false;
1188  if (iBit < triggerMaskAlgoTrig.size())
1189  isMasked = (triggerMaskAlgoTrig.at(iBit) == 0);
1190  else if (!alreadyReported) {
1191  alreadyReported = true;
1192  edm::LogWarning("L1TGlobal") << "\nWarning: algoBit >= triggerMaskAlgoTrig.size() in bx " << iBxInEvent;
1193  }
1194 
1195  bool const passMask = (bitValue && !isMasked);
1196 
1197  if (passMask)
1198  temp_algFinalOr = true;
1199  else
1200  m_uGtAlgBlk.setAlgoDecisionFinal(iBit, false);
1201 
1202  // Check if veto mask is true, if it is, set the event veto flag.
1203  if (triggerMaskVetoAlgoTrig.at(iBit) == 1)
1204  m_algFinalOrVeto = true;
1205  }
1206  }
1207 
1208  m_algIntermOr = temp_algFinalOr;
1209 
1210  } else {
1212 
1213  }
1214 
1215  // --------------------------
1216  // Set FinalOR for this board
1217  // --------------------------
1219 }
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:298
unsigned int m_currentLumi
Definition: GlobalBoard.h:273
static std::vector< PrescaleCounter > prescaleCounters(std::vector< double > const &prescaleFactorsAlgoTrig)
int m_verbosity
verbosity level
Definition: GlobalBoard.h:277
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:324
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:263
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:295
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 571 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().

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

◆ 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 216 of file GlobalBoard.h.

References m_cicadaScore, and heppy_batch::val.

◆ setResetPSCountersEachLumiSec()

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

Definition at line 213 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 219 of file GlobalBoard.h.

References m_verbosity, and verbosity.

219 { m_verbosity = verbosity; }
int m_verbosity
verbosity level
Definition: GlobalBoard.h:277
const int verbosity

Member Data Documentation

◆ m_algFinalOr

bool l1t::GlobalBoard::m_algFinalOr
private

Definition at line 284 of file GlobalBoard.h.

◆ m_algFinalOrVeto

bool l1t::GlobalBoard::m_algFinalOrVeto
private

Definition at line 285 of file GlobalBoard.h.

◆ m_algInitialOr

bool l1t::GlobalBoard::m_algInitialOr
private

Definition at line 281 of file GlobalBoard.h.

◆ m_algIntermOr

bool l1t::GlobalBoard::m_algIntermOr
private

Definition at line 282 of file GlobalBoard.h.

◆ m_algPrescaledOr

bool l1t::GlobalBoard::m_algPrescaledOr
private

Definition at line 283 of file GlobalBoard.h.

◆ m_boardEventCount

unsigned int l1t::GlobalBoard::m_boardEventCount
private

Definition at line 288 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_bxFirst_

int l1t::GlobalBoard::m_bxFirst_
private

Definition at line 255 of file GlobalBoard.h.

◆ m_bxLast_

int l1t::GlobalBoard::m_bxLast_
private

Definition at line 256 of file GlobalBoard.h.

◆ m_candL1EG

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

Definition at line 243 of file GlobalBoard.h.

Referenced by getCandL1EG().

◆ m_candL1EtSum

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

Definition at line 246 of file GlobalBoard.h.

Referenced by getCandL1EtSum().

◆ m_candL1EtSumZdc

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

Definition at line 247 of file GlobalBoard.h.

Referenced by getCandL1EtSumZdc().

◆ m_candL1External

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

Definition at line 248 of file GlobalBoard.h.

Referenced by getCandL1External().

◆ m_candL1Jet

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

Definition at line 245 of file GlobalBoard.h.

Referenced by getCandL1Jet().

◆ m_candL1Mu

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

Definition at line 241 of file GlobalBoard.h.

Referenced by getCandL1Mu().

◆ m_candL1MuShower

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

Definition at line 242 of file GlobalBoard.h.

Referenced by getCandL1MuShower().

◆ m_candL1Tau

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

Definition at line 244 of file GlobalBoard.h.

Referenced by getCandL1Tau().

◆ m_cicadaScore

float l1t::GlobalBoard::m_cicadaScore = 0.0
private

Definition at line 258 of file GlobalBoard.h.

Referenced by getCICADAScore(), and setCICADAScore().

◆ m_conditionResultMaps

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

Definition at line 271 of file GlobalBoard.h.

◆ m_currentLumi

unsigned int l1t::GlobalBoard::m_currentLumi
private

Definition at line 273 of file GlobalBoard.h.

◆ m_gtlAlgorithmOR

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

Definition at line 260 of file GlobalBoard.h.

Referenced by getAlgorithmOR(), and GlobalBoard().

◆ m_gtlDecisionWord

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

Definition at line 261 of file GlobalBoard.h.

Referenced by getDecisionWord(), and GlobalBoard().

◆ m_isDebugEnabled

bool l1t::GlobalBoard::m_isDebugEnabled
private

Definition at line 278 of file GlobalBoard.h.

◆ m_l1CaloGeometry

const L1CaloGeometry* l1t::GlobalBoard::m_l1CaloGeometry
private

Definition at line 231 of file GlobalBoard.h.

◆ m_l1CaloGeometryCacheID

unsigned long long l1t::GlobalBoard::m_l1CaloGeometryCacheID
private

Definition at line 232 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_l1GtMenu

const TriggerMenu* l1t::GlobalBoard::m_l1GtMenu
private

Definition at line 227 of file GlobalBoard.h.

◆ m_l1GtMenuCacheID

unsigned long long l1t::GlobalBoard::m_l1GtMenuCacheID
private

Definition at line 228 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_l1MuTriggerScales

const L1MuTriggerScales* l1t::GlobalBoard::m_l1MuTriggerScales
private

Definition at line 234 of file GlobalBoard.h.

◆ m_l1MuTriggerScalesCacheID

unsigned long long l1t::GlobalBoard::m_l1MuTriggerScalesCacheID
private

Definition at line 235 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_prescaleCounterAlgoTrig

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

Definition at line 324 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_resetPSCountersEachLumiSec

bool l1t::GlobalBoard::m_resetPSCountersEachLumiSec = false
private

Definition at line 295 of file GlobalBoard.h.

Referenced by setResetPSCountersEachLumiSec().

◆ m_saveAXOScore

bool l1t::GlobalBoard::m_saveAXOScore = false
private

Definition at line 268 of file GlobalBoard.h.

Referenced by enableAXOScoreSaving().

◆ m_semiRandomInitialPSCounters

bool l1t::GlobalBoard::m_semiRandomInitialPSCounters = false
private

Definition at line 298 of file GlobalBoard.h.

Referenced by setSemiRandomInitialPSCounters().

◆ m_singlestep

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

Definition at line 303 of file GlobalBoard.h.

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

◆ m_storedAXOScore

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

Definition at line 267 of file GlobalBoard.h.

◆ m_uGtAlgBlk

GlobalAlgBlk l1t::GlobalBoard::m_uGtAlgBlk
private

Definition at line 263 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_uGtAXOScore

AXOL1TLScore l1t::GlobalBoard::m_uGtAXOScore
private

Definition at line 266 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_uGtBoardNumber

int l1t::GlobalBoard::m_uGtBoardNumber
private

Definition at line 291 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_uGtFinalBoard

bool l1t::GlobalBoard::m_uGtFinalBoard
private

Definition at line 292 of file GlobalBoard.h.

Referenced by GlobalBoard().

◆ m_verbosity

int l1t::GlobalBoard::m_verbosity
private

verbosity level

Definition at line 277 of file GlobalBoard.h.

Referenced by setVerbosity().