File indexing completed on 2023-03-17 11:14:24
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022
0023 #include "FWCore/Framework/interface/ModuleFactory.h"
0024 #include "FWCore/Framework/interface/ESProducer.h"
0025
0026 #include "FWCore/Framework/interface/ESHandle.h"
0027
0028 #include "CondFormats/L1TObjects/interface/L1RPCConeDefinition.h"
0029 #include "CondFormats/DataRecord/interface/L1RPCConeDefinitionRcd.h"
0030
0031
0032
0033
0034
0035 class L1RPCConeDefinitionProducer : public edm::ESProducer {
0036 public:
0037 L1RPCConeDefinitionProducer(const edm::ParameterSet&);
0038 ~L1RPCConeDefinitionProducer() override;
0039
0040 using ReturnType = std::unique_ptr<L1RPCConeDefinition>;
0041
0042 ReturnType produce(const L1RPCConeDefinitionRcd&);
0043
0044 private:
0045
0046 int m_towerBeg;
0047 int m_towerEnd;
0048 int m_rollBeg;
0049 int m_rollEnd;
0050 int m_hwPlaneBeg;
0051 int m_hwPlaneEnd;
0052
0053
0054 L1RPCConeDefinition::TLPSizeVec m_LPSizeVec;
0055
0056
0057 L1RPCConeDefinition::TRingToTowerVec m_ringToTowerVec;
0058
0059
0060 L1RPCConeDefinition::TRingToLPVec m_ringToLPVec;
0061 };
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074 L1RPCConeDefinitionProducer::L1RPCConeDefinitionProducer(const edm::ParameterSet& iConfig)
0075 : m_towerBeg(iConfig.getParameter<int>("towerBeg")),
0076 m_towerEnd(iConfig.getParameter<int>("towerEnd")),
0077 m_rollBeg(iConfig.getParameter<int>("rollBeg")),
0078 m_rollEnd(iConfig.getParameter<int>("rollEnd")),
0079 m_hwPlaneBeg(iConfig.getParameter<int>("hwPlaneBeg")),
0080 m_hwPlaneEnd(iConfig.getParameter<int>("hwPlaneEnd")) {
0081
0082
0083 setWhatProduced(this);
0084
0085 for (int t = m_towerBeg; t <= m_towerEnd; ++t) {
0086 std::stringstream name;
0087 name << "lpSizeTower" << t;
0088
0089 std::vector<int> newSizes = iConfig.getParameter<std::vector<int> >(name.str().c_str());
0090
0091 for (unsigned int lp = 0; lp < newSizes.size(); ++lp) {
0092
0093 L1RPCConeDefinition::TLPSize lps;
0094 lps.m_tower = t;
0095 lps.m_LP = lp;
0096 lps.m_size = newSizes[lp];
0097 m_LPSizeVec.push_back(lps);
0098 }
0099 }
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114 for (int roll = m_rollBeg; roll <= m_rollEnd; ++roll) {
0115
0116
0117 for (int hwpl = m_hwPlaneBeg; hwpl <= m_hwPlaneEnd; ++hwpl) {
0118 std::stringstream name;
0119 name << "rollConnLP_" << roll << "_" << hwpl;
0120
0121 std::vector<int> hwPl2LPVec = iConfig.getParameter<std::vector<int> >(name.str().c_str());
0122
0123 for (unsigned int i = 0; i < hwPl2LPVec.size(); ++i) {
0124 if (hwPl2LPVec[i] >= 0) {
0125
0126 L1RPCConeDefinition::TRingToLP lp;
0127 lp.m_etaPart = roll;
0128 lp.m_hwPlane = hwpl;
0129 lp.m_LP = hwPl2LPVec[i];
0130 lp.m_index = i;
0131 m_ringToLPVec.push_back(lp);
0132 }
0133 }
0134
0135 std::stringstream name1;
0136 name1 << "rollConnT_" << roll << "_" << hwpl;
0137
0138
0139
0140
0141 std::vector<int> hwPl2TowerVec = iConfig.getParameter<std::vector<int> >(name1.str().c_str());
0142
0143 for (unsigned int i = 0; i < hwPl2TowerVec.size(); ++i) {
0144 if (hwPl2TowerVec[i] >= 0) {
0145
0146 L1RPCConeDefinition::TRingToTower rt;
0147 rt.m_etaPart = roll;
0148 rt.m_hwPlane = hwpl;
0149 rt.m_tower = hwPl2TowerVec[i];
0150 rt.m_index = i;
0151 m_ringToTowerVec.push_back(rt);
0152 }
0153 }
0154 }
0155
0156
0157
0158 }
0159 }
0160
0161 L1RPCConeDefinitionProducer::~L1RPCConeDefinitionProducer() {}
0162
0163
0164
0165
0166
0167
0168 L1RPCConeDefinitionProducer::ReturnType L1RPCConeDefinitionProducer::produce(const L1RPCConeDefinitionRcd& iRecord) {
0169 auto pL1RPCConeDefinition = std::make_unique<L1RPCConeDefinition>();
0170
0171 pL1RPCConeDefinition->setFirstTower(m_towerBeg);
0172 pL1RPCConeDefinition->setLastTower(m_towerEnd);
0173
0174 pL1RPCConeDefinition->setLPSizeVec(m_LPSizeVec);
0175 pL1RPCConeDefinition->setRingToLPVec(m_ringToLPVec);
0176 pL1RPCConeDefinition->setRingToTowerVec(m_ringToTowerVec);
0177
0178 return pL1RPCConeDefinition;
0179 }
0180
0181
0182 DEFINE_FWK_EVENTSETUP_MODULE(L1RPCConeDefinitionProducer);