#include <RecoMuon/DetLayers/src/MuonCSCDetLayerGeometryBuilder.h>
Static Public Member Functions | |
static std::pair< std::vector < DetLayer * >, std::vector < DetLayer * > > | buildLayers (const CSCGeometry &geo) |
return.first=forward (+Z), return.second=backward (-Z) both vectors are sorted inside-out | |
Private Member Functions | |
MuonCSCDetLayerGeometryBuilder () | |
Static Private Member Functions | |
static MuRingForwardDoubleLayer * | buildLayer (int endcap, int station, std::vector< int > &rings, const CSCGeometry &geo) |
static bool | isFront (int station, int ring, int chamber) |
static MuDetRing * | makeDetRing (std::vector< const GeomDet * > &geomDets) |
Definition at line 20 of file MuonCSCDetLayerGeometryBuilder.h.
MuonCSCDetLayerGeometryBuilder::MuonCSCDetLayerGeometryBuilder | ( | ) | [inline, private] |
static MuRingForwardDoubleLayer* MuonCSCDetLayerGeometryBuilder::buildLayer | ( | int | endcap, | |
int | station, | |||
std::vector< int > & | rings, | |||
const CSCGeometry & | geo | |||
) | [static, private] |
Referenced by buildLayers().
pair< vector< DetLayer * >, vector< DetLayer * > > MuonCSCDetLayerGeometryBuilder::buildLayers | ( | const CSCGeometry & | geo | ) | [static] |
return.first=forward (+Z), return.second=backward (-Z) both vectors are sorted inside-out
Definition at line 18 of file MuonCSCDetLayerGeometryBuilder.cc.
References buildLayer(), GeomDetEnumerators::endcap, i, CSCDetId::maxRingId(), CSCDetId::maxStationId(), CSCDetId::minRingId(), HLT_VtxMuL3::result, and RingMakerESProducer_cfi::rings.
Referenced by MuonDetLayerGeometryESProducer::produce().
00018 { 00019 00020 vector<DetLayer*> result[2]; // one for each endcap 00021 00022 for(int i=0; i<2; i++) { 00023 00024 int endcap = i+1; 00025 00026 // ME/1/1a (= station 1, ring 4) and ME/1/1b (= station 1, ring 1) 00027 { 00028 vector<int> rings; 00029 rings.push_back(4); 00030 rings.push_back(1); 00031 00032 MuRingForwardDoubleLayer* layer = buildLayer(endcap, 1, rings, geo); 00033 if (layer) result[i].push_back(layer); 00034 } 00035 00036 // ME/1/2 and 1/3 (= station 1, ring 2 and 3) 00037 { 00038 vector<int> rings; 00039 rings.push_back(2); 00040 rings.push_back(3); 00041 00042 MuRingForwardDoubleLayer* layer = buildLayer(endcap, 1, rings, geo); 00043 if (layer) result[i].push_back(layer); 00044 } 00045 00046 // Stations 2,3,4 00047 for(int station = 2; station <= CSCDetId::maxStationId(); station++) { 00048 vector<int> rings; 00049 for(int ring = CSCDetId::minRingId(); ring <= CSCDetId::maxRingId(); ring++) { 00050 rings.push_back(ring); 00051 } 00052 MuRingForwardDoubleLayer* layer = buildLayer(endcap, station, rings, geo); 00053 if (layer) result[i].push_back(layer); 00054 } 00055 } 00056 pair<vector<DetLayer*>, vector<DetLayer*> > res_pair(result[0], result[1]); 00057 return res_pair; 00058 }
bool MuonCSCDetLayerGeometryBuilder::isFront | ( | int | station, | |
int | ring, | |||
int | chamber | |||
) | [static, private] |
Definition at line 122 of file MuonCSCDetLayerGeometryBuilder.cc.
00123 { 00124 bool result = false; 00125 00126 bool isOverlapping = !(station == 1 && ring == 3); 00127 // not overlapping means back 00128 if(isOverlapping) 00129 { 00130 bool isEven = (chamber%2==0); 00131 // odd chambers are bolted to the iron, which faces 00132 // forward in 1&2, backward in 3&4, so... 00133 result = (station<3) ? isEven : !isEven; 00134 } 00135 return result; 00136 }
static MuDetRing* MuonCSCDetLayerGeometryBuilder::makeDetRing | ( | std::vector< const GeomDet * > & | geomDets | ) | [static, private] |