19 vector<const GeomDet*>::const_iterator
last,
39 edm::LogError(
"MTDDetLayers") <<
"temporary dummy implementation of MTDDetSector::components()!!";
40 static const vector<const GeometricSearchDet*>
result;
50 LogTrace(
"MTDDetLayers") <<
"MTDDetSector::compatible, sector: \n"
51 << (*this) <<
"\n TS at Z,R,phi: " << std::fixed << std::setw(14) << ts.
globalPosition().
z()
55 LogTrace(
"MTDDetLayers") <<
" DEST at Z,R,phi: " << std::fixed << std::setw(14) << ms.
globalPosition().
z() <<
" , "
59 LogTrace(
"MTDDetLayers") <<
" DEST: not valid";
69 LogTrace(
"MTDDetLayers") <<
"MTDDetSector::compatibleDets, sector: \n"
70 << (*this) <<
"\n TS at Z,R,phi: " << std::fixed << std::setw(14)
75 vector<DetWithState>
result;
78 pair<bool, TrajectoryStateOnSurface> compat =
compatible(startingState, prop, est);
80 LogTrace(
"MTDDetLayers") <<
" MTDDetSector::compatibleDets: not compatible"
81 <<
" (should not have been selected!)";
95 std::vector<std::pair<double, size_t> > tmpDets;
99 double dist2 = (startPos -
theDets[idet]->position()).
mag2();
100 tmpDets.emplace_back(dist2, idet);
101 if (dist2 < dist2Min) {
109 if (
add(idetMin, result, tsos, prop, est)) {
112 for (
int iside = -1; iside <= 1; iside += 2) {
113 bool isCompatible(
true);
114 size_t idetNew(idetMin);
115 size_t closest =
theDets.size();
117 while (isCompatible) {
118 idetNew =
vshift(
theDets[idetNew]->geographicalId().rawId(), iside, closest);
119 if (idetNew >=
theDets.size()) {
120 if (closest <
theDets.size()) {
126 isCompatible =
add(idetNew, result, tsos, prop, est);
135 if (result.empty()) {
136 LogTrace(
"MTDDetLayers") <<
"MTDDetSector::compatibleDets, closest not compatible!";
138 LogTrace(
"MTDDetLayers") <<
"MTDDetSector::compatibleDets, found " << result.size() <<
" compatible dets";
148 std::vector<DetWithState>&)
const {
149 edm::LogError(
"MTDDetLayers") <<
"At the moment not a real implementation";
157 edm::LogInfo(
"MTDDetLayers") <<
"dummy implementation of MTDDetSector::groupedCompatibleDets()";
163 vector<DetWithState>&
result,
171 LogTrace(
"MTDDetLayers") <<
"MTDDetSector::compatibleDets found compatible det idetMin " << idet
172 <<
" detId = " <<
theDets[idet]->geographicalId().rawId() <<
" at "
181 os <<
" MTDDetSector at " << std::fixed <<
id.specificSurface().position() << std::endl
182 <<
" L/W/T : " << std::setw(14) <<
id.specificSurface().bounds().length() <<
" / " << std::setw(14)
183 <<
id.specificSurface().bounds().width() <<
" / " << std::setw(14) <<
id.specificSurface().bounds().thickness()
185 <<
" rmin : " << std::setw(14) <<
id.specificSurface().innerRadius() << std::endl
186 <<
" rmax : " << std::setw(14) <<
id.specificSurface().outerRadius() << std::endl
187 <<
" phi ref : " << std::setw(14) <<
id.specificSurface().position().phi() << std::endl
188 <<
" phi w/2 : " << std::setw(14) <<
id.specificSurface().phiHalfExtension() << std::endl;
193 vector<DetWithState>&
result,
197 for (
int iside = -1; iside <= 1; iside += 2) {
198 bool isCompatible(
true);
199 size_t idetNew(idetMin);
201 while (isCompatible) {
202 idetNew =
hshift(
theDets[idetNew]->geographicalId().rawId(), iside);
203 if (idetNew >=
theDets.size()) {
206 isCompatible =
add(idetNew, result, tsos, prop, est);
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &ts, const Propagator &prop, const MeasurementEstimator &est) const override
size_t hshift(const uint32_t detid, const int horizontalShift) const
LocalPoint localPosition() const
size_t vshift(const uint32_t detid, const int verticalShift, size_t &closest) const
Geom::Phi< T > phi() const
GlobalPoint globalPosition() const
const std::vector< const GeometricSearchDet * > & components() const override
Returns basic components, if any.
const BoundDiskSector & specificSurface() const
std::vector< const GeomDet * > theDets
void compatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const override
Log< level::Error, false > LogError
GeomDetCompatibilityChecker theCompatibilityChecker
std::ostream & operator<<(std::ostream &out, const ALILine &li)
void setDisk(BoundDiskSector *diskS)
size_t vshiftETL(const uint32_t detid, const int verticalShift, size_t &closest) const
static std::pair< bool, TrajectoryStateOnSurface > isCompatible(const GeomDet *theDet, const TrajectoryStateOnSurface &ts, const Propagator &prop, const MeasurementEstimator &est)
void compatibleDetsLine(const size_t idetMin, std::vector< DetWithState > &result, const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est) const
size_t hshiftETL(const uint32_t detid, const int horizontalShift) const
std::vector< DetGroup > groupedCompatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
Log< level::Info, false > LogInfo
bool add(size_t idet, std::vector< DetWithState > &result, const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est) const
const std::vector< const GeomDet * > & basicComponents() const override
const MTDTopology * topo_
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
GlobalVector globalMomentum() const
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
tuple size
Write out results.
MTDDetSector(std::vector< const GeomDet * >::const_iterator first, std::vector< const GeomDet * >::const_iterator last, const MTDTopology &topo)
Construct from iterators on GeomDet*.