21 _geom_cache_id(0ULL) {
40 return std::nan(
"Invalid TP type!");
58 return std::nan(
"Invalid TP type!");
76 return std::nan(
"Invalid TP type!");
95 std::unique_ptr<const RPCRoll> roll(
_georpc->roll(
id));
97 const LocalPoint lp = roll->centreOfStrip(strip);
132 std::unique_ptr<const CSCChamber> chamb(
_geocsc->chamber(
id));
133 std::unique_ptr<const CSCLayerGeometry> layer_geom(
136 std::unique_ptr<const CSCLayer> layer(
152 const unsigned halfstrip_offs = unsigned(0.5 + halfstrip + offset);
153 const unsigned strip = halfstrip_offs/2 + 1;
158 layer_geom->stripWireGroupIntersection(strip,keyWG);
159 const GlobalPoint coarse_gp = layer->surface().toGlobal(coarse_lp);
163 const double hs_offset = layer_geom->stripPhiPitch()/4.0;
168 const double phi_offset = ( ( halfstrip_offs%2 ? 1 : -1)*
169 ( ccw ? -hs_offset : hs_offset ) );
184 layer_geom.release();
209 std::unique_ptr<DTChamber> chamb(
210 const_cast<DTChamber*>(
_geodt->chamber(baseid))
212 std::unique_ptr<DTTrigGeom> trig_geom(
new DTTrigGeom(chamb.get(),
false) );
220 const int NBTI_theta = ( (baseid.
station() != 4) ?
221 trig_geom->nCell(2) : trig_geom->nCell(3) );
223 const unsigned bti_actual = bti_group*NBTI_theta/7 + NBTI_theta/14 + 1;
225 if ( baseid.
station() != 4 && bti_group != -1) {
226 thetaBTI =
DTBtiId(baseid,2,bti_actual);
230 thetaBTI =
DTBtiId(baseid,3,1);
232 const GlobalPoint theta_gp = trig_geom->CMSPosition(thetaBTI);
257 double bendf = bend/512.0;
263 const int nStrips = layer->geometry()->numberOfStrips();
264 const double phi1 = layer->centerOfStrip(1).phi();
265 const double phiN = layer->centerOfStrip(nStrips).phi();
266 return ( (
std::abs(phi1 - phiN) <
M_PI && phi1 >= phiN) ||
unsigned long long cacheIdentifier() const
const DTData getDTData() const
double calcDTSpecificPhi(const MuonTriggerPrimitive &) const
double calcCSCSpecificEta(const MuonTriggerPrimitive &) const
GlobalPoint getRPCSpecificPoint(const MuonTriggerPrimitive &) const
double calcCSCSpecificBend(const MuonTriggerPrimitive &) const
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
double calcRPCSpecificEta(const MuonTriggerPrimitive &) const
double calcCSCSpecificPhi(const MuonTriggerPrimitive &) const
double calcDTSpecificBend(const MuonTriggerPrimitive &) const
unsigned long long _geom_cache_id
double calculateGlobalEta(const MuonTriggerPrimitive &) const
edm::ESHandle< RPCGeometry > _georpc
Geom::Theta< T > theta() const
void checkAndUpdateGeometry(const edm::EventSetup &)
void get(HolderT &iHolder) const
Abs< T >::type abs(const T &t)
const RPCData getRPCData() const
edm::ESHandle< DTGeometry > _geodt
double calcRPCSpecificPhi(const MuonTriggerPrimitive &) const
T value() const
Explicit access to value in case implicit conversion not OK.
GlobalPoint getCSCSpecificPoint(const MuonTriggerPrimitive &) const
edm::ESHandle< CSCGeometry > _geocsc
static double get2007Position(int pattern)
const subsystem_type subsystem() const
Geom::Phi< T > phi() const
const CSCData getCSCData() const
GlobalPoint calcDTSpecificPoint(const MuonTriggerPrimitive &) const
bool isCSCCounterClockwise(const std::unique_ptr< const CSCLayer > &) const
double calculateBendAngle(const MuonTriggerPrimitive &) const
int station() const
Return the station number.
double calcRPCSpecificBend(const MuonTriggerPrimitive &) const
double calculateGlobalPhi(const MuonTriggerPrimitive &) const
double calcDTSpecificEta(const MuonTriggerPrimitive &) const