Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-28 02:36:28

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   bool condResult = false;
0044   const float cicadaScore = m_uGtB->getCICADAScore();
0045 
0046   // This gets rid of a GT emulator convention "iCondition".
0047   // This usually indexes the next line, which is somewhat concerning
0048   // AXOL1TL operates this way, but it should be checked
0049   const CICADATemplate::ObjectParameter objPar = (*(m_gtCICADATemplate->objectParameter()))[0];
0050 
0051   bool condGEqVal = m_gtCICADATemplate->condGEq();
0052   bool passCondition = false;
0053 
0054   passCondition = checkCut(objPar.minCICADAThreshold, cicadaScore, condGEqVal);
0055 
0056   condResult |= passCondition;
0057 
0058   return condResult;
0059 }
0060 
0061 void l1t::CICADACondition::print(std::ostream& myCout) const {
0062   myCout << "CICADA Condition Print: " << std::endl;
0063   m_gtCICADATemplate->print(myCout);
0064   ConditionEvaluation::print(myCout);
0065 }