Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // Package:    L1EmEtScaleOnlineProd
0004 // Class:      L1EmEtScaleOnlineProd
0005 //
0006 /**\class L1EmEtScaleOnlineProd L1EmEtScaleOnlineProd.h L1Trigger/L1EmEtScaleProducers/src/L1EmEtScaleOnlineProd.cc
0007 
0008  Description: <one line class summary>
0009 
0010  Implementation:
0011      <Notes on implementation>
0012 */
0013 //
0014 // Original Author:  Werner Man-Li Sun
0015 //         Created:  Tue Sep 16 22:43:22 CEST 2008
0016 //
0017 //
0018 
0019 // system include files
0020 
0021 // user include files
0022 #include "CondTools/L1Trigger/interface/L1ConfigOnlineProdBase.h"
0023 
0024 #include "CondFormats/L1TObjects/interface/L1CaloEtScale.h"
0025 #include "CondFormats/DataRecord/interface/L1EmEtScaleRcd.h"
0026 
0027 //
0028 // class declaration
0029 //
0030 
0031 class L1EmEtScaleOnlineProd : public L1ConfigOnlineProdBase<L1EmEtScaleRcd, L1CaloEtScale> {
0032 public:
0033   L1EmEtScaleOnlineProd(const edm::ParameterSet&);
0034   ~L1EmEtScaleOnlineProd() override;
0035 
0036   std::unique_ptr<L1CaloEtScale> newObject(const std::string& objectKey) override;
0037 
0038 private:
0039   // ----------member data ---------------------------
0040 };
0041 
0042 //
0043 // constants, enums and typedefs
0044 //
0045 
0046 //
0047 // static data member definitions
0048 //
0049 
0050 //
0051 // constructors and destructor
0052 //
0053 L1EmEtScaleOnlineProd::L1EmEtScaleOnlineProd(const edm::ParameterSet& iConfig)
0054     : L1ConfigOnlineProdBase<L1EmEtScaleRcd, L1CaloEtScale>(iConfig) {
0055   //the following line is needed to tell the framework what
0056   // data is being produced
0057 
0058   //now do what ever other initialization is needed
0059 }
0060 
0061 L1EmEtScaleOnlineProd::~L1EmEtScaleOnlineProd() {
0062   // do anything here that needs to be done at desctruction time
0063   // (e.g. close files, deallocate resources etc.)
0064 }
0065 
0066 std::unique_ptr<L1CaloEtScale> L1EmEtScaleOnlineProd::newObject(const std::string& objectKey) {
0067   // ~~~~~~~~~ Cut values ~~~~~~~~~
0068 
0069   std::vector<std::string> queryStrings;
0070   queryStrings.push_back("ET_GEV_BIN_LOW_0");
0071   queryStrings.push_back("ET_GEV_BIN_LOW_1");
0072   queryStrings.push_back("ET_GEV_BIN_LOW_2");
0073   queryStrings.push_back("ET_GEV_BIN_LOW_3");
0074   queryStrings.push_back("ET_GEV_BIN_LOW_4");
0075   queryStrings.push_back("ET_GEV_BIN_LOW_5");
0076   queryStrings.push_back("ET_GEV_BIN_LOW_6");
0077   queryStrings.push_back("ET_GEV_BIN_LOW_7");
0078   queryStrings.push_back("ET_GEV_BIN_LOW_8");
0079   queryStrings.push_back("ET_GEV_BIN_LOW_9");
0080   queryStrings.push_back("ET_GEV_BIN_LOW_10");
0081   queryStrings.push_back("ET_GEV_BIN_LOW_11");
0082   queryStrings.push_back("ET_GEV_BIN_LOW_12");
0083   queryStrings.push_back("ET_GEV_BIN_LOW_13");
0084   queryStrings.push_back("ET_GEV_BIN_LOW_14");
0085   queryStrings.push_back("ET_GEV_BIN_LOW_15");
0086   queryStrings.push_back("ET_GEV_BIN_LOW_16");
0087   queryStrings.push_back("ET_GEV_BIN_LOW_17");
0088   queryStrings.push_back("ET_GEV_BIN_LOW_18");
0089   queryStrings.push_back("ET_GEV_BIN_LOW_19");
0090   queryStrings.push_back("ET_GEV_BIN_LOW_20");
0091   queryStrings.push_back("ET_GEV_BIN_LOW_21");
0092   queryStrings.push_back("ET_GEV_BIN_LOW_22");
0093   queryStrings.push_back("ET_GEV_BIN_LOW_23");
0094   queryStrings.push_back("ET_GEV_BIN_LOW_24");
0095   queryStrings.push_back("ET_GEV_BIN_LOW_25");
0096   queryStrings.push_back("ET_GEV_BIN_LOW_26");
0097   queryStrings.push_back("ET_GEV_BIN_LOW_27");
0098   queryStrings.push_back("ET_GEV_BIN_LOW_28");
0099   queryStrings.push_back("ET_GEV_BIN_LOW_29");
0100   queryStrings.push_back("ET_GEV_BIN_LOW_30");
0101   queryStrings.push_back("ET_GEV_BIN_LOW_31");
0102   queryStrings.push_back("ET_GEV_BIN_LOW_32");
0103   queryStrings.push_back("ET_GEV_BIN_LOW_33");
0104   queryStrings.push_back("ET_GEV_BIN_LOW_34");
0105   queryStrings.push_back("ET_GEV_BIN_LOW_35");
0106   queryStrings.push_back("ET_GEV_BIN_LOW_36");
0107   queryStrings.push_back("ET_GEV_BIN_LOW_37");
0108   queryStrings.push_back("ET_GEV_BIN_LOW_38");
0109   queryStrings.push_back("ET_GEV_BIN_LOW_39");
0110   queryStrings.push_back("ET_GEV_BIN_LOW_40");
0111   queryStrings.push_back("ET_GEV_BIN_LOW_41");
0112   queryStrings.push_back("ET_GEV_BIN_LOW_42");
0113   queryStrings.push_back("ET_GEV_BIN_LOW_43");
0114   queryStrings.push_back("ET_GEV_BIN_LOW_44");
0115   queryStrings.push_back("ET_GEV_BIN_LOW_45");
0116   queryStrings.push_back("ET_GEV_BIN_LOW_46");
0117   queryStrings.push_back("ET_GEV_BIN_LOW_47");
0118   queryStrings.push_back("ET_GEV_BIN_LOW_48");
0119   queryStrings.push_back("ET_GEV_BIN_LOW_49");
0120   queryStrings.push_back("ET_GEV_BIN_LOW_50");
0121   queryStrings.push_back("ET_GEV_BIN_LOW_51");
0122   queryStrings.push_back("ET_GEV_BIN_LOW_52");
0123   queryStrings.push_back("ET_GEV_BIN_LOW_53");
0124   queryStrings.push_back("ET_GEV_BIN_LOW_54");
0125   queryStrings.push_back("ET_GEV_BIN_LOW_55");
0126   queryStrings.push_back("ET_GEV_BIN_LOW_56");
0127   queryStrings.push_back("ET_GEV_BIN_LOW_57");
0128   queryStrings.push_back("ET_GEV_BIN_LOW_58");
0129   queryStrings.push_back("ET_GEV_BIN_LOW_59");
0130   queryStrings.push_back("ET_GEV_BIN_LOW_60");
0131   queryStrings.push_back("ET_GEV_BIN_LOW_61");
0132   queryStrings.push_back("ET_GEV_BIN_LOW_62");
0133   queryStrings.push_back("ET_GEV_BIN_LOW_63");
0134 
0135   const l1t::OMDSReader::QueryResults scaleKeyResults = m_omdsReader.singleAttribute(objectKey);
0136 
0137   l1t::OMDSReader::QueryResults scaleResults = m_omdsReader.basicQuery(
0138       queryStrings,
0139       "CMS_GT",
0140       "L1T_SCALE_CALO_ET_THRESHOLD",
0141       "L1T_SCALE_CALO_ET_THRESHOLD.ID",
0142       m_omdsReader.basicQuery(
0143           "L1T_SCALE_CALO_ET_THRESHOLD_ID", "CMS_RCT", "L1CALOEMETTHRESH", "L1CALOEMETTHRESH.NAME", scaleKeyResults));
0144 
0145   if (scaleResults.queryFailed() || scaleResults.numberRows() != 1)  // check query successful
0146   {
0147     edm::LogError("L1-O2O") << "Problem with L1EmEtScale key.";
0148     return std::unique_ptr<L1CaloEtScale>();
0149   }
0150   std::vector<double> m_thresholds;
0151 
0152   for (std::vector<std::string>::iterator thresh = queryStrings.begin(); thresh != queryStrings.end(); ++thresh) {
0153     float tempScale = 0.0;
0154     scaleResults.fillVariable(*thresh, tempScale);
0155     m_thresholds.push_back(tempScale);
0156   }
0157 
0158   l1t::OMDSReader::QueryResults lsbResults =
0159       m_omdsReader.basicQuery("INPUTLSB", "CMS_RCT", "L1CALOEMETTHRESH", "L1CALOEMETTHRESH.NAME", scaleKeyResults);
0160   if (lsbResults.queryFailed() || lsbResults.numberRows() != 1)  // check query successful
0161   {
0162     edm::LogError("L1-O2O") << "Problem with L1EmEtScale key.";
0163     return std::unique_ptr<L1CaloEtScale>();
0164   }
0165 
0166   double m_lsb = 0.;
0167   lsbResults.fillVariable(m_lsb);
0168 
0169   //     std::cout << " input lsb " << m_lsb <<std::endl;
0170 
0171   //~~~~~~~~~ Instantiate new L1EmEtScale object. ~~~~~~~~~
0172 
0173   // Default objects for Lindsey
0174 
0175   return std::make_unique<L1CaloEtScale>(m_lsb, m_thresholds);
0176 }
0177 
0178 // ------------ method called to produce the data  ------------
0179 
0180 //define this as a plug-in
0181 DEFINE_FWK_EVENTSETUP_MODULE(L1EmEtScaleOnlineProd);