23 const unsigned int mono)
31 if (!theCombinedPredictedState.isValid()) {
35 iidd = theHit->geographicalId().rawId();
40 float xB = 0.;
float sigmaX = 5.0;
41 float yB = 0.;
float sigmaY = 5.0;
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);
65 theCombinedPredictedState = propagator.
propagate(theCombinedPredictedState,
68 if (!theCombinedPredictedState.isValid()) {
69 cout <<
"found invalid combinedpredictedstate after propagation"<< endl;
74 if ((iidd & 0x3)==0) {
77 hasValidHit = theHit->isValid();
83 hasValidHit = theHit->isValid();
97 hasValidHit = theHit->isValid();
100 locX = theCombinedPredictedState.localPosition().x();
101 locY = theCombinedPredictedState.localPosition().y();
102 locZ = theCombinedPredictedState.localPosition().z();
103 locXError =
sqrt(theCombinedPredictedState.localError().positionError().xx());
104 locYError =
sqrt(theCombinedPredictedState.localError().positionError().yy());
105 locDxDz = theCombinedPredictedState.localParameters().vector()[1];
106 locDyDz = theCombinedPredictedState.localParameters().vector()[2];
107 globX = theCombinedPredictedState.globalPosition().x();
108 globY = theCombinedPredictedState.globalPosition().y();
109 globZ = theCombinedPredictedState.globalPosition().z();
120 if (locX < 0. ) xx =
min(locX - xB,locX - sigmaX*locXError);
121 else xx =
max(locX + xB, locX + sigmaX*locXError);
123 if (locY < 0. ) yy =
min(locY - yB,locY - sigmaY*locYError);
124 else yy =
max(locY + yB, locY + sigmaY*locYError);
126 zz = theCombinedPredictedState.localPosition().z();
195 unsigned int subid=strip.
subdetId();
196 unsigned int layer = 0;
200 if (layer == 1 || layer == 2)
return true;
206 if (layer == 5 || layer == 6)
return true;
211 layer = tTopo->
tidRing(iidd) + 10;
212 if (layer == 11 || layer == 12)
return true;
217 layer = tTopo->
tecRing(iidd) + 13 ;
218 if (layer == 14 || layer == 15 || layer == 18)
return true;
226 return theCombinedPredictedState;
virtual FreeTrajectoryState propagate(const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const final
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
const Bounds & bounds() const
const Plane & surface() const
The nominal surface of the GeomDet.
uint32_t rawId() const
get the raw id
Abs< T >::type abs(const T &t)
DetId geographicalId() const
The label of this GeomDet.
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
virtual const GeomDet * idToDet(DetId) const
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 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)