22 const FDLC& outerLeftFL,
23 const FDLC& outerRightFL,
26 bool checkCrossingSide)
28 theDetLayer(detLayer),
29 theOuterBarrelLayers(outerBLC),
30 theOuterLeftForwardLayers(outerLeftFL),
31 theOuterRightForwardLayers(outerRightFL)
38 for (
ConstBDLI bl = outerBLC.begin(); bl != outerBLC.end(); bl++)
42 for (
ConstFDLI fl = outerLeftFL.begin(); fl != outerLeftFL.end(); fl++)
44 for (
ConstFDLI fl = outerRightFL.begin(); fl != outerRightFL.end(); fl++)
56 vector<const DetLayer*>
result;
85 vector<const DetLayer*>
result;
90 auto const momentum = fts.
momentum();
95 bool isInOutTrackBarrel = (transversePosition.dot(momentum) > 0);
98 bool isInOutTrackFWD = momentum.z() * zpos > 0;
102 bool dirOppositeXORisInOutTrackBarrel =
104 bool dirOppositeXORisInOutTrackFWD =
108 <<
"isInOutTrackBarrel: " << isInOutTrackBarrel << endl
109 <<
"isInOutTrackFWD: " << isInOutTrackFWD << endl
110 <<
"dirOppositeXORisInOutTrackFWD: " << dirOppositeXORisInOutTrackFWD << endl
111 <<
"dirOppositeXORisInOutTrackBarrel: " << dirOppositeXORisInOutTrackBarrel
114 bool signZmomentumXORdir =
118 LIKELY(dirOppositeXORisInOutTrackBarrel && dirOppositeXORisInOutTrackFWD) {
119 if (signZmomentumXORdir) {
125 else if (!dirOppositeXORisInOutTrackBarrel && !dirOppositeXORisInOutTrackFWD) {
126 if (signZmomentumXORdir) {
131 }
else if (!dirOppositeXORisInOutTrackBarrel && dirOppositeXORisInOutTrackFWD) {
134 if (signZmomentumXORdir) {
142 if (signZmomentumXORdir) {
150 bool goingIntoTheBarrel =
153 LogDebug(
"SimpleBarrelNavigableLayer") <<
"goingIntoTheBarrel: " << goingIntoTheBarrel;
157 if (!goingIntoTheBarrel) {
158 LogDebug(
"SimpleBarrelNavigableLayer")
159 <<
" state is not going toward the center of the barrel. not adding self search.";
162 unsigned int before =
result.size();
163 LogDebug(
"SimpleBarrelNavigableLayer") <<
" I am trying to added myself as a next layer.";
165 unsigned int after =
result.size();
167 LogDebug(
"SimpleBarrelNavigableLayer") <<
" I have added myself as a next layer.";
175 edm::LogError(
"TkNavigation") <<
"ERROR: compatibleLayers() method used without all reachableLayers are set";
176 throw DetLayerException(
"compatibleLayers() method used without all reachableLayers are set");
177 return vector<const DetLayer*>();
181 cerr <<
"Warniong: SimpleBarrelNavigableLayer::setDetLayer called." << endl <<
"This should never happen!" << endl;
190 theForwardv.begin(), theForwardv.end(), [](
const GeometricSearchDet*
a) {
return a->position().z() >= 0.0; });
220 const ForwardDetLayer* fadditional = dynamic_cast<const ForwardDetLayer*>(additional);
221 const BarrelDetLayer* badditional = dynamic_cast<const BarrelDetLayer*>(additional);
233 }
else if (fadditional) {
234 double zpos = fadditional->
position().
z();
254 edm::LogError(
"TkNavigation") <<
"trying to add neither a ForwardDetLayer nor a BarrelDetLayer";