22 const unsigned int mono)
30 if (!theCombinedPredictedState.isValid()) {
34 iidd = theHit->geographicalId().rawId();
39 float xB = 0.;
float sigmaX = 5.0;
40 float yB = 0.;
float sigmaY = 5.0;
41 float sigmaYBond = 0.;
50 if (( mono > 0 ) && isDoubleSided(iidd, tTopo) ) {
52 unsigned int matched_iidd = iidd-(iidd & 0x3);
53 DetId matched_id(matched_iidd);
64 theCombinedPredictedState = propagator.
propagate(theCombinedPredictedState,
67 if (!theCombinedPredictedState.isValid()) {
68 cout <<
"found invalid combinedpredictedstate after propagation"<< endl;
73 if ((iidd & 0x3)==0) {
76 hasValidHit = theHit->isValid();
82 hasValidHit = theHit->isValid();
95 monodet = theHit->det();
96 hasValidHit = theHit->isValid();
99 locX = theCombinedPredictedState.localPosition().x();
100 locY = theCombinedPredictedState.localPosition().y();
101 locZ = theCombinedPredictedState.localPosition().z();
102 locXError =
sqrt(theCombinedPredictedState.localError().positionError().xx());
103 locYError =
sqrt(theCombinedPredictedState.localError().positionError().yy());
104 locDxDz = theCombinedPredictedState.localParameters().vector()[1];
105 locDyDz = theCombinedPredictedState.localParameters().vector()[2];
106 globX = theCombinedPredictedState.globalPosition().x();
107 globY = theCombinedPredictedState.globalPosition().y();
108 globZ = theCombinedPredictedState.globalPosition().z();
119 if (locX < 0. ) xx =
min(locX - xB,locX - sigmaX*locXError);
120 else xx =
max(locX + xB, locX + sigmaX*locXError);
122 if (locY < 0. ) yy =
min(locY - yB,locY - sigmaY*locYError);
123 else yy =
max(locY + yB, locY + sigmaY*locYError);
125 zz = theCombinedPredictedState.localPosition().z();
194 unsigned int subid=strip.
subdetId();
195 unsigned int layer = 0;
199 if (layer == 1 || layer == 2)
return true;
205 if (layer == 5 || layer == 6)
return true;
210 layer = tTopo->
tidRing(iidd) + 10;
211 if (layer == 11 || layer == 12)
return true;
216 layer = tTopo->
tecRing(iidd) + 13 ;
217 if (layer == 14 || layer == 15 || layer == 18)
return true;
225 return theCombinedPredictedState;
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
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.
virtual bool inside(const Local3DPoint &) const =0
Determine if the point is inside the bounds.
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.
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
double localErrorY() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
const TrackerGeomDet * idToDet(DetId) const override
TrajectoryStateOnSurface tsos() const
double localErrorX() const
const GeomDetUnit * stereoDet() const
unsigned int tobLayer(const DetId &id) const
TrajectoryStateOnSurface const & backwardPredictedState() const
Access to backward predicted state (from smoother)