18 vector<DetLayer*>
result[2];
20 for (
int i = 0;
i < 2;
i++) {
31 result[
i].push_back(layer);
42 result[
i].push_back(layer);
49 rings.push_back(
ring);
53 result[
i].push_back(layer);
56 pair<vector<DetLayer*>, vector<DetLayer*> > res_pair(result[0], result[1]);
64 const std::string metname =
"Muon|RecoMuon|RecoMuonDetLayers|MuonCSCDetLayerGeometryBuilder";
67 vector<const ForwardDetRing*> frontRings, backRings;
69 for (vector<int>::iterator
ring = rings.begin();
ring != rings.end();
ring++) {
70 vector<const GeomDet*> frontGeomDets, backGeomDets;
75 bool isInFront = isFront(station, *
ring, chamber);
76 if (geomDet !=
nullptr) {
78 frontGeomDets.push_back(geomDet);
80 backGeomDets.push_back(geomDet);
84 <<
", z= " << geomDet->
position().
z() <<
" isFront? " << isInFront;
88 if (!backGeomDets.empty()) {
89 backRings.push_back(makeDetRing(backGeomDets));
92 if (!frontGeomDets.empty()) {
93 frontRings.push_back(makeDetRing(frontGeomDets));
94 assert(!backGeomDets.empty());
95 float frontz = frontRings[0]->position().z();
96 float backz = backRings[0]->position().z();
97 assert(fabs(frontz) < fabs(backz));
104 LogTrace(metname) <<
"New MuRingForwardLayer with " << frontRings.size() <<
" and " << backRings.size()
105 <<
" rings, at Z " << result->position().z() <<
" R1: " << result->specificSurface().innerRadius()
106 <<
" R2: " << result->specificSurface().outerRadius();
113 bool isOverlapping = !(station == 1 && ring == 3);
116 bool isEven = (chamber % 2 == 0);
119 result = (station < 3) ? isEven : !isEven;
125 const std::string metname =
"Muon|RecoMuon|RecoMuonDetLayers|MuonCSCDetLayerGeometryBuilder";
129 LogTrace(metname) <<
"New MuDetRing with " << geomDets.size() <<
" chambers at z=" << result->position().z()
130 <<
" R1: " << result->specificSurface().innerRadius()
131 <<
" R2: " << result->specificSurface().outerRadius();
ExtractPhi< GeomDet, float > DetPhi
const std::string metname
Geom::Phi< T > phi() const
static bool isFront(int station, int ring, int chamber)
static int maxStationId()
static int minChamberId()
constexpr std::array< uint8_t, layerIndexSize > layer
const Surface::PositionType & position() const
The position (origin of the R.F.)
static std::pair< std::vector< DetLayer * >, std::vector< DetLayer * > > buildLayers(const CSCGeometry &geo)
static MuDetRing * makeDetRing(std::vector< const GeomDet * > &geomDets)
void precomputed_value_sort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr, const Compare &comp)
static int maxChamberId()
static MuRingForwardDoubleLayer * buildLayer(int endcap, int station, std::vector< int > &rings, const CSCGeometry &geo)
const GeomDet * idToDet(DetId) const override