37 const std::vector<float>
bounds = {1.24, 1.14353, 1.09844, 1.05168, 1.00313, 0.952728, 0.90037, 0.8};
52 int etaVal2Code(
double etaVal) {
54 int bit = etaVal2Bit(fabs(etaVal));
60 signed int etaCode = 121;
61 if (
detId.station() == 1 &&
detId.ring() == 2) {
68 }
else if (
detId.station() == 1 &&
detId.ring() == 3) {
79 }
else if ((
detId.station() == 2 ||
detId.station() == 3) &&
detId.ring() == 2) {
94 if (
detId.endcap() == 2)
117 const int NBTI_theta = ((dTChamberId.
station() != 4) ? trig_geom.nCell(2) : trig_geom.nCell(3));
124 for (
unsigned int i = 0;
i < 7; ++
i)
125 if (theta_segm->
position(
i) && bti_group < 0)
127 else if (theta_segm->
position(
i) && bti_group > -1)
133 if (bti_group == 511)
135 else if (bti_group == -1 && dTChamberId.
station() == 1)
137 else if (bti_group == -1 && dTChamberId.
station() == 2)
139 else if (bti_group == -1 && dTChamberId.
station() == 3)
141 else if (dTChamberId.
station() != 4 && bti_group >= 0) {
142 unsigned bti_actual = bti_group * NBTI_theta / 7 + NBTI_theta / 14 + 1;
144 GlobalPoint theta_gp = trig_geom.CMSPosition(thetaBTI);
145 iEta = etaVal2Code(fabs(theta_gp.
eta()));
147 int signEta =
sgn(dTChamberId.
wheel());
176 const uint16_t halfstrip = aDigi.
getStrip();
178 const uint16_t keyWG = aDigi.
getKeyWG();
187 const unsigned halfstrip_offs = unsigned(0.5 + halfstrip +
offset);
188 const unsigned strip = halfstrip_offs / 2 + 1;
192 const LocalPoint coarse_lp = layer_geom->stripWireGroupIntersection(
strip, keyWG);
197 const double hs_offset = layer_geom->stripPhiPitch() / 4.0;
202 const double phi_offset = ((halfstrip_offs % 2 ? 1 : -1) * (ccw ? -hs_offset : hs_offset));
210 const LocalPoint lpWg = layer_geom->localCenterOfWireGroup(keyWG);
212 r = round(gpWg.
perp());
int station() const
Return the station number.
edm::ESHandle< DTGeometry > _geodt
const CSCLayer * layer(CSCDetId id) const
Return the layer corresponding to the given id.
L1MuDTChambThDigi const * chThetaSegm(int wheel, int stat, int sect, int bx) const
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
Geom::Phi< T > phi() const
virtual int getGlobalEta(const DTChamberId dTChamberId, const L1MuDTChambThContainer *dtThDigis, int bxNum) const
edm::ESHandle< RPCGeometry > _georpc
int position(const int i) const
const RPCRoll * roll(RPCDetId id) const
Return a roll given its id.
const CSCLayerGeometry * geometry() const
~OmtfAngleConverter() override
Abs< T >::type abs(const T &t)
static int etaBit2Code(unsigned int bit)
static unsigned int eta2Bits(unsigned int eta)
edm::ESHandle< CSCGeometry > _geocsc
virtual int getGlobalEtaRpc(unsigned int rawid, const unsigned int &aDigi, float &r) const
Convert local eta coordinate to global digital microGMT scale.
int wheel() const
Return the wheel number.
virtual bool isCSCCounterClockwise(const CSCLayer *layer) const
Check orientation of strips in given CSC chamber.
T1 value() const
Explicit access to value in case implicit conversion not OK.
const DTChamber * chamber(const DTChamberId &id) const
Return a DTChamber given its id.
Geom::Theta< T > theta() const