36 for (
const auto& it :
rods) {
37 vector<const GeomDet*> tmp2 = it->basicComponents();
56 <<
" R: " << specificSurface().radius() <<
" Per.: " << bf.
isPhiPeriodic()
69 vector<DetWithState>
result;
71 LogTrace(
"MTDDetLayers") <<
"MTDTrayBarrelLayer::compatibleDets, Cyl R: " << specificSurface().radius()
75 pair<bool, TrajectoryStateOnSurface> compat = compatible(startingState, prop, est);
77 LogTrace(
"MTDDetLayers") <<
" MTDTrayBarrelLayer::compatibleDets: not compatible" 78 <<
" (should not have been selected!)";
79 return vector<DetWithState>();
84 LogTrace(
"MTDDetLayers") <<
" MTDTrayBarrelLayer::compatibleDets, reached layer at: " << tsos.
globalPosition()
91 LogTrace(
"MTDDetLayers") <<
" MTDTrayBarrelLayer::compatibleDets, closestRod: " <<
closest 98 int nclosest =
result.size();
101 bool checknext =
false;
107 float xErr =
xError(predictedState, est);
117 if (fabs(dist) + xErr > halfWid) {
134 LogTrace(
"MTDDetLayers") <<
" MTDTrayBarrelLayer::fastCompatibleDets, none on closest rod!";
147 LogTrace(
"MTDDetLayers") <<
" MTDTrayBarrelLayer::fastCompatibleDets, next-to closest" 151 vector<DetWithState> nextRodDets = nextRod->
compatibleDets(tsos, prop, est);
152 result.insert(
result.end(), nextRodDets.begin(), nextRodDets.end());
156 LogTrace(
"MTDDetLayers") <<
" MTDTrayBarrelLayer::fastCompatibleDets: found: " <<
result.size()
157 <<
" on closest: " << nclosest <<
" # checked rods: " << 1 +
int(checknext);
166 vector<GeometricSearchDet::DetWithState> detWithStates;
171 if (!detWithStates.empty()) {
174 LogTrace(
"MTDDetLayers") <<
"MTDTrayBarrelLayer Compatible rods: " <<
result.size();
183 const float nSigmas = 3.f;
187 return nSigmas * 0.5;
const std::vector< const GeomDet * > & basicComponents() const override
const BoundSurface & surface() const final
The surface of the GeometricSearchDet.
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
const LocalTrajectoryError & localError() const
virtual void initialize()
LocalPoint localPosition() const
std::vector< DetGroup > groupedCompatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
Geom::Phi< T > phi() const
int closest(std::vector< int > const &vec, int value)
std::vector< const DetRod * > theRods
virtual int binIndex(T pos) const =0
Return the index of bin at given position.
~MTDTrayBarrelLayer() override
LocalError positionError() const
std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
std::vector< const GeomDet * > theBasicComps
GlobalPoint globalPosition() const
virtual const std::vector< const DetRod * > & rods() const
Return the vector of rods.
void precomputed_value_sort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr, const Compare &comp)
const PositionType & position() const
bool isPhiOverlapping() const
Returns true if any 2 of the Det overlap in phi.
BaseBinFinder< double > * theBinFinder
float xError(const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
MTDTrayBarrelLayer(std::vector< const DetRod *> &rods)
Constructor, takes ownership of pointers.
SubDetector subDetector() const override
bool isPhiPeriodic() const
Returns true if the Dets are periodic in phi.
virtual float width() const =0
std::vector< const GeometricSearchDet * > theComponents
const std::vector< const GeometricSearchDet * > & components() const override
const Bounds & bounds() const