41 for (vector<const DetRod*>::const_iterator it=rods.begin();
42 it!=rods.end(); it++) {
43 vector<const GeomDet*> tmp2 = (*it)->basicComponents();
61 LogTrace(metname) <<
"Constructing MTDTrayBarrelLayer: " 64 <<
" R: " << specificSurface().radius()
72 for (vector <const DetRod*>::iterator
i =
theRods.begin();
77 vector<GeometricSearchDet::DetWithState>
83 vector<DetWithState>
result;
86 LogTrace(metname) <<
"MTDTrayBarrelLayer::compatibleDets, Cyl R: " 87 << specificSurface().radius()
91 pair<bool, TrajectoryStateOnSurface> compat =
92 compatible(startingState, prop, est);
94 LogTrace(metname) <<
" MTDTrayBarrelLayer::compatibleDets: not compatible" 95 <<
" (should not have been selected!)";
96 return vector<DetWithState>();
101 LogTrace(metname) <<
" MTDTrayBarrelLayer::compatibleDets, reached layer at: " 102 << tsos.globalPosition()
103 <<
" R = " << tsos.globalPosition().perp()
104 <<
" phi = " << tsos.globalPosition().phi();
110 LogTrace(metname) <<
" MTDTrayBarrelLayer::compatibleDets, closestRod: " << closest
112 <<
" FTS phi: " << tsos.globalPosition().phi();
117 int nclosest = result.size();
120 bool checknext =
false ;
123 if (!result.empty()) {
126 float xErr =
xError(predictedState, est);
135 if (fabs(dist) + xErr > halfWid) {
154 LogTrace(metname) <<
" MTDTrayBarrelLayer::fastCompatibleDets, none on closest rod!";
159 if (dist<0.) next = closest+1;
160 else next = closest-1;
166 LogTrace(metname) <<
" MTDTrayBarrelLayer::fastCompatibleDets, next-to closest" 167 <<
" rod: " << next <<
" dist " << dist
169 <<
" FTS phi: " << tsos.globalPosition().phi();
171 vector<DetWithState> nextRodDets =
173 result.insert(result.end(),
174 nextRodDets.begin(), nextRodDets.end());
178 LogTrace(metname) <<
" MTDTrayBarrelLayer::fastCompatibleDets: found: " 180 <<
" on closest: " << nclosest
181 <<
" # checked rods: " << 1 +
int(checknext);
193 cout <<
"dummy implementation of MTDTrayBarrelLayer::groupedCompatibleDets()" << endl;
194 return vector<DetGroup>();
203 const vector<const GeometricSearchDet*>&
210 const float nSigmas = 3.f;
214 else return nSigmas * 0.5;
virtual int binIndex(T pos) const =0
Return the index of bin at given position.
virtual void initialize()
const BoundSurface & surface() const final
The surface of the GeometricSearchDet.
const std::string metname
MTDTrayBarrelLayer(std::vector< const DetRod * > &rods)
Constructor, takes ownership of pointers.
LocalPoint localPosition() const
std::vector< const DetRod * > theRods
Geom::Phi< T > phi() const
GlobalPoint globalPosition() const
~MTDTrayBarrelLayer() override
const Bounds & bounds() const
LocalError positionError() const
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
SubDetector subDetector() const override
virtual float width() const =0
std::vector< const GeomDet * > theBasicComps
float xError(const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
const std::vector< const GeometricSearchDet * > & components() const override
const LocalTrajectoryError & localError() const
bool isPhiPeriodic() const
Returns true if the Dets are periodic in phi.
void precomputed_value_sort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr, const Compare &comp)
BaseBinFinder< double > * theBinFinder
const std::vector< const GeomDet * > & basicComponents() const override
std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
bool isPhiOverlapping() const
Returns true if any 2 of the Det overlap in phi.
const PositionType & position() const
std::vector< DetGroup > groupedCompatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
std::vector< const GeometricSearchDet * > theComponents