20 bool checkCrossingSide)
22 theDetLayer(detLayer),
23 theOuterBarrelLayers(outerBL),
24 theInnerBarrelLayers(0),
25 theOuterForwardLayers(outerFL),
26 theInnerForwardLayers(0),
31 for (
ConstBDLI bl = outerBL.begin(); bl != outerBL.end(); bl++)
33 for (
ConstFDLI fl = outerFL.begin(); fl != outerFL.end(); fl++)
43 vector<const DetLayer*>
result;
63 vector<const DetLayer*>
result;
68 auto const momentum = fts.
momentum();
73 bool isInOutTrackFWD = momentum.z() * zpos > 0;
75 bool isInOutTrackBarrel = (transversePosition.dot(momentum) > 0);
79 bool dirOppositeXORisInOutTrackBarrel =
81 bool dirOppositeXORisInOutTrackFWD =
86 LIKELY(dirOppositeXORisInOutTrackFWD && dirOppositeXORisInOutTrackBarrel) {
89 else if (!dirOppositeXORisInOutTrackFWD && !dirOppositeXORisInOutTrackBarrel) {
91 }
else if (!dirOppositeXORisInOutTrackFWD && dirOppositeXORisInOutTrackBarrel) {
103 edm::LogError(
"TkNavigation") <<
"ERROR: compatibleLayers() method used without all reachableLayers are set";
104 throw DetLayerException(
"compatibleLayers() method used without all reachableLayers are set");
105 return vector<const DetLayer*>();
109 cerr <<
"Warning: SimpleForwardNavigableLayer::setDetLayer called." << endl <<
"This should never happen!" << endl;
118 for (
ConstBDLI bl = innerBL.begin(); bl != innerBL.end(); bl++)
120 for (
ConstFDLI fl = innerFL.begin(); fl != innerFL.end(); fl++)
141 }
else if (fadditional) {
151 edm::LogError(
"TkNavigation") <<
"trying to add neither a ForwardDetLayer nor a BarrelDetLayer";
void setDetLayer(const DetLayer *dl) override
const GlobalTrajectoryParameters & parameters() const
std::vector< const DetLayer * > compatibleLayers(NavigationDirection direction) const override
SimpleForwardNavigableLayer(const ForwardDetLayer *detLayer, const BDLC &outerBL, const FDLC &outerFL, const MagneticField *field, float epsilon, bool checkCrossingSide=true)
std::vector< const DetLayer * > nextLayers(NavigationDirection direction) const override
std::vector< const ForwardDetLayer * > FDLC
BDLC theInnerBarrelLayers
FDLC::const_iterator ConstFDLI
GlobalVector momentum() const
GlobalPoint position() const
bool wellInside(const FreeTrajectoryState &fts, PropagationDirection dir, const BarrelDetLayer *bl, DLC &result) const
FDLC theOuterForwardLayers
static int position[264][3]
void setAdditionalLink(const DetLayer *, NavigationDirection direction=insideOut) override
BDLC theOuterBarrelLayers
FDLC theInnerForwardLayers
BDLC::const_iterator ConstBDLI
void setInwardLinks(const BDLC &, const FDLC &, TkLayerLess sorter=TkLayerLess(outsideIn)) override
std::vector< const BarrelDetLayer * > BDLC