36 theGeometricSearchTracker(tkLayout), theOutLayerOnlyFlag(outOnly), theEpsilon(-0.01) {
44 vector<const DetLayer*>
51 vector<const DetLayer*>
output;
60 if ( eta0 > 1.55)
inOutFPx(fts,output);
61 else if ( eta0 < -1.55 )
inOutBPx(fts,output);
63 if ( fabs(eta0) < 1.67 )
inOutTIB(fts,output);
66 else if ( eta0 < -1.17 )
inOutBTID(fts,output);
69 if ( fabs(eta0) < 1.35 )
inOutTOB(fts,output);
72 else if ( eta0 < -0.97 )
inOutBTEC(fts,output);
75 LogTrace(
"Muon|RecoMuon|DirectionTrackerNavigation")<<
"No implementation for inward state at this moment. ";
92 for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
106 for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
120 for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
134 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
148 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
162 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
176 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
190 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
204 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
224 return ( fabs(eta0) <= (fabs(eta) +
theEpsilon) );
266 if ( z > 0 )
return -
log((
tan(atan(r/z)/2.)));
267 return log(-(
tan(atan(r/z)/2.)));
void inOutPx(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
virtual float length() const =0
void inOutTIB(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void inOutFTID(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void inOutBTID(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void inOutTOB(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
Scalar radius() const
Radius of the cylinder.
DirectTrackerNavigation(const edm::ESHandle< GeometricSearchTracker > &, bool outOnly=true)
constructor
virtual const BoundDisk & specificSurface() const
Tan< T >::type tan(const T &t)
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
GlobalVector momentum() const
void inOutFPx(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
GlobalPoint position() const
float calculateEta(float r, float z) const
const Bounds & bounds() const
void inOutBTEC(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
Log< T >::type log(const T &t)
virtual const BoundCylinder & specificSurface() const
Extension of the interface.
bool outward(const FreeTrajectoryState &) const
void inOutFTEC(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
float outerRadius() const
The outer radius of the disk.
std::vector< const DetLayer * > compatibleLayers(const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
find compatible layers for a given trajectory state
float innerRadius() const
The inner radius of the disk.
const BasicVectorType & basicVector() const
const PositionType & position() const
void inOutBPx(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
T dot(const Basic3DVector &rh) const
Scalar product, or "dot" product, with a vector of same type.