22 const unsigned int mono) {
24 theCombinedPredictedState =
29 if (!theCombinedPredictedState.isValid()) {
33 iidd = theHit->geographicalId().rawId();
35 unsigned int subid = strip.
subdetId();
42 float sigmaYBond = 0.;
51 if ((mono > 0) && isDoubleSided(iidd, tTopo)) {
53 unsigned int matched_iidd = iidd - (iidd & 0x3);
54 DetId matched_id(matched_iidd);
67 theCombinedPredictedState = propagator.
propagate(theCombinedPredictedState, surface);
69 if (!theCombinedPredictedState.isValid()) {
70 cout <<
"found invalid combinedpredictedstate after propagation" << endl;
75 if ((iidd & 0x3) == 0) {
78 hasValidHit = theHit->isValid();
81 if (iidd == mono_id) {
84 hasValidHit = theHit->isValid();
97 monodet = theHit->det();
98 hasValidHit = theHit->isValid();
101 locX = theCombinedPredictedState.localPosition().x();
102 locY = theCombinedPredictedState.localPosition().y();
103 locZ = theCombinedPredictedState.localPosition().z();
104 locXError =
sqrt(theCombinedPredictedState.localError().positionError().xx());
105 locYError =
sqrt(theCombinedPredictedState.localError().positionError().yy());
106 locDxDz = theCombinedPredictedState.localParameters().vector()[1];
107 locDyDz = theCombinedPredictedState.localParameters().vector()[2];
108 globX = theCombinedPredictedState.globalPosition().x();
109 globY = theCombinedPredictedState.globalPosition().y();
110 globZ = theCombinedPredictedState.globalPosition().z();
122 xx =
min(locX - xB, locX - sigmaX * locXError);
124 xx =
max(locX + xB, locX + sigmaX * locXError);
127 yy =
min(locY - yB, locY - sigmaY * locYError);
129 yy =
max(locY + yB, locY + sigmaY * locYError);
131 zz = theCombinedPredictedState.localPosition().z();
162 unsigned int subid = strip.
subdetId();
163 unsigned int layer = 0;
166 if (layer == 1 || layer == 2)
172 if (layer == 5 || layer == 6)
177 layer = tTopo->
tidRing(iidd) + 10;
178 if (layer == 11 || layer == 12)
183 layer = tTopo->
tecRing(iidd) + 13;
184 if (layer == 14 || layer == 15 || layer == 18)
static constexpr auto TEC
Point3DBase< Scalar, LocalTag > LocalPoint
unsigned int tibLayer(const DetId &id) const
ConstRecHitPointer const & recHit() const
unsigned int tidRing(const DetId &id) const
const GeomDetUnit * monoDet() const
unsigned int monodet_id() const
virtual bool inside(const Local3DPoint &) const =0
Determine if the point is inside the bounds.
TSOS combine(const TSOS &pTsos1, const TSOS &pTsos2) const
unsigned int tecRing(const DetId &id) const
ring id
constexpr uint32_t rawId() const
get the raw id
const Bounds & bounds() const
const Plane & surface() const
The nominal surface of the GeomDet.
constexpr std::array< uint8_t, layerIndexSize > layer
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
Abs< T >::type abs(const T &t)
DetId geographicalId() const
The label of this GeomDet.
static constexpr auto TOB
const TrackerGeomDet * idToDet(DetId) const override
TrajectoryAtInvalidHit(const TrajectoryMeasurement &, const TrackerTopology *tTopo, const TrackerGeometry *tracker, const Propagator &propagator, const unsigned int mono=0)
bool isDoubleSided(unsigned int iidd, const TrackerTopology *tTopo) const
TrajectoryStateOnSurface const & forwardPredictedState() const
Access to forward predicted state (from fitter or builder)
bool withinAcceptance() const
static constexpr auto TIB
double localErrorY() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
TrajectoryStateOnSurface tsos() const
double localErrorX() const
static constexpr auto TID
const GeomDetUnit * stereoDet() const
unsigned int tobLayer(const DetId &id) const
TrajectoryStateOnSurface const & backwardPredictedState() const
Access to backward predicted state (from smoother)