CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1RPCConeDefinitionProducer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: L1RPCConeDefinitionProducer
4 // Class: L1RPCConeDefinitionProducer
5 //
13 //
14 // Original Author: Tomasz Maciej Frueboes
15 // Created: Mon Feb 23 12:09:06 CET 2009
16 //
17 //
18 
19 
20 // system include files
21 #include <memory>
22 #include "boost/shared_ptr.hpp"
23 
24 // user include files
27 
29 
30 
33 
34 //
35 // class decleration
36 //
37 
39  public:
42 
43  typedef boost::shared_ptr<L1RPCConeDefinition> ReturnType;
44 
46  private:
47  // ----------member data ---------------------------
50  int m_rollBeg;
51  int m_rollEnd;
54 
55  //L1RPCConeDefinition::TLPSizesInTowers m_LPSizesInTowers;
57 
58  //L1RPCConeDefinition::TRingsToTowers m_RingsToTowers;
60 
61  //L1RPCConeDefinition::TRingsToLP m_RingsToLP;
63 };
64 
65 //
66 // constants, enums and typedefs
67 //
68 
69 //
70 // static data member definitions
71 //
72 
73 //
74 // constructors and destructor
75 //
77  m_towerBeg(iConfig.getParameter<int>("towerBeg")),
78  m_towerEnd(iConfig.getParameter<int>("towerEnd")),
79  m_rollBeg(iConfig.getParameter<int>("rollBeg")),
80  m_rollEnd(iConfig.getParameter<int>("rollEnd")),
81  m_hwPlaneBeg(iConfig.getParameter<int>("hwPlaneBeg")),
82  m_hwPlaneEnd(iConfig.getParameter<int>("hwPlaneEnd"))
83 {
84  //the following line is needed to tell the framework what
85  // data is being produced
86  setWhatProduced(this);
87 
88  for (int t = m_towerBeg; t <= m_towerEnd; ++t){
89 
90  std::stringstream name;
91  name << "lpSizeTower" << t;
92 
93 
94  std::vector<int> newSizes =
95  iConfig.getParameter<std::vector<int> >(name.str().c_str());
96 
97  for (unsigned int lp = 0; lp < newSizes.size();++lp){
98 // L1RPCConeDefinition::TLPSize lps(t, lp, newSizes[lp]);
100  lps.m_tower=t;
101  lps.m_LP=lp;
102  lps.m_size=newSizes[lp];
103  m_LPSizeVec.push_back(lps);
104  }
105 
106 
107 
108  }
109 
110 
111 
112  //now do what ever other initialization is needed
113 
114  // hw planes numbered from 0 to 5
115  // rolls from 0 to 17 (etaPartition)
116  //
117  // rollConnLP_[roll]_[hwPlane-1]
118  // rollConnLP_5_3 = cms.vint32(6, 0, 0),
119  // ----- roll 5, hwPlane 4 (3+1) is logplane 6 (OK)
120  //
121  // rollConnT_[roll]_[hwPlane-1]
122  // rollConnT_5_3 = cms.vint32(4, -1, -1),
123  // ----- roll 5, hwPlane 4 (3+1) contirubtes to tower 4 (OK)
124 
125  for (int roll = m_rollBeg; roll <= m_rollEnd; ++roll){
126  //L1RPCConeDefinition::THWplaneToTower newHwPlToTower;
127  //L1RPCConeDefinition::THWplaneToLP newHWplaneToLP;
128  for (int hwpl = m_hwPlaneBeg; hwpl <= m_hwPlaneEnd; ++hwpl){
129  std::stringstream name;
130  name << "rollConnLP_" << roll << "_" << hwpl;
131 
132  std::vector<int> hwPl2LPVec = iConfig.getParameter<std::vector<int> >(name.str().c_str());
133  //newHWplaneToLP.push_back(newListLP);
134  for (unsigned int i = 0;i < hwPl2LPVec.size();++i){
135 
136  if (hwPl2LPVec[i]>=0)
137  {
138 // L1RPCConeDefinition::TRingToLP lp(roll, hwpl, hwPl2LPVec[i],i);
140  lp.m_etaPart=roll;
141  lp.m_hwPlane=hwpl;
142  lp.m_LP=hwPl2LPVec[i];
143  lp.m_index=i;
144  m_ringToLPVec.push_back(lp);
145  }
146  }
147 
148 
149  std::stringstream name1;
150  name1 << "rollConnT_" << roll << "_" << hwpl;
151 
152  /*L1RPCConeDefinition::TLPList newListT =
153  iConfig.getParameter<std::vector<int> >(name1.str().c_str());
154  newHwPlToTower.push_back(newListT);*/
155  std::vector<int> hwPl2TowerVec = iConfig.getParameter<std::vector<int> >(name1.str().c_str());
156 
157  for (unsigned int i = 0;i < hwPl2TowerVec.size();++i){
158 
159  if (hwPl2TowerVec[i]>=0)
160  {
161 // L1RPCConeDefinition::TRingToTower rt(roll, hwpl, hwPl2TowerVec[i],i);
163  rt.m_etaPart=roll;
164  rt.m_hwPlane=hwpl;
165  rt.m_tower=hwPl2TowerVec[i];
166  rt.m_index=i;
167  m_ringToTowerVec.push_back(rt);
168  }
169  }
170 
171 
172  }
173  //m_RingsToTowers.push_back(newHwPlToTower);
174 
175  //m_RingsToLP.push_back(newHWplaneToLP);
176  }
177 }
178 
179 
181 
182 
183 
184 //
185 // member functions
186 //
187 
188 // ------------ method called to produce the data ------------
191 {
192  using namespace edm::es;
193  boost::shared_ptr<L1RPCConeDefinition> pL1RPCConeDefinition(new L1RPCConeDefinition);
194 
195  pL1RPCConeDefinition->setFirstTower(m_towerBeg);
196  pL1RPCConeDefinition->setLastTower(m_towerEnd);
197 
198  pL1RPCConeDefinition->setLPSizeVec(m_LPSizeVec);
199  pL1RPCConeDefinition->setRingToLPVec(m_ringToLPVec);
200  pL1RPCConeDefinition->setRingToTowerVec(m_ringToTowerVec);
201 
202 
203  return pL1RPCConeDefinition ;
204 }
205 
206 //define this as a plug-in
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
std::vector< TRingToTower > TRingToTowerVec
std::vector< TRingToLP > TRingToLPVec
std::vector< TLPSize > TLPSizeVec
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
L1RPCConeDefinition::TRingToLPVec m_ringToLPVec
L1RPCConeDefinition::TRingToTowerVec m_ringToTowerVec
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Definition: ModuleFactory.h:60
L1RPCConeDefinitionProducer(const edm::ParameterSet &)
boost::shared_ptr< L1RPCConeDefinition > ReturnType
ReturnType produce(const L1RPCConeDefinitionRcd &)
L1RPCConeDefinition::TLPSizeVec m_LPSizeVec