34 theGeometricSearchTracker(tkLayout), theOutLayerOnlyFlag(outOnly), theEpsilon(-0.01) {
42 vector<const DetLayer*>
49 vector<const DetLayer*>
output;
58 if ( eta0 > 1.55)
inOutFPx(fts,output);
59 else if ( eta0 < -1.55 )
inOutBPx(fts,output);
61 if ( fabs(eta0) < 1.67 )
inOutTIB(fts,output);
64 else if ( eta0 < -1.17 )
inOutBTID(fts,output);
67 if ( fabs(eta0) < 1.35 )
inOutTOB(fts,output);
70 else if ( eta0 < -0.97 )
inOutBTEC(fts,output);
73 LogTrace(
"Muon|RecoMuon|DirectionTrackerNavigation")<<
"No implementation for inward state at this moment. ";
90 for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
104 for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
118 for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
132 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
146 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
160 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
174 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
188 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
202 for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
217 float radius = bc.radius();
218 float length = bc.bounds().length()/2.;
222 return ( fabs(eta0) <= (fabs(eta) +
theEpsilon) );
236 float outRadius = bd.outerRadius();
237 float inRadius = bd.innerRadius();
238 float z = bd.position().z();
264 if ( z > 0 )
return -
log((
tan(atan(r/z)/2.)));
265 return log(-(
tan(atan(r/z)/2.)));
void inOutPx(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
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
DirectTrackerNavigation(const edm::ESHandle< GeometricSearchTracker > &, bool outOnly=true)
constructor
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
void inOutBTEC(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
bool outward(const FreeTrajectoryState &) const
void inOutFTEC(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
virtual const BoundDisk & specificSurface() const GCC11_FINAL
std::vector< const DetLayer * > compatibleLayers(const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
find compatible layers for a given trajectory state
const BasicVectorType & basicVector() const
virtual const BoundCylinder & specificSurface() const GCC11_FINAL
Extension of the interface.
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.