Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:22:19

0001 /**
0002  * \class L1GtParametersTrivialProducer
0003  *
0004  *
0005  * Description: ESProducer for L1 GT parameters.
0006  *
0007  * Implementation:
0008  *    <TODO: enter implementation details>
0009  *
0010  * \author: Vasile Mihai Ghete - HEPHY Vienna
0011  *
0012  *
0013  */
0014 
0015 // this class header
0016 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtParametersTrivialProducer.h"
0017 
0018 // system include files
0019 #include <memory>
0020 
0021 // user include files
0022 //   base class
0023 #include "FWCore/Framework/interface/ESProducer.h"
0024 
0025 #include "FWCore/Framework/interface/ModuleFactory.h"
0026 
0027 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0028 #include "FWCore/MessageLogger/interface/MessageDrop.h"
0029 
0030 #include "CondFormats/DataRecord/interface/L1GtParametersRcd.h"
0031 #include <cstdint>
0032 
0033 // forward declarations
0034 
0035 // constructor(s)
0036 L1GtParametersTrivialProducer::L1GtParametersTrivialProducer(const edm::ParameterSet& parSet) {
0037   // tell the framework what data is being produced
0038   setWhatProduced(this, &L1GtParametersTrivialProducer::produceGtParameters);
0039 
0040   // now do what ever other initialization is needed
0041 
0042   // total Bx's in the event
0043 
0044   m_totalBxInEvent = parSet.getParameter<int>("TotalBxInEvent");
0045 
0046   if (m_totalBxInEvent > 0) {
0047     if ((m_totalBxInEvent % 2) == 0) {
0048       m_totalBxInEvent = m_totalBxInEvent - 1;
0049 
0050       edm::LogInfo("L1GtParametersTrivialProducer")
0051           << "\nWARNING: Number of bunch crossing in event rounded to: " << m_totalBxInEvent
0052           << "\n         The number must be an odd number!\n"
0053           << std::endl;
0054     }
0055   } else {
0056     edm::LogInfo("L1GtParametersTrivialProducer")
0057         << "\nWARNING: Number of bunch crossing in event must be a positive number!"
0058         << "\n  Requested value was: " << m_totalBxInEvent << "\n  Reset to 1 (L1Accept bunch only).\n"
0059         << std::endl;
0060 
0061     m_totalBxInEvent = 1;
0062   }
0063 
0064   m_daqActiveBoards = static_cast<uint16_t>(parSet.getParameter<unsigned int>("DaqActiveBoards"));
0065 
0066   m_evmActiveBoards = static_cast<uint16_t>(parSet.getParameter<unsigned int>("EvmActiveBoards"));
0067 
0068   m_daqNrBxBoard = parSet.getParameter<std::vector<int> >("DaqNrBxBoard");
0069 
0070   m_evmNrBxBoard = parSet.getParameter<std::vector<int> >("EvmNrBxBoard");
0071 
0072   m_bstLengthBytes = parSet.getParameter<unsigned int>("BstLengthBytes");
0073 }
0074 
0075 // destructor
0076 L1GtParametersTrivialProducer::~L1GtParametersTrivialProducer() {
0077   // empty
0078 }
0079 
0080 // member functions
0081 
0082 // method called to produce the data
0083 std::unique_ptr<L1GtParameters> L1GtParametersTrivialProducer::produceGtParameters(const L1GtParametersRcd& iRecord) {
0084   auto pL1GtParameters = std::make_unique<L1GtParameters>();
0085 
0086   // set total Bx's in the event
0087   pL1GtParameters->setGtTotalBxInEvent(m_totalBxInEvent);
0088 
0089   // set the active boards for L1 GT DAQ record
0090   pL1GtParameters->setGtDaqActiveBoards(m_daqActiveBoards);
0091 
0092   // set the active boards for L1 GT EVM record
0093   pL1GtParameters->setGtEvmActiveBoards(m_evmActiveBoards);
0094 
0095   // set the number of Bx per board for L1 GT DAQ record
0096   pL1GtParameters->setGtDaqNrBxBoard(m_daqNrBxBoard);
0097 
0098   // set the number of Bx per board for L1 GT EVM record
0099   pL1GtParameters->setGtEvmNrBxBoard(m_evmNrBxBoard);
0100 
0101   // set length of BST record (in bytes) for L1 GT EVM record
0102   pL1GtParameters->setGtBstLengthBytes(m_bstLengthBytes);
0103 
0104   return pL1GtParameters;
0105 }