21 float theRmin =
sectors.front()->basicComponents().front()->position().perp();
22 float theRmax = theRmin;
23 float theZmin =
sectors.front()->position().z();
24 float theZmax = theZmin;
28 for (
const auto& isect :
sectors) {
29 vector<const GeomDet*> tmp2 = isect->basicComponents();
32 theRmin =
min(theRmin, isect->specificSurface().innerRadius());
33 theRmax =
max(theRmax, isect->specificSurface().outerRadius());
34 float halfThick = isect->surface().bounds().thickness() / 2.;
35 float zCenter = isect->surface().position().z();
36 theZmin =
min(theZmin, zCenter - halfThick);
37 theZmax =
max(theZmax, zCenter + halfThick);
42 float zPos = (theZmax + theZmin) / 2.;
48 LogTrace(
"MTDDetLayers") <<
"Constructing MTDSectorForwardLayer: " <<
std::fixed << std::setw(14)
51 <<
" Z: " << std::setw(14) <<
specificSurface().position().z() <<
" R1: " << std::setw(14)
64 vector<DetWithState>
result;
66 LogTrace(
"MTDDetLayers") <<
"MTDSectorForwardLayer::compatibleDets," 71 pair<bool, TrajectoryStateOnSurface> compat =
compatible(startingState, prop, est);
74 LogTrace(
"MTDDetLayers") <<
" MTDSectorForwardLayer::compatibleDets: not compatible" 75 <<
" (should not have been selected!)";
92 for (
unsigned int isect = 0; isect <
theSectors.size(); isect++) {
94 LogDebug(
"MTDDetLayers") <<
"Global point = " <<
std::fixed << startPos <<
" local point = " << nextPos
95 <<
" global sector ref pos = " <<
theSectors[isect]->specificSurface().position();
100 inside =
theSectors[isect]->specificSurface().bounds().inside(nextPos);
104 LogTrace(
"MTDDetLayers") <<
" MTDSectorForwardLayer::fastCompatibleDets:NextSector " <<
std::fixed 105 << std::setw(14) << isect <<
"\n" 106 << (*
theSectors[isect]) <<
"\n FTS at Z,R,phi: " << std::setw(14)
115 if (!nextRodDets.empty()) {
116 result.insert(
result.end(), nextRodDets.begin(), nextRodDets.end());
123 LogTrace(
"MTDDetLayers") <<
" MTDSectorForwardLayer::fastCompatibleDets: found: " <<
result.size();
132 edm::LogInfo(
"MTDDetLayers") <<
"dummy implementation of MTDSectorForwardLayer::groupedCompatibleDets()";
133 return vector<DetGroup>();
SubDetector subDetector() const override
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)
const std::vector< const GeomDet * > & basicComponents() const override
const LocalTrajectoryError & localError() const
Geom::Phi< T > phi() const
void setSurface(BoundDisk *cp)
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const override
virtual const std::vector< const MTDDetSector * > & sectors() const
Return the vector of sectors.
LocalError positionError() const
std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
~MTDSectorForwardLayer() override
GlobalPoint globalPosition() const
MTDSectorForwardLayer(const std::vector< const MTDDetSector *> §ors)
Constructor, takes ownership of pointers.
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
Log< level::Info, false > LogInfo
std::vector< DetGroup > groupedCompatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
std::vector< const MTDDetSector * > theSectors
std::vector< const GeomDet * > theBasicComps
const std::vector< const GeometricSearchDet * > & components() const override
Returns basic components, if any.
std::vector< const GeometricSearchDet * > theComponents
virtual const BoundDisk & specificSurface() const final