23 using namespace L1TMuon;
26 : _geom_cache_id(0ULL),
32 _magfield_cache_id(0ULL),
101 return std::nan(
"Invalid TP type!");
158 int iroll = (partition >> 1) + 1;
163 int istrip = (phiposition >> 1);
164 int phiposition2 = (phiposition & 0x1);
165 float centreOfStrip = istrip + 0.25 + phiposition2 * 0.5;
244 std::unique_ptr<const CSCChamber> chamb(
_geocsc->chamber(
id));
261 const unsigned halfstrip_offs =
static_cast<unsigned>(0.5 + halfstrip +
offset);
262 const unsigned strip = halfstrip_offs / 2 + 1;
266 const LocalPoint& coarse_lp = layer_geom->stripWireGroupIntersection(strip, keyWG);
271 const double hs_offset = layer_geom->stripPhiPitch() / 4.0;
276 const double phi_offset = ((halfstrip_offs % 2 ? 1 : -1) * (ccw ? -hs_offset : hs_offset));
289 layer_geom.release();
306 const int nStrips = layer->geometry()->numberOfStrips();
307 const double phi1 = layer->centerOfStrip(1).phi();
308 const double phiN = layer->centerOfStrip(nStrips).phi();
317 std::unique_ptr<DTChamber> chamb(const_cast<DTChamber*>(
_geodt->chamber(baseid)));
318 std::unique_ptr<DTTrigGeom> trig_geom(
new DTTrigGeom(chamb.get(),
false));
326 const int NBTI_theta = ((baseid.
station() != 4) ? trig_geom->nCell(2) : trig_geom->nCell(3));
328 const unsigned bti_actual = bti_group * NBTI_theta / 7 + NBTI_theta / 14 + 1;
330 if (baseid.
station() != 4 && bti_group != -1) {
331 thetaBTI =
DTBtiId(baseid, 2, bti_actual);
335 thetaBTI =
DTBtiId(baseid, 3, 1);
337 const GlobalPoint& theta_gp = trig_geom->CMSPosition(thetaBTI);
353 double bendf = bend / 512.0;
ME0Data getME0Data() const
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
unsigned long long cacheIdentifier() const
tuple ret
prodAgent to be discontinued
edm::ESHandle< DTGeometry > _geodt
LocalPoint centreOfStrip(int strip) const
uint16_t *__restrict__ id
const ME0Layer * layer(ME0DetId id) const
Return the layer corresponding to the given id.
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
ESHandle< ProductT > getHandle(ESGetToken< ProductT, DepRecordT > const &iToken) const
Geom::Phi< T > phi() const
edm::ESHandle< ME0Geometry > _geome0
GlobalPoint getRPCSpecificPoint(const TriggerPrimitive &) const
Global3DPoint GlobalPoint
T1 value() const
Explicit access to value in case implicit conversion not OK.
LocalPoint centreOfStrip(int strip) const
GlobalPoint getCSCSpecificPoint(const TriggerPrimitive &) const
double calcME0SpecificBend(const TriggerPrimitive &) const
CSCData getCSCData() const
tuple nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
const Plane & surface() const
The nominal surface of the GeomDet.
GEMData getGEMData() const
double calcGEMSpecificPhi(const TriggerPrimitive &) const
double calcRPCSpecificPhi(const TriggerPrimitive &) const
edm::ESHandle< MagneticField > _magfield
constexpr std::array< uint8_t, layerIndexSize > layer
Geom::Theta< T > theta() const
edm::ESGetToken< DTGeometry, MuonGeometryRecord > geodtToken_
double calcME0SpecificPhi(const TriggerPrimitive &) const
GeometryTranslator(edm::ConsumesCollector)
double calculateBendAngle(const TriggerPrimitive &) const
void checkAndUpdateGeometry(const edm::EventSetup &)
edm::ESHandle< CSCGeometry > _geocsc
Abs< T >::type abs(const T &t)
GlobalPoint getME0SpecificPoint(const TriggerPrimitive &) const
double calcCSCSpecificPhi(const TriggerPrimitive &) const
subsystem_type subsystem() const
edm::ESGetToken< ME0Geometry, MuonGeometryRecord > geome0Token_
const ME0EtaPartition * etaPartition(ME0DetId id) const
Return the eta partition corresponding to the given id.
double calculateGlobalPhi(const TriggerPrimitive &) const
double calcDTSpecificBend(const TriggerPrimitive &) const
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magfieldToken_
double calcME0SpecificEta(const TriggerPrimitive &) const
double calcCSCSpecificEta(const TriggerPrimitive &) const
static double getLegacyPosition(int pattern)
GlobalPoint calcDTSpecificPoint(const TriggerPrimitive &) const
edm::ESGetToken< RPCGeometry, MuonGeometryRecord > georpcToken_
RPCData getRPCData() const
double calcDTSpecificPhi(const TriggerPrimitive &) const
GlobalPoint getGEMSpecificPoint(const TriggerPrimitive &) const
edm::ESGetToken< CSCGeometry, MuonGeometryRecord > geocscToken_
int station() const
Return the station number.
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geogemToken_
unsigned long long _magfield_cache_id
double calculateGlobalEta(const TriggerPrimitive &) const
double calcGEMSpecificBend(const TriggerPrimitive &) const
bool isCSCCounterClockwise(const std::unique_ptr< const CSCLayer > &) const
double calcRPCSpecificEta(const TriggerPrimitive &) const
GlobalPoint getGlobalPoint(const TriggerPrimitive &) const
double calcCSCSpecificBend(const TriggerPrimitive &) const