Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-05-27 01:56:22

0001 #include "L1Trigger/L1TGlobal/interface/CICADACondition.h"
0002 
0003 #include <iostream>
0004 #include <iomanip>
0005 
0006 #include <string>
0007 #include <vector>
0008 #include <algorithm>
0009 
0010 #include "L1Trigger/L1TGlobal/interface/CICADATemplate.h"
0011 #include "L1Trigger/L1TGlobal/interface/ConditionEvaluation.h"
0012 #include "L1Trigger/L1TGlobal/interface/GlobalBoard.h"
0013 
0014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0015 #include "FWCore/MessageLogger/interface/MessageDrop.h"
0016 
0017 l1t::CICADACondition::CICADACondition() : ConditionEvaluation() {}
0018 
0019 l1t::CICADACondition::CICADACondition(const GlobalCondition* cicadaTemplate, const GlobalBoard* ptrGTB)
0020     : ConditionEvaluation(), m_gtCICADATemplate(static_cast<const CICADATemplate*>(cicadaTemplate)), m_uGtB(ptrGTB) {
0021   m_condMaxNumberObjects = 1;  //necessary?
0022 }
0023 
0024 void l1t::CICADACondition::copy(const l1t::CICADACondition& cp) {
0025   m_gtCICADATemplate = cp.gtCICADATemplate();
0026   m_uGtB = cp.getuGtB();
0027 
0028   m_condMaxNumberObjects = cp.condMaxNumberObjects();
0029   m_condLastResult = cp.condLastResult();
0030   m_combinationsInCond = cp.getCombinationsInCond();
0031 
0032   m_verbosity = cp.m_verbosity;
0033 }
0034 
0035 l1t::CICADACondition::CICADACondition(const l1t::CICADACondition& cp) : ConditionEvaluation() { copy(cp); }
0036 
0037 l1t::CICADACondition& l1t::CICADACondition::operator=(const l1t::CICADACondition& cp) {
0038   copy(cp);
0039   return *this;
0040 }
0041 
0042 const bool l1t::CICADACondition::evaluateCondition(const int bxEval) const {
0043   auto const* cicadaScoreBXVec = m_uGtB->getCandL1CICADAScore();
0044 
0045   int const useBx = bxEval + m_gtCICADATemplate->condRelativeBx();
0046 
0047   if (cicadaScoreBXVec->isEmpty(useBx)) {
0048     return false;
0049   }
0050 
0051   float const cicadaScore = cicadaScoreBXVec->at(useBx, 0);
0052 
0053   // This gets rid of a GT emulator convention "iCondition".
0054   // This usually indexes the next line, which is somewhat concerning
0055   // AXOL1TL operates this way, but it should be checked
0056   const CICADATemplate::ObjectParameter objPar = (*(m_gtCICADATemplate->objectParameter()))[0];
0057 
0058   bool const condGEqVal = m_gtCICADATemplate->condGEq();
0059 
0060   return checkCut(objPar.minCICADAThreshold, cicadaScore, condGEqVal);
0061 }
0062 
0063 void l1t::CICADACondition::print(std::ostream& myCout) const {
0064   myCout << "CICADA Condition Print: " << std::endl;
0065   m_gtCICADATemplate->print(myCout);
0066   ConditionEvaluation::print(myCout);
0067 }