25 const vector<const ForwardDetRing*>& backRings)
27 theFrontLayer(frontRings),
28 theBackLayer(backRings),
31 theBasicComponents() {
37 for (vector<const ForwardDetRing*>::const_iterator it =
theRings.begin(); it !=
theRings.end(); it++) {
38 vector<const GeomDet*> tmp2 = (*it)->basicComponents();
46 <<
" Z: " << specificSurface().position().z() <<
" R1: " << specificSurface().innerRadius()
47 <<
" R2: " << specificSurface().outerRadius();
56 float rmin =
min(frontDisk.innerRadius(), backDisk.innerRadius());
57 float rmax =
max(frontDisk.outerRadius(), backDisk.outerRadius());
58 float zmin = frontDisk.position().z();
59 float halfThickness = frontDisk.bounds().thickness() / 2.;
61 float zmax = backDisk.position().z();
62 halfThickness = backDisk.bounds().thickness() / 2.;
82 LogTrace(
"MTDDetLayers") <<
"MTDRingForwardDoubleLayer::compatible is assuming inside-out direction: " <<
insideOut;
86 return make_pair(
false, myState);
107 vector<DetWithState>
result;
108 pair<bool, TrajectoryStateOnSurface> compat =
compatible(startingState, prop, est);
111 LogTrace(
"MTDDetLayers") <<
" MTDRingForwardDoubleLayer::compatibleDets: not compatible"
112 <<
" (should not have been selected!)";
123 for (
const auto& thisDG : vectorGroups) {
124 for (
const auto& thisDGE : thisDG) {
134 vector<GeometricSearchDet::DetWithState> detWithStates1, detWithStates2;
136 LogTrace(
"MTDDetLayers") <<
"groupedCompatibleDets are currently given always in inside-out order";
144 if (!detWithStates1.empty())
146 if (!detWithStates2.empty())
148 LogTrace(
"MTDDetLayers") <<
"DoubleLayer Compatible dets: " <<
result.size();
155 double r =
gp.perp();
157 if (backRings.size() > 1) {
158 const MTDDetRing* innerRing = dynamic_cast<const MTDDetRing*>(backRings[0]);
159 const MTDDetRing* outerRing = dynamic_cast<const MTDDetRing*>(backRings[1]);
160 assert(innerRing && outerRing);
163 LogTrace(
"MTDDetLayers") <<
"In a crack:" << crackInner <<
" " <<
r <<
" " << crackOuter;
164 if (
r > crackInner &&
r < crackOuter)
178 for (
const auto& thisFront : frontDets) {
179 if (static_cast<ETLDetId>(thisFront->geographicalId().rawId()).mtdRR() == iring) {
180 float tmpz(
std::abs(thisFront->surface().position().z()));
186 for (
const auto& thisBack : backDets) {
187 if (static_cast<ETLDetId>(thisBack->geographicalId().rawId()).mtdRR() == iring) {
188 float tmpz(
std::abs(thisBack->surface().position().z()));