47 std::unique_ptr<const RPCRoll> roll(
_georpc->roll(
id));
48 const uint16_t strip = aDigi.
strip();
49 const LocalPoint lp = roll->centreOfStrip(strip);
63 float phi = aDigi.
phi()/4096.0;
88 std::unique_ptr<const CSCChamber> chamb(
_geocsc->chamber(
id));
89 std::unique_ptr<const CSCLayerGeometry> layer_geom(
92 std::unique_ptr<const CSCLayer> layer(
96 const uint16_t halfstrip = aDigi.
getStrip();
98 const uint16_t keyWG = aDigi.
getKeyWG();
108 const unsigned halfstrip_offs = unsigned(0.5 + halfstrip + offset);
109 const unsigned strip = halfstrip_offs/2 + 1;
114 layer_geom->stripWireGroupIntersection(strip,keyWG);
115 const GlobalPoint coarse_gp = layer->surface().toGlobal(coarse_lp);
119 const double hs_offset = layer_geom->stripPhiPitch()/4.0;
124 const double phi_offset = ( ( halfstrip_offs%2 ? 1 : -1)*
125 ( ccw ? -hs_offset : hs_offset ) );
135 layer_geom.release();
153 std::unique_ptr<DTChamber> chamb(const_cast<DTChamber*>(
_geodt->chamber(baseid)));
155 std::unique_ptr<DTTrigGeom> trig_geom(
new DTTrigGeom(chamb.get(),
false) );
163 const int NBTI_theta = ( (baseid.station() != 4) ?
164 trig_geom->nCell(2) : trig_geom->nCell(3) );
166 const unsigned bti_actual = bti_group*NBTI_theta/7 + NBTI_theta/14 + 1;
168 if ( baseid.station() != 4 && bti_group != -1) {
169 thetaBTI =
DTBtiId(baseid,2,bti_actual);
173 thetaBTI =
DTBtiId(baseid,3,1);
175 const GlobalPoint theta_gp = trig_geom->CMSPosition(thetaBTI);
176 int iEta = theta_gp.
eta()/2.61*240;
195 std::unique_ptr<const CSCChamber> chamb(
_geocsc->chamber(
id));
196 std::unique_ptr<const CSCLayerGeometry> layer_geom(
199 std::unique_ptr<const CSCLayer> layer(
203 const uint16_t halfstrip = aDigi.
getStrip();
205 const uint16_t keyWG = aDigi.
getKeyWG();
215 const unsigned halfstrip_offs = unsigned(0.5 + halfstrip + offset);
216 const unsigned strip = halfstrip_offs/2 + 1;
221 layer_geom->stripWireGroupIntersection(strip,keyWG);
222 const GlobalPoint coarse_gp = layer->surface().toGlobal(coarse_lp);
226 const double hs_offset = layer_geom->stripPhiPitch()/4.0;
231 const double phi_offset = ( ( halfstrip_offs%2 ? 1 : -1)*
232 ( ccw ? -hs_offset : hs_offset ) );
242 layer_geom.release();
245 int iEta = final_gp.
eta()/2.61*240;
253 std::unique_ptr<const RPCRoll> roll(
_georpc->roll(
id));
254 const uint16_t strip = aDigi.
strip();
255 const LocalPoint lp = roll->centreOfStrip(strip);
259 float iEta = gp.
eta()/2.61*240;
268 const int nStrips = layer->geometry()->numberOfStrips();
269 const double phi1 = layer->centerOfStrip(1).phi();
270 const double phiN = layer->centerOfStrip(nStrips).phi();
271 return ( (
std::abs(phi1 - phiN) <
M_PI && phi1 >= phiN) ||
285 if(!theta_segm)
return bti_group;
287 for(
unsigned int i = 0;
i < 7; ++
i ){
288 if(theta_segm->
position(
i) && bti_group<0) bti_group =
i;
292 else if(theta_segm->
position(
i) && bti_group>-1)
return -1;
unsigned long long cacheIdentifier() const
int getGlobalPhi(unsigned int rawid, const L1MuDTChambPhDigi &aDigi)
Convert local phi coordinate to global digital OMTF scale.
Geom::Phi< T > phi() const
int getGlobalEta(unsigned int rawid, const L1MuDTChambPhDigi &aDigi, const L1MuDTChambThContainer *dtThDigis)
Convert local eta coordinate to global digital microGMT scale.
unsigned long long _geom_cache_id
int position(const int i) const
Geom::Theta< T > theta() const
void get(HolderT &iHolder) const
Abs< T >::type abs(const T &t)
static unsigned int nPhiBins
const int findBTIgroup(const L1MuDTChambPhDigi &aDigi, const L1MuDTChambThContainer *dtThDigis)
Find BTI group.
bool isCSCCounterClockwise(const std::unique_ptr< const CSCLayer > &layer) const
Check orientation of strips in given CSC chamber.
T value() const
Explicit access to value in case implicit conversion not OK.
static double get2007Position(int pattern)
L1MuDTChambThDigi const * chThetaSegm(int wheel, int stat, int sect, int bx) const
edm::ESHandle< CSCGeometry > _geocsc
edm::ESHandle< RPCGeometry > _georpc
void checkAndUpdateGeometry(const edm::EventSetup &)
Update the Geometry with current Event Setup.
edm::ESHandle< DTGeometry > _geodt