44 m_towerBeg(iConfig.getParameter<int>(
"towerBeg")),
45 m_towerEnd(iConfig.getParameter<int>(
"towerEnd")),
46 m_runOnceBuildCones(
false)
124 using namespace edm::es;
125 boost::shared_ptr<L1RPCConeBuilder> pL1RPCConeBuilder( (
new L1RPCConeBuilder ) );
141 m_ringsMap.begin()->second.compressConnections();
143 pL1RPCConeBuilder->setConeConnectionMap(
m_ringsMap.begin()->second.getConnectionsMap());
145 pL1RPCConeBuilder->setCompressedConeConnectionMap(
146 m_ringsMap.begin()->second.getCompressedConnectionsMap());
150 return pL1RPCConeBuilder;
186 throw cms::Exception(
"RPCInternal") <<
"buildCones called twice \n";
192 boost::shared_ptr<L1RPCConeBuilder::TConMap > uncompressedCons
197 for(TrackingGeometry::DetContainer::const_iterator it = rpcGeom->dets().begin();
198 it != rpcGeom->dets().end();
202 if( dynamic_cast< RPCRoll* >( *it ) == 0 )
continue;
219 RPCStripsRing::TIdToRindMap::iterator it =
m_ringsMap.begin();
226 it->second.filterOverlapingChambers();
227 it->second.fillWithVirtualStrips();
236 int etaPart = it->first%100;
237 if (it->second.isReferenceRing() && (it->second.size() != 1152)){
243 throw cms::Exception(
"RPCInternal") <<
"Problem: refring " << it->first
244 <<
" has " << it->second.size() <<
" strips \n";
255 int sign = key/100 - (key/1000)*10;
266 throw cms::Exception(
"RPCInternal") <<
" Size differs for ring " << key <<
" +- 100 \n";
281 RPCStripsRing::TIdToRindMap::iterator itRef =
m_ringsMap.begin();
287 if (!itRef->second.isReferenceRing())
continue;
289 RPCStripsRing::TIdToRindMap::iterator itOther =
m_ringsMap.begin();
290 for (;itOther !=
m_ringsMap.end(); ++itOther){
292 if (itOther->second.isReferenceRing())
continue;
295 if ( pr.first != -1 ) {
297 newOtherConn.
m_it = itOther;
300 ringsToConnect.push_back(newOtherConn);
308 if (prRef.first == -1){
309 throw cms::Exception(
"RPCConfig") <<
" Cannot determine logplane for reference ring "
310 << itRef->first <<
"\n ";
325 itRef->second.createRefConnections(ringsToConnect, prRef.first, prRef.second);
354 RPCStripsRing::TIdToRindMap::iterator other){
361 if ( ref->second.getEtaPartition()*other->second.getEtaPartition()<0 )
362 return std::make_pair(-1,0);
381 L1RPCConeDefinition::TRingToTowerVec::const_iterator itRef
384 const L1RPCConeDefinition::TRingToTowerVec::const_iterator itEnd
387 L1RPCConeDefinition::TRingToTowerVec::const_iterator itOther = itRef;
393 for (;itRef != itEnd; ++itRef){
394 if ( itRef->m_etaPart !=
std::abs(ref->second.getEtaPartition())
395 || itRef->m_hwPlane !=
std::abs(ref->second.getHwPlane()-1)
399 refTower = itRef->m_tower;
401 for (;itOther != itEnd; ++itOther){
402 if ( itOther->m_etaPart !=
std::abs(other->second.getEtaPartition())
403 || itOther->m_hwPlane !=
std::abs(other->second.getHwPlane()-1)
406 if (itOther->m_tower == refTower) index = itOther->m_index;
415 <<
"wants to be connected to " << refTowerCnt <<
" towers \n";
422 <<
" is not connected anywhere \n";
476 L1RPCConeDefinition::TRingToLPVec::const_iterator it =
m_L1RPCConeDefinition->getRingToLPVec().begin();
477 L1RPCConeDefinition::TRingToLPVec::const_iterator itEnd =
m_L1RPCConeDefinition->getRingToLPVec().end();
478 for (;it!=itEnd;++it){
480 if (it->m_etaPart !=
std::abs(other->second.getEtaPartition())
481 || it->m_hwPlane !=
std::abs(other->second.getHwPlane()-1)
482 || it->m_index != index)
continue;
493 for (;it!=itEnd;++it){
496 if (it->m_tower !=
std::abs(refTower) || it->m_LP != logplane-1)
continue;
518 return std::make_pair(logplane,lpSize);
edm::ESHandle< RPCGeometry > m_rpcGeometry
depends_on::OneHolder< T, TDependsOnRecord > dependsOn(void(T::*iT)(const TDependsOnRecord &))
RPCConeBuilder(const edm::ParameterSet &)
void geometryCallback(const MuonGeometryRecord &)
std::pair< int, int > areConnected(RPCStripsRing::TIdToRindMap::iterator ref, RPCStripsRing::TIdToRindMap::iterator other)
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
void buildCones(const edm::ESHandle< RPCGeometry > &rpcGeom)
boost::shared_ptr< L1RPCConeBuilder > ReturnType
std::vector< TOtherConnStruct > TOtherConnStructVec
void get(HolderT &iHolder) const
void coneDefCallback(const L1RPCConeDefinitionRcd &)
int m_towerBeg
Returns logplane number for this connection, if not connected returns -1. In second lpSize...
edm::ESHandle< L1RPCConeDefinition > m_L1RPCConeDefinition
RPCStripsRing::TIdToRindMap m_ringsMap
std::map< uint32_t, TStrip2ConVec > TConMap
ReturnType produce(const L1RPCConeBuilderRcd &)
TIdToRindMap::iterator m_it