18 const vector<const MTDDetSector*>& backSectors)
20 theFrontLayer(frontSectors),
21 theBackLayer(backSectors),
22 theSectors(frontSectors),
24 theBasicComponents() {
31 vector<const GeomDet*> tmp2 = isect->basicComponents();
37 LogTrace(
"MTDDetLayers") <<
"Constructing MTDSectorForwardDoubleLayer: " <<
std::fixed << std::setw(14)
39 <<
" Z: " << std::setw(14) <<
specificSurface().position().z() <<
" R1: " << std::setw(14)
50 float rmin =
min(frontDisk.innerRadius(), backDisk.innerRadius());
51 float rmax =
max(frontDisk.outerRadius(), backDisk.outerRadius());
52 float zmin = frontDisk.position().z();
53 float halfThickness = frontDisk.bounds().thickness() / 2.;
55 float zmax = backDisk.position().z();
56 halfThickness = backDisk.bounds().thickness() / 2.;
76 LogTrace(
"MTDDetLayers") <<
"MTDSectorForwardDoubleLayer::compatible is assuming inside-out direction: " <<
insideOut;
80 return make_pair(
false, myState);
86 constexpr
float nSigma = 3.;
101 vector<DetWithState>
result;
102 pair<bool, TrajectoryStateOnSurface> compat =
compatible(startingState, prop, est);
105 LogTrace(
"MTDDetLayers") <<
" MTDSectorForwardDoubleLayer::compatibleDets: not compatible" 106 <<
" (should not have been selected!)";
117 for (
const auto& thisDG : vectorGroups) {
118 for (
const auto& thisDGE : thisDG) {
129 vector<GeometricSearchDet::DetWithState> detWithStates1, detWithStates2;
131 LogTrace(
"MTDDetLayers") <<
"groupedCompatibleDets are currently given always in inside-out order";
139 if (!detWithStates1.empty())
141 if (!detWithStates2.empty())
143 LogTrace(
"MTDDetLayers") <<
"DoubleLayer Compatible dets: " <<
result.size();
150 <<
"MTDSectorForwardDoubleLayer::isCrack kept only for backward compatibility, no real implementation";
161 for (
const auto& thisFront : frontDets) {
162 float tmpz(
std::abs(thisFront->surface().position().z()));
167 for (
const auto& thisBack : backDets) {
168 float tmpz(
std::abs(thisBack->surface().position().z()));
const std::vector< const GeomDet * > & basicComponents() const override
const LocalTrajectoryError & localError() const
MTDSectorForwardLayer theFrontLayer
LocalPoint localPosition() const
const BoundSurface & surface() const final
The surface of the GeometricSearchDet.
MTDSectorForwardDoubleLayer(const std::vector< const MTDDetSector *> &frontSectors, const std::vector< const MTDDetSector *> &backSectors)
Constructor, takes ownership of pointers.
void setSurface(BoundDisk *cp)
LocalError positionError() const
bool isCrack(const GlobalPoint &gp) const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
bool isInsideOut(const TrajectoryStateOnSurface &tsos) const
std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
virtual float thickness() const =0
MTDSectorForwardLayer theBackLayer
GlobalPoint globalPosition() const
LocalVector localDirection() const
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const override
const BasicVectorType & basicVector() const
std::vector< const GeomDet * > theBasicComponents
GlobalVector globalMomentum() const
std::vector< const MTDDetSector * > theSectors
std::vector< DetGroup > groupedCompatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
virtual const BoundDisk & specificSurface() const final
std::vector< const GeometricSearchDet * > theComponents
const std::vector< const GeomDet * > & basicComponents() const override
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
BoundDisk * computeSurface() override
T dot(const Basic3DVector &rh) const
Scalar product, or "dot" product, with a vector of same type.
std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const override
Geom::Theta< T > theta() const
const Bounds & bounds() const