21 bool checkCrossingSide)
23 theDetLayer(detLayer),
24 theOuterBarrelLayers(outerBL),
25 theInnerBarrelLayers(0),
26 theOuterForwardLayers(outerFL),
27 theInnerForwardLayers(0),
32 for (
ConstBDLI bl = outerBL.begin(); bl != outerBL.end(); bl++)
34 for (
ConstFDLI fl = outerFL.begin(); fl != outerFL.end(); fl++)
44 vector<const DetLayer*>
result;
64 vector<const DetLayer*>
result;
69 auto const momentum = fts.
momentum();
74 bool isInOutTrackFWD = momentum.z() * zpos > 0;
76 bool isInOutTrackBarrel = (transversePosition.dot(momentum) > 0);
80 bool dirOppositeXORisInOutTrackBarrel =
82 bool dirOppositeXORisInOutTrackFWD =
86 if LIKELY (dirOppositeXORisInOutTrackFWD && dirOppositeXORisInOutTrackBarrel) {
88 }
else if (!dirOppositeXORisInOutTrackFWD && !dirOppositeXORisInOutTrackBarrel) {
90 }
else if (!dirOppositeXORisInOutTrackFWD && dirOppositeXORisInOutTrackBarrel) {
102 edm::LogError(
"TkNavigation") <<
"ERROR: compatibleLayers() method used without all reachableLayers are set";
103 throw DetLayerException(
"compatibleLayers() method used without all reachableLayers are set");
104 return vector<const DetLayer*>();
108 cerr <<
"Warning: SimpleForwardNavigableLayer::setDetLayer called." << endl <<
"This should never happen!" << endl;
117 for (
ConstBDLI bl = innerBL.begin(); bl != innerBL.end(); bl++)
119 for (
ConstFDLI fl = innerFL.begin(); fl != innerFL.end(); fl++)
140 }
else if (fadditional) {
150 edm::LogError(
"TkNavigation") <<
"trying to add neither a ForwardDetLayer nor a BarrelDetLayer";
void setDetLayer(const DetLayer *dl) override
Log< level::Error, false > LogError
SimpleForwardNavigableLayer(const ForwardDetLayer *detLayer, const BDLC &outerBL, const FDLC &outerFL, const MagneticField *field, float epsilon, bool checkCrossingSide=true)
const GlobalTrajectoryParameters & parameters() const
GlobalPoint position() const
std::vector< const DetLayer * > compatibleLayers(NavigationDirection direction) const override
std::vector< const ForwardDetLayer * > FDLC
BDLC theInnerBarrelLayers
FDLC::const_iterator ConstFDLI
GlobalVector momentum() const
bool wellInside(const FreeTrajectoryState &fts, PropagationDirection dir, const BarrelDetLayer *bl, DLC &result) const
std::vector< const DetLayer * > nextLayers(NavigationDirection direction) const override
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