22 bool checkCrossingSide) :
24 theDetLayer(detLayer),
25 theOuterBarrelLayers(outerBL),
26 theInnerBarrelLayers(0),
27 theOuterForwardLayers(outerFL),
28 theInnerForwardLayers(0),
35 for (
ConstBDLI bl = outerBL.begin(); bl != outerBL.end(); bl++ )
37 for (
ConstFDLI fl = outerFL.begin(); fl != outerFL.end(); fl++ )
50 vector<const DetLayer*>
53 vector<const DetLayer*>
result;
68 vector<const DetLayer*>
76 vector<const DetLayer*>
result;
82 auto const momentum = fts.
momentum();
88 bool isInOutTrackFWD = momentum.z()*zpos>0;
90 bool isInOutTrackBarrel = (transversePosition.dot(momentum)>0);
98 if likely( dirOppositeXORisInOutTrackFWD && dirOppositeXORisInOutTrackBarrel ) {
101 else if (!dirOppositeXORisInOutTrackFWD && !dirOppositeXORisInOutTrackBarrel){
103 }
else if (!dirOppositeXORisInOutTrackFWD && dirOppositeXORisInOutTrackBarrel ) {
115 vector<const DetLayer*>
117 edm::LogError(
"TkNavigation") <<
"ERROR: compatibleLayers() method used without all reachableLayers are set" ;
118 throw DetLayerException(
"compatibleLayers() method used without all reachableLayers are set");
119 return vector<const DetLayer*>();
125 cerr <<
"Warning: SimpleForwardNavigableLayer::setDetLayer called." 126 << endl <<
"This should never happen!" << endl;
138 for (
ConstBDLI bl = innerBL.begin(); bl != innerBL.end(); bl++ )
140 for (
ConstFDLI fl = innerFL.begin(); fl != innerFL.end(); fl++ )
162 }
else if (fadditional){
172 edm::LogError(
"TkNavigation") <<
"trying to add neither a ForwardDetLayer nor a BarrelDetLayer";
virtual void setDetLayer(const DetLayer *dl) override
const GlobalTrajectoryParameters & parameters() const
virtual 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)
virtual 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]
virtual void setAdditionalLink(const DetLayer *, NavigationDirection direction=insideOut) override
BDLC theOuterBarrelLayers
FDLC theInnerForwardLayers
BDLC::const_iterator ConstBDLI
virtual void setInwardLinks(const BDLC &, const FDLC &, TkLayerLess sorter=TkLayerLess(outsideIn)) override
std::vector< const BarrelDetLayer * > BDLC