CMS 3D CMS Logo

RPCTriggerHwConfig.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    RPCTriggerHwConfig
00004 // Class:      RPCTriggerHwConfig
00005 // 
00013 //
00014 // Original Author:  Tomasz Maciej Frueboes
00015 //         Created:  Wed Apr  9 13:57:29 CEST 2008
00016 // $Id: RPCTriggerHwConfig.cc,v 1.3 2008/06/24 10:28:58 michals Exp $
00017 //
00018 //
00019 
00020 
00021 // system include files
00022 #include <memory>
00023 #include "boost/shared_ptr.hpp"
00024 
00025 // user include files
00026 #include "FWCore/Framework/interface/ModuleFactory.h"
00027 #include "FWCore/Framework/interface/ESProducer.h"
00028 
00029 #include "FWCore/Framework/interface/ESHandle.h"
00030 
00031 #include "CondFormats/DataRecord/interface/L1RPCHwConfigRcd.h"
00032 #include "CondFormats/RPCObjects/interface/L1RPCHwConfig.h"
00033 
00034 
00035 
00036 //
00037 // class decleration
00038 //
00039 
00040 class RPCTriggerHwConfig : public edm::ESProducer {
00041    public:
00042       RPCTriggerHwConfig(const edm::ParameterSet&);
00043       ~RPCTriggerHwConfig();
00044 
00045       typedef std::auto_ptr<L1RPCHwConfig> ReturnType;
00046 
00047       ReturnType produce(const L1RPCHwConfigRcd&);
00048    private:
00049       // ----------member data ---------------------------
00050     std::vector<int> m_disableTowers;
00051     std::vector<int>   m_disableCrates;
00052 
00053     std::vector<int> m_enableTowers;
00054     std::vector<int> m_enableCrates;
00055 
00056     bool m_disableAll;
00057 
00058     int m_firstBX;
00059     int m_lastBX;
00060 
00061 };
00062 
00063 //
00064 // constants, enums and typedefs
00065 //
00066 
00067 //
00068 // static data member definitions
00069 //
00070 
00071 //
00072 // constructors and destructor
00073 //
00074 RPCTriggerHwConfig::RPCTriggerHwConfig(const edm::ParameterSet& iConfig)
00075 {
00076    //the following line is needed to tell the framework what
00077    // data is being produced
00078    setWhatProduced(this);
00079 
00080    //now do what ever other initialization is needed
00081     m_disableTowers =  iConfig.getParameter<std::vector<int> >("disableTowers");
00082     m_disableCrates =  iConfig.getParameter<std::vector<int> >("disableCrates");
00083 
00084     m_disableAll = iConfig.getParameter<bool>("disableAll");
00085 
00086     m_enableTowers =  iConfig.getParameter<std::vector<int> >("enableTowers");
00087     m_enableCrates =  iConfig.getParameter<std::vector<int> >("enableCrates");
00088 
00089     if (m_disableAll) {
00090       m_disableTowers.clear();
00091       m_disableCrates.clear();
00092       // check if m_enableTowers  & m_enableCrates are not empty?
00093     }
00094 
00095      m_firstBX = iConfig.getParameter<int>("firstBX");
00096      m_lastBX = iConfig.getParameter<int>("lastBX"); 
00097 
00098 
00099 }
00100 
00101 
00102 RPCTriggerHwConfig::~RPCTriggerHwConfig()
00103 {
00104  
00105    // do anything here that needs to be done at desctruction time
00106    // (e.g. close files, deallocate resources etc.)
00107 
00108 }
00109 
00110 
00111 //
00112 // member functions
00113 //
00114 
00115 // ------------ method called to produce the data  ------------
00116 RPCTriggerHwConfig::ReturnType
00117 RPCTriggerHwConfig::produce(const L1RPCHwConfigRcd& iRecord)
00118 {
00119    using namespace edm::es;
00120    std::auto_ptr<L1RPCHwConfig> pL1RPCHwConfig = std::auto_ptr<L1RPCHwConfig>( new L1RPCHwConfig() );
00121 
00122    if (m_disableAll) {
00123      pL1RPCHwConfig->enableAll(false);
00124      std::vector<int>::iterator crIt = m_enableCrates.begin();
00125      for (; crIt!=m_enableCrates.end(); ++crIt){
00126        pL1RPCHwConfig->enableCrate(*crIt,true);
00127      }
00128      for (unsigned int It=0; It<m_enableTowers.size(); It++) {
00129        if (It%2 == 0)
00130        pL1RPCHwConfig->enableTowerInCrate(m_enableTowers[It+1], m_enableTowers[It], true);
00131      }
00132    } else {
00133      std::vector<int>::iterator crIt = m_disableCrates.begin();
00134      for (; crIt!=m_disableCrates.end(); ++crIt){
00135        pL1RPCHwConfig->enableCrate(*crIt,false);
00136      }
00137      for (unsigned int It=0; It<m_disableTowers.size(); It++) {
00138        if (It%2 == 0)
00139        pL1RPCHwConfig->enableTowerInCrate(m_disableTowers[It+1], m_disableTowers[It], false);
00140      }
00141 
00142    }
00143 
00144    if (m_firstBX > m_lastBX )
00145         throw cms::Exception("BadConfig") << " firstBX < m_lastBX  " << "\n";
00146 
00147    pL1RPCHwConfig->setFirstBX(m_firstBX);
00148    pL1RPCHwConfig->setLastBX(m_lastBX);
00149 
00150    return pL1RPCHwConfig ;
00151 }
00152 
00153 //define this as a plug-in
00154 DEFINE_FWK_EVENTSETUP_MODULE(RPCTriggerHwConfig);

Generated on Tue Jun 9 17:40:30 2009 for CMSSW by  doxygen 1.5.4