26 _geom_cache_id(0ULL), _magfield_cache_id(0ULL) {
48 return std::nan(
"Invalid TP type!");
69 return std::nan(
"Invalid TP type!");
90 return std::nan(
"Invalid TP type!");
160 const float strip = 2.0 * pad;
230 std::unique_ptr<const CSCLayerGeometry> layer_geom(
233 std::unique_ptr<const CSCLayer> layer(
249 const unsigned halfstrip_offs = unsigned(0.5 + halfstrip + offset);
250 const unsigned strip = halfstrip_offs/2 + 1;
255 layer_geom->stripWireGroupIntersection(strip,keyWG);
256 const GlobalPoint coarse_gp = layer->surface().toGlobal(coarse_lp);
260 const double hs_offset = layer_geom->stripPhiPitch()/4.0;
265 const double phi_offset = ( ( halfstrip_offs%2 ? 1 : -1)*
266 ( ccw ? -hs_offset : hs_offset ) );
271 (coarse_gp.
phi().value() +
281 layer_geom.release();
306 std::unique_ptr<DTChamber> chamb(
309 std::unique_ptr<DTTrigGeom> trig_geom(
new DTTrigGeom(chamb.get(),
false) );
317 const int NBTI_theta = ( (baseid.
station() != 4) ?
318 trig_geom->nCell(2) : trig_geom->nCell(3) );
320 const unsigned bti_actual = bti_group*NBTI_theta/7 + NBTI_theta/14 + 1;
322 if ( baseid.
station() != 4 && bti_group != -1) {
323 thetaBTI =
DTBtiId(baseid,2,bti_actual);
327 thetaBTI =
DTBtiId(baseid,3,1);
329 const GlobalPoint theta_gp = trig_geom->CMSPosition(thetaBTI);
354 double bendf = bend/512.0;
360 const int nStrips = layer->geometry()->numberOfStrips();
361 const double phi1 = layer->centerOfStrip(1).phi();
362 const double phiN = layer->centerOfStrip(nStrips).phi();
363 return ( (
std::abs(phi1 - phiN) <
M_PI && phi1 >= phiN) ||
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
unsigned long long cacheIdentifier() const
edm::ESHandle< DTGeometry > _geodt
LocalPoint centreOfStrip(int strip) const
const subsystem_type subsystem() const
const DTData getDTData() const
const DTChamber * chamber(const DTChamberId &id) const
Return a DTChamber given its id.
const GEMData getGEMData() const
unsigned long long _geom_cache_id
double calcRPCSpecificBend(const TriggerPrimitive &) const
double calcDTSpecificEta(const TriggerPrimitive &) const
double calcGEMSpecificEta(const TriggerPrimitive &) const
edm::ESHandle< RPCGeometry > _georpc
edm::ESHandle< GEMGeometry > _geogem
Geom::Phi< T > phi() const
edm::ESHandle< ME0Geometry > _geome0
GlobalPoint getRPCSpecificPoint(const TriggerPrimitive &) const
Global3DPoint GlobalPoint
LocalPoint centreOfStrip(int strip) const
GlobalPoint getCSCSpecificPoint(const TriggerPrimitive &) const
const CSCData getCSCData() const
const ME0EtaPartition * etaPartition(ME0DetId id) const
Return a etaPartition given its id.
const Plane & surface() const
The nominal surface of the GeomDet.
const GEMEtaPartition * etaPartition(GEMDetId id) const
Return a GEMEtaPartition given its id.
const RPCData getRPCData() const
double calcGEMSpecificPhi(const TriggerPrimitive &) const
double calcRPCSpecificPhi(const TriggerPrimitive &) const
edm::ESHandle< MagneticField > _magfield
Geom::Theta< T > theta() const
double calculateBendAngle(const TriggerPrimitive &) const
void checkAndUpdateGeometry(const edm::EventSetup &)
edm::ESHandle< CSCGeometry > _geocsc
Abs< T >::type abs(const T &t)
double calcCSCSpecificPhi(const TriggerPrimitive &) const
double calculateGlobalPhi(const TriggerPrimitive &) const
static double get2007Position(int pattern)
double calcDTSpecificBend(const TriggerPrimitive &) const
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
double calcCSCSpecificEta(const TriggerPrimitive &) const
GlobalPoint calcDTSpecificPoint(const TriggerPrimitive &) const
double calcDTSpecificPhi(const TriggerPrimitive &) const
GlobalPoint getGEMSpecificPoint(const TriggerPrimitive &) const
int station() const
Return the station number.
unsigned long long _magfield_cache_id
double calculateGlobalEta(const TriggerPrimitive &) const
double calcGEMSpecificBend(const TriggerPrimitive &) const
bool get(HolderT &iHolder) const
bool isCSCCounterClockwise(const std::unique_ptr< const CSCLayer > &) const
const RPCRoll * roll(RPCDetId id) const
Return a roll given its id.
double calcRPCSpecificEta(const TriggerPrimitive &) const
GlobalPoint getGlobalPoint(const TriggerPrimitive &) const
double calcCSCSpecificBend(const TriggerPrimitive &) const