22 const vector<const ForwardDetRing*>& backRings)
24 theFrontLayer(frontRings),
25 theBackLayer(backRings),
28 theBasicComponents() {
29 const std::string metname =
"Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
36 for (vector<const ForwardDetRing*>::const_iterator it =
theRings.begin(); it !=
theRings.end(); it++) {
37 vector<const GeomDet*> tmp2 = (*it)->basicComponents();
45 <<
" Z: " << specificSurface().position().z() <<
" R1: " << specificSurface().innerRadius()
46 <<
" R2: " << specificSurface().outerRadius();
55 float rmin =
min(frontDisk.innerRadius(), backDisk.innerRadius());
56 float rmax =
max(frontDisk.outerRadius(), backDisk.outerRadius());
57 float zmin = frontDisk.position().z();
58 float halfThickness = frontDisk.bounds().thickness() / 2.;
60 float zmax = backDisk.position().z();
61 halfThickness = backDisk.bounds().thickness() / 2.;
78 const std::string metname =
"Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
82 LogTrace(
"Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer")
83 <<
"MuRingForwardDoubleLayer::compatible is assuming inside-out direction: " <<
insideOut;
94 return make_pair(
false, myState);
107 float zPos = (
zmax() +
zmin()) / 2.;
115 vector<DetWithState>
result;
116 const std::string metname =
"Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
117 pair<bool, TrajectoryStateOnSurface> compat =
compatible(startingState, prop, est);
120 LogTrace(
metname) <<
" MuRingForwardDoubleLayer::compatibleDets: not compatible"
121 <<
" (should not have been selected!)";
132 for (vector<DetGroup>::const_iterator itDG = vectorGroups.begin(); itDG != vectorGroups.end(); itDG++) {
133 for (vector<DetGroupElement>::const_iterator itDGE = itDG->begin(); itDGE != itDG->end(); itDGE++) {
143 const std::string metname =
"Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
144 vector<GeometricSearchDet::DetWithState> detWithStates1, detWithStates2;
146 LogTrace(
metname) <<
"groupedCompatibleDets are currently given always in inside-out order";
155 if (!detWithStates1.empty())
157 if (!detWithStates2.empty())
164 const std::string metname =
"Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
167 double r =
gp.perp();
169 if (backRings.size() > 1) {
170 const MuDetRing* innerRing = dynamic_cast<const MuDetRing*>(backRings[0]);
171 const MuDetRing* outerRing = dynamic_cast<const MuDetRing*>(backRings[1]);
172 assert(innerRing && outerRing);
175 LogTrace(
metname) <<
"In a crack:" << crackInner <<
" " <<
r <<
" " << crackOuter;
176 if (
r > crackInner &&
r < crackOuter)
188 std::vector<const GeomDet*>::const_iterator frontItr = frontDets.begin(), lastFront = frontDets.end(),
189 backItr = backDets.begin(), lastBack = backDets.end();
192 for (; frontItr != lastFront; ++frontItr) {
193 float frontz = fabs((**frontItr).surface().position().z());
194 for (; backItr != lastBack; ++backItr) {
195 float backz = fabs((**backItr).surface().position().z());